MySQLに相当するものはありますかSHOW DATABASES
ステートメント?
クラスタ内でデータベースを見つけることは可能ですか?つまり、他のシステムのネットワーク上にデータベースが存在しますか?
Oracleインストールに存在するファイルを分析して同じものを見つけることはできますか?
Oracleシステムへの完全なアクセス資格情報がある場合、存在するすべてのデータベースをどのように列挙しますか?
MySQL
SHOW DATABASES
ステートメントに相当するものはありますか?
そのようなことはない。マシン(lsnrctl status
)のリスナーにクエリを実行して、そこに登録されているサービスを確認できますが、データベースに1対1でマッピングされません(同じマシンに複数のリスナーが存在する可能性があります)。それ以外の場合、一般的に使用されるツールは1つのデータベースインスタンスに接続し、インスタンスは単一のデータベースに属します。
Oracle RACクラスターの場合、各インスタンスはそのピア(同じデータベースにサービスを提供する他のインスタンス)を認識しており、gv$instance
ビューを使用して、そのデータベースに対して現在開始されている他のインスタンスを見つけることができます。crsctl
ユーティリティを使用して、クラスターに登録されているサービス(データベースを含む)とそのステータスを一覧表示することもできます。
別のベンダーのクラスタリングソフトウェアについて話している場合、それらすべてに、クエリするこれらのタイプのリソース管理ユーティリティがあると確信しています。
マシンの束だけについて話している場合、いいえ、ネットワーク上のすべてのデータベースを列挙する100%信頼できる方法はありません。
アクティブな(つまり、開始された)データベースを見つけるには、UNIXでは*_pmon_*
プロセス(データベースインスタンスごとに1つあります)とWindowsではOracleサービスを探します。
Oracleデータベースソフトウェアのインストールを見つけるには、UNIXの/etc/oratab
を参照してください。これには、インストールされているすべてのOracle_HOME
sが含まれているはずです。 $Oracle_HOME/dbs
および/またはspfile<SID>.ora
ファイルのinit<SID>.ora
内の各ファイルを確認できます。データベースごとに1つあります。
(oratab
の情報と同等の情報がHKEY_LOCAL_MACHINE\SOFTWARE\Oracle
の下のWindowsレジストリキーにあると思いますが、その構造はわかりません。)
もちろん、すべてのデータベースをインストール時にOEM(Enterprise Manager)サーバーに登録した場合は、そこに完全なリストが表示されますが、そうではないのではないでしょうか。
Oracleにはスキーマはありますが、スキーマはありません。
SELECT USERNAME FROM ALL_USERS ORDER BY USERNAME;
またはこのようなもの:
SELECT TABLESPACE_NAME FROM USER_TABLESPACES;
簡単に言えば、MySQLの「データベース」やOracleの「クラスター」に直接の類似点はありません。最も近い一致は「スキーマ」ですが、それでもまだ非常に異なります。
これはどうやら 12cで変更予定 プラグ可能なデータベースの導入によるものです:
データベースの操作をユーザーのコンテンツから明確に分離することは、従来のデータベースアーキテクチャからの大きな変化です。キュテ氏によると、Oracle 11gとそれ以前のすべての製品は、一度に1つのデータベースしか実行できなかったという。組織が単一のサーバーで複数のデータベースを実行したい場合、データベースごとに1つずつ、Oracle 11gの複数のインスタンスを実行する必要があります。名前が示すように、プラガブルデータベースでは、Oracle 12cの1つのコピーの下で複数のテナントデータベースを実行できます。
* nixの将来のブラウザーに対する答えは次のようになると思います:
猫/ etc/oratab
Oracle 12にプラガブルデータベース(推奨)がある場合、次の操作を実行できます。
SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;
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;