我有一个表,其中包含数百万行与rowdemendency启用,我把它转储。现在我想导入此表的数据与特定的年份和rowdependency值。如果我导入的表只有日期条件,它将返回正确的值,如果我添加rowdemendency值,它将返回不同的错误行。
例如
Id ora_rowscn
1, 123456
2 123457
3 123458
4 123459
5 123450
字符串select * from tb1 where id >2
它返回3行,如果加上and orw_rowscn <'123459'
,它什么也不返回。根据我的理解,这种行为正常。它是正确的还是我做错了什么?有没有一种方法可以让我得到特定的日期和行依赖性值?
所需的输出是
3 123458
1条答案
按热度按时间66bbxpm51#
如果您导出 * 文件 * 而不仅仅是表,则
ORA_ROWSCN
似乎会被保留。常规的数据泵导出和导入总是会更改SCN,因此Oracle没有理由正常保存这些额外信息。但是,由于可传输表空间复制整个数据文件,因此这些额外的SCN信息会随文件一起沿着。您可能希望仅为这一个表创建一个单独的对象,这样就不需要复制很多额外的对象。
危险
这个解决方案在我的机器上工作,这是我唯一能保证的。这是部分未记录的行为,它可能在其他版本,版本或平台上不起作用。然后还有一个问题,即
ORA_ROWSCN
值偶尔会根据表的查询方式而改变,即使表没有改变。ORA_ROWSCN
不是设计用于这种方式的,但如果你幸运的话,也许对你有用在应用此解决方案之前,您需要仔细测试它。
脚本
我的脚本主要基于this helpful tutorial about transportable tablespaces from Oracle-Base。我将表更改为一个更简单的表,以证明
ORA_ROWSCN
保持不变,更改了一些连接和物理属性以匹配我的系统,并重新Map了模式名称和数据库名称,以证明如何将数据复制到同一数据库,但作为不同的模式。该脚本有点混乱,您需要进行一些重大更改以使其适合您的环境。
字符串