关于DG的安装配置就省略了,我的DG环境是Oracle 10g,不能启动到11g那种adg 的实时查询状态,
但是保护模式效果还是相同的.
最大保护模式:
主库上设置:
SQL> alter database mount;
Database altered.
SQL> alter database set standby database to maximize protection;
Database altered.
SQL> alter database open;
Database altered.
SQL> select protection_mode from v$database;
PROTECTION_MODE
--------------------
MAXIMUM PROTECTION
另一个session:
SQL> alter system switch logfile;
系统已更改。
SQL> create table t (id number(20));
表已创建。
SQL> insert into t values (2);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t;
ID
----------
2
SQL> select * from t;
ID
----------
2
复制代码
备机上:
SQL> select GROUP#,THREAD#,SEQUENCE#,USED,ARCHIVED,STATUS from v$standby_log;
GROUP# THREAD# SEQUENCE# USED ARC STATUS
---------- ---------- ---------- ---------- --- ----------
4 1 0 512 NO UNASSIGNED
5 1 7 4608 YES ACTIVE
6 0 0 512 YES UNASSIGNED
7 0 0 512 YES UNASSIGNED
复制代码
无法关闭备机数据库,进备机系统禁用网卡:
SQL> shutdown immediate;
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
SQL>
复制代码
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。
但其它session可以查询:
当将备机上的网卡重新启用后,过一会不再阻塞。
所以我观察的结果是,当设置为maximize protection时,备机数据库无法关闭。当备机无法连接时,主机上的数据库事务提交被阻塞(但其它session的查询操作仍有响应),直到备机重新能够连接(此时日志应该自动同步过去)。
最大高可用配置:
主机上设置最大可用模式:
进备机系统禁用网卡:
然后主机上执行insert和commit操作,发现执行commit的时候被阻塞。
但过一会不再阻塞 :
此时再查数据库模式:
数据库模式显示是最大可用模式,但此时操作不再阻塞(实际上和最大性能模式是一样的)。
在最大可用模式下备机数据库可以关闭。
主机可以查询完整数据
但备机数据不是最新:
重新进入备机模式,待同步后查询:
此时数据已经同步。
所以在最大可用模式下,当redo到达不了备机时,数据库虽然显示模式还是最大可用模式,但实际上和最大性能模式一致。此时,和最大保护模式不一样的是,主库可以任意地进行写入提交操作,不会阻塞,而当备库可用时,这些操作会同步到备库。
最大性能模式:
主库上配置和执行:
SQL> conn / as sysDBA
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 79693392 bytes
Database Buffers 201326592 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database set standby database to maximize performance;
Database altered.
SQL> select protection_mode from v$database;
PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE
SQL> alter database open;
Database altered.
SQL> select * from t;
ID
----------
100
1001
200
SQL> alter system switch logfile;
System altered.
复制代码
备机可以关闭:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
复制代码
备机进入mount和standby模式:
SQL> startup mount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 79693392 bytes
Database Buffers 201326592 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select GROUP#,THREAD#,SEQUENCE#,USED,ARCHIVED,STATUS from v$standby_log;
GROUP# THREAD# SEQUENCE# USED ARC STATUS
---------- ---------- ---------- ---------- --- ----------
4 1 0 512 NO UNASSIGNED
5 1 0 512 NO UNASSIGNED
6 0 0 512 YES UNASSIGNED
7 0 0 512 YES UNASSIGNED
复制代码
看数据是否同步:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open read only;
Database altered.
SQL> select * from t;
ID
----------
100
1001
200
复制代码
可以看到表t的数据删除操作已经得到同步。
实验完毕!
|
|