簡體   English   中英

從Java應用程序運行oracle命令腳本文件

[英]Running oracle commands script file from java application

我有一個具有oracle數據庫的應用程序,因此該應用程序的安裝需要運行一些oracle命令腳本文件才能創建數據庫並執行一些DDL操作。 這些操作包括一些表空間創建,模式定義等。

我試圖使用Java應用程序准備安裝向導。 該向導需要運行這些命令。 我的具體問題是:如何從Java應用程序內部運行oracle命令腳本文件? 我確實需要一個函數,該函數將sql命令文件路徑作為輸入參數,並在腳本文件內執行命令,同時考慮到必須將某些參數(例如某些用戶選擇的名稱)傳遞給腳本文件。被執行

我曾經使用PL / SQL命令行功能以特權用戶身份執行sql命令。

這是文件的一部分作為示例

ACCEPT TS_NAME CHAR PROMPT 'Enter Table Space Name : ' 
ACCEPT DB_DATAFILE  CHAR PROMPT 'Enter DataBase File full path : '
ACCEPT DB_SIZE  NUMBER PROMPT 'Enter DataBase File Size  (MB) : '
ACCEPT DB_USER CHAR PROMPT 'Enter User Name : '
ACCEPT DB_PASS CHAR PROMPT 'Enter Table Password Name: ' HIDE
ACCEPT DB_TNSNAME CHAR PROMPT 'Enter DATABASE TNSNAME:'
ACCEPT DB_LOG_PATH   CHAR PROMPT 'Enter Log File Path : '

PROMPT Create Tablespace
pause Press Return to continue ...

CREATE TABLESPACE &TS_NAME DATAFILE '&DB_DATAFILE' SIZE &DB_SIZE M 
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING PERMANENT 
EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL;


PROMPT Create User
pause Press Return to continue ...

CREATE USER &DB_USER IDENTIFIED BY &DB_PASS DEFAULT TABLESPACE &TS_NAME PROFILE DEFAULT 
QUOTA UNLIMITED ON USERS;
COMMIT;

GRANT CONNECT  TO &DB_USER;
GRANT RESOURCE  TO &DB_USER;

COMMIT;

您有一個SQL * Plus腳本。 您不能簡單地在Java中運行它,它只能由SQL * Plus(或支持腳本使用的SQL * Plus命令的任何子集的某些其他實用程序)運行。

假設您的Java應用程序在客戶端計算機上運行(而不是在客戶端通過瀏覽器訪問的中間層上),並且在客戶端計算機上安裝了Oracle客戶端,那么您的Java應用程序可以生成SQL * Plus可執行文件,將腳本傳遞給它,然后讓SQL * Plus處理提示用戶輸入輸入參數。 當然,這意味着用戶將看到一個單獨的窗口,該窗口運行SQL * Plus,並要求輸入。

或者,您可以用Java重寫SQL * Plus腳本。 這意味着您的Java應用程序將需要提示用戶輸入表空間名稱,例如,使用適合您應用程序的任何接口。 然后,您的應用程序將需要根據用戶的輸入來構造CREATE USER類的SQL語句,並將這些SQL語句發送到數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM