ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (oracle 10G dataguard(6)保护模式)

oracle实验记录 (oracle 10G dataguard(6)保护模式)

原创 Linux操作系统 作者:fufuh2o 时间:2009-11-16 13:35:32 0 删除 编辑

standby的 3种保护模式

 

maximum protection最高保护模式:
要求

要求
redo写进程:LGWR
网络传输:sync
,磁盘i/0 :affirm ,默认(noaffirm)
需要standbylogfile
设置为这个后:
当主库primary写redo日志的时候 必须同时写入standby standbylogfile,全完后事务才会提交,如果故障导致主数据库无法向至少一个远程
备重做日志写其重做流,则主数据库会关闭


maximum availability 最高实用性
要求:
redo写进程:LGWR
网络传输 sync
磁盘i/o affirm
需要 standbylogfile
 
设置后:当主库primary写redo日志时候,必须同时写入standby standbylogfile ,完成后事务才可以提交,当有故障导致主库无法写重做流到备用库的standby logfile时候,主库会自动转为‘最大性能’模式继续运行 直到故障消除时候~自动转为 最高可用性~~~~~,不会shutdown 主库

 

 

Maximum performance 最大性能

要求
rodo写进程: lgwr,arcn
网络传输:SYNC ,ASYNC
磁盘i/o affirm ,noaffirm
standbylogfile ,可以要,也可以不要
设置后:primary写redo时候,事务就可以提交,写入也可是不同步的,有故障导致无法写入时候,不会shutdown 主库

 


实验 3种方式SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa    (standby)
se;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM PERFORMANCE  standby1                       READ ONLY  PHYSICAL STANDBY


SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa   (primary)
se
  2  ;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM PERFORMANCE  xh                             READ WRITE PRIMARY

默认情况是 最高性能模式

 

SQL> col dbid format a10
SQL> select dbid,group#,bytes,status ,first_change#,last_change# from v$standby (standby)
log;

DBID           GROUP#      BYTES STATUS     FIRST_CHANGE# LAST_CHANGE#
---------- ---------- ---------- ---------- ------------- ------------
3097375337          4   52428800 ACTIVE           1480745      1481300
UNASSIGNED          5   52428800 UNASSIGNED             0            0

 

SQL> show parameter log_archive_dest_2  (primary)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=standby1 lgwr net_time
                                                 ut=10 db_unique_name=standby1
SQL> alter system set log_archive_dest_2='service=standby1 affirm lgwr sync db_u   (primary)
nique_name=standby1';

系统已更改。

 


最高保护模式
SQL> startup force mount  (primary)
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             104858304 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> alter database set standby database to maximize protection;  (primary)

数据库已更改。

SQL> alter database open; (primary)

数据库已更改。

 

SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa   (standby )
se;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM PROTECTION   standby1                       READ ONLY  PHYSICAL STANDBY


SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa  (primary)
se;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM PROTECTION   xh                             READ WRITE PRIMARY


现在是 最高保护模式, STANDBY 不允许 shutdown
SQL> shutdown immediate;(standby )
ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸载
SQL> alter database recover managed standby database cancel;  (standby )
alter database recover managed standby database cancel  
*
第 1 行出现错误:
ORA-16136: 受管备用恢复未激活


SQL> shutdown immediate; (standby )
ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸载


SQL> select group# from v$standby_log;

    GROUP#
----------
         4
         5

SQL> alter database drop standby logfile group 4;
alter database drop standby logfile group 4
*
第 1 行出现错误:
ORA-00261: 正在归档或修改日志 4 (线程 1)
ORA-00312: 联机日志 4 线程 1: 'E:\STANDBY\STANDBY04.LOG'

正在使用的 standby logfile 是不允许删除的

SQL> alter database drop standby logfile group 5;

数据库已更改。

没使用的 standby logfile可以删除


SQL> alter database add standby logfile group 5 'e:\standby\standby05.log' reuse
;

数据库已更改。

SQL>

 

 


最高实用性


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

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


SQL> alter database set standby database to MAximize AVAILABILITY; (primary)

数据库已更改。

SQL> alter database open; (primary)

数据库已更改。

SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa   (primary)
se;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM AVAILABILITY xh                             READ WRITE PRIMARY


SQL> select protection_mode,db_unique_name,open_mode,database_role from v$databa   (standby)
se;

PROTECTION_MODE      DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
-------------------- ------------------------------ ---------- ----------------
MAXIMUM AVAILABILITY standby1                       READ ONLY  PHYSICAL STANDBY


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

当standby 关闭,在最高可用性模式时候,PRIMARY 的redo传输不到standby,primary会自动转换成 最高性能模式

 

 

关于日志应用
SQL> select dest_id,status,applied_seq#,recovery_mode from v$archive_dest_status   (standby)
;

   DEST_ID STATUS    APPLIED_SEQ# RECOVERY_MODE
