
sqlplus
1 行のコマンドで、Oracle ユーザー sudo を使用して、明確に指定された DB (env var) を呼び出す必要がありますORACLE_SID
。通常の方法は、次の 2 つの手順で構成されます。
$ sudo -u oracle -i
$ ORACLE_SID=DBNAME sqlplus / as sysdba
しかし、私はそれを 1 行で実行する必要があります (合理的に時間を節約するため)。私は次のように単純に実行しようとします。
$ sudo -u oracle -i ORACLE_SID=DBNAME sqlplus / as sysdba
sqlplus
しかし、環境変数の変更は認識されず、デフォルトの DB に接続するようです。また、他のすべての環境変数が完全に初期化されていることを確認する必要があるため、sudo オプションORACLE_SID
を除外することはできません。-i
私の場合、sudo とカスタム環境変数を使用してアプリケーションを実行するにはどうすればよいですか?
答え1
次のコマンドを試してください:
sudo -i su - oracle -c 'ORACLE_SID=DBNAME && sqlplus'
説明:
"sudo -i" will take care of the environment variables.
"su - user" will consider the user's environment variables
"-c" -> the command you wish to issue.
答え2
質問を解決する最善の方法は、次のコマンドを使用することです。
sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba"
SQL スクリプトを 1 行で直接渡したい場合は、次のようにします。
sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba" <<-EOF
SELECT 1 FROM DUAL;
EOF