【发布时间】:2017-01-25 12:38:18
【问题描述】:
Python 3.4.3、cx_Oracle 5.2 11g、Oracle DB 11.2.0.1
你好!
我想通过cx_Oracle从python获取数据泵作业的状态。
为了解决这个问题,我打电话给 Oracle dbms_datapump.get_status procedure:
DBMS_DATAPUMP.GET_STATUS(
handle IN NUMBER,
mask IN BINARY_INTEGER,
timeout IN NUMBER DEFAULT NULL,
job_state OUT VARCHAR2,
status OUT ku$_Status1120);
来自pythoncx_Oracle:
get_status_params = {'handle': job_handler,
'mask': 1,
'timeout': -1,
'job_state': job_state,
'status': ??????
}
cursor.callproc('dbms_datapump.get_status', keywordParameters=get_status_params)
Oracle 中的结构 ku$_Status1120:
CREATE TYPE sys.ku$_Status1120 IS OBJECT
(
mask NUMBER,
wip ku$_LogEntry1010,
job_description ku$_JobDesc1020,
job_status ku$_JobStatus1120,
error ku$_LogEntry1010
)
job_status 以 oracle 为例:
CREATE TYPE sys.ku$_JobStatus1120 IS OBJECT
(
job_name VARCHAR2(30),
operation VARCHAR2(30),
job_mode VARCHAR2(30),
bytes_processed NUMBER,
total_bytes NUMBER,
percent_done NUMBER,
degree NUMBER,
error_count NUMBER,
state VARCHAR2(30),
phase NUMBER,
restart_count NUMBER,
worker_status_list ku$_WorkerStatusList1120,
files ku$_DumpFileSet1010
)
如何在 Python 中重复 Oracle 类型 sys.ku$_Status1120?
【问题讨论】: