12

チームで Oracle ストアド プロシージャを開発するために使用するツールは何ですか :

  • 作業中の現在の手順を自動的に「ロック」して、終了するまでチームの他の誰も変更できないようにすること。
  • ストアド プロシージャ、Oracle データベースで行った変更を、Subversion、CVS などのリポジトリに自動的に送信するには

ありがとう!

4

9 に答える 9

9

元の投稿者がまだこれを監視しているかどうかはわかりませんが、とにかく質問します。

元の投稿では、次のことができるように要求されました。

作業中の現在の手順を自動的に「ロック」して、終了するまでチームの他の誰も変更できないようにすること。

おそらく、ここでの問題は、製品がストアド プロシージャを「ロック」できないことよりも、開発パラダイムの 1 つです。「これをロックして、他の人が変更しないようにしたい」と聞くたびに、人々がスキーマを共有していて、全員が同じ空間で開発しているとすぐに感じます。

このような場合、誰もがデータ モデルのコピーを使用して独自のスキーマを持つことができるようにしてみませんか? 別のスキーマを作成するのに「費用」はかかりません。こうすることで、各開発者は顔が青くなるまで他の人に影響を与えることなく変更を加えることができます。

サイズの関係ですべての開発者がデータの独自のコピーを持つことが現実的ではないときに、私が過去に (小さなチームで) 使用したもう 1 つのトリックは、すべてのテーブルとコードを含むマスター スキーマを用意することでした。パブリック シノニムがすべてを指しています。次に、開発者がストアド プロシージャで作業したい場合は、それを自分のスキーマに作成するだけです。こうすることで、Oracle の名前解決は、マスター スキーマ内のコピーではなく最初にそれを見つけ、他の誰にも影響を与えずにコードをテストできるようにします。これには欠点がありますが、これは私たちが彼らと一緒に暮らすことができる非常に特殊なケースでした. 明らかに、このようなものを本番環境で実装することは決してありません。

2 番目の要件については、次のとおりです。

ストアド プロシージャ、Oracle データベースで行った変更を、Subversion、CVS などのリポジトリに自動的に送信するには

これを行うのに十分なほどスマートなツールが世の中にあることに驚かれることでしょう (おそらく機会 :)。データベースに接続し、データ ディクショナリ (USER_SOURCE) にクエリを実行し、関連するテキストを引き出す必要があります。ほぼ普遍的にファイルベースであるソース管理システムにとっては、難しい注文です。

于 2009-01-07T16:49:16.940 に答える
2

Oracleの新しいSQLDeveloperには、バージョン管理が組み込まれています。

こちらが商品へのリンクです。

http://www.oracle.com/technology/products/database/sql_developer/files/what_is_sqldev.html

http://www.oracle.com/technology/products/database/sql_developer/images/what_version.png http://www.oracle.com/technology/products/database/sql_developer/images/what_version.png

于 2008-09-21T19:44:56.907 に答える
2

PL/SQLを通常のコードとして扱います。ファイルに格納し、これらのファイルをリビジョン管理ツールと内部手順で管理します。

リビジョン管理ツールをまだ持っていない場合は、要件を書き留めて選択してください。多くの人が、 TortoiseSVNに関連付けられたSubversionを Windows のクライアントとして使用しているようです (私は使用しています)。

問題は、ツールを推奨どおりに使用し、それに応じて手順を調整することです。たとえば、Subversion はデフォルトでコピー - 変更 - マージモデルを使用しますが、あなたが好むと思われるロック - 変更 - ロック解除モデルとは対照的です。

私の場合、上記のように TortoiseSVN を使用するのが好きです。そして、このツールではいつものように:

  • ファイルをロックすることはありません。これは小規模なチームでは非常に扱いやすく、大規模なチームでは事前に計画を立てる必要がありますが、これは常に良いことです.
  • 私は自分の変更を手動でサーバーに送り返します。なぜなら... Subversion には別の方法があるとは思わないからです (さらに、内部手順ではメッセージなしのコミットが禁止されていますが、これも良いことです)。

