【问题标题】:Run commandline command at remote Oracle server using SQL*Plus使用 SQL*Plus 在远程 Oracle 服务器上运行命令行命令
【发布时间】:2012-09-24 05:33:52
【问题描述】:

我有一台在 windows server 2008 中运行 Oracle 10g 服务器的机器。我想备份数据库。我还想备份一些用户使用我的网站上传的oracle服务器保存在硬盘上的文件。

我可以使用 sql developer 和 sqlplus 连接到 Oracle 服务器。我可以在服务器上运行 sql 查询。

为了备份数据库,我必须运行命令“exp”(这是我知道的唯一备份数据库的方法)。可能还有其他方法,但还有另一个问题,因此我必须运行 dos 命令。这个问题是备份文件。这些文件存储在 c:\mydir 中。文件夹 mydir 无论如何都无法通过 Web 访问,并且不是共享文件夹。

我尝试在连接到 oracle 服务器后在 sqlplus 中运行“host”,即在“sql>”提示符下。该命令运行成功,但在本地机器上,而不是在 oracle 服务器上。

编辑:“host”命令由 sqlplus 提供,不是 oracle 命令,表示不能在查询中使用。 Sqlplus 即使连接到远程机器也可以在本地机器上运行“host”命令。

目标是让 sqlplus 在远程机器上运行“host”命令,或者从 pl/sql 查询中运行 dos 命令(独立于 sqlplus)。

【问题讨论】:

  • 您需要从 c:\mydir 备份哪些文件?

标签: oracle sqlplus


【解决方案1】:

除了贾斯汀所写的:

如果您想获取数据库的逻辑快照,新的DataPump 工具比旧的(已弃用)exp 工具更受欢迎。

DataPump 是一个命令行工具 (expdp),但也有一个通过 Oracle 包和过程的 SQL API。

The Data Pump API(包括示例)
DBMS_DATAPUMP(参考)

但如果你想要一个“真正的”备份,你应该查看RMAN

【讨论】:

    【解决方案2】:

    可以在执行operating system command on the Oracle server 的数据库服务器上创建Java 存储过程。但是使用导出实用程序来备份数据库是非常不寻常的——它只创建一个逻辑备份而不是更合适的物理备份。通过 SQL*Plus 连接到数据库并在服务器操作系统上生成作业来运行备份是非常不寻常的。在数据库服务器上使用 Windows 调度程序创建一个作业会更有意义,该调度程序运行您想要运行的任何导出命令。

    【讨论】:

    • @Atif - 无论数据库是在 Windows 上还是在 Unix 上运行,Java 存储过程都是相同的。被执行的操作系统命令当然会有所不同。
    • 感谢您的帮助。如何撤销授予的权限?
    • @Atif - 如果您正在谈论需要授予 Java 存储过程的权限,您将进行等效的 dbms_java.revoke_permission 调用。
    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2011-02-11
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多