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 Itext Pdf】itext pdf隔行换色 itext5添加表格背景颜色
    linux常用安装
    linux 定时执行shell脚本
    Linux crontab定时任务案例
    Oracle 常用的几个命令
    RS报表中根据变量比较大小来判断颜色
    如何利用TYPE 实现列转行
    Linux crontab概念
    关于下拉框联动选择的做法
    Oracle 启动常见的疑难
  • 原文地址:https://www.cnblogs.com/lfree/p/8916255.html
Copyright © 2011-2022 走看看