在不输入tnsnames.ora的情况下执行sqlplus,执行独立命令,脚本被删除

时间:2019-06-21 18:02:14

标签: bash oracle unix sqlplus tnsnames

我正在运行unix脚本,该脚本执行SQL命令以获取报告,因为我在tnsnames.ora中没有条目,因此我在sqlplus命令中给出了门户的完整说明,然后在{ {1}}。当我尝试运行脚本时,控件被删除。

我使用sqlfile选项使用户名和密码提示静音。 我使用sqlplus -s运行了脚本,当脚本被删除时,我复制了sqlplus行并独立运行,它运行良好。

ksh -x myscript.ksh

2 个答案:

答案 0 :(得分:1)

请尝试这个

$ORACLE_HOME/sqlplus -S "username/password@umyhostname:1599/idb" @/usr/local/myrpt.sql

在可能的情况下显示脚本。

答案 1 :(得分:0)

oracle@esmd:/opt/oracle> more test3.ksh
#!/usr/bin/ksh

username=SCOTT
#password lowercase
password=\"tiger\"

TNS_ALIAS='(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = zzzz.yyy.xxx)(PORT = 1521))
        (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = ESMD)
    )
)'

echo username:  $username
echo password:  $password
echo TNS_ALIAS: $TNS_ALIAS

sqlplus -s $username/$password@"$TNS_ALIAS" @test.sql



oracle@esmd:~> ksh
oracle@esmd:/opt/oracle> ./test3.ksh
username: SCOTT
password: "tiger"
TNS_ALIAS: (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = zzzz.xxx.yyy)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ESMD) ) )

TO_CHAR(SYSDATE,'DD
-------------------
24-06-2019 09:51:27