【问题标题】:Running oracle commands script file from java application从 java 应用程序运行 oracle 命令脚本文件
【发布时间】:2014-07-24 10:44:46
【问题描述】:

我有一个应用程序,它有一个 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;

【问题讨论】:

    标签: java oracle


    【解决方案1】:

    您有一个 SQL*Plus 脚本。您不能简单地在 Java 中运行它,它只能由 SQL*Plus(或其他支持脚本使用的任何 SQL*Plus 命令子集的实用程序)运行。

    假设您的 Java 应用程序在客户端计算机上运行(而不是在客户端通过浏览器访问的中间层)并且 Oracle 客户端安装在客户端计算机上,您的 Java 应用程序可能会生成 SQL* Plus 可执行文件,将脚本传递给它,并让 SQL*Plus 处理提示用户输入参数。当然,这意味着用户会看到一个运行 SQL*Plus 的单独窗口弹出并要求输入。

    或者,您可以用 Java 重写 SQL*Plus 脚本。这意味着您的 Java 应用程序需要提示用户输入表空间名称,例如,使用适合您的应用程序的任何接口。然后,您的应用程序需要根据用户的输入构造像 CREATE USER 这样的 SQL 语句,并将这些 SQL 语句发送到数据库。

    【讨论】:

    • 看起来不错,但有没有办法执行整个脚本文件?我有 1000 多行命令,要为所有这些代码编写存储过程会很详尽……
    • @MedianHilal - 我概述的选项之一是简单地从您的 Java 应用程序生成 SQLPlus 可执行文件并传递 SQLPlus SQLPlus 脚本文件。如果您不想将 SQLPlus 脚本重写为 Java,这在技术上是最简单的解决方案,尽管它可能不是最好的用户体验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2012-11-19
    • 2019-02-19
    相关资源
    最近更新 更多