mysql 有 nologging_Oracle ORA-26040: 数据块是使用 NOLOGGING 选项加载的 ORA-26040:FLASHBACK DATABASE WITH NOLOGGI...

在本文中

症状

原因

解决方案

适用于:

Oracle Server – Enterprise Edition – 版本: 10.2.0.1到 10.2.0.4 – Release: 10.2 to 10.2

本文信息适用于任何平台。

症状

保证还原点可用于将整个数据库逆转revert到几天或几周以前的已知的良好状态,只要有在闪回恢复区flash recovery area有足够的磁盘空间来存储所需的日志。通过Flashback Database,即使是类似直接加载插入(direct load insert)的NOLOGGING操作的影响,也可以用*保证的*还原点逆转revert。

使用Flashback Database ,当尝试被逆转,类似直接加载插入(direct load insert)的NOLOGGING操作的影响会导致损坏,但当使用*非保证的non-guaranteed *还原点时,这只会出现CTAS (create table as select) 。例如:

CTAS/NOLOGGING/非保证的还原点non-guaranteed restore points:

示例

SYS

SQL> create restore point s1;

Restore point created.

SCOTT

SQL> CREATE TABLE S NOLOGGING ENABLE ROW MOVEMENT AS SELECT * FROM EMP;

Table created.

SQL> create restore point s2;

Restore point created.

SQL> INSERT /*+ APPEND */ INTO S SELECT * FROM EMP;

14 rows created.

SQL> COMMIT;

Commit complete.

SYS

SQL> create restore point s3;

Restore point created.

=-=-=- FB to restore point s1 and select from emp =-=-=-

SYS

SQL> SHUT IMMEDIATE

SQL> startup mount exclusive

SQL> flashback database to restore point s1;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SCOTT

SQL> select * from emp;   >>>> This would be OK

=-=-=- FB to restore point s3 and select from emp. =-=-=-

SYS

SQL> flashback database to restore point s3;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SCOTT

SQL> select * from s;

select * from s

*

ERROR at line 1:

ORA-01578: ORACLE data block corrupted (file # 4, block # 412)

ORA-01110: data file 4: ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST999\USERS01.DBF’

ORA-26040: Data block was loaded using the NOLOGGING option  <<<

这适用于 –

1. Create table … nologging;

2. direct insert

3. restore point 1

4. direct insert

5. flashback restore point 1

原因

这是预料中的。闪回回到目标时间之前的一个“模糊”快照,且可能要恢复高达30分钟的重做。在这个情况下,恢复遇到由nologging操作生成的“invalidataion redo”且发出ORA-26040。

解决方案

作为最佳实践,你应该在nologging操作遇到失效重做后至少1小时来创建你的还原点。

查看示例

>>At 7:51 PM

SCOTT

SQL> create table t (x,y,z) enable row movement nologging

2 as select object_id,object_name,object_type from all_objects where rownum<=5;

Table created.

SQL> insert /*+ append */ into t values(9,’my’,’people’);

1 row created.

SQL> commit;

Commit complete.

>>At 9 PM

SYS

SQL> create restore point s3;

Restore point created.

SQL> SHUT IMMEDIATE

SQL> startup mount exclusive

SQL> flashback database to restore point s3;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SCOTT

SQL> select * from t;

X Y Z

———- —————————— ——————-

258 DUAL TABLE

259 DUAL SYNONYM

311 SYSTEM_PRIVILEGE_MAP TABLE

313 SYSTEM_PRIVILEGE_MAP SYNONYM

314 TABLE_PRIVILEGE_MAP TABLE

9 my people

6 rows selected.

>>

>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值