DG保护模式切换中遇到的ORA-16072错误
接上文,我接着做保护模式的切换,我想将保护模式由最大性能模式切换为最大保护模式做法如下:
在主库上: SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 255855492 bytes Database Buffers 348127232 bytes Redo Buffers 7135232 bytes 数据库装载完毕。
SQL> alter system set log_archive_dest_2='SERVICE=mytest LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mytest' scope=both; 系统已更改。
SQL> alter database set standby database to maximize protection; 数据库已更改。
SQL> alter database open;
此时报错误ORA-16072:需要一个备用数据库目标的最小值 阅读文档后发现是因为昨天在配置的时候没有在从库增加standby redo log.
文档中的相关说明如下: A standby redo log is required for the maximum protection and maximum availability modes and the LGWR ASYNC transport mode is recommended for all databases. Data Guard can recover and apply more redo data from a standby redo log than from archived redo log files alone.
我在从库重新添加了STANDBY REDO LOG
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 234883972 bytes Database Buffers 369098752 bytes Redo Buffers 7135232 bytes 数据库装载完毕。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 2 ('D:/ORACLE/ORADATA/MYTEST/REDO04.LOG') SIZE 50M; 数据库已更改。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 2 ('D:/ORACLE/ORADATA/MYTEST/REDO05.LOG') SIZE 50M; 数据库已更改。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 2 ('D:/ORACLE/ORADATA/MYTEST/REDO06.LOG') SIZE 50M;
数据库已更改。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 2 ('D:/ORACLE/ORADATA/MYTEST/REDO07.LOG') SIZE 50M; 数据库已更改。
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG; GROUP# THREAD# SEQUENCE# ARC STATUS ---------- ---------- ---------- --- ---------- 4 0 0 YES UNASSIGNED 5 0 0 YES UNASSIGNED 6 0 0 YES UNASSIGNED 7 0 0 YES UNASSIGNED SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
再按以上步骤操作后就OK了。 SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database; DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL ---------------- -------------------- -------------------- PHYSICAL STANDBY MAXIMUM PROTECTION MAXIMUM PROTECTION