まず最初に、Java コードの作成に慣れている場合、この比較を行うために大量の SQL を作成することになるかどうかはわかりません。JDBC には、すべてのテーブルを取得するようなメソッドを持つDatabaseMetaDataクラスが既にあります。getTablesこれにより、使用する 1 つの API が提供され、JDBC ドライバーを作成した人々が、使用しているデータベースのデータ ディクショナリ テーブルをクエリするためのすべてのコードを既に作成しているという事実を活用できます。これにより、インストーラーが作成したオブジェクトがアプリケーションによってどのように認識されるかの違いに注目することもできます。
特定の SQL を作成する場合、Oracle データ ディクショナリ テーブルは非常に簡単に操作できます。あなたが気にするものは、パターンに従うつもり[user|all|dba]_<<type of thing>>です。[user|all|dba]プレフィックスは、自分が所有するオブジェクト ( ) user、アクセスできるオブジェクト ( all)、またはデータベース内のすべてのオブジェクト( ) のいずれを検索するかを示しますdba。通常のユーザーは、セキュリティ上の問題が発生する可能性があるため、ビューにアクセスできないことがよくありますdba。一般に、オブジェクトにアクセスできない場合、そのオブジェクトが存在することを人々に知られたくないでしょう。私の例でallは、オブジェクトのバージョンを使用しますが、目的に応じて変更allするuserことができます。dba
all_tablesアクセスできるすべてのテーブルに関する情報が表示されます。ownerアプリケーションの一部ではないテーブルにアクセスできる可能性があるため、インストーラーが触れるスキーマに対してフィルターを追加することをお勧めします。
all_indexes、all_constraints、およびall_triggersは、インデックス、制約、およびトリガーに関する情報を表示します。ownerここでも、関心のあるスキーマに限定するために述語を追加することができます。
all_proceduresスタンドアロンとパッケージの両方のプロシージャと関数に関する情報が表示されます。
all_viewsすべてのビューに関する情報が表示されます。
all_objects本当にカウントだけに興味がある場合は、単純に に移動して、 によるカウントのグループ化を実行できる場合がありますobject_type。さまざまなオブジェクトの属性を表示したいので、さまざまなオブジェクト固有のビューに移動したいと思うでしょう。