博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flashback_scn导出
阅读量:6812 次
发布时间:2019-06-26

本文共 2542 字,大约阅读时间需要 8 分钟。

1.应用场景

2.oracle实现该技术的原理理论,及限制
3.实操及与scn时间相关的函数查询

一、flashback_scn导出
1) OGG同步,对表的数据进行同步,第一次可以完全导出,中途如果由于某些原因导致数据中断时间过长,可以根据OGG日志得到目标端最后应用同步成功的SCN,选择这个SCN前一点点在源端导出即可无需全部导出:
2)使用expdp进行数据迁移,在子表导入,报ORA-39083、ORA-02298,父表中不存在子表相关的记录,因此外建约束无法创建
解决方法:停应用重新导出导入、指定flashback_scn导出导入、使用如下SQL删除子表中不符合的行,进行删除,手工创建约束。
ORA-39083 And ORA-2298 Encountered During DataPump Import (Doc ID 462645.1) ORA-39083:
select <FK_column_name> from <child_table>
minus
select <PK_column_name> from <parent_table>;
如下链接,说明在导出的过程中,如果对表进行dml操作且成功,导出程序读取数据时将按照实际情况进行导出,因此数据与最初执行导出存在不一致。
Expdp Message "FLASHBACK automatically enabled" Does Not Guarantee Export Consistency (Doc ID 377218.1)

二、原理理论

通过Undo构建历史时间节点的blocks,达到在某个时间节点数据一致性的现象。
undo保留时间无法保留过长的数据,Undo空间不足信息被覆盖。

三、实操

数据库当前SCN查询
SQL> select dbms_flashback.get_system_change_number scn,current_scn from v$database;
SCN CURRENT_SCN
---------- -----------
1276822 1276822
SQL>select to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') as "date" from v$database
date
-------------------
2019-04-21 19:00:28

select to_char(scn_to_timestamp(1276822),'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SCN_TO_TIME

-------------------
2019-04-21 19:04:01

SQL> create table a(id int);
SQL> insert into a values(1);
SQL> commit;
SQL> select dbms_flashback.get_system_change_number scn,current_scn from v$database;
SCN CURRENT_SCN
---------- -----------
1276903 1276903
SQL> insert into a values(2);
SQL> commit;
Starting "SYS"."SYS_EXPORT_TABLE_01": '/******** AS SYSDBA' directory=dump dumpfile=test1.dmp tables=a
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
ORA-39166: Object A was not found.
ORA-31655: no data or metadata objects selected for job

DataPump Export (EXPDP) Fails With Error ORA-39165: Schema SYS Was Not Found (Doc ID 553402.1)

SQL> create table system.a as select * from a;
SQL> select dbms_flashback.get_system_change_number scn,current_scn from v$database;
SCN CURRENT_SCN
---------- -----------
1303531 1303531
delete system.a where id=2;
commit;
SQL> select dbms_flashback.get_system_change_number scn,current_scn from v$database;
SCN CURRENT_SCN
---------- -----------
1303545 1303545
[oracle@enmo ~]$ expdp system/oracle directory=dump dumpfile=test1.dmp tables=a
. . exported "SYSTEM"."A" 4.921 KB 1 rows
[oracle@enmo ~]$ expdp system/oracle directory=dump dumpfile=test3.dmp tables=a FLASHBACK_SCN=1303531
. . exported "SYSTEM"."A" 4.929 KB 2 rows

转载于:https://www.cnblogs.com/lvcha001/p/10748154.html

你可能感兴趣的文章
SQL-26 (二次分组)汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count...
查看>>
SQL-55 分页查询employees表,每5行一页,返回第2页的数据
查看>>
DB2 心态
查看>>
Android实现仿IOS带清空功能的文本输入框
查看>>
轻松玩转windows7之一:利用无线玩转虚拟网络
查看>>
:layout_gravity gravity
查看>>
POJ 2478:Farey Sequence
查看>>
linux 心得
查看>>
线上应用故障排查之一:高CPU占用
查看>>
编写差异更新脚本
查看>>
CentOS 6.4下Squid代理服务器的安装与配置
查看>>
CentOS 6.5安装YouCompleteMe使用vim C/C++语法自动补全
查看>>
利用php利用root权限执行shell脚本必须进行以下几个步骤
查看>>
Storm原理及单机安装指南
查看>>
Linux一些有用的操作
查看>>
IAT 注入ImportInject(dll)
查看>>
[C++]面向对象部分——类
查看>>
Websense:别让移动设备触痛企业的安全神经
查看>>
DHCP服务的介绍及配置详解
查看>>
脚本实现为一系列账号生成随机密码
查看>>