如何解决Oracle SQLPLUS:监控数据复制进度
我编写了一个 python 程序,帮助将数据从一个 Oracle DB 复制到另一个。它使用线程在多个线程上并发复制数据。
def run_sqlplus(sqlplus_script):
p = subprocess.Popen(['sqlplus',conn],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
(stdout,stderr) = p.communicate(sqlplus_script.encode('utf-8'))
stdout_lines = stdout.decode('utf-8').split("\n")
return stdout_lines
列表指定要执行的查询
LST=["select COUNT(1) FROM a WHERE BUSINESS_DATE='30-Sep-2020' AND RUN_ID=1 AND PROCESSING_LOCATION='PAC';","选择 COUNT(1) FROM b WHERE BUSINESS_DATE='30-Sep-2020' AND RUN_ID=1 AND PROCESSING_LOCATION='PAC';",“使用 select * FROM TABLE1 WHERE BUSINESS_DATE='30-Sep-2020' COPY FROM schema/pass@DB APPEND TABLE1;” ]
我已将列表 (LST) 映射到以下线程池执行程序:
以 concurrent.futures.ThreadPoolExecutor(max_threads) 作为执行器:
results=[executor.submit(execute_queries,i) for i in LST]
for f in concurrent.futures.as_completed(results):
print(f.result())
在运行代码时,似乎复制命令的运行时间比预期的要长。有什么方法可以监控python中的线程进度或Oracle DB中的SID/SERIAL#。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。