2016-09-28 5 views
1

私はこの作業を見回しました私は手に持っていましたが、役に立たないものは見つかりませんでした。私は主にソフトウェア開発の視点からデータベースの健全な知識を持つJavaの人です。 DBAの機能について何か知っていますが、できることとできないことがありますが、良い解決策を考え出すことはできません。SQL ServerとOracleで作成されたアプリケーションデータベースを比較します

私が持っているタスクは、SQL ServerとOracleで作成されたデータベースをアプリケーションインストーラで比較することです。

私は、スキーマ内のテーブルの数、データ型とインデックスを持つ各テーブルの列のようなものを与えるSQL Serverで(もちろん、オンライン検索で)いくつかのクエリを思い付くことができたと思いますこれらの表のそれぞれに対して作成された制約、トリガーなどのタイプ(そのカウントとともに)誰かが興味を持っていれば、それらのSQLを提供することができます。 しかし、Oracleはもっと難しいようです。私は誰かが助けてくれるか、あるいは正しい方向に私を向けることができたら感謝します。

私は次のように代を見つけるためにしようとしています:テーブルの

  1. 数は、インデックスの
  2. 番号、(そのタイプの)制約が、保存されたのそれらのテーブルの各
  3. 数のトリガーを作成

を作成したビューの数すべてのヘルプは非常に感謝されますを作成した手続き/関数d。

ありがとうございます。

答えて

0

まず、Javaコードの作成が快適であれば、私はこの比較を行うためにたくさんのSQLを書くつもりはないと思います。 JDBCには既にDatabaseMetaDataクラスがあり、すべてのテーブルを取得するにはgetTablesのようなメソッドがあります。これにより、使用する1つのAPIが提供され、JDBCドライバーを作成した人が、使用しているデータベースのデータ・ディクショナリ表を照会するためのすべてのコードをすでに作成しているという事実を活用できます。これにより、インストーラが作成するオブジェクトがアプリケーションによってどのように認識されるかの違いにも焦点を当てることができます。

特定のSQLを記述する場合は、Oracleデータ・ディクショナリ表は非常に簡単に操作できます。気になるものは、パターン[user|all|dba]_<<type of thing>>に従います。 [user|all|dba]接頭辞は、所有するオブジェクト(user)、アクセスできるオブジェクト(all)、またはデータベース内のすべてのオブジェクト(dba)を検索しているかどうかを示します。通常のユーザーは、潜在的なセキュリティの問題であるため、多くの場合、dbaビューにアクセスすることはできません。一般に、アクセス権がないオブジェクトが存在することを人々に知らせたくありません。私の例では、オブジェクトのallバージョンを使用しますが、あなたは後で何をするかに応じてをuserまたはdbaに変更することができます。

  • all_tablesは、アクセス権のあるすべてのテーブルに関する情報を表示します。アプリケーションの一部ではないテーブルにアクセスできる可能性があるため、インストーラが触れるスキーマのフィルタをownerに追加することをお勧めします。
  • all_indexes,all_constraintsおよびall_triggersは、インデックス、制約、およびトリガーに関する情報を表示します。繰り返しますが、あなたが気にするスキーマに自分自身を限定するために、述語をownerに追加することができます。
  • all_proceduresは、スタンドアロンとパッケージの両方の手順と機能に関する情報を示します。
  • all_viewsは、すべてのビューに関する情報を表示します。

あなたが本当に数のちょうど興味があるなら、あなたは単にall_objectsに行くとobject_typeによってカウントグループ化を行うことができるかもしれません。私は様々なオブジェクトの属性を見たいと思うので、さまざまなオブジェクト固有のビューに行きたいと思うでしょう。

+0

ありがとう、ジャスティン、非常に感謝!それは私が探していたものです。 – Gauzy

関連する問題