为了让服务台能够重启Oracle实例,我们正在尝试实现一个小型python web服务器,它将启动一个启动Oracle实例的shell脚本。
代码完成并启动实例但存在问题:实例已连接到Web服务器,因此在实例停止之前,浏览器的缓冲区不会关闭,并且存在{{1}进程侦听Web服务器端口。
我尝试使用以下命令启动脚本:
ora_pmon_INSTANCE
和
process = os.system("/home/oracle/scripts/webservice/prueba.sh TFINAN")
但它也是一样的。
我还尝试使用守护进程启动脚本(使用redhat的init脚本中的守护进程函数)。该脚本以相同的结果启动Oracle实例。
这是我的代码:
process = subprocess.Popen(["/home/oracle/scripts/webservice/prueba.sh", "TFINAN"], shell=False, stdout=subprocess.PIPE)`
你们有人可以帮助我吗?
答案 0 :(得分:0)
您的问题与HTTP服务器无关。从Python代码中控制Oracle守护程序似乎存在一般性问题。
首先尝试编写一个简单的python脚本,它可以满足您的需求。
我的猜测是,您尝试从守护程序控制脚本读取输出时遇到问题。
另请参阅Popen.communicate()以获取命令的输出。其他选项可以是调用subrocess.call()
有很多教程可以从Python调用系统命令,例如this one
除了与Python相关的纯粹问题之外,您可能会遇到权限问题 - 如果您的用户运行脚本/ HTTP服务器不允许调用oracle控制脚本,那么您在Linux添加时会遇到另一个问题(可能有解决方案)那个用户变成了sudoers)。
解决调用脚本的问题后,很容易让它在HTTP服务器内部工作。