Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 11117|Odpověď: 0

[Zdroj] ORACLE 11g Nové funkce – Umožňuje DDL zámkům čekat na DML zámky

[Kopírovat odkaz]
Zveřejněno 26.11.2014 15:54:15 | | |
O tom jsem už dříve psalORÁKULUMČlánek o nových funkcích 11G, nyníORÁKULUM11G se stalo běžným proudemORÁKULUMVerze databáze, pochopení a naučení seORÁKULUMNové funkce 11G jsou zásadní, stejně jako jáORÁKULUMPro začátečníky v nových funkcích 11G bych zde rád sdílel svůj proces učení a zkušenosti.
Tento článek především uvádí, že:ORÁKULUMNová funkce 11g, která umožňuje DDL zámkům počkat na DML zámky, což je také téma, které sdílel pan Zhang Leyi (kamus) na akci ACOUG 30. června.
Ve verzích před 11g DDL zámky ve výchozím nastavení nečekají na DML zámky, a pokud provedete DDL operace na tabulce s DML zámky, okamžitě se vrátí selhání (kromě stejné SESSION), provedeme jednoduchý experiment, vložte data do TABLE STREAM v SESSION1, neodesílat, v tomto okamžiku bude mít table STREAM DML zámek a v SESSION2 spustite operaci TRUNCATE table STREAM, přičemž okamžitě vrátí chybu:
SESSION1 >vložit do výběru proudu * z dbdream; Vytvořeno 10 řádků. SESSION2 >zkracovat tok tabulky; zkrácení tabulkového proudu * CHYBA na řádku 1: ORA-00054: zdroj obsazen a získán s specifikací NOWAIT nebo vypršel timeout ve verzi 11g,ORÁKULUMZaveden DDL_LOCK_TIMEOUT parametr, který umožňuje DDL zámkům čekat na DML zámky, které řídí dobu, kdy DDL zámky čekají na DML zámky, za sekundy je výchozí hodnota 0, což znamená, že DDL zámky nečekají na DML zámky, maximální hodnota je 1 milion, tedy 11,5 dne, tento parametr lze nastavit globálně nebo na úrovni SESSION.
SESSION2 >zobrazit parametr ddl_lock_timeout JMÉNO, TYP HODNOTY ----------------------- ----------- ------ ddl_lock_timeout celé číslo 0 SESSION2 >změnit sadu relace ddl_lock_timeout=2000000; CHYBA: ORA-00068: neplatná hodnota 2000000 pro parametr ddl_lock_timeout, musí být mezi 0 a 1000000. Následující text ukazuje efekt následujícího parametru DDL_LOCK_TIMEOUT a také uvádí výše uvedenou tabulku STREAM jako příklad, aktuální tabulka STREAM stále obsahuje DML zámek, SESSION2 bude DDL_LOCK_ TIMEOUT je nastaven na 60 sekund, poté se spustí operace TRUNCATE, a chyba se nevrátí okamžitě, ale počká 60 sekund, a pokud se DL zámek tabulky STREAM neuvolní do 60 sekund, vrátí se selhání.
SESSION2 >alter session set ddl_lock_timeout=60; Session upravena. SESSION2 >nastav časování na SESSION2 >stružné zkrácení tabulky; --V tomto okamžiku SESSION2 pozastaví, čeká, až SESSION1 uvolní DML zámek do 60 sekund, vrácení selhalo po 60 sekundách struna zkrácené tabulky * CHYBA na řádku 1: ORA-00054: zdroj obsazen a získán s NOWAIT specifikovaným nebo timeout vypršel: Vypršel: 00:01:00.01 Vznik DDL_LOCK_TIMEOUT parametrů výrazně zjednodušuje fungování DBA, například chceme přidat pole do tabulky, ale tato tabulka obsahuje spoustu DML operací a nemůžeme použít metodu ALTER SYSTEM KILL SESSION k ukončení těchto operací, takže pokud chceme přidat pole do této tabulky, musíme operaci přidávání polí provádět nesčetněkrát, nebo napsat skripty k této práci, a teď máme DDL_ LOCK_TIMEOUT parametru stačí nastavit hodnotu tohoto parametru mírně větší a nemusíme se starat o spuštění SQL, ukažme si tento proces níže.
SESSION2 přidat pole:
SESSION2 >změnit tabulku stream přidat jpg_path varchar2(255) výchozí '/home/Orákulum/'; 此时挂起,等待STREAM表的DML锁释放,SESSION1提交释放DML锁后,SESSION2操作便成功了。
SESSION1 >zavázat; Závazek dokončen. SESSION2 >změnit tabulku stream přidat jpg_path varchar2(255) výchozí '/home/Orákulum/'; Table altered. SESSION2 >select * from stream; ID IDENTIFIER PIC_NO JPG_PATH ---------- --------------- ------ --------------- 1 18-0220-003 1 /home/Orákulum/ 2 18-0221-003 1 /home/Orákulum/ 3 18-0221-003 2 /home/Orákulum/ 4 18-0221-003 3 /home/Orákulum/ 5 18-0223-005 1 /home/Orákulum/ 6 18-0223-005 2 /home/Orákulum/ 7 18-0223-005 3 /home/Orákulum/ 8 18-0223-005 4 /home/Orákulum/ 9 18-0223-005 5 /home/Orákulum/ 10 18-0223-005 6 /home/Orákulum/ 10 rows selected.




Předchozí:Praktické SQL tvrzení: odhad data
Další:Oracle ORA-12541: Obcházení TNS:no listener error
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com