Oracle11G日常维护手册(3)

2019-01-19 13:00

/u01/app/oracle/diag/rdbms/racdb1/racdb1/cdump [oracle@racdb1 cdump]$ ls /u01/app/oracle/diag/rdbms/racdb1/racdb1/cdump/*.trc|wc -l 说明 如果上面命令的结果每天都在增长,则说明Oracle进程经常发生核心转储。这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。Oracle 常用日志文件位置查询 select * from v$parameter where name='background_dump_dest'; select * from v$parameter where name='user_dump_dest'; select * from v$parameter where name='core_dump_dest'; select * from v$parameter where name='audit_file_dest'; select * from v$parameter where name='audit_syslog_level';

3.19. 检查Root用户和Oracle用户的email [oracle@racdb1 racdb1]$ tail -n 200 /var/mail/oracle [oracle@racdb1 racdb1]$ tail -n 200 /var/mail/root 查看有无与Oracle用户相关的出错信息。

说明4. 检查Oracle对象状态

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

4.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”应该为空。状态为空表示控制文件状态正常

4.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”显示为空表示正常。

4.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。 4.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”。 4.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'; 4.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”。 4.7. 检查用户下的表 select * from user_tables; 说明4.8. 检查用户默认表空间 select username,default_tablespace, USERNAME='SCOTT'; temporary_tablespace from dba_users where 4.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'; 4.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; 4.11. 检查一个表的创建时间 select object_name,created from dba_objects where object_name=upper('&table_name'); 4.12. 检查某个表的大小 select sum(bytes)/(1024*1024) as \where segment_name=upper('&table_name'); 4.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; 5. 检查Oracle相关资源的使用情况

在本节主要检查Oracle相关资源的使用情况,包含:检查Oracle初始化文件中相关的参数值,检查数据库连接情况,检查系统磁盘空间,检查Oracle各个表空间使用情况,检查一些扩展异常的对象,检查system表空间内的内容,检查对象的下一扩展与表空间的最大扩展值,总共七个部分。

5.1. 检查Oracle初始化文件中相关参数值 SQL> select resource_name,max_utilization,initial_allocation, limit_value from v$resource_limit; RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE ------------------------------ --------------- -------------------- -------------------- processes 63 150 150 sessions 72 247 247 enqueue_locks 34 3010 3010 enqueue_resources 38 1304 UNLIMITED ges_procs 0 0 0 ges_ress 0 0 UNLIMITED ges_locks 0 0 UNLIMITED ges_cache_ress 0 0 UNLIMITED ges_reg_msgs 0 0 UNLIMITED ges_big_msgs 0 0 UNLIMITED ges_rsv_msgs 0 0 0 gcs_resources 0 0 0 gcs_shadows 0 0 0 dml_locks 0 1084 UNLIMITED temporary_table_locks 0 UNLIMITED UNLIMITED transactions 0 271 UNLIMITED branches 0 271 UNLIMITED cmtcallbk 1 271 UNLIMITED max_rollback_segments 11 271 65535 sort_segment_locks 1 UNLIMITED UNLIMITED RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE ------------------------------ --------------- -------------------- -------------------- k2q_locks 0 494 UNLIMITED max_shared_servers 1 UNLIMITED UNLIMITED parallel_max_servers 0 10 3600 23 rows selected 若LIMIT_VALU-MAX_UTILIZATION<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/racdb1/pfile/initORCL.ora来修改。

说明5.2. 检查数据库连接情况 SQL>select count(*) from v$session; select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' || to_char(command) ) action, p.program oracle_process, status session_status, s.terminal terminal, s.program program, s.username user_name, s.fixed_table_sequence activity_meter, '' query, 0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num from v$session s, v$process p where s.paddr=p.addr and s.type = 'USER' order by s.username, s.osuser; SQL>select sid,serial#,username,program,machine,status from v$session; 其中:SID 会话(session)的ID号;

SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话; USERNAME 建立该会话的用户名;

PROGRAM 这个会话是用什么工具连接到数据库的;

STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;

如果建立了过多的连接,会消耗数据库的资源,同时,对一些“挂死”的连接可能需要手工进行清理。如果DBA要手工断开某个会话,则执行:(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统的spid,使用ps –ef|grep spidno的方式确认spid不是ORACLE的后台进程。使用操作系统的kill -9命令杀掉连接)

alter system kill session 'SID,SERIAL#'; 说明注意:上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。


Oracle11G日常维护手册(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课标人教版小学六年级语文上册第 6 单元测试卷2带答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: