文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle DBA常用sql有哪些

2024-04-02 19:55

关注

这篇文章主要介绍“Oracle DBA常用sql有哪些”,在日常操作中,相信很多人在Oracle DBA常用sql有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle DBA常用sql有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、Oracle 查询每天执行慢的SQL

2、Oracle 查询锁之间的依赖关系

3、Oracle 查找锁之间依赖关系的最源头SID 

4、Oracle 查询各表空间使用情况--完善篇

5、Oracle 定期检查意义不大的索引 

6、Oracle 以月为单位检查索引的使用情况(邮件反馈)

7、Oracle 是分区表,但条件不带分区条件的SQL  

8、Oracle 表结构顺序不一致 隐藏的2个问题...

9、Oracle 查看 表属性 :“表名(注释)/列名(注释)/字段是否NULL”

10、Oracle 查找某一个包体’PACKAGE BODY‘中包含PROCEDURE/FUNCTION的名称有哪些 

小SQL 


连接~
[oracle@lottery ~]$oerr ora 600
SQL>clear screen    
SQL>alter system register;
[oracle@lottery ~]$ ps -ef | grep oracle$ORACLE_SID| grep LOCAL=NO| wc -l
select count(*) from v$process;
select count(*) from v$session;
select username,count (username) from gv$session where username is not null group by username;
select name,value from v$parameter where name in ('processes','sessions');==>show parameter processes/sessions
优化~
select * from table(dbms_xplan.display_cursor('br8d2xs44sga8')); 
select * from gv$sqlarea s where s.sql_id= 'br8d2xs44sga8';
SELECT * FROM gv$session_wait where sid in (SELECT sid FROM gV$SESSION WHERE STATUS='ACTIVE'  and username is not null and sid!=userenv('sid'));
SELECT TABLE_NAME,NUM_ROWS,LAST_ANALYZED FROM USER_TABLES T WHERE TABLE_NAME='表'; --#用于查看表最后一次统计和真实行数差距; 
select * from user_tab_columns where table_name= '表' ;  
begin DBMS_STATS.gather_schema_stats('用户',cascade=>TRUE,no_invalidate=>false); end; 
begin DBMS_STATS.GATHER_TABLE_STATS('用户','表', cascade=>TRUE); end ;
select max(ora_rowscn),scn_to_timestamp(max(ora_rowscn)) from 表;
基本信息~
          select TABLESPACE_NAME,sum(round(bytes/1024/1024/1024,2)) from dba_free_space a group by tablespace_name;
select component,current_size/1024/1024 MB, user_specified_size/1024 MB from v$memory_dynamic_components where current_size!=0;
               SELECT OWNER,SUM(BYTES/1024/1024/1024) FROM DBA_SEGMENTS GROUP BY OWNER;
select * from database_properties s where s.description like '%default%tablespace'
select * from user_tables u where u.temporary='Y';
select value from v$diag_info;  --> show parameter diagnostic_dest
select spid from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat where rownum=1));
权限~
select * from role_sys_privs where role='RESOURCE' ;
SELECT * FROM DBA_ROLE_PRIVS S WHERE S.GRANTED_ROLE= 'DBA';
dblink~
create public database link dblink名 connect to 用户 identified by 密码
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = IP地址 )(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = 实例名)))';  
其他~
select * from sys.wrh$_active_session_history;
SELECT owner,index_name,index_type,table_owner,table_name,table_type FROM dba_indexes where owner!=table_owner;
select table_name,status,read_only from dba_tables where read_only='YES';
#更改表属性  alter table 表 read only(read write);(11g新特性)
#注意:索引创建/修改对只读表【表空间】没有影响!因为索引修改的是数据字典,和表不相关
SELECT TABLE_NAME,column_name,PARTITION_NAME,HIGH_VALUE LESS_THAN值,TABLESPACE_NAME FROM USER_TAB_PARTITIONS tp join USER_PART_KEY_COLUMNS tpc on tp.table_name=tpc.name;
          SELECT 'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||''';', S.* FROM V$SESSION S WHERE USERNAME= '用户' AND STATUS!='KILLED';--用于解决ORA-01940无法删除当前连接的用户   
