【发布时间】:2018-04-03 02:31:00
【问题描述】:
如何创建 Java 代码以连接到 SQLPlus 并执行一系列命令?我需要执行以下命令来生成 Oracle AWR。
//Connect to DB thru SQLPlus
sqlplus username/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host_name)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)))
//After connected
//Execute SQL Query to capture SID1 and SID2 vards
set heading off feedback off lines 800 pages 5000 trimspool on trimout on
set termout off
spool C:\\Temp\\AWR_TEST.html
select output from table(dbms_workload_repository.awr_global_report_html(4194236182,'',SID1,SID2,0))
spool off
set termout on
set heading on feedback 6 lines 100 pages 45
我有如下代码,但是这里不知道如何适配完整的SQL命令。
processBuilder = new ProcessBuilder(
"sqlplus",
"username/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host_name)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)))"); //ORACLE
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((currentLine = in.readLine()) != null) {
appendLineToStringBuilder(responseBuilder,String.format("Result Each Line: %s", currentLine));
}
【问题讨论】:
-
把你的脚本放在一个文件里,然后通过java用sqlplus运行它。 stackoverflow.com/questions/10485443/…
-
谢谢豪尔赫!实际上 SQL 代码将是动态的,所以我相信这个选项不起作用。
-
如果你在 Java 代码中生成它就可以了。只需将脚本放入文件中,保存并运行即可。