oracle显示日志空间不足,Oracle归档日志空间不足引发的问题及解决方法

**************************************************************************************归档日志空间不足现的问题的现象软件正在操作,突然点击任何菜单无反应;重启软后,长时间没反应或直接报数据库连接错误;以下系统管理员操作oracle用户登录操作系统,输入以下命令:[oracle@OASERVER ~]$sqlplus sql>connect cawy_cas/密码     //回车后出现报错打开EM时(IE中输入http://10.31.1.200:1158/em),报ORA-00257、ORA-01033等错误;oracle客户端工具(如:PLSQL Developer等)连接数据库时报ORA-00257、ORA-01033等错误;**************************************************************************************说明:因oracle归档日志还在开启,需定期检测归档日志占用空间大小,归归档日志达到一定比例时要及时清理,以防止归档日志问题导致的oracle服务停止现象,从而影响系统。1、检测oracle是否可以正常归档oracle用户登录系统[oracle@OASERVER ~]$sqlplus sql>connect / as sysdbasql>select * from v$log           GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS    ---------- ---------- ---------- ---------- ---------- --- ----------------    FIRST_CHANGE# FIRST_TIME    ------------- ------------             1          1        263   52428800          1 NO  CURRENT          5924771 13-DEC-10             2          1        261   52428800          1 YES INACTIVE          5878129 12-DEC-10             3          1        262   52428800          1 YES INACTIVE          5899219 13-DEC-10说明:上面列表可看出ARC列可正常归档,如果全部为NO,oracle将无法进行归档,此时oracle实例会自动关闭。    2、查看FLASH_RECOVERY_AREA空间中各部分使用情况:oracle用户登录系统[oracle@OASERVER ~]$sqlplus sql>connect / as sysdbasql> select * from v$recovery_file_dest;  //查看FLASH_RECOVERY_AREA空间大小sql>select * from v$flash_recovery_area_usage;  //查看FLASH_RECOVERY_AREA空间使用情况,下面可以看出已使用5.57%       FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES       ------------ ------------------ ------------------------- ---------------       CONTROLFILE                   0                         0               0       ONLINELOG                     0                         0               0       ARCHIVELOG                 5.57                         0              14       BACKUPPIECE                   0                         0               0       IMAGECOPY                     0                         0               0       FLASHBACKLOG                  0                         0               0              6 rows selected.注意:当使用比例达到90%以上,就必须及时清理日志,否则oracle服务会随时停止。**************************************************************************************恢复oracle归档日志正常归档的方法1、重构归档日志文件   此操作在oracle用户下完成[oracle@OASERVER ~]$sqlplus sql>connect / as sysdbasql>shutdown immediate;sql> startup  mount; sql>select * from v$log;        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS    ---------- ---------- ---------- ---------- ---------- --- ----------------    FIRST_CHANGE# FIRST_TIME    ------------- ------------             1          1        263   52428800          1 NO  CURRENT          5924771 13-DEC-10             2          1        261   52428800          1 NO INACTIVE          5878129 12-DEC-10             3          1        262   52428800          1 NO INACTIVE          5899219 13-DEC-10sql>alter database clear unarchived logfile group 1;  //执行此行时可能出错,如有报错直接把 1 修改成 2 或 3 之后再执行1。sql>alter database clear unarchived logfile group 2;sql>alter database clear unarchived logfile group 3;sql>shutdown immediate;sql>startup;说明:此操作之后需用root用户登录系统重启resin服务增加一日志组alter database add logfile group 4 ('+data','+fra','/u01/app/oracle/redo403.log')  size 50M;添加日志文件最后一步 要切换日志 使用一次切换:  1* select  GROUP# ,SEQUENCE#,BYTES/1024/1024 ||'M' "log_size" ,STATUS  ,ARCHIVED from v$logSQL> /    GROUP#  SEQUENCE# log_size        STATUS           ARC---------- ---------- --------------- ---------------- ---         1          7 50M             CURRENT          NO         2          5 50M             INACTIVE         NO         3          6 50M             INACTIVE         NO         4          0 50M             UNUSED           YESalter system switch logfile ;SQL> select  GROUP# ,SEQUENCE#,BYTES/1024/1024 ||'M' "log_size" ,STATUS  ,ARCHIVED from v$log  2  ;    GROUP#  SEQUENCE# log_size        STATUS           ARC---------- ---------- --------------- ---------------- ---         1          7 50M             ACTIVE           NO         2          5 50M             INACTIVE         NO         3          6 50M             INACTIVE         NO         4          8 50M             CURRENT          NO检查一下日志文件的状态select GROUP#  ,MEMBER,STATUS from v$logfile order by 1 SQL> /    GROUP# MEMBER                                        STATUS---------- --------------------------------------------- -------         1 +FRA/orcl/onlinelog/group_1.257.822001547         1 /u01/app/oracle/redo103.log         1 +DATA/orcl/onlinelog/group_1.261.822001539         2 +FRA/orcl/onlinelog/group_2.258.822001559         2 /u01/app/oracle/redo203.log         2 +DATA/orcl/onlinelog/group_2.262.822001551         3 +DATA/orcl/onlinelog/group_3.263.822001563         3 /u01/app/oracle/redo303.log         3 +FRA/orcl/onlinelog/group_3.259.822001571         4 +FRA/orcl/onlinelog/group_4.260.822010503         4 /u01/app/oracle/redo403.log    GROUP# MEMBER                                        STATUS---------- --------------------------------------------- -------         4 +DATA/orcl/onlinelog/group_4.267.82201049712 rows selected.模拟:一个日志组有3个文件,损坏一个select GROUP#  ,MEMBER,STATUS from v$logfile order by 1 SQL> /    GROUP# MEMBER                                        STATUS---------- --------------------------------------------- -------         1 +FRA/orcl/onlinelog/group_1.257.822001547         1 /u01/app/oracle/redo103.log         1 +DATA/orcl/onlinelog/group_1.261.822001539删除一个: rm -rf  /u01/app/oracle/redo103.logstartup force ---->可以成功!!!----》看警告日志文件cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/vim alert_orcl.log Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_1450.trc:ORA-00321: log 1 of thread 1, cannot update log file headerORA-00312: online log 1 thread 1: '/u01/app/oracle/redo103.log'Checker run found 1 new persistent data failures修复一下:删除坏的,添加好的alter database drop logfile member '/u01/app/oracle/redo103.log';alter database add logfile member '/u01/app/oracle/redo103.log' to group 1;切换一下alter system switch logfile ;alter system switch logfile ;alter system switch logfile ;  1* select GROUP#  ,MEMBER,STATUS from v$logfile where group#=1SQL> /    GROUP# MEMBER                                        STATUS---------- --------------------------------------------- -------         1 +DATA/orcl/onlinelog/group_1.261.822001539         1 +FRA/orcl/onlinelog/group_1.257.822001547         1 /u01/app/oracle/redo103.log2、增大闪存空间FLASH_RECOVERY_AREA大小   此操作在oracle用户下完成[oracle@OASERVER ~]$sqlplus sql>connect / as sysdbasql>shutdown immediate;sql>startup mount;sql>show parameter db_recovery_file_dest; //查看回闪恢复区的大小和存放目标SQL> show parameter recoveryNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest                string      +FRAdb_recovery_file_dest_size           big integer 3882Malter system set db_recovery_file_dest_size =5G ;alter system set db_recovery_file_dest='+FRA'; (磁盘组 文件目录)   sql>alter system set db_recovery_file_dest_size = 10G(缺省是2G,可以根据实际情况调整大小,最大不能超过分区可用空间大小,否则重启后自动恢复2G)   sql>alter database open;   说明:此操作之后需用root用户登录系统重启resin服务[root@OASERVER /]cd /app/weaver/resin/bin/[root@OASERVER bin]./stopresin.sh[root@OASERVER bin]./startresin.sh===================================================================*****ORACLE 归档日志打开关闭方法***********===================================================================一 设置为归档方式------------------------view plaincopy to clipboardprint?sql> archive log list;   #查看是不是归档方式  sql> alter system set log_archive_start=true scope=spfile; #启用主动归档  sql> alter system set log_archive_dest='location=/oracle/ora9/oradata/arch' scope=spfile;  #设置归档路径  sql> alter system set log_archive_dest_1='location=/oracle/ora9/oradata/arch1' scope=spfile;  sql> alter system set log_archive_dest_2='location=/oracle/ora9/oradata/arch2' scope=spfile;  #如果归档到两个位置,则可以通过上边方法实现  sql> alter system set log_archive_format='arch_%d_%t_%r_%s.log'  #设置归档日记款式  sql> shutdown immediate;  sql> startup mount;    #打开控制文件,不打开数据文件  sql> alter database archivelog; #将数据库切换为归档模式  sql> alter database open;   #将数据文件打开  sql> archive log list;   #查看此时是否处于归档模式  查询以确定数据库位于archivelog模式中且归档过程正在运行  sql> select log_mode from v$database;  sql> select archiver from v$instance;   日志切换  sql> alter system switch logfile;   这次日志切换将归档写到两个目标地,  即第二步的/oracle/ora9/oradata/arch1和/oracle/ora9/oradata/arch1,要是要对目录确认  在oracle情况中运行如下查询:  sql> select name from v$archived_log;  而后在操作系统中确认查询所列出的文件  二 设置非归档方式------------------------------------------view plaincopy to clipboardprint?sql> archive log list;   #查看是否是归档方式  sql> alter system set log_archive_start=false scope=spfile; #禁用自动归档  sql> shutdown immediate;  sql> startup mount;    #打开控制文件,不打开数据文件  sql> alter database noarchivelog; #将数据库切换为非归档模式  sql> alter database open;   #将数据文件打开  sql> archive log list;   #查看此时便处于非归档模式   三 归档相关命令--------------------------------------- view plaincopy to clipboardprint?archive log stop;  archive log start;  archive log list;    show parameters;  show parameters log_archive_start;  show parameters log_archive_max_process; #归档进程数  alter system set log_archive_max_process=5; #将归档进程数改为5  select * from v$bgprocess;    #检查后台进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值