チームで Oracle ストアド プロシージャを開発するために使用するツールは何ですか :
- 作業中の現在の手順を自動的に「ロック」して、終了するまでチームの他の誰も変更できないようにすること。
- ストアド プロシージャ、Oracle データベースで行った変更を、Subversion、CVS などのリポジトリに自動的に送信するには
ありがとう!
チームで Oracle ストアド プロシージャを開発するために使用するツールは何ですか :
ありがとう!
元の投稿者がまだこれを監視しているかどうかはわかりませんが、とにかく質問します。
元の投稿では、次のことができるように要求されました。
作業中の現在の手順を自動的に「ロック」して、終了するまでチームの他の誰も変更できないようにすること。
おそらく、ここでの問題は、製品がストアド プロシージャを「ロック」できないことよりも、開発パラダイムの 1 つです。「これをロックして、他の人が変更しないようにしたい」と聞くたびに、人々がスキーマを共有していて、全員が同じ空間で開発しているとすぐに感じます。
このような場合、誰もがデータ モデルのコピーを使用して独自のスキーマを持つことができるようにしてみませんか? 別のスキーマを作成するのに「費用」はかかりません。こうすることで、各開発者は顔が青くなるまで他の人に影響を与えることなく変更を加えることができます。
サイズの関係ですべての開発者がデータの独自のコピーを持つことが現実的ではないときに、私が過去に (小さなチームで) 使用したもう 1 つのトリックは、すべてのテーブルとコードを含むマスター スキーマを用意することでした。パブリック シノニムがすべてを指しています。次に、開発者がストアド プロシージャで作業したい場合は、それを自分のスキーマに作成するだけです。こうすることで、Oracle の名前解決は、マスター スキーマ内のコピーではなく最初にそれを見つけ、他の誰にも影響を与えずにコードをテストできるようにします。これには欠点がありますが、これは私たちが彼らと一緒に暮らすことができる非常に特殊なケースでした. 明らかに、このようなものを本番環境で実装することは決してありません。
2 番目の要件については、次のとおりです。
ストアド プロシージャ、Oracle データベースで行った変更を、Subversion、CVS などのリポジトリに自動的に送信するには
これを行うのに十分なほどスマートなツールが世の中にあることに驚かれることでしょう (おそらく機会 :)。データベースに接続し、データ ディクショナリ (USER_SOURCE) にクエリを実行し、関連するテキストを引き出す必要があります。ほぼ普遍的にファイルベースであるソース管理システムにとっては、難しい注文です。
Oracleの新しいSQLDeveloperには、バージョン管理が組み込まれています。
こちらが商品へのリンクです。
http://www.oracle.com/technology/products/database/sql_developer/files/what_is_sqldev.html
PL/SQLを通常のコードとして扱います。ファイルに格納し、これらのファイルをリビジョン管理ツールと内部手順で管理します。
リビジョン管理ツールをまだ持っていない場合は、要件を書き留めて選択してください。多くの人が、 TortoiseSVNに関連付けられたSubversionを Windows のクライアントとして使用しているようです (私は使用しています)。
問題は、ツールを推奨どおりに使用し、それに応じて手順を調整することです。たとえば、Subversion はデフォルトでコピー - 変更 - マージモデルを使用しますが、あなたが好むと思われるロック - 変更 - ロック解除モデルとは対照的です。
私の場合、上記のように TortoiseSVN を使用するのが好きです。そして、このツールではいつものように:
どのような選択をするにしても、データベースのバージョン管理に関するこの投稿 (および関連する投稿) を読むことをお勧めします。
比較的単純な(少し古風な場合)解決策は、「マージ」モードのバージョン管理システムではなく「ロック」を使用することです。SubversionまたはCVSは通常、「マージ」モードを使用します(ただし、Subversionは作成できると思います)。ファイルを「ロック」するには?)
「ロック」モードのバージョン管理システムには、もちろん独自の欠点があります。
Oracleで行うことを考えることができる唯一の方法は、BEFORE CREATE TRIGGERの一部である可能性があります。おそらく、パッケージを実行できるルックアップのテーブルを参照します。少し厄介に聞こえますか?
Source Control for Oracleを使用すると、探しているものがたくさん得られます。
ストアド プロシージャ (およびパッケージ、関数、テーブルなど) は、インターフェイスを使用して手動でロックできますが、自動的にロックすることはできませんが、これにより、他のユーザーが変更を行うことができなくなります。
オブジェクトを作成するための新しい SQL は、SVN または TFS にチェックインできます (残念ながら CVS はサポートされていません)。
このツールは無料ではありませんが、28 日間の無料試用版があります。
運が悪かったOracleオブジェクトのバージョン管理を処理するツールを検索した後、次の(完全ではありませんが適切な)ソリューションを作成しました。
ステップ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はどちらも遅いプロセスです。(数千のファイルの場合は数分)
Aqua Data Studio も参照してください。SVN も組み込まれており、優れた Stored Proc エディターです。
Oracle SQL Developer 1.5を使用すると、CVS または Subversion への接続を簡単に作成および管理できます。CVS 接続を作成するには (たとえば)、Versioning -> CVS -> Check out Moduleをクリックします。ウィザードを実行して接続 (ホスト、ユーザー名など) を作成すると、手順/機能を通常どおりチェックアウトおよびチェックインできます。
CVS との統合もToadで提供されます。
Toad も、CVS / SVN を必要とせずにこれを行います。