[20180419]关于闪回的一些问题.txt

简介: [20180419]关于闪回的一些问题.txt --//别人问的问题,就是drop表,然后flashbask表,建立的触发器还在吗? --//我记忆里触发器应该还在,我个人喜欢通过例子验证自己的判断.

[20180419]关于闪回的一些问题.txt

--//别人问的问题,就是drop表,然后flashbask表,建立的触发器还在吗?
--//我记忆里触发器应该还在,我个人喜欢通过例子验证自己的判断..

1.环境:
SCOTT@test01p> @ ver1
PORT_STRING          VERSION    BANNER                                                                       CON_ID
-------------------- ---------- ---------------------------------------------------------------------------- ------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production      0

create table t as select rownum id from dual connect by level<=10;
create or replace trigger tri_t_insert
before insert on t
for each row
begin
  null;
end;
/

2.测试:
SCOTT@test01p> drop table t ;
Table dropped.

SCOTT@test01p> flashback table t to before drop ;
Flashback complete.

SCOTT@test01p> select TRIGGER_BODY c40,TRIGGER_NAME from user_triggers where table_name='T';
C40                                      TRIGGER_NAME
---------------------------------------- --------------------
begin                                    BIN$iU6Cl+FuSHqfYa5L
  null;                                  2EGWOA==$0
end;

--//说明还在.仅仅名字修改了

3.自然会想到还有什么情况会导致恢复后丢失什么信息.
--//看看约束的情况.

SCOTT@test01p> drop trigger "BIN$iU6Cl+FuSHqfYa5L2EGWOA==$0";
Trigger dropped.

SCOTT@test01p> alter table t add ( constraint ck_id check (id<11) enable validate);
Table altered.

SCOTT@test01p> insert into t values(11);
insert into t values(11)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CK_ID) violated

SCOTT@test01p> drop table t ;
Table dropped.

SCOTT@test01p> flashback table t to before drop ;
Flashback complete.

SCOTT@test01p> insert into t values(11);
insert into t values(11)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.BIN$bTSE9Rx6RLqZwAKVKwrnaw==$0) violated

--//约束还在,仅仅名字改了.

4.测试主外键的情况:
create table p ( x int primary key );
create table c ( x references p );
insert into p values ( 1 );
insert into p values ( 2 );
commit;

SCOTT@test01p> insert into c values ( 3 );
insert into c values ( 3 )
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.SYS_C0011491) violated - parent key not found

SCOTT@test01p> drop table c ;
Table dropped.

SCOTT@test01p> flashback table c to before drop ;
Flashback complete.

SCOTT@test01p> insert into c values ( 3 );
1 row created.

--//^_^,主外键约束丢失.

5.12c可以支持表中使用seq,链接:http://blog.itpub.net/267265/viewspace-767751/

SCOTT@test01p> drop table t purge ;
Table dropped.

create table t
(
id number GENERATED ALWAYS as identity ( start with 1 increment by 1),
name varchar2(10)
);

insert into t (name) values('a');
commit ;

SCOTT@test01p> select * from t;
        ID NAME
---------- --------------------
         1 a

SCOTT@test01p> drop table t ;

Table dropped.

SCOTT@test01p> flashback table t to before drop ;
Flashback complete.        

SCOTT@test01p> select * from t;
        ID NAME
---------- --------------------
         1 a
         2 b
--//没有问题.现在看来仅仅在主外键定义上丢失.
--//可以发现oracle设计时考虑问题的周到,因为drop c表后如果p表dml操作导致主外键的依赖可能失效,
--//比如delete from p where x=1.这样即使闪回c表可能主外键的依赖也破坏,恢复时去掉主外键约束.

目录
相关文章
|
机器学习/深度学习 Oracle 关系型数据库
[20180412]logminer使用问题(10g).txt
[20180412]logminer使用问题(10g).txt --//今天使用logminer下遇到一个问题,做一个记录: 1.环境: SYSTEM@xxx> @ &r/ver1 PORT_STRING                    VERSION...
1640 0
|
监控 Oracle 关系型数据库
[20171219]expdp备份一致性问题.txt
[20171219]expdp备份一致性问题.txt --//别人问的问题,如何使用expdp备份保持相关数据的一直性问题,实际上就是导出使用参数FLASHBACK_SCN,FLASHBACK_TIME.
1299 0
|
SQL Oracle 关系型数据库
[20170627]使用TSPITR恢复表空间.txt
[20170627]使用TSPITR恢复表空间.txt --//RMAN提供了一种实现所谓TSPITR(Tablespace Point-In-Time Recovery)的技术,通过简单的一个语句,就可以在主库不停库(很吸引人) --//的情况下,利用备份集和连续的归档日志,实现表空间级别的定点恢复。
897 0
|
机器学习/深度学习 SQL 关系型数据库
[20170520]利用undo表空间保护数据.txt
[20170520]利用undo表空间保护数据.txt --//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧, --//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题.
856 0
|
监控 Oracle 关系型数据库
[20170203]关于flashback的问题.txt
[20170203]关于flashback的问题.txt --今天生产系统遇到的问题,dataguard机器磁盘空间不足,需要释放磁盘空间,无论如何删除日志,空间回收都是很少.
895 0
|
Oracle 关系型数据库 测试技术
[20160805]logminer使用问题1.txt
[20160805]logminer使用问题1.txt --前一阵子看itpub有人想通过logminer来抽取归档同步数据库,实际上这个非常不科学,存在一定的风险,我觉得很多情况下会漏掉一些sql --语句,通过例子来说明。
817 0
|
Oracle 关系型数据库 测试技术
[20160805]logminer使用问题2.txt
[20160805]logminer使用问题2.txt --前一阵子看itpub有人想通过logminer来抽取归档同步数据库,实际上这个非常不科学,存在一定的风险,我觉得很多情况下会漏掉一些sql --语句,通过例子来说明。
1061 0
|
Oracle 关系型数据库 SQL
[20160805]logminer使用问题3.txt
[20160805]logminer使用问题3.txt --前一阵子看itpub有人想通过logminer来抽取归档同步数据库,实际上这个非常不科学,存在一定的风险,我觉得很多情况下会漏掉一些sql --语句,通过例子来说明。
963 0
|
Oracle 关系型数据库 数据库
[20160721]rman与undo表空间备份.txt
[20160721]rman与undo表空间备份.txt --//UNDO表空间主要用于存储前镜像数据,这些数据在回滚以及恢复过程中可能被用到。 --//一般生产数据库的UNDO表空间可能会变得非常巨大,甚至包括多个数据文件,而备份完整的UNDO数据文件在恢复时一般可能用到的比 --//例很小。
852 0
|
SQL Oracle 关系型数据库
[20160406] 恢复until scn NNN.txt
[20160406] 恢复until scn NNN.txt --昨天别人问的问题,如果使用rman恢复,restore database until scn NNN;是恢复到NNN,还是NNN-1.
841 0