今天有个测试环境的DG要铲掉,结果关闭Standby备用数据库,并清除主数据库中所有与Data Guard有关的参数后,重启主数据库时遭遇了ORA-16072的错误。
数据库能mount但是不能Open。
alter 日志的主要内容如下:
Tue Jun 18 11:04:06 2013
alter database open
This instance was first to open
Picked broadcast on commit scheme to generate SCNs
Tue Jun 18 11:04:06 2013
LGWR: STARTING ARCH PROCESSES
Tue Jun 18 11:04:06 2013
ARC0 started with pid=36, OS id=20449
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: STARTING ARCH PROCESSES
Tue Jun 18 11:04:07 2013
ARC1 started with pid=37, OS id=20451
LGWR: Primary database is in MAXIMUM AVAILABILITY mode
LGWR: Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR
LGWR: Minimum of 1 LGWR standby database required
Errors in file /soft/oracle/diag/rdbms/osdbso/osdbso1/trace/osdbso1_lgwr_20303.trc:
ORA-16072: a minimum of one standby database destination is required
Errors in file /soft/oracle/diag/rdbms/osdbso/osdbso1/trace/osdbso1_lgwr_20303.trc:
ORA-16072: a minimum of one standby database destination is required
LGWR (ospid: 20303): terminating the instance due to error 16072
Tue Jun 18 11:04:07 2013
ARC2 started with pid=38, OS id=20453
Tue Jun 18 11:04:07 2013
System state dump is made for local instance
System State dumped to trace file /soft/oracle/diag/rdbms/osdbso/osdbso1/trace/osdbso1_diag_20275.trc
Trace dumping is performing id=[cdmp_20130618110407]
Instance terminated by LGWR, pid = 20303
Trace日志文件的内容如下:
Trace file /soft/oracle/diag/rdbms/osdbso/osdbso1/trace/osdbso1_lgwr_20303.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /soft/product/11.2.0.1/dbh
System name: Linux
Node name: dmdb01
Release: 2.6.18-238.el5PAE
Version: #1 SMP Tue Jan 4 15:50:36 EST 2011
Machine: i686
Instance name: osdbso1
Redo thread mounted by this instance: 1
Oracle process number: 18
Unix process pid: 20303, image: oracle@dmdb01 (LGWR)
*** 2013-06-18 11:04:07.642
*** SESSION ID:(7.1) 2013-06-18 11:04:07.642
*** CLIENT ID:() 2013-06-18 11:04:07.642
*** SERVICE NAME:() 2013-06-18 11:04:07.642
*** MODULE NAME:() 2013-06-18 11:04:07.642
*** ACTION NAME:() 2013-06-18 11:04:07.642
Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR
Standby database verification failed:16072
ORA-16072: a minimum of one standby database destination is required
error 16072 detected in background process
ORA-16072: a minimum of one standby database destination is required
*** 2013-06-18 11:04:07.643
LGWR (ospid: 20303): terminating the instance due to error 16072
ksuitm: waiting up to [5] seconds before killing DIAG(20275)
从这些日志中可以看到,是数据库要求有一个Standby数据库的配置,但是这些配置都被清除了,所以才Open不了,但是我的目的本身就是要清除的。
同时从日志中发现了一个关键信息就是:LGWR: Primary database is in MAXIMUM AVAILABILITY mode。这里提示当前Primary主库处于最大可用模式,而我们都知道没有配置Data Guard的时候数据库应是MAXIMUM PERFORMANCE(最大性能)模式,所以问题应该就是出在这里。
执行如下操作:
11:06:38 osdbso1@SYS> startup mount
ORACLE instance started.
Total System Global Area 2042241024 bytes
Fixed Size 1337548 bytes
Variable Size 1744832308 bytes
Database Buffers 285212672 bytes
Redo Buffers 10858496 bytes
Database mounted.
11:06:58 osdbso1@SYS> select database_role,protection_mode from v$database;
DATABASE_ROLE PROTECTION_MODE
---------------- --------------------
PRIMARY MAXIMUM AVAILABILITY
Elapsed: 00:00:00.05
11:06:58 osdbso1@SYS> alter database set standby to maximize performance;
Database altered.
Elapsed: 00:00:00.05
11:07:05 osdbso1@SYS> alter database open;
Database altered.
Elapsed: 00:00:10.46
数据库可以正常Open了。