ITPub博客

首页 > IT基础架构 > 网络安全 > Nologging对恢复的影响(一)

Nologging对恢复的影响(一)

原创 网络安全 作者:space6212 时间:2019-06-26 21:36:04 0 删除 编辑
Nologging在提高性能的同时,会给恢复带来一定的影响。下面通过两个案例来说明它是怎么影响恢复的。

第一个案例要验证在先发生nologging操作,再备份数据文件的情况下,是否可以完全恢复数据。
[@more@]1. 建表

CREATE TABLE SUK.PLOGGING
( A NUMBER,
B NUMBER
)
PARTITION BY LIST (A)
(PARTITION P1 VALUES (1) TABLESPACE SUK ,
PARTITION P2 VALUES (2) TABLESPACE SUK ) ;

CREATE TABLE SUK.PNOLOGGING
( C NUMBER,
D NUMBER
)
PARTITION BY LIST (C)
(PARTITION P1 VALUES (1) TABLESPACE SUK ,
PARTITION P2 VALUES (2) TABLESPACE SUK ) ;

2. 用普通的方式写入数据
SQL> insert into plogging select mod(rownum,2)+1,mod(rownum,2)+1 from dba_objects;

10500 rows inserted

SQL> insert into pnologging select mod(rownum,2)+1,mod(rownum,2)+1 from dba_objects;

10500 rows inserted

SQL> commit;

Commit complete

3. 对其中一个表用普通方式写入数据,另一个表用nologging方式写入数据
SQL> insert into plogging select 1,1 from dba_tables;

963 rows inserted

SQL> insert /*+ append */ into pnologging select 1,1 from dba_tables;

963 rows inserted

SQL> commit;

Commit complete


4. 此时备份表所在的表空间

RMAN> backup tablespace suk;

启动 backup 于 21-11月-10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=135 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00007 name=E:ORACLEPRODUCT10.2.0ORADATASUK.DBF
通道 ORA_DISK_1: 正在启动段 1 于 21-11月-10
通道 ORA_DISK_1: 已完成段 1 于 21-11月-10
段句柄=E:ORACLEPRODUCT10.2.0DB_1DATABASECLTJEFM_1_1 标记=TAG20101121T2206
46 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
完成 backup 于 21-11月-10

5. 备份完成后继续用普通方式往表写入数据
SQL> insert into plogging select mod(rownum,2)+1,mod(rownum,2)+1 from dba_objects;

10500 rows inserted

SQL> insert into pnologging select mod(rownum,2)+1,mod(rownum,2)+1 from dba_objects;

10500 rows inserted

SQL> commit;

Commit complete

SQL> delete from test where rownum<=1000;

1000 rows deleted

SQL> commit;

Commit complete

SQL> select count(1) from test;

COUNT(1)
----------
9000

SQL> select count(1) from plogging;

COUNT(1)
----------
21963

SQL> select count(1) from pnologging;

COUNT(1)
----------
21963


6. 此时模拟数据库故障,恢复表空间suk

RMAN> restore tablespace suk;

启动 restore 于 21-11月-10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00007恢复到E:ORACLEPRODUCT10.2.0ORADATASUK.DBF
通道 ORA_DISK_1: 正在读取备份段 E:ORACLEPRODUCT10.2.0DB_1DATABASECLTJEFM_
1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:ORACLEPRODUCT10.2.0DB_1DATABASECLTJEFM_1_1 标记 = TAG20101121T
220646
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:07
完成 restore 于 21-11月-10

RMAN> recover tablespace suk;

启动 recover 于 21-11月-10
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:04


7. 验证数据

SQL> select count(1) from test;

COUNT(1)
----------
9000


SQL> select count(1) from plogging;

COUNT(1)
----------
21963

SQL> select count(1) from pnologging;

COUNT(1)
----------
21963


数据已经得到完全恢复。


结论:

一个表,发生nologging操作后再备份,且后续无nologging操作,则基于nologging后的备份可以完全恢复该表的数据。

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

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

注册时间:2005-01-25

  • 博文量
    188
  • 访问量
    142117