**************************************************************************************归档日志空间不足现的问题的现象软件正在操作,突然点击任何菜单无反应;重启软后,长时间没反应或直接报数据库连接错误;以下系统管理员操作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; #检查后台进程
oracle显示日志空间不足,Oracle归档日志空间不足引发的问题及解决方法
最新推荐文章于 2023-04-27 15:15:52 发布