どのような選択をするにしても、データベースのバージョン管理に関するこの投稿 (および関連する投稿) を読むことをお勧めします。

于 2008-09-22T17:17:15.913 に答える
1

比較的単純な(少し古風な場合)解決策は、「マージ」モードのバージョン管理システムではなく「ロック」を使用することです。SubversionまたはCVSは通常、「マージ」モードを使用します(ただし、Subversionは作成できると思います)。ファイルを「ロック」するには?)

「ロック」モードのバージョン管理システムには、もちろん独自の欠点があります。

Oracleで行うことを考えることができる唯一の方法は、BEFORE CREATE TRIGGERの一部である可能性があります。おそらく、パッケージを実行できるルックアップのテーブルを参照します。少し厄介に聞こえますか?

于 2008-09-21T20:33:16.213 に答える
1

Source Control for Oracleを使用すると、探しているものがたくさん得られます。

ストアド プロシージャ (およびパッケージ、関数、テーブルなど) は、インターフェイスを使用して手動でロックできますが、自動的にロックすることはできませんが、これにより、他のユーザーが変更を行うことができなくなります。

オブジェクトを作成するための新しい SQL は、SVN または TFS にチェックインできます (残念ながら CVS はサポートされていません)。

このツールは無料ではありませんが、28 日間の無料試用版があります。

于 2013-09-18T16:27:12.353 に答える
0

運が悪かったOracleオブジェクトのバージョン管理を処理するツールを検索した後、次の(完全ではありませんが適切な)ソリューションを作成しました。

  1. dbms_metadataパッケージを使用して、Oracleサーバーのメタデータダンプを作成します。オブジェクトごとに1つのファイルを作成するため、結果は1つの巨大なファイルではなく、多数のファイルになります。削除されたオブジェクトを認識するために、ダンプを再度作成する前にすべてのファイルを削除します。
  2. サーバーからクライアントコンピューターにすべてのファイルをコピーします。
  3. Netbeansを使用して、変更を認識し、変更をCVSサーバーにコミットします(または差分を確認します...)。ここでは任意のCVSハンドラソフトウェアが機能しますが、すでに他の目的でNetbeansを使用していました。また、Netbeansでは、ステップ1で説明したOracleプロセスを呼び出すためのantタスクを作成し、ステップ2で説明したファイルをコピーすることもできます。

ステップ1の最も重要なクエリは次のとおりです。

SELECT object_type, object_name, 
  dbms_metadata.get_ddl(object_type, object_name) object_ddl FROM user_objects
WHERE OBJECT_TYPE in ('INDEX', 'TRIGGER', 'TABLE', 'VIEW', 'PACKAGE', 
  'FUNCTION', 'PROCEDURE', 'SYNONYM', 'TYPE')  
ORDER BY OBJECT_TYPE, OBJECT_NAME

オブジェクトごとに1つのファイルを使用することで、変更を特定できます。テーブルにフィールドを追加するとTTTT(もちろん実際のテーブル名ではありません)、TABLE_TTTT.SQLファイルのみが変更されます。

ステップ1とステップ3はどちらも遅いプロセスです。(数千のファイルの場合は数分)

于 2009-06-16T13:31:16.277 に答える
0

Aqua Data Studio も参照してください。SVN も組み込まれており、優れた Stored Proc エディターです。

于 2008-09-22T19:56:45.810 に答える
0

Oracle SQL Developer 1.5を使用すると、CVS または Subversion への接続を簡単に作成および管理できます。CVS 接続を作成するには (たとえば)、Versioning -> CVS -> Check out Moduleをクリックします。ウィザードを実行して接続 (ホスト、ユーザー名など) を作成すると、手順/機能を通常どおりチェックアウトおよびチェックインできます。

CVS との統合もToadで提供されます。

于 2008-09-22T08:16:54.277 に答える
-1

Toad も、CVS / SVN を必要とせずにこれを行います。

于 2008-09-22T17:15:47.087 に答える