[ORACLE]今接続しているサーバー・スキーマとかを確認する

投稿日:2018-07-19

Oracle使ってる時に、今どのサーバーに繋いでるの?とか、今どのスキーマに繋いでるの?

ってなるとき無いですか?

そんなときの確認法。

今、どのサーバーに接続してるんだ?

先日の仮想マシンにOracleをインストールした時のこと・・・

ゲストOS内ではローカル接続は出来ていて、外から接続ができなくて悩んでいたタイミングに、IPの直接指定で接続できた(ように見えてしまって)いたんです。

実際には、ホストOS側のOracleに繋がっているという状態だったんですが、TRUNCATEコマンドなんかも実施したりしてたので、後で考えた時にゾッとしたわけです。

実際、ローカル環境だったので、dumpファイルインポートしちゃえば無かったことに出来るので、大丈夫ではあったんですが、どのサーバーに繋いでいるのか?っていうのは確認必須だな・・・と。

接続・実行先の確認方法

SQLDeveloper

色々楽なので、使うんですが、SQLDeveloperだと、こんな感じで接続状態と、SQLの実行先が分かります。

データベースアイコンに電源コネクタみたいなのが表示されるようになってるので、現在の接続先が分かりやすい。

ただ、これも接続確認が出来ている状態で有効な確認方法であって、100%ではないわけです。

先日の接続出来ていない状態だと、アイコンもこういう風に変わって、普通に接続できているように見えていたので。

インスタンスの確認

SELECT * FROM v$instance;

確認できる項目はいくつかあるけど、

  • INSTANCE_NAME
  • HOST_NAME
  • VERSION
  • STARTUP_TIME

なんかを確認すると良い感じ。

少なくとも、HOST_NAMEが正しい必要はある。

接続先IPアドレスの確認

CYS_CONTEXTを使うと、もっと色々と情報は取得できるけど、インスタンスの確認でHOST_NAMEがわかっているので、念のためにIP確認をする。

SELECT sys_context('USERENV', 'IP_ADDRESS') FROM dual;

「IP_ADDRESS」部分を変更すれば現在のセッションの定義を確認できる。

パラメータについては、

https://docs.oracle.com/cd/E60665_01/db112/SQLRF/functions184.htm

を参照のこと。

まとめ

うちの会社では、プロジェクトごとに仮想マシンをWindowsServer上に作成して、Oracle11gXEでDB環境を作って社内での開発に使用してたりします。

が、先日のような事が起こると、どこに接続しているか?というのは非常に重要なファクターなので、確認せざるを得ないなと。

SELECT文やVIEWなら全然問題ないけど、TRUNCATEや、大量データのDELETEをかます時には一度確認したいなと。

別にローカルDBに接続されてしまっているだけなら全く問題ないけど、実はスキーマが本番テスト用でした・・・とかだと笑えないので。

まぁ、本番テスト用だろうが管理者に頭下げてロールバックなりして貰えれば解決するけど、その間になぜかPLとかから怒られるので・・・

後は、特に客先では気をつけましょうって話。







-ORACLE
-,

関連記事

[ORACLE]多分、例外的なora-00911:文字が無効ですエラーの解決方法

多分、このエラーを目にする機会はそれなりにあって、大体の対処法はググればすぐに見つかると思う。 例えば、 SQL実行時にはOKなのに、C#のOracleDbAccess実行時にエラーになる 全角スペー …

[ORACLE]SQLのIN句にパラメータを適用する方法

カンマ区切りの文字列を取得した理由 こないだの続きです。 日本の中心付近で仕様変更と闘うSE日記[C#]リストをカンマ区切りの文字列で出力するhttp://ht-jp.net/blog/pc/c/c- …

ORACLEでCASE文を使用した時にORA-00932のエラーが出る

割と悩んだ・・・ 原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w select case name when ‘A’ then ‘あ’ when …

Oracleで「Ora-28001:the password has expired」のエラーの対処法

正直、自分で見たときに何が起こったのかわかりませんでしたw だって、初めて見るエラーだったし・・・ ということで、調べてみたら、パスワードの有効期限らしいですね。 対処法も簡単なので、サクッと対処法を …

C# OracleDbAccessを使用して、SQL実行時にORA-00911 文字が無効です のエラー

表題のとおり、C#でOracleDbAccessを使用して、SQLを実行させる時に発生しました。 ネットで探すと、 全角スペースが原因 とか出てきたので、SQL内のスペースを全て半角スペースに置き換え …


カテゴリー