SELECT * FROM v$sqlcommand;  --【v$sqlarea.command_type、v$session.command 】
SELECT * FROM V$SQL_BIND_CAPTURE s where s.sql_id in ('fdc8mt5xnjx2a') and CHILD_ADDRESS=2;
SELECT * FROM USER_SEQUENCES S WHERE S.SEQUENCE_NAME='SEQ_CS_ONCE_CHAR_DET';
select utl_inaddr.get_host_address(host_name), host_name from v$instance;---用于当有2个服务器的数据库是同版本、同监听、同实例
         SELECT ((substr(value,2,2)*24 +substr(value,5,2))*60+substr(value,8,2 ))* 60+ substr(value,-2) 
TIME FROM gv$dataguard_stats where name = 'apply lag';

   select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status= 'KILLED';
                         -->系统层释放DB kill状态的会话;     (linux:kill -9 spid;  Windows :orakill orcl pid )
                        SELECT distinct 'ALTER SYSTEM KILL SESSION '''||SID ||','|| s.SERIAL#||''';',
 ON LO.SESSION_ID = S.SID JOIN DBA_OBJECTS O ON O.OBJECT_ID = LO.OBJECT_ID and S.STATUS='ACTIVE'  AND OBJECT_NAME  in ( '表名字') ;



大SQL



一、查数据库中正在执行的SQL:


     SELECT SE.INST_ID, --实例

           SQ.SQL_TEXT, 

           SQ.SQL_FULLTEXT, 

           SE.SID, 

           --SE.SERIAL#, 

           SQ.OPTIMIZER_COST AS COST_, 

           SE.LAST_CALL_ET   CONTINUE_TIME, 

           CEIL((SYSDATE-SE.PREV_EXEC_START)*24*60*60) 相差秒数, 

           SE.PREV_EXEC_START,

           SE.EVENT,  

           SE.LOCKWAIT, 

           SE.MACHINE, 

           SQ.SQL_ID, 

           SE.USERNAME, 

           SE.LOGON_TIME 

           --SE.TERMINAL,

           --,SQ.HASH_VALUE,

           --SQ.PLAN_HASH_VALUE

      FROM GV$SESSION SE, 

           

           GV$SQLAREA SQ 

     WHERE SE.SQL_HASH_VALUE = SQ.HASH_VALUE

       AND SE.STATUS = 'ACTIVE'

       AND SE.SQL_ID = SQ.SQL_ID

       AND SQ.INST_ID = SE.INST_ID

       AND SE.USERNAME is not null;

      --过滤条件 

   --AND SE.USERNAME = 'FWSB' --用户名

   --AND SQ.COMMAND_TYPE IN (2, 3, 5, 6, 189)

   --AND SE.SID != USERENV ('SID')

   --AND MACHINE != 'WORKGROUP\MHQ-PC' ;

二、 每天执行慢的SQL:


         SELECT S.SQL_TEXT,

           S.SQL_FULLTEXT,

           S.SQL_ID,

           ROUND(ELAPSED_TIME / 1000000 / (CASE

                   WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN

                    1

                   ELSE

                    EXECUTIONS

                 END),

                 2) "执行时间'S'",

           S.EXECUTIONS "执行次数",

           S.OPTIMIZER_COST "COST",

           S.SORTS,

           S.MODULE, --连接模式(JDBC THIN CLIENT:程序)

           -- S.LOCKED_TOTAL,

           S.PHYSICAL_READ_BYTES "物理读",

           -- S.PHYSICAL_READ_REQUESTS "物理读请求",

           S.PHYSICAL_WRITE_REQUESTS "物理写",

           -- S.PHYSICAL_WRITE_BYTES "物理写请求",

           S.ROWS_PROCESSED      "返回行数",

           S.DISK_READS          "磁盘读",

           S.DIRECT_WRITES       "直接路径写",

           S.PARSING_SCHEMA_NAME,

           S.LAST_ACTIVE_TIME

      FROM GV$SQLAREA S

     WHERE ROUND (ELAPSED_TIME / 1000000 / ( CASE

                   WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN

                    1

                   ELSE

                    EXECUTIONS

                 END),

                 2) > 5 --100 0000微秒=1S

     --  AND S.PARSING_SCHEMA_NAME = USER

       AND TO_CHAR(S.LAST_LOAD_TIME, 'YYYY-MM-DD' ) =

           TO_CHAR( SYSDATE, 'YYYY-MM-DD' )

       AND S.COMMAND_TYPE IN (2, 3, 5 , 6, 189) 

       AND MODULE = 'JDBC Thin Client'

     ORDER BY "执行时间'S'" DESC;

