Oracle PL/SQL 和 Shell 脚本:从一种模式到另一种模式

Posted

技术标签:

【中文标题】Oracle PL/SQL 和 Shell 脚本:从一种模式到另一种模式【英文标题】:Oracle PL/SQL and Shell scripting: from one schema to another schema 【发布时间】:2012-09-06 22:26:55 【问题描述】:

我想每天将数据从一个表从一个模式加载到另一个模式。

表位于不同的数据库中,因此出于某些安全目的,创建数据库链接将不是一个选项.... 大约百万条记录将被处理.... 数据库位于不同的服务器上,从数据库“A”我通过组合一个月的 emp 详细信息和 emp 存在表来获取员工存在详细信息,并将此数据加载到数据库“B”的其他表中。需要每天运行此活动。 我需要每天在高峰时段运行一项作业,以便将表的完整副本复制到其他数据库中... 会在 sqlldr 的帮助下导入/导出或加载数据吗?

请告诉我正确的方法.. 在此先感谢..

我最好的选择是什么?

【问题讨论】:

【参考方案1】:

嗯,似乎使用数据库链接最适合您的情况。如果要从数据库中读取表,则应具有读取权限。也许您可以要求 DBA 创建一个仅对特定表具有读取权限的帐户(用户)。然后您可以使用数据库链接与新用户连接。 您无法更新或删除表中的数据,因为您连接的用户没有写入权限。这样可以解决安全问题。

exp/imp 和 sqlldr 是不同的工具。他们不一起工作。您只能从导出文件中导入数据。您无法使用 sqlldr 加载导出文件。

【讨论】:

+1 创建特定的 dblink acct 和 privs 也是我所看到的。是推送还是拉取数据是另一个问题。 您也可以仅在 一个 数据库上创建 DB 链接,因此如果一个是面向互联网/客户端的,它永远不需要知道另一个存在。【参考方案2】:

如果你想定期运行它,听起来你可能想看看 Oracle 调度器

概览:http://docs.oracle.com/cd/B28359_01/server.111/b28310/schedover001.htm

要导出数据并将其添加到新数据库中,您可能需要使用 Oracle DataPump,它可以安全地为您执行导出和导入。

数据泵导出:http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm

因此,您可能会创建一个 shell 脚本,该脚本使用数据泵从 2 号数据库创建导出文件,然后再次使用数据泵将所述文件导入 1 号数据库。 获得该脚本后,您可以安排它在夜间或流量较低的任何时间运行。

问候

【讨论】:

以上是关于Oracle PL/SQL 和 Shell 脚本:从一种模式到另一种模式的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Oracle 中刷新 PL/SQL 的输出?

从 shell 脚本调用 PL/SQL 存储过程并捕获 out 参数

请问怎样在PLSQL中批量执行多个.sql的脚本?

由于 Oracle DB 从 12c 升级到 19c,对现有 SQL、PL/SQL 脚本和数据模型有何影响?

使用从 shell 脚本返回多个输出的 API 调用 PL/SQL

Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理