Выполнение sqlplus без записи в tnsnames.ora, автономная команда работает и скрипт получает удар - PullRequest
0 голосов
/ 21 июня 2019

Я выполняю сценарий Unix, который выполняет команды SQL для получения отчета, поскольку у меня нет записи в tnsnames.ora, я даю полное описание портала в команде sqlplus, а затем sqlfile.Когда я пытаюсь запустить скрипт, элемент управления поражается.

Я использую опцию sqlplus -s, чтобы отключить запрос имени пользователя и пароля.Я запустил скрипт с ksh -x myscript.ksh и, когда скрипт был запущен, я скопировал строку sqlplus и запустил ее в автономном режиме, она отлично работает.

$ORACLE_HOME/sqlplus -S 'username/password@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS= 
(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=umyhostname)(Port=1599))) 
(CONNECT_DATA=(SID=idb)))' @/usr/local/myrpt.sql

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Пожалуйста, попробуйте это

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

Покажите вам сценарий, если это возможно.

0 голосов
/ 24 июня 2019
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
...