2017-05-22 6 views
0

シェル・スクリプトを使用して別のサーバー(27)に存在する複数(30個)のOracleデータベースに接続し、各データベースの詳細をフェッチします。私はすべてのデータベース上に作成されたユーザー(テスト)を持っていますが、取得したい詳細にはsysdba権限が必要です。私の環境では、制限のため他のユーザにDBA権限を与えることはできません。したがって私の考えは、sqlplus -s "$ user/$ password @ $ tnsentry"を使用して各データベースに接続し、sysdbaとして接続して詳細を取得することです。シェル・スクリプトを使用して異なるサーバーの複数のoracleデータベースに接続する方法

testを使用してすべてのデータベースに接続できますが、「connect as sysdba」は現在のサーバーの現在のデータベースで実行されています。

マイスクリプト:

cat tmp/db.par |読み取り中LINE do [-n "$ LINE"];その後、 tns_entry = $ LINE 輸出tns_entry sqlplusを-s/NOLOG >> $ TMP/query.log < 終了 sqlconn Fiの tns_entryループで

を行って、私はABC、DEF、GHIを与えていますJKL、MNOデータベースから詳細を取得するために、データベースXYZが存在するサーバーからこのクエリを実行しています。私は私のループでXYZを与えていないし、データベースに接続していないが、クエリの結果はXYZデータベースからです。これで私を助けてください。

ありがとうございました!

+0

マスタとして1つのデータベースを使用し、他の人にレコード生成のリンク。 – OldProgrammer

+0

SQL Serverにすべてのデータベースを登録してリンクサーバーを作成する必要があるということですか?または、OracleでDBリンクを使用しますか? dbリンクを使用する場合は、前述のように、リンクを使用せずに、テストユーザーでデータベースに接続することができます。スクリプトをsysdbaとしてすべてのデータベースに接続したい。 – Gooty

+0

cat /tmp/db.par | LINE - db.parにはすべてのデータベース名があります。 do [0123] その後、tns_entry = $ LINE 輸出tns_entry sqlplusを-s/NOLOG >> $ TNS_ADMIN/user_management/user_creation.log << は$ user_idを/ $ user_pass @ $ tns_entry 接続sqlconn名を選択し、Vのの\ $データベースからopen_mode。 SYSDBAとしてCONN/ 終了 sqlconn Fiを は、これは私のスクリプトです – Gooty

答えて

0

sysdbaとして接続する必要があります。

「sysdba」をスクリプトに追加して試してみてください。

conn sys/[email protected] as sysdba

関連する問題