Oracle 设置archivelog错误解决方案

在Oracle 数据库的实际应用中,开启archivelog模式是必不可少的,但是在设置archivelog的过程中,可能因为不小心出现错误,导致数据库无法启动,本案例就是一种情况。

误操作现象:

设置archivelog name格式时,将archivelog的命名格式设置为archive_%s_%t.arc,修改系统配置文件成功,重启数据库使设置生效。但是异常发生了,数据库无法启动。

出错原因:

设置archivelog name格式时,匹配符%s,%t,%r是必须的。

%s 日志序列号。

%t 重做线程编号。

%r RESETLOGS的ID值。

因为在设置的时候没有符合匹配符%s,%t,%r都存在的要求,所以在数据库启动,加载参数文件时,这条设置无法验证通过,导致数据库无法启动。

 1 SQL> alter system set log_archive_format="archive_%s_%t.arc" scope=spfile;
 2 
 3 System altered.
 4 
 5 SQL> shutdown immediate
 6 Database closed.
 7 Database dismounted.
 8 ORACLE instance shut down.
 9 SQL> startup mount
10 ORA-19905: log_archive_format must contain %s, %t and %r
11 SQL> alter system set log_archive_format="robt_%s_%t_%r.arc" scope=spfile;
12 alter system set log_archive_format="robt_%s_%t_%r.arc" scope=spfile
13 *
14 ERROR at line 1:
15 ORA-01034: ORACLE not available
16 Process ID: 0
17 Session ID: 153 Serial number: 7663
View Code

解决方案:

1.在spfile的同目录下,创建文件inite<instance name>.ora, 内容如下

根据spfile文件生成的。

 1 *.audit_file_dest='D:pporacleadminepicdbadump'
 2 *.audit_trail='db'
 3 *.compatible='11.2.0.0.0'
 4 *.control_files='F:*********CONTROL01.CTL','D:PPORACLEFAST_RECOVERY_AREA<instance name>CONTROL02.CTL'
 5 *.db_block_size=8192
 6 *.db_domain=''
 7 *.db_name='epicdb'
 8 *.db_recovery_file_dest_size=2147483648
 9 *.db_recovery_file_dest='d:<instance name>FRA'
10 *.diagnostic_dest='D:pporacle'
11 *.dispatchers='(PROTOCOL=TCP) (SERVICE=epicdbXDB)'
12 *.job_queue_processes=1000
13 *.log_archive_dest_1='location=E:<instance name>archivelog'
14 *.log_archive_dest_10='location=use_db_recovery_file_dest'
15 *.log_archive_format='archive_%s_%t_%r.arc'在设置pfile的过程中修复archivelog设置
16 *.memory_target=854589440
17 *.open_cursors=300
18 *.processes=150
19 *.remote_login_passwordfile='EXCLUSIVE'
20 *.undo_tablespace='UNDOTBS3'
21 *.utl_file_dir='c:logminer'
View Code

2. PL/SQL中执行

1 SQL>startup nomount pfile=<pfile所在的路径>init<instance name>.ora’;
2 这里应该提示
3 ORACLE instance started.
View Code

3.通过pfile启动了数据库,通过pfile生成spfile

1 SQL> create spfile from pfile;
2 File created.
View Code

4.重启数据库

1 SQL> shutdown immediate
2 ORA-01507: database not mounted
3 ORACLE instance shut down.
4 SQL> startup
5 ORACLE instance started.
6 ....
7 Database mounted.
8 Database opened.
View Code

总结:

找到问题出现的根本原因,是解决问题的要点。本案例的现象就是数据库无法加载spfile文件,导致无法正常启动,archivelog的设置错误是问题的导火索。先要让数据库启动才能重新设置archivelog,根据这个思路,重建pfile,在重建的过程中将archivelog的设置修改正确,启动数据库,根据pfile生成spfile,之后重启数据库。

原文地址:https://www.cnblogs.com/SUN-PH/p/3498353.html