物理standby,主库保护模式由maximize performance 切换到 maximize protection。
出现ORA-16072
[@more@]
1 问题描述
SQL>
SQL> select protection_mode from v$database;
PROTECTION_MODE
----------------------------------------
MAXIMUM PERFORMANCE
SQL>
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 268436372 bytes
Database Buffers 260046848 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
SQL>
SQL> show parameter dest_2
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_create_online_log_dest_2 string
log_archive_dest_2 string SERVICE=standby LGWR ASYNC VAL
ID_FOR=(ONLINE_LOGFILES,PRIMAR
Y_ROLE) DB_UNIQUE_NAME=standby
SQL>
SQL> alter database set standby database to maximize protection;
数据库已更改。
SQL>
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-16072: 需要一个备用数据库目标的最小值
ORA-16072: 需要一个备用数据库目标的最小值
SQL>
SQL> select protection_mode from v$database;
select protection_mode from v$database
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结束
进程 ID: 3580
会话 ID: 170 序列号: 5
SQL>
SQL>
2 定位,解决
其实这个ORA-16072问题是由于log_archive_dest_2设置不当造成的。
做一下修改:
SQL>
SQL> conn sys/oracle as sysdba
已连接到空闲例程。
SQL> select protection_mode from v$database;
select protection_mode from v$database
*
第 1 行出现错误:
ORA-01034: ORACLE not available
进程 ID: 0
会话 ID: 0 序列号: 0
SQL>
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 268436372 bytes
Database Buffers 260046848 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
SQL>
SQL> show parameter dest_2
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_create_online_log_dest_2 string
log_archive_dest_2 string SERVICE=standby LGWR ASYNC VAL
ID_FOR=(ONLINE_LOGFILES,PRIMAR
Y_ROLE) DB_UNIQUE_NAME=standby
SQL>
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=standby SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=both;
系统已更改。
SQL>
SQL> show parameter dest_2
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_create_online_log_dest_2 string
log_archive_dest_2 string SERVICE=standby SYNC AFFIRM VA
LID_FOR=(ONLINE_LOGFILES,PRIMA
RY_ROLE) DB_UNIQUE_NAME=standb
y
SQL>
SQL> alter database set standby database to maximize protection;
数据库已更改。
SQL>
SQL> select protection_mode from v$database;
PROTECTION_MODE
----------------------------------------
MAXIMUM PROTECTION
SQL>
SQL> alter database open;
数据库已更改。
SQL>
3 察看备库确认保护模式已经更改
SQL>
SQL> select database_role, protection_mode from v$database;
DATABASE_ROLE PROTECTION_MODE
---------------- --------------------
PHYSICAL STANDBY MAXIMUM PROTECTION
SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/593324/viewspace-1009785/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/593324/viewspace-1009785/