gpt4 book ai didi

linux - 使用 Oracle PL/SQL SP 在不同的 Linux 服务器上运行 Shell 脚本

转载 作者:太空狗 更新时间:2023-10-29 12:23:05 26 4
gpt4 key购买 nike

我想在调用存储过程时运行放置在 Linux 服务器上的 shell 脚本。

如果脚本被放置在安装数据库的同一台服务器上,比如“Linux 服务器 A”,下面的代码就像一个魅力。

数据库版本:Oracle Database 12cLinux版本:Red Hat Linux 7

begin
dbms_scheduler.create_credential
(
credential_name => 'my_credential',
username => 'user',
password => 'pass'
);
end;
/
create or replace procedure RunShell
as
begin
dbms_scheduler.create_job
(
job_name => 'shell_scripts_job',
job_type => 'executable',
number_of_arguments => 1,
job_action => '/usr/bin/sh',
auto_drop => true,
credential_name => 'my_credential'
);
dbms_scheduler.set_job_argument_value(job_name=>'shell_scripts_job', argument_position=>1, argument_value=>'/u01/Script.sh');
dbms_scheduler.enable('shell_scripts_job');
dbms_scheduler.run_job(job_name=>'shell_scripts_job');
END;
/
EXECUTE RunShell;

问题是,我的数据库安装在“Linux 服务器 A”上,而我要运行的 shell 脚本在“Linux 服务器 B”上。

此脚本执行一些必须完成“Linux 服务器 B”的操作。其中一个主要功能是启动/停止驻留在“Linux 服务器 B”上的另一个应用程序。

我怎样才能做到这一点?

最佳答案

您可以在远程机器上创建一个 NFS 共享,然后将该共享安装到本地机器上。然后可以将共享的远程目录当作本地目录来引用。

例如,如果您在远程目录“/u01”上创建一个共享并将该共享称为“remote_scripts”,您会将其挂载到/mnt/remote_scripts。

您代码中的 argument_value 将是

argument_value=>'/remote_scripts/Script.sh'

设置共享还有更多细节,需要考虑权限,但原则上这是可行的。

下一页给出了一个很好的设置概要,但是让你的 SYSADMIN 参与进来,因为他们了解你的网络。 ( https://www.tecmint.com/how-to-setup-nfs-server-in-linux/ )

关于linux - 使用 Oracle PL/SQL SP 在不同的 Linux 服务器上运行 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51965040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com