三、查看非绑定变量的SQL:


       SELECT V.SQL_ID,

             V.SQL_FULLTEXT,

             V.PARSING_SCHEMA_NAME,

             FM.EXECUTIONS_COUNT,

             FM.ELAPSED_TIME

        FROM (SELECT L.FORCE_MATCHING_SIGNATURE MATHCES,

                     MAX(L.SQL_ID || L.CHILD_NUMBER) MAX_SQL_CHILD,

                       DENSE_RANK() OVER(ORDER BY COUNT(*) DESC ) RANKING,

                     ROUND(SUM (ROUND(ELAPSED_TIME / 1000000 / (CASE

                                       WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN

                                        1

                                       ELSE

                                        EXECUTIONS

                                     END),

                                     5))) ELAPSED_TIME,

                     SUM(L.EXECUTIONS) EXECUTIONS_COUNT  

                FROM V$SQL L

               WHERE TO_CHAR(TO_DATE(LAST_LOAD_TIME, 'YYYY-MM-DD HH24:MI:SS'),

                             'YYYY-MM-DD') = TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD') -- 当天 LAST_LOAD_TIME(VARCHAR类型,LOADED INTO THE LIBRARY CACHE TIME)

                 AND L.MODULE LIKE '%JDBC%' --程序连接

                 AND L.FORCE_MATCHING_SIGNATURE <> 0

                 AND L.PARSING_SCHEMA_NAME = UPPER ('&USERNAME') --用户

                 AND L.COMMAND_TYPE IN (2, 3, 5 , 6, 189)   --命令类型 2:INSERT、3:SELECT、6:UPDATE、7:DELETE、189:MERGE  查询V$SQLCOMMAND

               GROUP BY L.FORCE_MATCHING_SIGNATURE

              HAVING COUNT (*) > 5) FM,

             V$SQL V

       WHERE FM.MAX_SQL_CHILD = (V.SQL_ID || V.CHILD_NUMBER)  

         AND EXECUTIONS_COUNT >= 50 --执行次数超过50次先筛选改写,后续慢慢在范围小

          ORDER BY FM.RANKING;

         --V$SQL_BIND_CAPTURE  --记录包含变量得表..包括 ROWNUM<:1 变量

