Oracle SIDとデータベース名の確認


115

SIDと現在のデータベース名を確認したい。

Oracle SIDをチェックするために次のクエリを使用しています

select instance from v$thread;

しかし、テーブルまたはビューが存在しませんエラーが発生しています。

現在のデータベース名を確認するために次のクエリを使用しています

select name from v$database;

しかし、テーブルまたはビューが存在しませんエラーが発生しています。

上記の2つの問題に対するアイデアはありますか?

回答:


148

SELECT user FROM dual;はあなたに現在のユーザーを与えるべきだと思います

およびSELECT sys_context('userenv','instance_name') FROM dual;インスタンスの名前

私はあなたがSIDを取得できると信じています SELECT sys_context('USERENV', 'SID') FROM DUAL;


1
迅速な対応ありがとうございます。インスタンスとOracle SIDは同じですか?
アドナン

2
彼らはSIDによって識別され、単一のマシン上で実行されているDBの複数のインスタンスがあるcoouldので、彼らは同じである必要はありません@Adnan
V4Vendetta

@adnan必要な値を取得しましたか?
V4Vendetta 2011年

8
select sys_context('userenv','db_name') from dual;データベース名とsidについては、既に回答に追加しています。これがあなたが望むものをあなたに与えることを願っています
V4Vendetta 2011年


57

私のように、データベースホストとSIDを取得してOracle JDBC URLを生成することが目的の場合は、

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

次のコマンドが役立ちます。

SID(またはインスタンス名)を確認するOracleクエリコマンド:

select sys_context('userenv','instance_name') from dual; 

データベース名(またはサーバーホスト)を確認するOracleクエリコマンド:

select sys_context('userenv', 'server_host') from dual;

添付 セルジオ・マルセロ


完璧です。これはまさに私が知りたかったことですが、言い方がわかりませんでした。
Addison

私も。セルジオありがとう!
horseatingweeds

48

完全を期すために、ORA_DATABASE_NAMEを使用することもできます。

すべてのメソッドで同じ出力が得られるわけではないことに注意してください。

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

上記のクエリには特別な権限は必要ありません。CONNECT特権のみを持つ新しいユーザーを作成することによって確認されます。
bdeem

22

V $ビューは、主にシステムメトリックの動的ビューです。これらは、パフォーマンスのチューニング、セッションの監視などに使用されます。そのため、デフォルトでは、アクセスはDBAユーザーに制限されているため、を取得していORA-00942ます。

データベース名を見つける最も簡単な方法は次のとおりです。

select * from global_name;

このビューはPUBLICに付与されているため、誰でもクエリできます。


オラクルSIDについてはどうですか?スコットアカウントから確認する方法はありますか?
Adnan

1
これは、SIDではなくサービス名です。
jpmc26 2018

5

上のタイプsqlplusコマンドプロンプト

SQL> select * from global_name;

その後、コマンドプロンプトで結果が表示されます

SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

ここで、最初の「ORCL」はデータベース名です。システムの「XE」など、Oracleのダウンロード時に指定されたものである可能性があります。


ありがとう、あなたは私の一日を作りました。
Muhammad Ashikuzzaman、2015年

2

上記のとおり、

select global_name from global_name;

行く方法です。

ユーザーに必要な権限がないため、v $ database / v $ instance / v $ threadをクエリできませんでした。次のようにして(DBAアカウントを介して)それらを許可できます。

grant select on v$database to <username here>;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.