从Oracle数据库导出一致性数据

从Oracle数据库导出一致性数据,oracle,export,dump,snapshot,Oracle,Export,Dump,Snapshot,我想在生产环境中导出Oracle数据库的内容,而使用该数据库的应用程序必须在执行导出时运行。简单地“转储”到文件中,例如简单地选择数据库的内容并使用PL/SQL将其逐个表写入文件,似乎并不能保证一致性。例如,通过将表B的所有内容写入文件,以前导出的表a可能在导出表B的同时发生了更改。因此,B的导出内容可能引用表A的“新”数据,该数据不属于表A的导出文件。出于性能原因,我无法在一个大型事务中运行此导出(应用程序正在运行) 哪些技术、工具等可用于将一组一致的数据从Oracle数据库导出到文件中 多谢

我想在生产环境中导出Oracle数据库的内容,而使用该数据库的应用程序必须在执行导出时运行。简单地“转储”到文件中,例如简单地选择数据库的内容并使用PL/SQL将其逐个表写入文件,似乎并不能保证一致性。例如,通过将表B的所有内容写入文件,以前导出的表a可能在导出表B的同时发生了更改。因此,B的导出内容可能引用表A的“新”数据,该数据不属于表A的导出文件。出于性能原因,我无法在一个大型事务中运行此导出(应用程序正在运行)

哪些技术、工具等可用于将一组一致的数据从Oracle数据库导出到文件中


多谢各位

闪回使您能够一致地导出数据

每次数据库更改都会在撤消中记录旧数据。Oracle将该数据用于回滚和读取一致性—SELECT语句可以从特定时间点读取数据。闪回也使用相同的机制,但使用闪回,可以手动设置时间点。如果为每个查询将时间设置为相同的值,则它们都将从相同的一致时间读取。如果更改太多而撤消表空间不足,则可能会出现错误,如
ORA-01555:snapshot too old

如果您构建了自己的导出过程,则可以使用如下闪回查询:

select * from test1 as of timestamp timestamp '2015-01-13 20:59:00';
如果使用导出数据泵,则可以使用以下选项:


Flashback使您能够始终如一地导出数据

每次数据库更改都会在撤消中记录旧数据。Oracle将该数据用于回滚和读取一致性—SELECT语句可以从特定时间点读取数据。闪回也使用相同的机制,但使用闪回,可以手动设置时间点。如果为每个查询将时间设置为相同的值,则它们都将从相同的一致时间读取。如果更改太多而撤消表空间不足,则可能会出现错误,如
ORA-01555:snapshot too old

如果您构建了自己的导出过程,则可以使用如下闪回查询:

select * from test1 as of timestamp timestamp '2015-01-13 20:59:00';
如果使用导出数据泵,则可以使用以下选项:


Flashback使您能够始终如一地导出数据

每次数据库更改都会在撤消中记录旧数据。Oracle将该数据用于回滚和读取一致性—SELECT语句可以从特定时间点读取数据。闪回也使用相同的机制,但使用闪回,可以手动设置时间点。如果为每个查询将时间设置为相同的值,则它们都将从相同的一致时间读取。如果更改太多而撤消表空间不足,则可能会出现错误,如
ORA-01555:snapshot too old

如果您构建了自己的导出过程,则可以使用如下闪回查询:

select * from test1 as of timestamp timestamp '2015-01-13 20:59:00';
如果使用导出数据泵,则可以使用以下选项:


Flashback使您能够始终如一地导出数据

每次数据库更改都会在撤消中记录旧数据。Oracle将该数据用于回滚和读取一致性—SELECT语句可以从特定时间点读取数据。闪回也使用相同的机制,但使用闪回,可以手动设置时间点。如果为每个查询将时间设置为相同的值,则它们都将从相同的一致时间读取。如果更改太多而撤消表空间不足,则可能会出现错误,如
ORA-01555:snapshot too old

如果您构建了自己的导出过程,则可以使用如下闪回查询:

select * from test1 as of timestamp timestamp '2015-01-13 20:59:00';
如果使用导出数据泵,则可以使用以下选项:


您使用的是哪个Oracle版本

正如John Heller所说,您可以使用Oracle数据泵,包括该子句 闪回时间=“到时间戳('25-08-2008 14:35:00','DD-MM-YYYY HH24:MI:SS')”。 如果要导出当前一致的数据,可以按以下方式配置子句: 闪回时间=系统时间戳

如果您的Oracle版本比10.2.0.4旧,我建议您使用exp二进制文件,包括“consistent=y”子句

使用数据泵,您可以导出过去的数据(但并不总是可能)。使用exp,您可以在运行命令时导出一致的数据


请注意,在任何情况下都可能出现“快照太旧”错误。这是因为撤消表空间空间不足。

您使用的是哪个Oracle版本

正如John Heller所说,您可以使用Oracle数据泵,包括该子句 闪回时间=“到时间戳('25-08-2008 14:35:00','DD-MM-YYYY HH24:MI:SS')”。 如果要导出当前一致的数据,可以按以下方式配置子句: 闪回时间=系统时间戳

如果您的Oracle版本比10.2.0.4旧,我建议您使用exp二进制文件,包括“consistent=y”子句

使用数据泵,您可以导出过去的数据(但并不总是可能)。使用exp,您可以在运行命令时导出一致的数据


请注意,在任何情况下都可能出现“快照太旧”错误。这是因为撤消表空间空间不足。

您使用的是哪个Oracle版本

正如John Heller所说,您可以使用Oracle数据泵,包括该子句 闪回时间=“到时间戳('25-08-2008 14:35:00','DD-MM-YYYY HH24:MI:SS')”。 如果要导出当前一致的数据,可以按以下方式配置子句: 闪回时间=系统时间戳

如果您的Oracle版本比10.2.0.4旧,我建议您使用exp二进制文件,包括“consistent=y”子句

使用数据泵,您可以导出过去的数据(但并不总是可能)。使用exp,您可以在运行co时导出一致的数据