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:\pp\oracle\admin\epicdb\adump'

 2 *.audit_trail='db'

 3 *.compatible='11.2.0.0.0'

 4 *.control_files='F:\***\***\***\CONTROL01.CTL','D:\PP\ORACLE\FAST_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:\pp\oracle'

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,之后重启数据库。

你可能感兴趣的:(oracle)