oracle实验记录 (oracle 10G dataguard(10)flashback 与dg)

关于primary resetlogs 与  standby flashback

 

情况一:primary resetlogs时 standby还未应用(未开应用or实时应用)primary 要resetlogs后(从SCN 判断)的 archived log
,那么当primary resetlogs 并产生新的archived log时候 standby可以 正常接收新的archive log并应用~~但会忽略resetlogs 时,已经产生 在要resetlogs 后scn的archivelog,另外也可以用SCN方式判断
primary的 TO_CHAR(RESETLOGS_CHANGE# - 2)>standby 的current_scn (都从v$database中查 ) 表示 standby不用有任何操作 可以继续接受archivedlog并应用

 

SQL> alter system set log_archive_dest_2='service=standby1 valid_for=(online_log           (primary)
files,primary_role) db_unique_name=standby1';

系统已更改。


SQL> shutdown immediate; (standby)
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount (standby)
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。


SQL> alter database flashback  on; (standby,为standby开启flashback database)

数据库已更改。

SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
SQL> select process,client_process,status,sequence# from v$managed_standby; (standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CONNECTED             0
ARCH      ARCH     CONNECTED             0
RFS       N/A      IDLE                  0


C:\>rman target /  catalog rman/rman@orcl

恢复管理器: Release 10.2.0.1.0 - Production on 星期四 11月 12 15:31:01 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: XH (DBID=3098165337)
连接到恢复目录数据库
RMAN> backup database ;
完成 backup 于 12-11月-09

SQL> select current_scn from v$database;(primary)

CURRENT_SCN
-----------
     733042

SQL> drop table t1;(primary)

表已删除。

SQL> alter system switch logfile;(primary)  产生一个 归档

系统已更改。

SQL>
SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO~~~~~~~~~~~~~~~~~~~~~~~~`standby未应用

已选择6行。

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     727931

RMAN> run{startup force mount;
2> set until scn=733042;
3> restore database;
4> recover database;
5> sql'alter database open resetlogs';}

Oracle 实例已启动
数据库已装载

 


SQL> select * from t1;(primary)

         A
----------
         1
         2
         3 ~~~~~~~~~~~~~~~~~~~~不完全恢复resetlogs open

 

SQL> SELECT TO_CHAR(RESETLOGS_CHANGE# - 2) FROM V$DATABASE; (primary)

TO_CHAR(RESETLOGS_CHANGE#-2)
----------------------------------------
733044


SQL> select current_scn from v$database;(standby)

CURRENT_SCN
-----------
     727931
primary的 TO_CHAR(RESETLOGS_CHANGE# - 2)>standby 的current_scn (都从v$database中查 ) 表示 standby不用有任何操作 可以继续接受archivedlog并应用


SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO~~~~~~~~~~~~~~~~~~~~~~~还没应用

已选择6行。
SQL> insert into t1 values(4);(primary)

已创建 1 行。

SQL> commit;(primary)

提交完成。

SQL> alter system switch logfile;(primary)

系统已更改。
SQL> select process,client_process,status,sequence# from v$managed_standby;(standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING              17
ARCH      ARCH     CLOSING               1
RFS       ARCH     IDLE                  0
SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO
NO~~~~~~~~~~~~接受新archive log

已选择7行。
SQL> alter database recover managed standby database using current logfile disco  (standby)
nnect from session;

数据库已更改。

SQL> alter database recover managed standby database cancel;(standby)

数据库已更改。

SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO~~~忽略了这个 在resetlogs scn后 产生的 archived log(不是resetlog open后新产生的 archived log)
YES**********************应用了

已选择7行。

SQL> select * from t1;

         A
----------
         1
         2
         3
         4


情况2:standby开启实时应用,或一直开着恢复模式,此时应用了primary 要resetlogs 后产生的 SCN,当primary resetlogs open后 此时standby 可以接受新archive log 或redo 但不会应用,需要flashback standby,既 primary的 TO_CHAR(RESETLOGS_CHANGE# - 2)


RMAN> backup database;

启动 backup 于 12-11月-09
使用通道 ORA_DISK_1

SQL> alter database recover managed standby database  disconnect from session;(standby)

数据库已更改。

SQL> select process,client_process,status,sequence# from v$managed_standby;(standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING               2
ARCH      ARCH     CLOSING               1
RFS       UNKNOWN  IDLE                  0
MRP0      N/A      WAIT_FOR_LOG          3
SQL> select current_scn from v$database;(primary)

CURRENT_SCN
-----------
     734858


SQL> drop table t1;(primary)

表已删除。

SQL> alter system switch logfile;(primary)

系统已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
NO
YES
YES~~~~~~~~~~~~~~~~~~应用了我们要 不完全恢复 scn 734858后 产生的resetlogs

已选择8行。

 

RMAN> run{startup force mount;
2> set until scn=734858;
3> restore database;
4> recover database;
5> sql'alter database open resetlogs';}


SQL> select * from t1;(primary)

         A
----------
         1
         2
         3
         4

SQL> insert into t1 values(5);(primary)

已创建 1 行。

SQL> commit;primary)

提交完成。

SQL> alter system switch logfile;(primary)

系统已更改。
SQL> select process,client_process,status,sequence# from v$managed_standby;(standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING               2
ARCH      ARCH     CLOSING               1
RFS       N/A      IDLE                  0
MRP0      N/A      WAIT_FOR_LOG          3

SQL> select applied from v$archived_log;(standby)


APP
---
YES
YES
YES
YES
YES
NO
YES
YES
NO~~~~~~~~~~~~~~~~resetlogs open后 新的archived log(insert t1 值=5)

已选择9行。

SQL> SELECT TO_CHAR(RESETLOGS_CHANGE# - 2) FROM V$DATABASE;(primary)

TO_CHAR(RESETLOGS_CHANGE#-2)
----------------------------------------
734863

SQL> select current_scn from v$database;(standby)

CURRENT_SCN
-----------
     734935


standby alert.log  下面表明standby数据文件是孤立的 来自resetlogs open前
Thu Nov 12 16:28:59 2009
Errors in file e:\standby\bdump\standby1_mrp0_4444.trc:
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: 'E:\STANDBY\DATAFILE\SYSTEM01.DBF'


SQL> shutdown immediate (standby)
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount (standby)
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。


SQL> flashback database to scn 734858;(standby)

闪回完成。

SQL>

SQL> alter database recover managed standby database  disconnect from session;(standby)

数据库已更改。

SQL> select process,client_process,status,sequence# from v$managed_standby;(standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CONNECTED             0
ARCH      ARCH     CONNECTED             0
MRP0      N/A      WAIT_FOR_LOG          2

SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO
YES
YES
YES~~~~~~~~~~~~~~~`应用了

