当改主库为protection模式时,会遇到错误,得把数据库启动到mount下,才可以修改
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
--创建闪回还原点,预防万一数据库崩溃,还可以闪回
SQL> create restore point p1 guarantee flashback database;
还原点已创建。
--下面将保护级别提高
SQL> alter database set standby database to maximize performance;
数据库已更改。
SQL> alter database set standby database to maximize availability;
数据库已更改。
SQL> alter database set standby database to maximize protection;
alter database set standby database to maximize protection
*
第 1 行出现错误:
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
--尝试在mount下修改模式
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1027182592 bytes
Fixed Size 2259680 bytes
Variable Size 645924128 bytes
Database Buffers 373293056 bytes
Redo Buffers 5705728 bytes
数据库装载完毕。
SQL> alter database set standby database to maximize protection;
数据库已更改。
--可是打开数据库时失败了
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 31157
会话 ID: 1 序列号: 5
--退出再次连接主库
SQL> exit;
从 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
C:\Users\user>sqlplus sys/********@os_solgle as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 9月 19 12:03:19 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1027182592 bytes
Fixed Size 2259680 bytes
Variable Size 645924128 bytes
Database Buffers 373293056 bytes
Redo Buffers 5705728 bytes
数据库装载完毕。
---从上面可以看出,数据库可以启动到mount,下面修改async为sync
SQL> alter system set log_archive_dest_2='service=sd_solgle reopen=120 lgwr sync
valid_for=(online_logfiles,primary_role) db_unique_name=sd_solgle' scope=spfile;
系统已更改。
---再次重启,使参数生效,(注:其实这里可以使用scope=both,然后直接打开,不用重启)
SQL> startup mount force;
ORACLE 例程已经启动。
Total System Global Area 1027182592 bytes
Fixed Size 2259680 bytes
Variable Size 645924128 bytes
Database Buffers 373293056 bytes
Redo Buffers 5705728 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
-----以上操作,数据库已经被改为最大保护模式-----
---------根据当前的sync模式,做各种切换,看有什么不同------------
SQL> alter database set standby database to maximize availability;
数据库已更改。
--这步说明从protection变为availability可以顺利切换,顺利降级
SQL> alter system set log_archive_dest_2='service=sd_solgle reopen=120 lgwr async
valid_for=(online_logfiles,primary_role) db_unique_name=sd_solgle' scope=both;
系统已更改。
---查询主库
SQL>select protection_mode from v$database;
MAXIMUM AVAILABILITY
---查询备库
SQL>select protection_mode from v$database;
MAXIMUM PERFORMANCE
--以上该步修改可以看出从sync变为async时,备库已经自动变为PERFORMANCE,自动降级,这里需要注意,如果查询主库却仍然是AVAILABILITY
SQL> alter system set log_archive_dest_2='service=sd_solgle reopen=120 lgwr sync
valid_for=(online_logfiles,primary_role) db_unique_name=sd_solgle' scope=both;
系统已更改。
---查询主库备份库,结果一致
SQL> select protection_mode from v$database;
PROTECTION_MODE
----------------------------------------
MAXIMUM AVAILABILITY
从上面可以看出,当保护模式是protection和availability时,同步方式只能是sync,当修改sync为async时,备库会降级为performance,当从async改到sync时,保护模式会同时变为availability,但要想继续从sync改为protection模式,得将主库在mount下修改,然后再打开;