2つのOracle 11gデータベース(ProducciónとTesting)を比較する必要がありますが、両方のデータベースに同じPCからアクセスすることはできません。基本的には、パッケージが同じバージョン(例では行数が同じ)にあるかどうかを知る必要があります。同じマシンから到達できない2つのOracleデータベースを比較するにはどうすればよいですか?
答えて
長い道のり:このコマンドを実行して、本番データベースに到達可能なPCへ
ゴー:
SELECT *
FROM dba_source
where type = 'PACKAGE'
and owner = 'SOME_SCHEMA'
輸出は、たとえば、に結果Excelや何か。
他のオラクルボックスに持ち帰ります。同じコマンドを実行します。結果を別のファイルにエクスポートします。ファイル比較ツールを使用してください。
簡単な方法:
あなたが同じPCからのアクセスを得ることができ、「IF」は、Oracleのヒキガエルなどのツールを簡単に異なるデータベース間でのオブジェクトの比較を行うことができます。
行を数えるだけでなく(必ずしも多くのことを説明しているわけではありません)、各システムに格納されているソースコードのハッシュを生成し、ハッシュを手動で比較することができます。例えばテストとして作成されたシンプルなパッケージを使用して:
create or replace package p42 as
procedure foo(bar number);
end p42;
/
create or replace package body p42 as
procedure foo(bar number) is
begin
/* Some comment */
null;
end foo;
end p42;
/
set serveroutput on
declare
l_clob clob;
l_hash raw(64);
begin
dbms_lob.createtemporary(l_clob, false);
for cur in (
select text from user_source where type = 'PACKAGE BODY' and name = 'P42'
) loop
dbms_lob.append(l_clob, cur.text);
end loop;
l_hash := dbms_crypto.Hash (l_clob, dbms_crypto.hash_sh1);
dbms_lob.freetemporary(l_clob);
dbms_output.put_line(l_hash);
end;
/
57853368B7B4CBBA53F17A50833C1DC2DF8C666A
PL/SQL procedure successfully completed.
私は、パッケージ本体を変更する場合は、ここでは単にコメント文字列の「s」を追加し、私は別のハッシュを取得:
create or replace package body p42 as
procedure foo(bar number) is
begin
/* Some comments */
null;
end foo;
end p42;
/
同じ無名ブロックを実行すると、次のようになります。
24E49A4C55E036FFD34D8A01295A6514E1AAD0FD
PL/SQL procedure successfully completed.
ハッシュ値が異なる場合、ソースが異なります。衝突の可能性は常にありますが、このシナリオではほとんど起こりません。
は何ですか、とは異なります。コードを抽出し、それをより詳細に比較する必要があります。しかし、あなたが期待していることがかなり簡単で簡単なチェックとして、これは簡単です。
PLS-00201を取得しました。識別子 'DBMS_CRYPTO'を宣言する必要があります。 – Rodrick
Mmm、デフォルトでパブリックではないか、パブリック・シノニムがセキュリティ対策として削除されていると推測されます。あなたのDBAはあなたにそれを実行する権限を与えなければならないかもしれません。政治的に問題があるかもしれないし、そうでないかもしれない... –
- 1. 2つの異なるテーブルで同じフィールドを比較するにはどうすればいいですか?
- 2. Coqで同じSetの2つの要素を比較するにはどうすればよいですか?
- 3. 同じ構造の2つのテーブルを比較するにはどうすればよいですか?
- 4. 同じテーブルの2つの列を比較するにはどうすればよいですか?
- 5. これらの2つの比較式は同じですか?
- 6. 同じマシンで2つの名前付きパイプを開くにはどうすればいいですか?
- 7. 同じクラスの異なるインスタンスで変数を比較するにはどうすればよいですか?
- 8. 異なる値を持つ2つのnsarrayを比較するにはどうすればよいですか?
- 9. 入力から2つの日付を比較するにはどうすればよいですか?
- 10. 2つのクエリが同じ行に影響するかどうかを比較するにはどうすればよいですか?
- 11. AppleScriptで同じ長さではない2つのリストを比較するにはどうすればよいですか?
- 12. このように2つの文字列を比較するにはどうすればよいですか?
- 13. Oracleデータベースをリモートからアクセスできるようにするにはどうすればよいですか?
- 14. 2つの.netコンソールアプリケーションの全体的なパフォーマンスを比較するにはどうすればよいですか?
- 15. イメージノードに到達するにはどうすればいいですか
- 16. 2つのオブジェクトから同じ値でオブジェクトを作成するにはどうすればよいですか?
- 17. gitの2つのリビジョンでファイルをプログラムで比較するにはどうすればよいですか?
- 18. knexjsでは、.where()関数の2つの列を比較するにはどうすればよいですか?
- 19. VIsual Basicでは、2つのオブジェクトの種類を比較するにはどうすればよいですか?
- 20. 同じテーブルの行を日付と比較するにはどうすればよいですか? (SQL Server)
- 21. 2つのフォームファイルの違いを比較するにはどうすればよいですか?
- 22. 2つの不可能なジョブが同じマシンに対して実行されないようにするにはどうすればよいですか?
- 23. Javaでプログラムで2つのodsドキュメントを比較するにはどうすればよいですか?
- 24. 同じネットワーク上の別のマシンからLaravelサイトにアクセスするにはどうすればよいですか?
- 25. iPhone:ホストに到達可能かどうかを確認するにはどうすればよいですか?
- 26. SilverlightでSystem.Text.Encodingの2つのインスタンスを比較するにはどうすればよいですか?
- 27. Javaで継承の2つの値を比較するにはどうすればよいですか?
- 28. Eclipseでgitの2つのリビジョンを比較するにはどうすればよいですか?
- 29. 複数のドットで2つの「数字」を比較するにはどうすればよいですか?
- 30. Javaで2つのイメージを比較するにはどうすればよいですか?
'(all_source'またはuser/DBAのバージョンから)それぞれのソースのハッシュを取得するのは、単なる行数よりも正確な比較のためですか?または、ソースをテキストとして取り出し、他の場所と比較しますか? –
興味深い。ハッシュを取得するとどういう意味ですか? – Rodrick
私は、ソースコードを[ハッシュ関数で]渡すことを意味します(https://docs.oracle.com/cd/E18283_01/appdev.112/e16760/d_crypto.htm#i1002022)。たとえば、その関数に渡すために、ソースコードをCLOBにビルドする必要があります( 'dba_source'に1行ずつ格納)。 –