MySQL SHOW DATABASES
ステートメントに相当するものはありますか?
クラスタ内のデータベースを見つけることは可能ですか?つまり、他のシステムのネットワーク上にデータベースが存在しますか?
Oracleインストールに存在するファイルを分析して同じものを見つけることはできますか?
Oracleシステムへの完全なアクセス資格情報がある場合、存在するすべてのデータベースを列挙するにはどうしますか?
MySQL SHOW DATABASES
ステートメントに相当するものはありますか?
クラスタ内のデータベースを見つけることは可能ですか?つまり、他のシステムのネットワーク上にデータベースが存在しますか?
Oracleインストールに存在するファイルを分析して同じものを見つけることはできますか?
Oracleシステムへの完全なアクセス資格情報がある場合、存在するすべてのデータベースを列挙するにはどうしますか?
回答:
MySQL
SHOW DATABASES
ステートメントに相当するものはありますか?
そのようなことはない。マシンのリスナー(lsnrctl status
)にクエリを実行して、そこに登録されているサービスを確認できますが、データベースに1対1でマッピングされません(同じマシンに複数のリスナーが存在する場合があります)。それ以外の場合、一般的に使用されるツールは1つのデータベースインスタンスに接続し、インスタンスは1つのデータベースに属します。
Oracle RACクラスタについて説明している場合、各インスタンスはそのピア(同じデータベースにサービスを提供する他のインスタンス)を認識しており、gv$instance
ビューを使用してそのデータベースに対して現在開始されている他のインスタンスを見つけることができます。
このcrsctl
ユーティリティを使用して、クラスターに登録されているサービス(データベースを含む)とそのステータスを一覧表示することもできます。
別のベンダーのクラスタリングソフトウェアについて話している場合、これらすべての種類のリソース管理ユーティリティがクエリを実行できると確信しています。
マシンの束だけについて話している場合、いいえ、ネットワーク上のすべてのデータベースを列挙する100%信頼できる方法はありません。
アクティブな(つまり、開始された)データベースを見つけるには*_pmon_*
、UNIX(データベースインスタンスごとに1つ)でプロセスを探し、WindowsでOracleサービスを探します。
Oracleデータベースソフトウェアのインストールを見つけるには/etc/oratab
、Unixをご覧ください。これには、ORACLE_HOME
インストールされているすべてのが含まれている必要があります。$ORACLE_HOME/dbs
for spfile<SID>.ora
および/またはinit<SID>.ora
filesの中のそれらのそれぞれの中を見ることができます-データベースごとに一つがあります。
(oratab
以下のWindowsレジストリキーにある情報と同等のものを見つけることができると思いますが、HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
その構造はわかりません。)
もちろん、インストール時にすべてのデータベースをOEM(Enterprise Manager)サーバーに登録している場合は、そこに完全なリストを見つけることができます。
Oracleにはスキーマ以外のデータベースはありません。
SELECT USERNAME FROM ALL_USERS ORDER BY USERNAME;
またはこのようなもの:
SELECT TABLESPACE_NAME FROM USER_TABLESPACES;
簡単に言えば、MySQLの「データベース」またはOracleの「クラスター」に直接的な類似性はありません。最も近い一致は「スキーマ」ですが、それでも非常に異なります。
これは明らかに、プラグ可能なデータベースの導入により12cで変更される予定です。
データベース操作をユーザーのコンテンツから完全に分離することは、従来のデータベースアーキテクチャからの大きな変化です。Oracle 11gとそのすべての先行モデルは、一度に1つのデータベースしか実行できませんでした、とKyteは言いました。組織が単一のサーバーで複数のデータベースを実行する場合、データベースごとに1つずつ、Oracle 11gの複数のインスタンスを実行する必要があります。名前が示すように、プラガブルデータベースでは、複数のテナントデータベースをOracle 12cの1つのコピーの下で実行できます。
ASMに接続して、データベースクライアントを確認するだけです。
set pages 999 lines 120
col SOFTWARE_VERSION for A15
col INSTANCE_NAME for A20
col DB_NAME for A20 trunc
select INSTANCE_NAME, DB_NAME, STATUS, SOFTWARE_VERSION as "version"
from V$ASM_CLIENT;
ホストの再起動後に自動的に開始されるデータベースのリストを取得するスタンドアロンデータベースの場合:
cat /etc/oratab | grep -i ":y" | grep -v "^#"
または、すべてのデータベースのリストを取得するには:
cat /etc/oratab | grep -v "^#"
RACデータベースの場合、次の方法が役立ちます。
crsctl stat res -t | grep "\.db"
また、既に述べたように、MySQLのデータベースはOracleのデータベースと同じではありません。Oracleでは、よりスキーマに近くなります。つまり、ユーザーのオブジェクトのコンテナという名前です。スキームリストを取得するには、次のSQLステートメントを使用できます。
select username from dba_users order by 1;
または、システム関連のスキームではないリストを取得するには(バージョン12c以降のOracle RDBMSで利用可能):
select username from dba_users where ORACLE_MAINTAINED='N' order by 1;