• 常用查询脚本


    1.查看表大小,索引大小,获取表的DDL创建脚本

    select bytes/1024/1024 from dba_segments where segment_name='table_name' and owner='username';

    select bytes/1024/1024 from dba_segments where segment_name='index_name' and owner='username';

    select dbms_metadata.get_ddl('TABLE','TABLE_NAME','USERNAME') from dual;


    2.查看分区表大小,获取分区表的DDL创建脚本

    select segment_name,PARTITION_NAME,bytes/1024/1024 from user_segments where segment_name='SALES_INTERVAL';

    set pages 999 lines 180
    set long 99999
    select dbms_metadata.get_ddl('TABLE','SALES_INTERVAL','SH') from dual;


    3.查看表的索引列,索引名,获取索引的DDL创建脚本

    select a.table_name,b.index_name,b.column_name from user_indexes a ,user_ind_columns b where a.table_name=b.table_name and a.index_name = b.index_name and a.table_owner=upper('SCOTT') and a.table_name='EMP';
    TABLE_NAME INDEX_NAME COLUMN_NAM
    ------------------------------ ------------------------------ ----------
    EMP PK_EMP EMPNO

    或者:
    select table_name,index_name from user_indexes where table_name='EMP';
    TABLE_NAME INDEX_NAME COLUMN_NAM
    ------------------------------ ------------------------------ ----------
    EMP PK_EMP EMPNO

    select index_name,column_name from user_ind_columns where index_name='PK_EMP';
    INDEX_NAME COLUMN_NAM
    ------------------------------ ----------
    PK_EMP EMPNO


    SQL> CONN / AS SYSDBA
    Connected.
    SQL> set pages 1000 lines 180
    SQL> set long 99999
    SQL> select dbms_metadata.get_ddl('INDEX','PK_EMP','SCOTT') from dual;

    DBMS_METADATA.GET_DDL('INDEX','PK_EMP','SCOTT')
    --------------------------------------------------------------------------------

    CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMPNO")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "USERS"


    4.查看分区表的分区字段,各个区的大小

    SQL> select * from dba_part_key_columns where name='SALES_INTERVAL' and owner='SH';

    SELECT * FROM all_PART_KEY_COLUMNS;

    SELECT * FROM all_PART_KEY_COLUMNS t where t.owner='数据库用户名' and t.name in(select table_name from dba_tables where partitioned='YES' and owner='数据库用户名' );

    大小:
    select TABLE_NAME,PARTITION_NAME,HIGH_VALUE from dba_tab_partitions where table_name='SALES_INTERVAL';

    5.查看数据库用户的系统权限,角色权限,表权限

    select * from dba_sys_privs;

    select * from dba_role_privs;

    SELECT * FROM user_tab_privs_recd;


    6.查看数据库各等待事件的个数

    select wait_class#,wait_class_id,wait_class,count(*) as "count" from v$event_name group by wait_class#,wait_class_id,wait_class order by wait_class#;


    7.查看用户和主机的连接数量

    select machine,count(*) from v$session group by machine;


    8.查看数据库的阻塞队列;如何kill 掉阻塞会话

    select sid,serial#,username from v$session where sid in (select blocking_session from v$session);

    alter system kill session 'sid,serial#';


    9.查看数据库会话正在执行的SQL

    select t2.sid, t2.SERIAL#, t1.SPID OS_PID,t3.SQL_ID, t2.EVENT,t2.P1TEXT, t2.P1, t2.p2TEXT, t2.P2,t2.p3,t3.SQL_TEXT,t2.P3, t3.SQL_FULLTEXT from v$process t1, v$session t2, v$sql t3 where t1.ADDR = t2.PADDR and t2.STATUS = 'ACTIVE' and t2.SQL_ID = t3.SQL_ID;

    10.查看数据库正在执行的SQL的执行计划

    执行SQL语句:
    select * from hr.employees;

    SELECT sql_id, hash_value, child_number, SUBSTR(sql_text,1,40) Text FROM v$sql WHERE sql_text LIKE 'select * from hr.employees;';

    set linesize 200
    set pagesize 50
    select * from table(dbms_xplan.display_cursor('sql_id',0,'TYPICAL'));

    11.查看表空间使用率(自动扩展的数据文件与非自动扩展的文件表空间的使用率)

    SELECT D.TABLESPACE_NAME,
    SPACE "SUM_SPACE(M)",
    SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",
    FREE_SPACE "FREE_SPACE(M)",
    ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100) "USED_RATE(%)"
    FROM
    (SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES)/(1024*1024)) SPACE,
    SUM(BLOCKS) BLOCKS
    FROM DBA_DATA_FILES
    GROUP BY TABLESPACE_NAME) D,
    (SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES)/(1024*1024)) FREE_SPACE
    FROM DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME) F
    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
    ORDER BY "USED_RATE(%)" desc;

    12.查看ASM磁盘组的总大小,剩余空间,

    select name,total_mb,free_mb from v$asm_diskgroup;

  • 相关阅读:
    微信公众平台接口获取时间戳为10位,java开发需转为13位
    redis实现哨兵机制
    redis配置主从复制
    C 语言字符 和字符串输出
    C 小写字母编程大写并输出
    C语言计算机器运行时间
    C 猜数游戏
    C 产生随机码 (输入数字来产生)
    C 产生随机码
    C 语言链表操作例程 (待完善)
  • 原文地址:https://www.cnblogs.com/orcl-2018/p/11836487.html
Copyright © 2020-2023  润新知