四、查看LOG切换频率:

       select b.SEQUENCE#,

             b.FIRST_TIME,

             a.SEQUENCE#,

             a.FIRST_TIME,

             round(((a.FIRST_TIME - b.FIRST_TIME) * 24 ) * 60, 2)  时间min

        from v$log_history a, v$log_history b

       where a.SEQUENCE# = b.SEQUENCE# + 1

         and b.THREAD# = 1

       order by a.SEQUENCE# desc;

      

      查看每小时log切换的次数


      SELECT  trunc(first_time) "Date",

        to_char(first_time, 'Dy') "Day",

        count(1) "Total",

        SUM(decode(to_char(first_time, 'hh34'),'00',1,0)) "h0",

        SUM(decode(to_char(first_time, 'hh34'),'01',1,0)) "h2",

        SUM(decode(to_char(first_time, 'hh34'),'02',1,0)) "h3",

        SUM(decode(to_char(first_time, 'hh34'),'03',1,0)) "h4",

        SUM(decode(to_char(first_time, 'hh34'),'04',1,0)) "h5",

        SUM(decode(to_char(first_time, 'hh34'),'05',1,0)) "h6",

        SUM(decode(to_char(first_time, 'hh34'),'06',1,0)) "h7",

        SUM(decode(to_char(first_time, 'hh34'),'07',1,0)) "h7",

        SUM(decode(to_char(first_time, 'hh34'),'08',1,0)) "h8",

        SUM(decode(to_char(first_time, 'hh34'),'09',1,0)) "h9",

        SUM(decode(to_char(first_time, 'hh34'),'10',1,0)) "h20",

        SUM(decode(to_char(first_time, 'hh34'),'11',1,0)) "h21",

        SUM(decode(to_char(first_time, 'hh34'),'12',1,0)) "h22",

        SUM(decode(to_char(first_time, 'hh34'),'13',1,0)) "h23",

        SUM(decode(to_char(first_time, 'hh34'),'14',1,0)) "h24",

        SUM(decode(to_char(first_time, 'hh34'),'15',1,0)) "h25",

        SUM(decode(to_char(first_time, 'hh34'),'16',1,0)) "h26",

        SUM(decode(to_char(first_time, 'hh34'),'17',1,0)) "h27",

        SUM(decode(to_char(first_time, 'hh34'),'18',1,0)) "h28",

        SUM(decode(to_char(first_time, 'hh34'),'19',1,0)) "h29",

        SUM(decode(to_char(first_time, 'hh34'),'20',1,0)) "h30",

        SUM(decode(to_char(first_time, 'hh34'),'21',1,0)) "h31",

        SUM(decode(to_char(first_time, 'hh34'),'22',1,0)) "h32",

        SUM(decode(to_char(first_time, 'hh34'),'23',1,0)) "h33"

     FROM    V$log_history

     where   trunc(first_time)>sysdate-8

     group by trunc(first_time), to_char(first_time, 'Dy')

     Order by 1;

五、查看SQL执行进度:  --显示运行时间超过6秒的数据库操作的状态

       SELECT A.SID,

             A.SERIAL#,

             OPNAME,

             TARGET, --对象

             TO_CHAR(START_TIME, 'YYYY-MM-DD HH24:MI:SS' ) START_TIME, --开始时间

             (SOFAR / TOTALWORK) * 100 PROGRESS, --进度比

             TIME_REMAINING, --估算剩余时间

             ELAPSED_SECONDS, --运行时间‘S’

             A.SQL_ID

        FROM V$SESSION_LONGOPS A

        WHERE SID = ;

        *** 其中SID和SERIAL#是与V$SESSION中的匹配的,

        *** OPNAME:指长时间执行的操作名.如: TABLE SCAN

        *** TARGET:被操作的OBJECT_NAME. 如:TABLEA

        *** TARGET_DESC:描述TARGET的内容

        *** SOFAR:这个是需要着重去关注的,表示已要完成的工作数,如扫描了多少个块。

        *** TOTALWORK:指目标对象一共有多少数量(预计)。如块的数量。

        *** START_TIME:进程的开始时间

        *** LAST_UPDATE_TIM:最后一次调用SET_SESSION_LONGOPS的时间

        *** TIME_REMAINING: 估计还需要多少时间完成,单位为秒

        *** ELAPSED_SECONDS:指从开始操作时间到最后更新时间

        *** MESSAGE:对于操作的完整描述,包括进度和操作内容。

        *** USERNAME:与V$SESSION中的一样。

        *** SQL_ADDRESS:关联V$SQL

        *** SQL_HASH_VALUE:关联V$SQL

        *** QCSID:主要是并行查询一起使用。  


