【问题标题】:How to connect to Oracle DB using batch file如何使用批处理文件连接到 Oracle DB
【发布时间】:2019-01-24 18:09:30
【问题描述】:

我正在自动化一个必须连接到 Oracle 数据库并自动运行脚本的过程。

谁能帮我实现这个目标。

我编写了一个脚本,但是当我执行以下脚本时,它没有返回任何输出。

代码:

@echo off
set user_name=<username>
set password=<password>
set net_service_name= <tns_name>

echo exit | sqlplus -s %user_name%/%password%@%net_service_name% @f:\test.sql 

pause

我正在使用 Oracle 11g。我正在连接到特定区域的数据库。

另外,我需要以管理员用户身份连接到数据库。

【问题讨论】:

标签: windows oracle batch-file


【解决方案1】:

我认为问题出在 net_service_name 的空间中。 "-S" 是 sqlplus 的静默模式。对于诊断,请删除此键并添加 rem @echo off

例如 1. net_service_name 中的空格。

   rem @echo off
    set user_name=scott
    set password=tiger
    set net_service_name= esmd

    echo exit | sqlplus -s %user_name%/%password%@%net_service_name%  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
    pause

输出:

 C:\upwork\stackoverflow\bat_sql>echo exit   | sqlplus -s scott/tiger@ esmd  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
    Usage: SQLPLUS [ [<option>] [<logon>] [<start>] ]
    where <option> ::= -H | -V | [ [-L] [-M <o>] [-R <n>] [-S] ]
          <logon>  ::= <username>[/<password>][@<connect_string>] | / | /NOLOG
          <start>  ::= @<URI>|<filename>[.<ext>] [<parameter> ...]
            "-H" displays the SQL*Plus version banner and usage syntax
            "-V" displays the SQL*Plus version banner
            "-L" attempts log on just once
            "-M <o>" uses HTML markup options <o>
            "-R <n>" uses restricted mode <n>
            "-S" uses silent mode

    C:\upwork\stackoverflow\bat_sql>pause

例如 2.

 rem @echo off
  set user_name=scott
  set password=tiger
  set net_service_name=esmd

  echo exit | sqlplus -s %user_name%/%password%@%net_service_name%  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
  pause

输出:

C:\upwork\stackoverflow\bat_sql>echo exit   | sqlplus -s scott/tiger@esmd  @C:\upwork\stackoverflow\bat_sql\sqltest.sql

SYSDATE
--------
24.01.19

Elapsed: 00:00:00.00

C:\upwork\stackoverflow\bat_sql>pause

例如 3. 以 sysdba 身份连接。

rem @echo off
set user_name=sys
set password=manager
set net_service_name=esmd as sysdba
echo exit | C:\oracle\instantclient_11_2\sqlplus.exe -s %user_name%/%password%@%net_service_name%  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
pause

输出:

C:\upwork\stackoverflow\bat_sql>echo exit   | C:\oracle\instantclient_11_2\sqlplus.exe -s sys/manageresmd@esmd as sysdba  @C:\upwork\stackoverflow\bat_sql\sqltest.sql

SYSDATE
--------
24.01.19


C:\upwork\stackoverflow\bat_sql>pause

例如 4. 以 sysdba 身份连接。

rem @echo off
set user_name=sys
set password=manager
set net_service_name=esmd as sysdba
rem
(
echo  conn %user_name%/%password%@%net_service_name%
echo  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
echo exit
)| sqlplus -s  /nolog
pause

输出:

    C:\upwork\stackoverflow\bat_sql>(
    echo  conn sys/manageresmd@esmd as sysdba
     echo  @C:\upwork\stackoverflow\bat_sql\sqltest.sql
     echo exit
    )  | sqlplus -s  /nolog
    Connected.

    SYSDATE
    --------
    24.01.19

    Elapsed: 00:00:00.00

For example sqltest.sql.

    C:\upwork\stackoverflow\bat_sql>more sqltest.sql
    select sysdate from dual;

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多