Database mounted.
ORCLSTD_LG > alterd database open;
SP2-0734: unknown command beginning "alterd dat..." - rest of line ignored.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
ORCLSTD_LG > alter database open resetlogs;
Database altered.
开始应用REDO数据
ORCLSTD_LG >alter database start logical standby apply;
Database altered.
ORCLSTD_LG >alter database stop logical standby apply;
Database altered.
ORCLSTD_LG >select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
IS_
---
3 ONLINE
/u01/app/oracle/oradata/orclstd/redo03.log
NO
2 ONLINE
/u01/app/oracle/oradata/orclstd/redo02.log
NO
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
IS_
---
1 ONLINE
/u01/app/oracle/oradata/orclstd/redo01.log
NO
ORCLSTD_LG >alter database add standby logfile group 4 '/u01/app/oracle/oradata/orclstd/stdredo01.log' size 50m;
Database altered.
ORCLSTD_LG >alter database add standby logfile group 5 '/u01/app/oracle/oradata/orclstd/stdredo02.log' size 50m;
Database altered.
ORCLSTD_LG >alter database add standby logfile group 6 '/u01/app/oracle/oradata/orclstd/stdredo03.log' size 50m;
Database altered.
重新执行:
ORCLSTD_LG >alter database start logical standby apply immediate;
Database altered.
测试:
Primary:
SQL> select * from scott.test;
no rows selected
SQL> insert into scott.test values(1);
1 row created.
SQL> insert into scott.test values(2);
1 row created.
SQL> insert into scott.test values(3);
1 row created.
SQL> commit;
Commit complete.
Standby:
SQL> select * from scott.test;
ID
----------
1
2
3
逻辑Standby创建(转换)成功……
总结:
一、Physical Standby,Logical Standby (物理Standby及逻辑Standby)
Physical standby直接从主库接受archived log,然后直接做基于block的物理恢复(更新或调整变化的block),所以physical standby在物理文件一级完全都等同于主库。physical standby恢复只是底层的block apply, OS层面的工作,数据库SCHEMA,包括索引都是一样的。它是直接应用REDO或归档实现同步的 。不会涉及temp ,undo等。物理STANDBY可能的模式:只读模式(OPEN READONLY)和恢复模式(MANANGED RECOVERY)。
在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句(SQL Apply)。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。
在9i R2之前,data guard的服务器只能运行在read only或者recover模式, 一个physical standby database在物理上完全等同主库,当physical standby database正在做恢复的时候,不能打开用作其他用途。 而logical standby database只是在logical上等同需要恢复的schema, 所以在恢复的时候,可以同时打开做report(做查询动作),也可以用户和主库不一样的 数据对象等等,极大了提高了备用库的利用率。
二、Dataguard
都是Standby。在Oracle 9i之前称为Standby,9i或之后的Standby被改名为Data guard。不过功能上也有了很多的改进和区别 。
三、Standby下LGWR / ARCH传输
查看数据库保护模式:
SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
1.最大性能(maximize performance):这是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息(主数据库的提交操作不等待STANDBY),该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。 可以使用LGWR ASYNC或者ARCH两种传输模式。
ARCH传输模式:Primary DB上的online redo log写满或其他条件引起redo log写归档的时候,redo log生成的archived log file写到本地归档目录的同时,写入了Standby归档目录。只是Primary db上的online redo log切换不必等Standby上的写归档动作结束。
2.最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时,最大可用模式会自动降低成最大性能模式,所以standby故障不会导致primay不可用。在问题纠正之后,Standby和主数据库进行再同步,至少有一个standby可用的情况下,即使primary down机,也能保证不丢失数据