【发布时间】:2026-02-07 04:20:06
【问题描述】:
我需要将表从一个 oracle 数据库复制到另一个 oracle 数据库。我正在使用 SQLLDR,因为我没有数据库链接。
由于表非常大(大约 160 GB),提取平面文件中的数据大约需要 4-5 小时,我在 unix 机器上也面临存储问题,通过 sqlldr 加载也需要很多时间。
谁能帮我解决这个问题?
【问题讨论】:
标签: database oracle sql-loader
我需要将表从一个 oracle 数据库复制到另一个 oracle 数据库。我正在使用 SQLLDR,因为我没有数据库链接。
由于表非常大(大约 160 GB),提取平面文件中的数据大约需要 4-5 小时,我在 unix 机器上也面临存储问题,通过 sqlldr 加载也需要很多时间。
谁能帮我解决这个问题?
【问题讨论】:
标签: database oracle sql-loader
如果您使用的是 Oracle 10G(或更高版本),则可以利用 Oracle Data Pump 实用程序,该实用程序允许您即时导出/导入压缩数据库。根据 Oracle 数据库版本,您可以查看官方 Oracle 文档,其中包含如何执行数据库导出/导入操作的示例。
【讨论】:
通过 sql、输出或假脱机将数据提取到 unix 命名管道并立即启动另一个会话,并从命名管道加载 sqlldr ...
user@box> mkfifo my.fifo.pipe
user@box> sqlplus -s user/pwd@sourceservice @script-spooling-to-my.fifo.pipe
<ANOTHER UNIX SESSION>
user@box> sqlldr userid=user/pwd@destinationservice control=.... data=my.fifo.pipe
【讨论】:
如果您不能使用 DBLinks 并且不能使用数据泵,您可以使用 ETL 工具,例如 Pentaho Data Integration 或其他,作为一个简单的选项。
【讨论】: