• ベストアンサー

Oracle DBリンクについて

ローカルホストから、他のマスタDBにDBリンクを作成しました。 しかし、DBリンクは作成できなのにいざ参照しに行くと下記のエラーが出ます。 select * from Tablename@Linkname ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 どうしてでしょうか、他のサイトにはこれで参照できるといっていたのですが... また、違う質問になりますがこれで参照しにいけるなら なんでSnapshotやマテリアライズドビューなどが存在しているのでしょうか? 初歩的な質問ですみませんがどなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

oracleのデータベースリンクは「create database link」時点ではユーザー、パスワードの妥当性をチェックしません。 ローカルホストからSQL*PLUSでデータベースリンク作成時のSQL文で使ったユーザ名、パスワード、接続文字列でつながるか確認してみてください。 11gから認証の際の大文字小文字を区別するようになっているみたいですから注意してください。 > なんでSnapshotやマテリアライズドビューなどが存在しているのでしょうか? Snapshotやマテリアライズドビューはローカルホストにデータがありますから、SQL発行のたびにネットワーク経由でのアクセスが発生しません。 当然、パフォーマンスも向上します。

anman0201
質問者

お礼

マテリアライズドビューの存在意義がわかり、 助かりました。 ありがとうございます。

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

DBリンクを作成できることと、実際に接続できるかは別問題です。 DBリンクは権限を持っていて、create文の構文が間違っていなければ作成できるはずです。 マスタDBにはcreate文に記述したユーザー名/パスワードは実際に存在するのでしょうか? また、tnsnames.oraの設定は正しいですか? まずは、sqlplusなどでマスタDBにちゃんとログインできる情報なのかを確認してみてください。 Snapshotとマテリアライズドビューは同様の機能です。 以前はSnapshotと呼ばれていて、下位互換性のために現在もキーワードとして残っているようです。 別に他DBを参照するためだけならDBリンクでいいかもしれませんが、 バックアップのためであったり、ネットワーク越しでは十分なパフォーマンスが出なかったり・・ その他にもマスタDBとは別に実体として保持しておく必要がある場面が多々あると思います。 そういう時にはマテリアライズドビューを使えばいいのではないでしょうか。

anman0201
質問者

お礼

ご回答ありがとうございます! 参考にさせていただきます。