六、查询外键字段在主键表中没有索引的


      SELECT C.*,

       C1.r_constraint_name,

       c2.table_name,

       T.NUM_ROWS,

       'create index idx_' || c.table_name || '_' || column_name || ' on ' ||

       c.table_name || '(' || column_name || ');'

  FROM USER_CONS_COLUMNS C

  JOIN USER_CONSTRAINTS C1

    ON C1.CONSTRAINT_NAME = C.CONSTRAINT_NAME

   AND C1.CONSTRAINT_TYPE = 'R'

   AND (C.TABLE_NAME, C.COLUMN_NAME) NOT IN

       ( SELECT TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMNS I)

  JOIN USER_TABLES T

    ON T.TABLE_NAME = C.TABLE_NAME

  join USER_CONSTRAINTS c2

    on c1.r_constraint_name = c2.constraint_name;

       博客:为什么子表外键列需要建立索引?  http://blog.itpub.net/17203031/viewspace-701832/ 

        ** 自己测试【外键字段不加索引时】

        ** update外键表,主键表delete任何数据都不允许;但update session1的范围 且set字段不是where字段就可以执行,加索引后,更改where字段的数据会报错

七、 查看软硬解析,游标数

      SELECT  

       SUM (A.VALUE),

       B.NAME,

       ( CASE

         WHEN NAME = 'PARSE COUNT (TOTAL)' THEN

          '表示总的解析次数'

         WHEN NAME = 'PARSE COUNT (HARD)' THEN

          '表示硬解析的次数'

         WHEN NAME = 'SESSION CURSOR CACHE COUNT' THEN

          '表示缓存的游标个数'

         WHEN NAME = 'SESSION CURSOR CACHE HITS' THEN

          '表示从缓存中找到游标的次数'

         WHEN NAME = 'OPENED CURSORS CURRENT' THEN

          '表示SESSION中打开的游标数'

       END )

        FROM V$SESSTAT A, V$STATNAME B

       WHERE A.STATISTIC# = B.STATISTIC#

         AND B.NAME IN ( 'PARSE COUNT (HARD)',

                        'PARSE COUNT (TOTAL)' ,

                        'SESSION CURSOR CACHE COUNT' ,

                        'SESSION CURSOR CACHE HITS' ,

                        'OPENED CURSORS CURRENT' )

        -- AND SID=11

       GROUP BY B.NAME

       ORDER BY NAME;

      --#用于衡量 软硬解析/游标共享比.

