Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 11117|Odgovoriti: 0

[Vir] ORACLE 11g Nove funkcije - Omogoča, da DDL ključavnice počakajo na DML ključavnice

[Kopiraj povezavo]
Objavljeno na 26. 11. 2014 15:54:15 | | |
O tem sem že prej pisalORAKELJČlanek o novih funkcijah 11G, zdajORAKELJ11G je postal glavni tokORAKELJRazličica baze podatkov, razumevanje in učenjeORAKELJNove funkcije 11G so ključne, prav tako tudi jazORAKELJZa začetnike z novimi funkcijami 11G bi rad tukaj delil svoj učni proces in izkušnje.
Ta članek predvsem navaja, da:ORAKELJNova funkcija 11g, ki omogoča DDL ključavnicam, da čakajo na DML ključavnice, kar je tudi tema, ki jo je delil gospod Zhang Leyi (kamus) na dogodku ACOUG 30. junija.
V različicah pred 11g DDL zaklepi privzeto ne čakajo na DML zaklepe, in če izvedete DDL operacije na tabeli z DML zaklepi, bo takoj vrnil neuspeh (razen za isto SESSION), izvedimo preprost eksperiment, vstavite podatke v tabelo STREAM v SESSION1, ne oddajajte, v tem trenutku bo tabela STREAM imela DML zaklep in izvedite operacijo TRUNCATE table STREAM v SESSION2, ki takoj vrne neuspeh:
SESSION1 >vstavi v izbiro toka * iz dbdream; Ustvarjenih 10 vrstic. SESSION2 >odrezani tok tabele; trunkate table stream * NAPAKA na vrstici 1: ORA-00054: vir zaseden in pridobljen z NOWAIT specifikacijo ali časovni potek v različici 11g,ORAKELJUveden DDL_LOCK_TIMEOUT parameter, ki omogoča DDL ključavnicam, da čakajo na DML ključavnice, ki nadzorujejo čas, da DDL ključavnice čakajo na DML ključavnice, v sekundah je privzeta vrednost 0, torej DDL ključavnice ne čakajo na DML ključavnice, največja vrednost je 1 milijon, torej 11,5 dni, ta parameter je mogoče nastaviti globalno ali na ravni SESSION.
SESSION2 >prikaži parameter ddl_lock_timeout IME TIP VREDNOST ----------------------- ----------- ------ ddl_lock_timeout celo število 0 SESSION2 >alter session set ddl_lock_timeout=2000000; NAPAKA: ORA-00068: neveljavna vrednost 2000000 za parameter ddl_lock_timeout, mora biti med 0 in 1000000. Naslednje prikazuje učinek naslednjega parametra DDL_LOCK_TIMEOUT in kot primer vzamemo tudi zgornjo tabelo STREAM, trenutna tabela STREAM še vedno ima DML zaklep, v SESSION2 bo DDL_LOCK_ TIMEOUT je nastavljen na 60 sekund, nato se izvede operacija TRUNCATE, napaka pa se ne vrne takoj, ampak počaka 60 sekund, in če DL zaklep tabele STREAM ni sproščen v 60 sekundah, se vrne napaka.
SESSION2 >alter session set ddl_lock_timeout=60; Seja spremenjena. SESSION2 >nastavi časovni okvir na SESSION2 >toka za odrezovanje tabele; --Na tej točki SESSION2 začasno ustavi, počaka, da SESSION1 sprosti DML zaklep v 60 sekundah, vrne se po 60 sekundah, tok tabele skrajšavanja * NAPAKA na vrstici 1: ORA-00054: vir zaseden in pridobitev z NOWAIT specifikacijo ali časovni potek potekel Potekel: 00:01:00.01 Pojav DDL_LOCK_TIMEOUT parametrov močno poenostavi delovanje DBA-jev, na primer, želimo dodati polje v tabelo, vendar ima ta tabela veliko DML operacij in ne moremo uporabiti metode ALTER SYSTEM KILL SESSION za zaključek teh operacij, zato če želimo dodati polja v to tabelo, moramo operacijo dodajanja polj izvajati neštetokrat ali napisati skripte za to nalogo, in zdaj imamo DDL_ LOCK_TIMEOUT parametru moramo le nekoliko povečati vrednost tega parametra in ni nam treba skrbeti za izvajanje SQL, pokažimo ta postopek spodaj.
SESSION2 dodajte polja:
SESSION2 >spremeni tok tabele dodaj jpg_path varchar2(255) privzeto '/home/Orakelj/'; 此时挂起,等待STREAM表的DML锁释放,SESSION1提交释放DML锁后,SESSION2操作便成功了。
SESSION1 >zaveži se; Zaveza zaključena. SESSION2 >spremeni tok tabele dodaj jpg_path varchar2(255) privzeto '/home/Orakelj/'; Table altered. SESSION2 >select * from stream; ID IDENTIFIER PIC_NO JPG_PATH ---------- --------------- ------ --------------- 1 18-0220-003 1 /home/Orakelj/ 2 18-0221-003 1 /home/Orakelj/ 3 18-0221-003 2 /home/Orakelj/ 4 18-0221-003 3 /home/Orakelj/ 5 18-0223-005 1 /home/Orakelj/ 6 18-0223-005 2 /home/Orakelj/ 7 18-0223-005 3 /home/Orakelj/ 8 18-0223-005 4 /home/Orakelj/ 9 18-0223-005 5 /home/Orakelj/ 10 18-0223-005 6 /home/Orakelj/ 10 rows selected.




Prejšnji:Praktična SQL izjava: ocenjevanje datuma
Naslednji:Oracle ORA-12541: Rešitev TNS:no listener error
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com