---------- --------- ------------ -----------------------
         1 VALID                0 IDLE
         2 VALID                0 IDLE
         3 INACTIVE             0 IDLE
         4 INACTIVE             0 IDLE
         5 INACTIVE             0 IDLE
         6 INACTIVE             0 IDLE
         7 INACTIVE             0 IDLE
         8 INACTIVE             0 IDLE
         9 INACTIVE             0 IDLE
        10 INACTIVE             0 IDLE
        11 VALID              103 IDLE

已选择11行。

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

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING             110
ARCH      ARCH     CLOSING             111
RFS       LGWR     IDLE                112
RFS       ARCH     IDLE                  0
RFS       UNKNOWN  IDLE                  0
SQL> alter database recover managed standby database using current logfile disco   (standby)
nnect from session;

 这是 开启实时应用,既应用主库由LGWR 传递的日志(经过LNSN,RFS)到standby的 standby logfile,由standby的MPR0进程应用


SQL> select dest_id,status,applied_seq#,recovery_mode from v$archive_dest_status (standby)
;

   DEST_ID STATUS    APPLIED_SEQ# RECOVERY_MODE
---------- --------- ------------ -----------------------
         1 VALID                0 MANAGED REAL TIME APPLY
         2 VALID                0 MANAGED REAL TIME APPLY
         3 INACTIVE             0 MANAGED REAL TIME APPLY
         4 INACTIVE             0 MANAGED REAL TIME APPLY~~~~~~~~~~ 状态为 实时应用
         5 INACTIVE             0 MANAGED REAL TIME APPLY
         6 INACTIVE             0 MANAGED REAL TIME APPLY
         7 INACTIVE             0 MANAGED REAL TIME APPLY
         8 INACTIVE             0 MANAGED REAL TIME APPLY
         9 INACTIVE             0 MANAGED REAL TIME APPLY
        10 INACTIVE             0 MANAGED REAL TIME APPLY
        11 VALID              103 MANAGED REAL TIME APPLY

已选择11行。

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

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING             110
ARCH      ARCH     CLOSING             111
RFS       LGWR     IDLE                112
RFS       ARCH     IDLE                  0
RFS       UNKNOWN  IDLE                  0
MRP0      N/A      APPLYING_LOG        107~~~~~~~~~~~~~~~~多了mpro进程,状态为 应用 日志

已选择6行。


SQL>  alter database recover managed standby database cancel;(结束 standby恢复)

数据库已更改。

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

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING             110
ARCH      ARCH     CLOSING             111
RFS       LGWR     IDLE                112
RFS       ARCH     IDLE                  0
RFS       UNKNOWN  IDLE                  0

SQL> select dest_id,status,applied_seq#,recovery_mode from v$archive_dest_status   (standby)
;

   DEST_ID STATUS    APPLIED_SEQ# RECOVERY_MODE
---------- --------- ------------ -----------------------
         1 VALID                0 IDLE
         2 VALID                0 IDLE
         3 INACTIVE             0 IDLE
         4 INACTIVE             0 IDLE
         5 INACTIVE             0 IDLE
         6 INACTIVE             0 IDLE
         7 INACTIVE             0 IDLE
         8 INACTIVE             0 IDLE
         9 INACTIVE             0 IDLE
        10 INACTIVE             0 IDLE
        11 VALID              103 IDLE

已选择11行。

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

数据库已更改。

应用 standby接收primary的archived log (由于配置了standby logfile那么archived log为standby logfile的归档)
SQL> select process,client_process,status,sequence# from v$managed_standby;

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CLOSING             110
ARCH      ARCH     CLOSING             111
RFS       LGWR     IDLE                112
RFS       ARCH     IDLE                  0
RFS       UNKNOWN  IDLE                  0
MRP0      N/A      WAIT_FOR_LOG        112  ~~~注意mpr0的状态 为等待 archive_log,有了 新的 未应用的archive_log,状态会为APPLYING_LOG

已选择6行。

SQL> select dest_id,status,applied_seq#,recovery_mode from v$archive_dest_statu
;

   DEST_ID STATUS    APPLIED_SEQ# RECOVERY_MODE
---------- --------- ------------ -----------------------
         1 VALID                0 MANAGED
         2 VALID                0 MANAGED
         3 INACTIVE             0 MANAGED~~~~~~~~~~~~~~~~~~~~~~~状态为管理模式
         4 INACTIVE             0 MANAGED
         5 INACTIVE             0 MANAGED
         6 INACTIVE             0 MANAGED
         7 INACTIVE             0 MANAGED
         8 INACTIVE             0 MANAGED
         9 INACTIVE             0 MANAGED
        10 INACTIVE             0 MANAGED
        11 VALID              103 MANAGED

已选择11行。

SQL>  alter database recover managed standby database cancel;

数据库已更改。

 

关于disconnect  from session 子句

SQL> alter database recover managed standby database ; 不加的话 执行恢复 standby的session将 hang住

SQL> alter database recover managed standby database cancel; (只有在standby的 另一session关闭恢复,hang住的session 才可以继续操作)

数据库已更改。
SQL> alter database recover managed standby database ;
alter database recover managed standby database
*
第 1 行出现错误:
ORA-16043: 已取消维持的恢复会话
ORA-16037: 用户已请求取消受管恢复操作

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

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    471638