通过sqlplus运行shell脚本
我现在以oracle的身份登录到生产环境中,我需要在SQLPLUS里运行远程主机上的SHELL脚本。我想通过Python来实现这个功能。请问有没有什么办法可以做到?
我可以在sqlplus中运行SQL脚本或SQL命令,像这样:-
session = Popen(['sqlplus','-S','abc/abc@'+str(hostname)+':1000/'+str(dbname)+''], stdin=PIPE, stdout=PIPE, stderr=PIPE)
session.stdin.write('SPOOL '+str(op_file)+' \n'
' '+str(data)+ '\n');
session.stdin.write(' ; \n')
session.stdin.write('exit \n')
session.stdin.flush()
stdout, stderr = session.communicate()
但是当我想运行一个shell脚本时,有没有办法直接通过sqlplus来实现呢?因为通过ssh登录并以oracle身份执行sudo命令是不可能的。
我觉得可以用PLSQL来实现这个功能,具体方法是这样的:-
http://www.dba-oracle.com/t_execute_shell_script_plsql_procedure.htm
不过我不太确定。
1 个回答
1
SQL*Plus 是一个客户端应用程序。它可以在客户端机器上启动进程,这些进程可以运行一些脚本。但是,它不能在数据库服务器上启动进程。
正如你提到的,你可以在数据库服务器上使用 dbms_scheduler
这个工具来启动在服务器上运行的批处理文件。你也可以使用 Java 存储过程来做类似的事情,因为它也是在服务器上运行的。dbms_scheduler
还可以在远程服务器上运行任务,前提是安装了合适的调度代理,不过在大多数情况下,这种功能可能并不是特别有用。