[20140425]11GR2 truncate后恢复测试.txt

简介: [20140425]11GR2 truncate后恢复测试.txt --做一个truncate后恢复测试在11GR2下,我的测试环境使用使用dataguard。备用库打开flashback。

[20140425]11GR2 truncate后恢复测试.txt

--做一个truncate后恢复测试在11GR2下,我的测试环境使用使用dataguard。备用库打开flashback。
--可以利用在备用库flashback到truncate前,然后在传输到主库的方式看看。

1.建立测试环境:
-- 我的测试环境:primary的tnsnames别名test,standby主机的tnsnames别名testdg。数据库版本:11GR2.
-- 备用库打开在read only模式,并且real-time apply 应用日志。

DGMGRL> show configuration
Configuration - study
  Protection Mode: MaxPerformance
  Databases:
    test   - Primary database
    testdg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS

SYS@test> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SCOTT@testdg> select database_role,open_mode,protection_mode,force_logging,FLASHBACK_ON from v$database;
DATABASE_ROLE    OPEN_MODE            PROTECTION_MODE      FOR FLASHBACK_ON
---------------- -------------------- -------------------- --- ------------------
PHYSICAL STANDBY READ ONLY WITH APPLY MAXIMUM PERFORMANCE  YES YES

SCOTT@test> create table t1 as select rownum id,'test' name from dual connect by levelSCOTT@test> select current_scn ,sysdate from v$database;

CURRENT_SCN SYSDATE
----------- -------------------
3269885933 2014-04-25 09:32:39
--记下当前SCN,以及时间.如果生产系统出现,可以查询logminer确定时间以及scn.

SCOTT@test> truncate table t1;
Table truncated.

SCOTT@testdg> select count(*) from t1;
  COUNT(*)
----------
         0

2.现在开始恢复:
--首先停止日志应用。注意这个日志依旧在传输到备用库,只不过不apply。

DGMGRL> edit database testdg set state='APPLY-OFF';
Succeeded.

--关闭备用库
SYS@testdg> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@testdg> startup mount
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size                  2228784 bytes
Variable Size             939527632 bytes
Database Buffers          654311424 bytes
Redo Buffers                7344128 bytes
Database mounted.

SYS@testdg> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED

SYS@testdg> select process,pid,status,group#,thread#,sequence#,block#,blocks,delay_mins from v$managed_standby order by thread#,group# ;
PROCESS       PID STATUS       GROUP#     THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
--------- ------- ------------ ------- ---------- ---------- ---------- ---------- ----------
ARCH        13806 CONNECTED    N/A              0          0          0          0          0
ARCH        13808 CONNECTED    N/A              0          0          0          0          0
ARCH        13812 CONNECTED    N/A              0          0          0          0          0
RFS         13831 IDLE         N/A              0          0          0          0          0
RFS         13823 IDLE         N/A              0          0          0          0          0
RFS         13821 IDLE         1                1         43         37          1          0
ARCH        13810 CLOSING      5                1         42      26624       1247          0

7 rows selected.

--观察rfs依旧在接收日志,但是不应用.

SYS@testdg> flashback database to scn 3269885933;
Flashback complete.

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

SYS@testdg> select count(*) from scott.t1;
  COUNT(*)
----------
      1000
--可以发现现在在备用机器已经看的见.

3.取回数据到主库:
--建立db-link.

SCOTT@test> CREATE PUBLIC DATABASE LINK "TESTDG.COM" CONNECT TO scott IDENTIFIED BY btbtms  USING '192.168.101.115:1521/testdg.com';
Database link created.


SCOTT@test> select count(*) from scott.t1@testdg.com;
  COUNT(*)
----------
      1000

--实际上取回的方法很多,使用insert into t1 select * from t1;或者copy都可以.
SCOTT@test> help copy
COPY
----
Copies data from a query to a table in the same or another
database. COPY supports CHAR, DATE, LONG, NUMBER and VARCHAR2.
COPY {FROM database | TO database | FROM database TO database}
            {APPEND|CREATE|INSERT|REPLACE} destination_table
            [(column, column, column, ...)] USING query
where database has the following syntax:
     username[/password]@connect_identifier

4.测试使用impdp测试看看.这样大数据比较快一些.
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle11g/admin/test/dpdump/';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO SCOTT;

--方法1
$ impdp scott/btbtms DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testdg.com TABLES=t1 content=data_only
Import: Release 11.2.0.3.0 - Production on Fri Apr 25 09:55:49 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testdg.com TABLES=t1 content=data_only */
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
. . imported "SCOTT"."T1"                                  1000 rows
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 09:56:09