八、查看未提交的事物的会话和锁的对象

       SELECT DISTINCT S.SID,

                      S.SERIAL#,

                      S.MACHINE,

                      L.SQL_TEXT,

                      S.LAST_CALL_ET,

                      'ALTER SYSTEM KILL SESSION ''' || S.SID || ',' || S.SERIAL# ||

                      ''';' ,

                      LO.ORACLE_USERNAME,

                      LO.OS_USER_NAME,

                      AO.OBJECT_NAME,

                      LO.LOCKED_MODE

        FROM V$SESSION       S,

             V$TRANSACTION   T,

             V$SQL           L,

             V$LOCKED_OBJECT LO,

             DBA_OBJECTS     AO

       WHERE S.TADDR = T.ADDR

         AND S.PREV_SQL_ADDR = L.ADDRESS

         AND AO.OBJECT_ID = LO.OBJECT_ID

         AND LO.SESSION_ID = S.SID;

九、通过系统中PID去数据库中找执行的SQL:

     SELECT A.USERNAME, A.PROGRAM, B.SPID, C.SQL_TEXT, C.SQL_FULLTEXT

        FROM V$SESSION A, V$PROCESS B, V$SQLAREA C

       WHERE A.PADDR = B.ADDR

         AND A.SQL_HASH_VALUE = C.HASH_VALUE

         AND A.STATUS = 'ACTIVE'

         AND A.USERNAME NOT IN ( 'SYS', 'SYSTEM' , 'SYSMAN')

         AND A.SID != USERENV ('SID')

         AND B.SPID = 填写PID;

十、序列/索引差异 比对结果后的创建语句 (例如:将A用户index和B用户对比,将A用户多B用户的在B用户创建)

      【如下2个SQL都需要在 缺少sequence/index A用户执行】

      --#SEQUENCE的创建语句:

      SELECT 'CREATE SEQUENCE ' || SEQUENCE_NAME || ' MINVALUE ' || MIN_VALUE ||

             ' MAXVALUE ' || MAX_VALUE || ' START WITH ' || LAST_NUMBER ||

             ' INCREMENT BY ' || INCREMENT_BY || (CASE

               WHEN CACHE_SIZE = 0 THEN

                ' NOCACHE'

               ELSE

                ' CACHE ' || CACHE_SIZE

             END ) || ';'

        FROM USER_SEQUENCES W

       WHERE --过滤掉登录用户存在的SEQUENCE

       NOT EXISTS ( SELECT 1

          FROM USER_SEQUENCES@DB_SINOSOFT W1

         WHERE W.SEQUENCE_NAME = W1.SEQUENCE_NAME);

      --#索引差异 结果的创建语句

      SELECT 'CREATE ' || INDEX_TYPE || ' INDEX ' || INDEX_NAME || ' ON ' ||

             TABLE_NAME || ' (' || LISTAGG(CNAME, ',' ) WITHIN GROUP (ORDER BY COLUMN_POSITION) || ');'

        FROM (SELECT IC.INDEX_NAME,

                      IC.TABLE_NAME,

                      IC.COLUMN_NAME CNAME,

                      IC.COLUMN_POSITION,

                      COUNT(IC.INDEX_NAME) OVER ( PARTITION BY IC.INDEX_NAME, IC.TABLE_NAME) CON,

                      I.INDEX_TYPE

                 FROM USER_IND_COLUMNS@DB_SINOSOFT IC

                 JOIN USER_INDEXES@DB_SINOSOFT I

                   ON I.INDEX_NAME = IC.INDEX_NAME

                WHERE

               --过滤掉登录用户存在的INDEX

                NOT EXISTS

                ( SELECT 1

                   FROM USER_IND_COLUMNS IC1

                  WHERE IC1.INDEX_OWNER = UPPER ( '&TO_USERNAME')

                    AND IC.INDEX_NAME = IC1.INDEX_NAME)

               --过滤掉主键,避免索引创建,在创建主键报错 对象已存在

             AND IC.INDEX_NAME NOT IN

                ( SELECT C.CONSTRAINT_NAME FROM USER_CONSTRAINTS@DB_SINOSOFT C)

                ORDER BY IC.INDEX_NAME, IC.COLUMN_POSITION)

       GROUP BY INDEX_TYPE, CON, INDEX_NAME, TABLE_NAME;

十一、查看热点块的对象


      SELECT A.HLADDR, A.FILE#, A.DBABLK, A.TCH, A.OBJ, B.OBJECT_NAME

        FROM X$BH A, DBA_OBJECTS B

       WHERE (A.OBJ = B.OBJECT_ID OR A.OBJ = B.DATA_OBJECT_ID)

         AND A.HLADDR = '0000000054435000' --V$SESSION_WAIT.P1RAW

      UNION

      SELECT HLADDR, FILE#, DBABLK, TCH, OBJ, NULL

        FROM X$BH

       WHERE OBJ IN ( SELECT OBJ

                       FROM X$BH

                      WHERE HLADDR = '0000000054435000'

                     MINUS

                     SELECT OBJECT_ID

                       FROM DBA_OBJECTS

                     MINUS

                     SELECT DATA_OBJECT_ID FROM DBA_OBJECTS)

         AND HLADDR = '0000000054435000'

       ORDER BY 4;

十一、查看某用户表大小/总数情况


      SELECT T.TABLE_NAME,

             TC.COMMENTS,

             T.NUM_ROWS,

             ROUND (SUM (S.BYTES / 1024 / 1024 / 1024 )) GB

        FROM USER_TABLES T

        JOIN USER_SEGMENTS S

          ON S.SEGMENT_NAME = T.TABLE_NAME

        JOIN USER_TAB_COMMENTS TC

          ON TC.TABLE_NAME = T.TABLE_NAME

       GROUP BY T.TABLE_NAME, TC.COMMENTS, T.NUM_ROWS

       ORDER BY NUM_ROWS DESC  NULLS LAST ;

十二、 重新编译失效存储/包语句:

          SELECT 'ALTER ' || (CASE

                WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN

                 'PACKAGE' ELSE OBJECT_TYPE

                END) || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE ' || (CASE

                  WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN

                   'BODY;'  ELSE ';' END), --除类型是PACKAGE BODY返回是PACKAGE,其他正常显示类型,是PACKAGE BODY显示COMPILE BODY 否则显示COMPILE

                OWNER,

                OBJECT_NAME,

                OBJECT_TYPE,

                STATUS,

                O.CREATED,

                LAST_DDL_TIME

           FROM DBA_OBJECTS O

          WHERE STATUS = 'INVALID' -->存储状态'无效';

十三、 Oracle 查看各表空间使用情况和最大最小块:

        SELECT UPPER (F.TABLESPACE_NAME) "表空间名",

             D.TOT_GROOTTE_MB "表空间大小(M)",

             D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",

             TO_CHAR( ROUND ((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100 ,

                           2 ),

                     '990.99' ) "使用比",

             F.TOTAL_BYTES "空闲空间(G)",

             F.MAX_BYTES "最大块(G)"

        FROM (SELECT TABLESPACE_NAME,

                     ROUND (SUM (BYTES) / 1024 / 1024 / 1024 , 2) TOTAL_BYTES,

                     ROUND (MAX (BYTES) / 1024 / 1024 / 1024 , 2) MAX_BYTES

                FROM SYS.DBA_FREE_SPACE

               GROUP BY TABLESPACE_NAME) F,

             ( SELECT DD.TABLESPACE_NAME,

                     ROUND (SUM (DD.BYTES) / 1024 / 1024 / 1024 , 2) TOT_GROOTTE_MB

                FROM SYS.DBA_DATA_FILES DD

               GROUP BY DD.TABLESPACE_NAME) D

       WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME;

十四、 Oracle 查看TEMP表空间使用情况 :

       SELECT F.BYTES_FREE + F.BYTES_USED TOTAL_BYTES,

             F.BYTES_FREE + F.BYTES_USED - NVL (P.BYTES_USED, 0 ) FREE_BYTES,

             D.FILE_NAME,

             NVL (P.BYTES_USED, 0 ) USED_BYTES

        FROM SYS.V_$TEMP_SPACE_HEADER F,

             DBA_TEMP_FILES           D,

             SYS.V_$TEMP_EXTENT_POOL  P

       WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME

         AND F.FILE_ID(+) = D.FILE_ID

         AND P.FILE_ID(+) = D.FILE_ID;

      --> 等同于

      SELECT TABLESPACE_NAME,

             TF.TABLESPACE_SIZE,

             TF.FREE_SPACE,

             TF.TABLESPACE_SIZE - TF.FREE_SPACE

        FROM DBA_TEMP_FREE_SPACE TF;

十五、 Oracle 查看回滚进度情况用的几个SQL:

      SELECT DISTINCT KTUXESIZ FROM X$KTUXE WHERE KTUXESTA = 'ACTIVE' ;

      SELECT USED_UBLK FROM V$TRANSACTION;

      SELECT KTUXEUSN, KTUXESLT

        FROM X$KTUXE

       WHERE 

       KTUXESTA = 'ACTIVE' ;

      SELECT * FROM V_$FAST_START_TRANSACTIONS;

      SELECT USED_UBLK, T.USED_UREC FROM V$TRANSACTION T;

      --查询视图V$FAST_START_TRANSACTIONS中字段UNDOBLOCKSDONE,UNDOBLOCKSTOTAL估算SMON恢复进度

到此,关于“Oracle DBA常用sql有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