sql >> データベース >  >> RDS >> Oracle

sqlplusコマンドで変数user、pass、sidを渡す

    実際に何が起こるかは言われていませんが、資格情報の入力を求められず、sqlplus が見つからない可能性があると思います。 . Red Hat ボックスでは次のように動作します:

    #!/bin/bash
    echo Please enter an Oracle Username:
    read USERNAME
    echo "Please enter the Oracle Username's Password:"
    read -s PASS
    SID=XE
    conn_str=$USERNAME/[email protected]$SID
    
    ssh [email protected] << EOF
    # set these for your specific environment
    ORACLE_HOME=<path to ORACLE_HOME>
    PATH=$PATH:$ORACLE_HOME/bin # or without .../bin depending on client
    TNS_ADMIN=<path to tnsnames.ora directory, if not default>
    
    sqlplus -s /nolog
    connect $conn_str
    select * FROM user_tables;
    exit
    EOF
    

    これは、「標準入力が端末ではないため、疑似端末が割り当てられない」問題を回避するために、ローカル マシン上のユーザーから値を収集しています。

    次に、リモート サーバーで Oracle 環境を設定します。設定する必要があるのは、使用しているクライアントによって異なります (特に、oracle<として接続している場合は、インスタント クライアントを使用しているかどうか)。 /コード> おそらく oraenv を実行できます。 ).

    /nolog で SQL*Plus を実行するように調整しました そして接続 一度実行すると、資格情報は ps で公開されません 出力。そして、古い tabs から切り替えました より一般的な user_tables に .

    ネストされたヒアドキュメントは機能しますが、必須ではありません。 SQL コマンドはすでに適切な場所に入力されており、リモート シェルではなく SQL*Plus によって認識されます。

    もちろん、実際にどのようなエラーが表示されたのかはわかりませんので、これは主に憶測です。クライアントをローカルにインストールし、SSH ではなく SQL*Net 接続を使用する方がおそらく簡単ですが、不明なファイアウォール制限がある可能性があります。



    1. mysqli_error()は、正確に1つのパラメーターを期待し、0が指定されます

    2. MySQL INSERT .... ONDUPLICATEUPDATE-自動インクリメントに1つ追加します

    3. JDBC:OracleApplicationServerとネットワークアダプタは接続エラーを確立できませんでした

    4. FROM_DAYS()の例– MySQL