如何使用批处理文件连接到Oracle DB

时间:2019-01-22 04:27:30

标签: windows oracle batch-file

我正在自动化一个必须连接到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。我正在连接到特定区域的数据库。

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

1 个答案:

答案 0 :(得分:1)

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

例如1. net_service_name中的空格。

rem @echo off

输出:

   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

例如2。

 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

输出:

 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

例如,3.以sysdba身份连接。

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

输出:

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

例如4.以sysdba身份连接。

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

输出:

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