zoukankan      html  css  js  c++  java
  • [20180423]flashback tablespace与snapshot standby.txt

    [20180423]flashback tablespace与snapshot standby.txt

    --//缺省建立表空间是打开flashback on,如果某个表空间flashback off,在dg启动snapshot standby时注意,可能"回不来",
    --//通过测试说明问题.

    1.环境:
    SCOTT@book> @ ver1
    PORT_STRING                    VERSION        BANNER
    ------------------------------ -------------- --------------------------------------------------------------------------------
    x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    2.设置备库tea表空间关闭flashback.

    SCOTT@book> alter tablespace tea flashback off;
    Tablespace altered.

    SCOTT@book> select * from v$tablespace;
             TS# NAME      INC BIG FLA ENC
    ------------ --------- --- --- --- ---
               0 SYSTEM    YES NO  YES
               1 SYSAUX    YES NO  YES
               2 UNDOTBS1  YES NO  YES
               4 USERS     YES NO  YES
               3 TEMP      NO  NO  YES
               6 EXAMPLE   YES NO  YES
               7 TEA       YES NO  NO
    7 rows selected.

    --//tea表空间FLASHBACK_ON设置为NO.注意这些信息应该记录在控制文件,你可以发现备库还是On .
    --//备库:
    SYS@bookdg> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    NO

    SYS@bookdg> select * from v$tablespace;
           TS# NAME                 INC BIG FLA ENC
    ---------- -------------------- --- --- --- ---
             0 SYSTEM               YES NO  YES
             1 SYSAUX               YES NO  YES
             2 UNDOTBS1             YES NO  YES
             4 USERS                YES NO  YES
             3 TEMP                 NO  NO  YES
             6 EXAMPLE              YES NO  YES
             7 TEA                  YES NO  YES
    7 rows selected.
    --//备库还是yes,tea表空间.

    SYS@bookdg> alter tablespace tea flashback off;
    alter tablespace tea flashback off
                         *
    ERROR at line 1:
    ORA-16000: database open for read-only access
    --//无法在open read only修改.

    SYS@bookdg> startup mount
    ORACLE instance started.
    Total System Global Area  634732544 bytes
    Fixed Size                  2255792 bytes
    Variable Size             197133392 bytes
    Database Buffers          427819008 bytes
    Redo Buffers                7524352 bytes
    Database mounted.
    SYS@bookdg> alter tablespace tea flashback off;
    Tablespace altered.

    SYS@bookdg> select * from v$tablespace;
           TS# NAME                 INC BIG FLA ENC
    ---------- -------------------- --- --- --- ---
             0 SYSTEM               YES NO  YES
             1 SYSAUX               YES NO  YES
             2 UNDOTBS1             YES NO  YES
             4 USERS                YES NO  YES
             3 TEMP                 NO  NO  YES
             6 EXAMPLE              YES NO  YES
             7 TEA                  YES NO  NO
    7 rows selected.
    --//OK,现在成功.

    3.备库打开snapshot standby:
    --//参考http://blog.itpub.net/267265/viewspace-2134547/
    --//实际上就是保证存储点,只要闪回区足够,许多dml操作没有问题,在转换physical standby时,返回原来的存储点;

    --//备库:
    SYS@bookdg> alter database convert to snapshot standby;
    Database altered.

    SYS@bookdg> select database_role from v$database;
    DATABASE_ROLE
    ----------------
    SNAPSHOT STANDBY

    SYS@bookdg> alter database open ;
    Database altered.

    SCOTT@bookdg> create table tt1 tablespace tea as select * from dba_objects;
    Table created.

    --//在主库也产生一些日志对于tea表空间:
    SCOTT@book> create table empx tablespace tea as select * from emp;
    Table created.

    --//现在转换为physical standby
    --//备库:
    SYS@bookdg> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.

    SYS@bookdg> startup mount
    ORACLE instance started.
    Total System Global Area  634732544 bytes
    Fixed Size                  2255792 bytes
    Variable Size             197133392 bytes
    Database Buffers          427819008 bytes
    Redo Buffers                7524352 bytes
    Database mounted.

    SYS@bookdg> alter database convert to physical standby ;
    alter database convert to physical standby
    *
    ERROR at line 1:
    ORA-38753: Cannot flashback data file 6; no flashback log data.
    ORA-01110: data file 6: '/mnt/ramdisk/book/tea01.dbf'

    --//可以发现备库的数据文件6无法转换,这个应该引起足够重视,在备库转换为snapshot standby时,注意检查表空间是否flashvback是否都是on的状态.
    $ oerr ora 38753
    38753, 00000, "Cannot flashback data file %s; no flashback log data."
    // *Cause:  An attempt to perform a FLASHBACK DATABASE failed because the file
    //          does not have enough flashback log data to cover the time to
    //          flash back.  Either the file did not have flashback generation
    //          enabled for it, or had flashback generation turned off for it
    //          some time during the time span of the flashback.
    // *Action: The file cannot be flashed back.  The file must be taken offline
    //          or the tablespace dropped before continuing with the FLASHBACK
    //          DATABASE command.

    4.恢复:
    --//简单一点,主库tea表空间设置为read only;
    --//主库:
    SCOTT@book> alter tablespace tea read only;
    Tablespace altered.

    $ scp /mnt/ramdisk/book/tea01.dbf oracle@192.168.100.40:/mnt/ramdisk/book/
    tea01.dbf                            100%   40MB  40.0MB/s   00:01

    --//备库:
    SYS@bookdg> alter database convert to physical standby ;
    alter database convert to physical standby
    *
    ERROR at line 1:
    ORA-38753: Cannot flashback data file 6; no flashback log data.
    ORA-01110: data file 6: '/mnt/ramdisk/book/tea01.dbf'
    --//不行:

    SYS@bookdg> alter tablespace tea flashback on;
    Tablespace altered.

    SYS@bookdg> alter database convert to physical standby ;
    alter database convert to physical standby
    *
    ERROR at line 1:
    ORA-19926: Database cannot be converted at this time

    --//根本不能这样转换.

    SYS@bookdg> alter tablespace tea offline;
    alter tablespace tea offline
    *
    ERROR at line 1:
    ORA-01109: database not open

    SYS@bookdg> alter database datafile 6 offline;
    Database altered.

    --//关闭备库重来.
    SYS@bookdg> startup mount
    ORACLE instance started.
    Total System Global Area  634732544 bytes
    Fixed Size                  2255792 bytes
    Variable Size             197133392 bytes
    Database Buffers          427819008 bytes
    Redo Buffers                7524352 bytes
    Database mounted.

    SYS@bookdg> alter database convert to physical standby ;
    Database altered.

    SYS@bookdg> shutdown immediate
    ORA-01507: database not mounted
    ORACLE instance shut down.

    SYS@bookdg> startup mount
    ORACLE instance started.
    Total System Global Area  634732544 bytes
    Fixed Size                  2255792 bytes
    Variable Size             197133392 bytes
    Database Buffers          427819008 bytes
    Redo Buffers                7524352 bytes
    Database mounted.

    SYS@bookdg> alter database datafile 6 online;
    Database altered.

    SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;
    Database altered.

    SYS@bookdg> @ &r/dg/dg
    PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
    --------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------
    ARCH         2394 CONNECTED    ARCH     N/A          0          0          0          0          0
    ARCH         2396 CONNECTED    ARCH     N/A          0          0          0          0          0
    ARCH         2398 CONNECTED    ARCH     N/A          0          0          0          0          0
    RFS          2403 IDLE         UNKNOWN  N/A          0          0          0          0          0
    RFS          2405 IDLE         LGWR     2            1        789         50          1          0
    ARCH         2400 CLOSING      ARCH     4            1        788          1        183          0
    MRP0         2407 APPLYING_LOG N/A      N/A          1        789         50     102400          0
    7 rows selected.
    --//日志开始传输并应用.

    SYS@bookdg> alter database recover managed standby database cancel ;
    Database altered.

    SYS@bookdg> alter database open read only;
    Database altered.

    SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;
    Database altered.

    SYS@bookdg> select count(*) from scott.empx;
      COUNT(*)
    ----------
            14

    SYS@bookdg> select count(*) from scott.tt1;
    select count(*) from scott.tt1
                               *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    --//测试时建立的表不存在.
            
    --//主库执行:
    SCOTT@book> alter tablespace tea read write;
    Tablespace altered.

    SCOTT@book> delete from empx where rownum=1;
    1 row deleted.

    SCOTT@book> commit ;
    Commit complete.

    --//在备库检查,发现少一条记录.
    SYS@bookdg> select count(*) from scott.empx;
      COUNT(*)
    ----------
            13

    总结:
    --//这个在以后工作中注意,在转换snapshot standby,注意表空间flaashback是否在on状态.

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
    云原生时代,2个方案轻松加速百万级镜像
    Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
  • 原文地址:https://www.cnblogs.com/lfree/p/8916255.html
Copyright © 2011-2022 走看看