暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

检查Oracle对象状态

原创 远行 2023-07-02
343

在本节主要检查相关Oracle对象的状态,包含:检查Oracle控制文件状态,检查Oracle在线日志状态,检查Oracle表空间的状态,检查Oracle所有数据文件状态,检查Oracle所有表、索引、存储过程、触发器、包等对象的状态,检查Oracle所有回滚段的状态,总共六个部分。

1.1. 检查Oracle控制文件状态

SQL>  select status,name from v$controlfile;

 

STATUS  NAME

------- --------------------------------------------------------------------------------

        /u01/app/oracle/oradata/racdb1/control01.ctl

        /u01/app/oracle/flash_recovery_area/racdb1/control02.ctl

输出结果应该有2条以上(包含2条)的记录,“STATUS”应该为空。状态为空表示控制文件状态正常

1.2. 检查Oracle在线日志状态

SQL> select group#,status,type,member from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER

---------- ------- ------- --------------------------------------------------------------------------------

         3         ONLINE  /u01/app/oracle/oradata/racdb1/redo03.log

         2         ONLINE  /u01/app/oracle/oradata/racdb1/redo02.log

         1         ONLINE  /u01/app/oracle/oradata/racdb1/redo01.log

       

输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表示正常。

1.3. 检查Oracle表空间的状态

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS

------------------------------ ---------

SYSTEM                         ONLINE

SYSAUX                         ONLINE

UNDOTBS1                       ONLINE

TEMP                           ONLINE

USERS                          ONLINE

SCOTTSPACE06                   ONLINE

 

6 rows selected

输出结果中STATUS应该都为ONLINE。

1.4. 检查Oracle所有数据文件状态

SQL> select name,status from v$datafile;

 

NAME                                                       STATUS

---------------------------------------------------------------- -------

/u01/app/oracle/oradata/racdb1/system01.dbf                       SYSTEM

/u01/app/oracle/oradata/racdb1/sysaux01.dbf                      ONLINE

/u01/app/oracle/oradata/racdb1/undotbs01.dbf                    ONLINE

/u01/app/oracle/oradata/racdb1/users01.dbf                       ONLINE

/u01/app/oracle/oradata/racdb1/SCOTTSPACE06.dbf                 ONLINE

输出结果中“STATUS”应该都为“ONLINE”。或者:

SQL>  select file_name,status from dba_data_files;

 

FILE_NAME                                               STATUS

--------------------------------------------------------- ---------

/u01/app/oracle/oradata/racdb1/users01.dbf                       AVAILABLE

/u01/app/oracle/oradata/racdb1/undotbs01.dbf                     AVAILABLE

/u01/app/oracle/oradata/racdb1/sysaux01.dbf                      AVAILABLE

/u01/app/oracle/oradata/racdb1/system01.dbf                     AVAILABLE

/u01/app/oracle/oradata/racdb1/SCOTTSPACE06.dbf                AVAILABLE

 

输出结果中“STATUS”应该都为“AVAILABLE”。

1.5. 检查无效对象

select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';

no rows selecte

如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象,或者

SELECT owner, object_name, object_type FROM dba_objects WHERE status= 'INVALID';

1.6. 检查所有回滚段状态

SQL> select segment_name,status from dba_rollback_segs;

 

SEGMENT_NAME                   STATUS

------------------------------ ----------------

SYSTEM                         ONLINE

_SYSSMU10_3550978943$          ONLINE

_SYSSMU9_1424341975$           ONLINE

_SYSSMU8_2012382730$           ONLINE

_SYSSMU7_3286610060$           ONLINE

_SYSSMU6_2443381498$           ONLINE

_SYSSMU5_1527469038$           ONLINE

_SYSSMU4_1152005954$           ONLINE

_SYSSMU3_2097677531$           ONLINE

_SYSSMU2_2232571081$           ONLINE

_SYSSMU1_3780397527$           ONLINE

 

11 rows selected

输出结果中所有回滚段的“STATUS”应该为“ONLINE”。

1.7. 检查用户下的表

select * from user_tables;

1.8. 检查用户默认表空间

select username,default_tablespace, temporary_tablespace from dba_users where USERNAME='SCOTT';

1.9. 检查当前用户角色及权限

select * from dba_role_privs where GRANTEE='SCOTT';

select * from dba_sys_privs where GRANTEE='SCOTT';

select * from dba_tab_privs where GRANTEE='SCOTT';

1.10.          检查用户下的各个表的大小

Select Segment_Name,Sum(bytes)/1024/1024 MB From dba_Extents where OWNER='SCOTT' Group By Segment_Name order by sum(bytes)/1024/1024 desc;

1.11.          检查一个表的创建时间

select object_name,created from dba_objects where object_name=upper('&table_name');

 

1.12.          检查某个表的大小

select sum(bytes)/(1024*1024) as "size(M)" from dba_segments

where segment_name=upper('&table_name');

1.13.          检查每个表占用磁盘空间情况

select b.file_id file_ID, b.tablespace_name tablespace_name, b.bytes Bytes, (b.bytes-sum(nvl(a.bytes,0))) used, sum(nvl(a.bytes,0)) free, sum(nvl(a.bytes,0))/(b.bytes)*100 Percent from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.bytes order by b.file_id;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论