55

このようなことは可能ですか?

$ sqlplus -s user/pass "select 1 from dual" また
$ echo "select 1 from dual" | sqlplus -s user/pass

select 1 from dualはファイルに入れてこれを行うことができることを知っています:
$ sqlplus -s user/pass @myFile.sql

しかし、sqlplusを満たすためだけにファイルを作成することが実際に必要かどうか疑問に思っています

4

5 に答える 5

56

Unix/Linux では、「ps -ef」コマンドをコマンドラインに直接入力すると、ユーザー名/パスワードを実行できる人なら誰でも見ることができることに注意してください。大きなセキュリティ問題になる可能性があります (または大きなセキュリティ問題に変わります)。

通常、ファイルを作成するか、こちらのドキュメントを使用することをお勧めします。これにより、ユーザー名/パスワードが Unix/Linux の「ps -ef」コマンドで表示されないように保護できます。ユーザー名/パスワードがスクリプト ファイルまたは SQL ファイルに含まれている場合は、適切なユーザー/グループの読み取りアクセス許可を使用して保護できます。次に、シェルスクリプトで次のようにファイル内にユーザー/パスを保持できます。

sqlplus -s /nolog <<EOF
connect user/pass
select blah;
quit
EOF
于 2009-10-28T20:30:43.790 に答える
44

selectステートメントの最後にセミコロンがあることを確認するだけで、正確なクエリを実行できます。(出力は実際のもので、接続パラメータは削除されています。)

echo "select 1 from dual;" | sqlplus -s username/password@host:1521/service 

出力:

         1
----------
         1

問題になるはずですが、これは Mac OS X Snow Leopard および Oracle 11g で実行されていることに注意してください。

于 2009-10-28T20:12:49.167 に答える
9

これは *nix だと思いますか?

「ヒアドキュメント」を使用:

sqlplus -s user/pass <<+EOF
select 1 from dual;
+EOF

編集:2番目の例を試してみるべきでした。それも機能します(Windowsでも、ティックはありません):

$ echo 'select 1 from dual;'|sqlplus -s user/pw

         1
----------
         1


$
于 2009-10-28T20:05:35.620 に答える