我在Windows Server 2008中有一台运行Oracle 10g服务器的机器 . 我想备份数据库 . 我还想备份用户使用我的网站上传的oracle服务器保存在硬盘上的一些文件 .
我可以使用sql developer和sqlplus连接到Oracle服务器 . 我可以在服务器上运行sql查询 .
为了备份数据库,我必须运行命令“exp”(这是我知道备份数据库的唯一方法) . 可能还有其他一些方法,但还有另一个问题,因为我必须运行dos命令 . 那个问题是备份文件 . 这些文件存储在c:\ mydir中 . 无论如何都无法通过Web访问文件夹mydir,它不是共享文件夹 .
我已经尝试在连接到oracle服务器后在sqlplus中运行“host”,即在“sql>”提示符下 . 该命令成功运行但是在本地机器上,而不是在oracle服务器上 .
编辑:“host”命令由sqlplus提供,不是oracle命令,意味着不能在查询中使用 . Sqlplus甚至在连接到远程机器时在本地机器上运行“host”命令 .
目标是使sqlplus在远程机器上运行“host”命令,或者从pl / sql查询内部运行dos命令(独立于sqlplus) .
2 回答
可以在执行operating system command on the Oracle server的数据库服务器上创建Java存储过程 . 但是使用导出实用程序备份数据库是极其罕见的 - 只创建逻辑备份而不是更合适的物理备份 . 通过SQL * Plus连接到数据库并在服务器操作系统上生成作业来运行备份是极不寻常的 . 使用运行您要运行的任何导出命令的数据库服务器上的Windows调度程序创建作业会更有意义 .
除了贾斯汀所写的内容:
如果要获取数据库的逻辑快照,则新DataPump工具优先于旧(且已弃用)
exp
工具 .DataPump是一个命令行工具(
expdp
),但也有一个SQL API通过Oracle包和程序 .The Data Pump API(包括例子)
DBMS_DATAPUMP(参考)
但如果你想要一个"real"备份你应该看看RMAN