关闭

dg中激活备库做测试

90人阅读 评论(0) 收藏 举报

dg备库有时候要激活做测试用,测试完还要还原为dg

9i-11g都可以使用11g还有更简单的方法


设置快速恢复区,目的是放还原点
SQL> alter system set db_recovery_file_dest_size=3G;


System altered.


SQL> alter system set db_recovery_file_dest='/fra';


System altered.
查看恢复区是否成功
SQL> show parameter db_reco


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /fra
db_recovery_file_dest_size           big integer 3G
SQL> 


取消备库recover managed 模式(取消日志应用)
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 


Database altered.
创建还原点


SQL> CREATE RESTORE POINT Standby_flashback_testing GUARANTEE FLASHBACK DATABASE; 


Restore point created.
查询还原点
SQL> select NAME,SCN,TIME from v$restore_point; 


NAME
--------------------------------------------------------------------------------
       SCN
----------
TIME
---------------------------------------------------------------------------
STANDBY_FLASHBACK_TESTING
   2425408
31-MAY-16 08.36.47.000000000 AM


primary
主库切日志


SQL> conn / as sysdba
Connected.
SQL>  ALTER SYSTEM ARCHIVE LOG CURRENT;


System altered.
主库查看传输到备库的参数是log_archive_dest_2 
SQL> show parameter log_archive


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                   string      DG_CONFIG=(orcl,dg1,dg2)
log_archive_dest                     string
log_archive_dest_1                   string      LOCATION=+FRA/ VALID_FOR=(ALL_
                                                 LOGFILES,ALL_ROLES) DB_UNIQUE_
                                                 NAME=orcl
log_archive_dest_10                  string
log_archive_dest_11                  string
log_archive_dest_12                  string
log_archive_dest_13                  string
log_archive_dest_14                  string
log_archive_dest_15                  string


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_16                  string
log_archive_dest_17                  string
log_archive_dest_18                  string
log_archive_dest_19                  string
log_archive_dest_2                   string      SERVICE=dg1 LGWR ASYNC VALID_F
                                                 OR=(ONLINE_LOGFILES,PRIMARY_RO
                                                 LE) DB_UNIQUE_NAME=dg1
log_archive_dest_20                  string




log_archive_trace                    integer     0
阻塞向备机传日志
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;


System altered.




备库激活数据库


SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;


Database altered.


查看此时控制文件状态
SQL> select CONTROLFILE_TYPE from v$database; 


CONTROL
-------
CURRENT
更改数据库模式为最大性能模式
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE; 


Database altered.
打开数据库
SQL>  ALTER DATABASE OPEN;


Database altered.


测试standby数据库是否可以读写
SQL> create table tt(id int);


Table created.


SQL> insert into tt values (123);


1 row created.


SQL> insert into tt select sal from scott.emp;


14 rows created.


SQL> commit;


Commit complete.




SQL> select * from tt;


        ID
----------
       123
       800
      1600
      1250
      2975
      1250
      2850
      2450
      3000
      5000
      1500


        ID
----------
      1100
       950
      3000
      1300


15 rows selected.


测试完成后回退
强制mount方式打开数据库 
SQL> STARTUP MOUNT FORCE;
ORACLE instance started.


Total System Global Area 1252663296 bytes
Fixed Size                  2252824 bytes
Variable Size             402657256 bytes
Database Buffers          838860800 bytes
Redo Buffers                8892416 bytes
Database mounted.
回退到还原点
SQL>  FLASHBACK DATABASE TO RESTORE POINT Standby_flashback_testing ;


Flashback complete.
查看此时控制文件状态是还原备份时状态
SQL> select controlfile_type from v$database; 


CONTROL
-------
BACKUP
将数据库转换为standby模式
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; 


Database altered.


SQL> startup mount force;
ORACLE instance started.


Total System Global Area 1252663296 bytes
Fixed Size                  2252824 bytes
Variable Size             402657256 bytes
Database Buffers          838860800 bytes
Redo Buffers                8892416 bytes
Database mounted.
启动备库应用
SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; 


Database altered.
查询此时数据库控制文件状态


SQL> select controlfile_type from v$database
  2  ;


CONTROL
-------
STANDBY


主库切日志
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;


System altered.
解除阻塞


SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;


System altered.




备库取消recover managed 应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  


Database altered.
只读模式打开
SQL> ALTER DATABASE OPEN READ ONLY; 


Database altered.
查询测试时表数据(已经回退到旧的还原点,所以没有)
SQL> select * from tt;
select * from tt
              *
ERROR at line 1:
ORA-00942: table or view does not exist




SQL> STARTUP FORCE MOUNT;  
ORACLE instance started.


Total System Global Area 1252663296 bytes
Fixed Size                  2252824 bytes
Variable Size             402657256 bytes
Database Buffers          838860800 bytes
Redo Buffers                8892416 bytes
Database mounted.
备库启动recover standby 应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;  


Database altered.
删除还原点


SQL>  DROP RESTORE POINT Standby_flashback_testing ;


Restore point dropped.


SQL> 



oracle 11g环境下:
步骤更简单,11g中加入了Snapshot Standby Database的新特性,其实也就是上面10g功能的一个包装而已,唯一不同的是在转换为读写模式后任然可以继续接受主库过来的归档日志。
步骤如下:
1:取消日志应用
SQL> alter database recover managed standby database cancel;


2:重启并转换成Snapshot Standby Database。
SQL> shutdown immediate;
SQL> startup mount
SQL> alter database convert to snapshot standby;


3:打开后可进行读写相关测试
SQL> alter database open;


4:重新转换成physical Standby并开启同步
SQL > shutdown immediate
SQL> startup mount
SQL> alter database convert to physical standby;
SQL> shutdown immediate;
SQL> startup nomount
SQl> alter database mount standby database;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;


需要注意的点:
10g中创建的还原点必须在闪回后进行删除,否则闪回恢复区可能会被撑满,导致DB Hang住。11g中不用担心这个问题,在重新转换为physical standby时会自动进行还原点删除。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:57786次
    • 积分:2031
    • 等级:
    • 排名:第19048名
    • 原创:97篇
    • 转载:53篇
    • 译文:47篇
    • 评论:1条
    文章分类
    最新评论