この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 11117|答える: 0

[出典] ORACLE 11g 新機能 - DDLロックがDMLロックを待つことを可能にします

[リンクをコピー]
掲載地 2014/11/26 15:54:15 | | |
以前にもこのことについて書いたことがありますオラクル11g 新しい特集記事、今すぐオラクル11Gは主流となりましたオラクルデータベース版、理解と学習オラクル11Gの新機能は重要であり、私も同じですオラクル11Gの新機能の初心者のために、ここで私の学習過程と体験を共有したいと思います。
この記事の主な記録は以下の通りです:オラクル11gの新機能で、DDLロックがDMLロックを待つことができる。これは6月30日のACOUGイベントで張磊(kamus)氏も共有したテーマだ。
11g以前のバージョンでは、デフォルトでDDLロックはDMLロックを待たず、DMLロックを持つテーブルにDDL操作を行うと即座に失敗を返します(同じSESSIONを除き)。簡単な実験をしてみます。SESSION1にデータをSTREAMテーブルに挿入し、送信しないとしたら、この時点でテーブルSTREAMにDMLロックがかかっており、SESSION2でTRUNCATEテーブルSTREAM操作を実行すると、即座に失敗を返します:
SESSION1 > dbdreamからストリーム選択に*を挿入; 10行作成。 SESSION2 >テーブルストリームを切り詰めること; テーブルストリームを切り詰め * 1行目のエラー:ORA-00054:リソースが忙しく、NOWAITが指定されているか、バージョン11gでタイムアウトが切れている、オラクルパラメータDDL_LOCK_TIMEOUT導入され、DDLロックがDMLロックを待つ時間を制御できるようになり、DDLロックがDMLロックを待つ時間を制御します。秒単位でデフォルト値は0です。つまり、DDLロックはDMLロックを待たず、最大値は100万、つまり11.5日です。このパラメータはグローバルまたはセッションレベルで設定可能です。
SESSION2 >パラメータ ddl_lock_timeout NAME TYPE VALUE ----------------------- ----------- ------ ddl_lock_timeout 整数 0 SESSION2 >ALTER SESSION SET ddl_lock_timeout=2000000; エラー:ORA-00068:パラメータddl_lock_timeoutの無効値2000000は0から1000000の間でなければなりません以下は、以下のDDL_LOCK_TIMEOUTパラメータの効果を示し、上記のSTREAMテーブルを例に取ります。現在のSTREAMテーブルにはまだDMLロックがあり、SESSION2ではDDL_LOCK_ TIMEOUTは60秒に設定され、その後TRUNCATE操作が実行されます。失敗はすぐに返されるのではなく60秒待機し、STREAMテーブルのDLロックが60秒以内に解放されなければ失敗を返します。
SESSION2 >alterセッションセット は ddl_lock_timeout=60; セッション変更。 SESSION2 > SESSION2 > トランケートテーブルストリームでタイミングを設定する; --この時点でSESSION2は一時停止し、SESSION1が60秒以内にDMLロックを解除するのを待ち、60秒後に失敗。テーブルストリームを切り落とす* 1行目のエラー:ORA-00054:リソースは忙しい、NOWAITを指定するかタイムアウト終了で取得。経過: 00:01:00.01 パラメータの出現により、DBAの操作DDL_LOCK_TIMEOUT大幅に簡素化されます。例えば、テーブルにフィールドを追加したいのですが、このテーブルには多くのDML操作があり、ALTER SYSTEM KILL SESSIONメソッドでこれらの操作を終了することはできません。したがって、このテーブルにフィールドを追加したい場合、フィールドを追加する操作を何度も実行するか、スクリプトを書く必要があります。そして、今やDDL_ パラメータLOCK_TIMEOUT、このパラメータの値を少し大きく設定するだけで済み、SQLの実行を気にする必要はありません。以下でこのプロセスを実演します。
SESSION2 フィールドを追加します:
SESSION2 >alter table stream add jpg_path varchar2(255) default '/home/オラクル/'; 此时挂起,等待STREAM表的DML锁释放,SESSION1提交释放DML锁后,SESSION2操作便成功了。
SESSION1 >コミット; コミット完了。 SESSION2 >alter table stream add jpg_path varchar2(255) default '/home/オラクル/'; Table altered. SESSION2 >select * from stream; ID IDENTIFIER PIC_NO JPG_PATH ---------- --------------- ------ --------------- 1 18-0220-003 1 /home/オラクル/ 2 18-0221-003 1 /home/オラクル/ 3 18-0221-003 2 /home/オラクル/ 4 18-0221-003 3 /home/オラクル/ 5 18-0223-005 1 /home/オラクル/ 6 18-0223-005 2 /home/オラクル/ 7 18-0223-005 3 /home/オラクル/ 8 18-0223-005 4 /home/オラクル/ 9 18-0223-005 5 /home/オラクル/ 10 18-0223-005 6 /home/オラクル/ 10 rows selected.




先の:実用的なSQL文:日付推定
次に:Oracle ORA-12541: TNS:no listener error workaround
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com