SIDと現在のデータベース名を確認したい.
Oracle SIDをチェックするために次のクエリを使用しています
select instance from v$thread;
しかし、テーブルまたはビューは存在しませんエラーが来ています。
現在のデータベース名を確認するために次のクエリを使用しています
select name from v$database;
しかし、テーブルまたはビューは存在しませんエラーが来ています。
上記の2つの問題について何か考えはありますか?
私はselect user from dual;
があなたに現在のユーザーを与えるべきであると思います
select sys_context('userenv','instance_name') from dual;
インスタンスの名前
SIDをSELECT sys_context('USERENV', 'SID') FROM DUAL;
として取得できると思います((これを確認できません)
私のように、データベースのHostと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;
Attセルジオマルセロ
完全を期すために、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
V $ビューは主にシステムメトリックの動的ビューです。パフォーマンスチューニング、セッションモニタリングなどに使用されます。そのため、デフォルトではアクセスはDBAユーザーに制限されているため、ORA-00942
を取得しています。
データベース名を見つける最も簡単な方法は、次のとおりです。
select * from global_name;
このビューはPUBLICに付与されているため、だれでも照会できます。
sqlplus
コマンドを入力するプロンプト
SQL> select * from global_name;
コマンドプロンプトで結果が表示されます。
SQL ORCL.REGRESS.RDBMS.DEV.US.Oracle.COM
ここで最初の "ORCL"はデータベース名です、あなたのシステムの "XE"とOracleのダウンロード時に与えられたその他のものかもしれません。
上記のように、
select global_name from global_name;
行く方法です。
ユーザーに必要な権限がないため、v $ database/v $ instance/v $ threadを照会できませんでした。あなたは(DBAアカウントを介して)それらを付与することができます:
grant select on v$database to <username here>;