SCOTT@test> select count(*) from scott.t1;
  COUNT(*)
----------
      1000
--可以发现已经恢复.

--方法2,因为正常生产系统不能停,先放入另外一张表t1_rec.

$ impdp scott/btbtms DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testdg.com TABLES=t1 REMAP_TABLE=t1:t1_rec

Import: Release 11.2.0.3.0 - Production on Fri Apr 25 09:59:15 2014

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testdg.com TABLES=t1 REMAP_TABLE=t1:t1_rec */
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "SCOTT"."T1_REC"                              1000 rows
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 09:59:24

SCOTT@test> select count(*) from scott.t1_rec;
  COUNT(*)
----------
      1000

5.恢复现场:
DGMGRL> edit database testdg set state='apply-on';
Succeeded.

SYS@testdg> select process,pid,status,group#,thread#,sequence#,block#,blocks,delay_mins from v$managed_standby order by thread#,group# ;
PROCESS       PID STATUS       GROUP#     THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
--------- ------- ------------ ------- ---------- ---------- ---------- ---------- ----------
ARCH        13806 CONNECTED    N/A              0          0          0          0          0
ARCH        13808 CONNECTED    N/A              0          0          0          0          0
ARCH        13812 CONNECTED    N/A              0          0          0          0          0
RFS         13823 IDLE         N/A              0          0          0          0          0
RFS         13831 IDLE         N/A              0          0          0          0          0
RFS         13821 IDLE         1                1         43      14594          1          0
ARCH        13810 CLOSING      5                1         42      26624       1247          0
MRP0        14044 APPLYING_LOG N/A              1         43      14594     102400          0

8 rows selected.
--可以发现MRP进程已经起来,并且在应用.

SCOTT@test> insert into t1 values (1001,'aaaa');
1 row created.

SCOTT@test> commit ;
Commit complete.

SYS@testdg> select * from scott.t1 where id=1001;
        ID NAME
---------- --------------------
      1001 aaaa
--OK!正确.

DGMGRL> show configuration
Configuration - study
  Protection Mode: MaxPerformance
  Databases:
    test   - Primary database
    testdg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS


总结:
自己做一个workshop,主要目的为了以后出现问题,不会手忙脚乱.

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
258 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
SQL 存储 关系型数据库
软件测试mysql面试题:drop,delete和truncate之间的区别?
软件测试mysql面试题:drop,delete和truncate之间的区别?
502 0
|
Oracle 关系型数据库 测试技术
[20180627]测试bbed是否支持管道命令.txt
[20180627]测试bbed是否支持管道命令.txt --//测试bbed是否支持管道命令.txt 1.环境: SCOTT@test01p> @ ver1 PORT_STRING                    VERSION        B...
1516 0
|
Linux 测试技术 Perl
[20180308]测试ARG_MAX参数.txt
[20180308]测试ARG_MAX参数.txt --//上个星期遇到的问题,提到ARG_MAX 参数,可以通过$ getconf ARG_MAX 获得.链接 --//http://blog.
1670 0
|
机器学习/深度学习 网络协议 Oracle
[20180123]测试SQLNET.EXPIRE_TIME参数.txt
[20180123]测试SQLNET.EXPIRE_TIME参数.txt --//曾经写过一篇linux内核网络参数测试tcp_keepalive,链接http://blog.itpub.net/267265/viewspace-2138391/ --//测试服务端会定时发起连接监测与client的连接状态. 参数解析: /proc/sys/net/ipv4/tcp_keepalive_time    当keepalive起用的时候,TCP发送keepalive消息的频度。
1138 0
|
Oracle 关系型数据库 测试技术
[20151124]快速建立测试数据库.txt
[20151124]快速建立测试数据库.txt -- 以建立11.2.0.4的数据库为例子说明,以前写过使用内存来运行测试数据库,以这个为基础并且做一个记录。 -- 重新删除在建立数据库。
813 0
|
Oracle 关系型数据库 测试技术
[20151109]提升scn号11g测试.txt
[20151109]提升scn号11g测试.txt --以前的测试都在10g下进行的,在11.2.0.4下重复测试. 1.测试环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION...
949 0
|
SQL 测试技术 Perl
[20150224]ITL不足的测试例子.txt
[20150224]ITL不足的测试例子.txt --前几天看Apress.Oracle.Database.Transactions.and.Locking.Revealed.1484207610.pdf,发现P39页的测试例子,感觉不对,重复做 --一次。
1083 0