已选择9行。

 


SQL> alter database recover managed standby database  cancel;(standby)

数据库已更改。

SQL> alter database open;(standby)

数据库已更改。


SQL> select* from t1;(standby)

         A
----------
         1
         2
         3
         4
         5


另外 也可以 对standby 执行不完全恢复 (until scn),推荐用flashback database


关于alter database activate standby database

这是一个强行激活standby 到read write的操作,oracle不推荐 此操作,因为如果standby 没开flashback database,那么这是一个单向操作,standby转换成primary后 永远也转换不成standby了,因为 在open后 这个过程将自动 resetlogs(standby)。因此,在 startup 之前要做一次 cold backup,因为以往的 backup 最多只能 recover 到 standby database 被activated 这一点。 因此  这个是个单项过程

 

SQL>  select db_unique_name ,database_role,open_mode,switchover_status from v$da 
tabase;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
------------------------------ ---------------- ---------- --------------------
standby1                       PHYSICAL STANDBY READ ONLY  NOT ALLOWED

 

SQL> create restore point test_point guarantee flashback database;(standby)

还原点已创建。

SQL> alter database activate standby database;(standby)

数据库已更改。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL>  select db_unique_name ,database_role,open_mode,switchover_status from v$da
tabase;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
------------------------------ ---------------- ---------- --------------------
standby1                       PRIMARY          READ WRITE SESSIONS ACTIVE   ~~~~~~~~已经到 读写状态

SQL>

SQL> alter database commit to switchover to physical standby;  (standby)
alter database commit to switchover to physical standby
*
第 1 行出现错误:
ORA-16416: 切换目标与主目标不同步

正常的转换 无法进行

 

SQL> shutdown immediate;  (standby)
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount           (standby)
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             100664000 bytes
Database Buffers          180355072 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> flashback database to restore point test_point;   (standby)

闪回完成。


SQL> alter database convert to physical standby;    (standby)

数据库已更改。

SQL> startup force                   (standby)
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             100664000 bytes
Database Buffers          180355072 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL>  select db_unique_name ,database_role,open_mode,switchover_status from v$da  (standby)
tabase;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
------------------------------ ---------------- ---------- --------------------
standby1                       PHYSICAL STANDBY READ ONLY  TO PRIMARY


SQL> select count(*) from v$archived_log; (standby)

  COUNT(*)
----------
         9

SQL> alter system switch logfile;(primary)

系统已更改。
SQL> select count(*) from v$archived_log;(standby)

  COUNT(*)
----------
        10
SQL> alter database recover managed standby database  disconnect from session;   (standby)

数据库已更改。

SQL> select process,client_process,status,sequence# from v$managed_standby; (standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING               2
ARCH      ARCH     CONNECTED             0
RFS       UNKNOWN  IDLE                  0
MRP0      N/A      WAIT_FOR_LOG          0

SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES

已选择10行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-619720/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12020513/viewspace-619720/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值