Oracle 使用PLSQL执行主机命令

Oracle 使用PLSQL执行主机命令,oracle,plsql,Oracle,Plsql,我们想知道是否从PLSQL程序执行unix主机命令 这是在oracle DB安装的操作系统中调用主机命令,还是我们可以为不同的服务器调用主机命令?请建议 未尝试任何解决方案,在实施前需要建议/投入 编辑 我们的需求就像我们有一个应用程序,有应用层和数据库层。应用层包含与应用程序相关的程序,这些程序与数据库层交互以获取任何数据库信息。应用层和数据库层位于不同的主机(不同的ip地址)。与应用程序相关的程序是与文件系统交互的unix shell脚本 客户机的要求是,不使用shell脚本与文件系统交互,

我们想知道是否从PLSQL程序执行unix主机命令

这是在oracle DB安装的操作系统中调用主机命令,还是我们可以为不同的服务器调用主机命令?请建议

未尝试任何解决方案,在实施前需要建议/投入

编辑

我们的需求就像我们有一个应用程序,有应用层和数据库层。应用层包含与应用程序相关的程序,这些程序与数据库层交互以获取任何数据库信息。应用层和数据库层位于不同的主机(不同的ip地址)。与应用程序相关的程序是与文件系统交互的unix shell脚本

客户机的要求是,不使用shell脚本与文件系统交互,而应该使用PL/SQL代码来完成这项工作,这样我们就有了完整的安全性

Xing和Ozhan提出的解决方案是面向Java代码与文件系统交互并提供相关信息。文件系统交互使用Java中的
host
命令程序完成。我的问题是,如果我们在应用层使用java程序运行主机命令,它会连接到应用层的文件系统还是连接到数据库层的文件系统?我们希望连接的是客户端系统的文件系统层,而不是数据库服务器

希望我已经清楚地表达了我的要求。如果您需要任何其他信息,请告诉我

答案是肯定和否定

是->使用sqlplus可以从连接的机器上运行主机命令。 否->使用utl包时,它总是重定向到db机器/服务器

例如:

从本地计算机从windows/linux的sqlplus连接后;你可以这样做

主机mkdir abcd


主机ls*.log

严格来说,您不能从PL/SQL执行主机命令

可能会有帮助。这就是你想要的。嗨,Ozhan和Zing,谢谢你的解决方案/选项。我的问题是,如果我们发出host命令,不管它连接到本地机器还是数据库unix机器。请让我知道,PrasadPL/SQL在数据库服务器上运行。因此,在PL/SQL中发出的
host
命令(通过Java
command
、DBMS\u调度程序或其他方式)将在数据库服务器上执行。为了满足客户的要求,它似乎有点疯狂。从数据库执行操作系统命令需要向数据库授予操作系统权限,这总是有风险的(如果我们不小心,很容易打开后门)。如果允许数据库服务器在另一台服务器上执行OS命令,则安全性的削弱会更大。那么,你确定你正确理解了他们的要求吗?嗨,尼扎姆丁,谢谢你的回答。我明白这一点。一个小信息..如果我使用上面Xing和Ozhan建议的java代码中封装的主机命令,我将连接到哪里。。是db机器/服务器还是本地呼叫机器。?请让我知道。主机命令只能由本地/客户端安装的可执行文件“sqlplus”执行;当您在Java2中运行sql代码时,将无法识别它。在plsql过程中嵌入java代码时;它将在db服务器而不是客户端/本地3中运行主机级命令(使用java或plsql)。如果你能给出一个你正在尝试实施的例子;可能我可以在该方向提供更多详细信息Hi Nizamudeen,感谢您的回复。我们的要求就像我们的应用程序具有应用程序层和数据库(db)层。应用程序层包含与数据库层交互的应用程序,以获取任何数据库信息。应用程序层和数据库(db)层位于不同的主机中(不同的ip地址)与应用程序相关的程序是与文件系统交互的unix shell脚本。客户端要求,不使用与文件系统交互的shell脚本,而是使用plsql代码,这样我们就有了完整的安全性。Xing和Ozhan提供的解决方案是面向与文件系统交互的java代码,并提供相关的inf格式化。文件系统交互使用java中的主机命令程序完成。我的问题是,如果我们在应用层中使用java程序运行主机命令,它将连接到应用层的文件系统还是连接到数据库层的文件系统。我们希望客户端系统的文件系统层连接到数据库服务器。希望我能清楚地表达我的想法要求。如果您需要任何其他信息,请让我知道。问候,Prasad S BillahalliHi Nizamudeen..请同时参考上述2条声明,因为我们的空间有限。问候,Prasad S BillahalliHi Zeic..我们可以通过PLSQL执行主机命令..您能详细说明严格意义上的问候吗