Databáze Oracle je široce používaná databáze v průmyslu. Zde se snažím vysvětlit zámky Oracle, zámky tabulek Oracle
Obsah
Co je Oracle Enqueue a zámky
Enqueue jsou zámky Oracle, které serializují operace do sdílené struktury. Sdílenou strukturou může být tabulka, redo vlákna a transakce.
Když uživatel A aktualizuje řádek 12 v tabulce, získá transakci Enqueue (zámek). To je získáno tak, že každý uživatel, kterému se pokouším aktualizovat stejný řádek 12 v tabulce, bude čekat, dokud uživatel A nepotvrdí transakci. Pokud se tedy nyní uživatel B pokusí aktualizovat stejný řádek, bude čekat ve frontě.
Jakmile uživatel A potvrdí transakci, transakce uživatele B bude pokračovat
V databázi jedné instance máme lokální frontu, zatímco s Oracle RAC máme lokální frontu a globální frontu pro správu sdíleného prostředku
Co je identifikátor Enqueue
Enqueue jsou jednoznačně identifikovány pomocí formátu
Zdroj může
TM -> stolní zámky
MR-> Obnova médií
TX-> Transakce
Id1 a id2 jsou čísla, která se liší pro různé typy zdrojů
Stejně jako u table lock (TM) se zapisuje jako
TM-
Když uživatel požádá o přístup ke zdroji v určitém režimu, vygeneruje se identifikátor fronty, jak je vysvětleno výše
Enqueue jsou drženy v tomto režimu
SS: Režim sdílení řádků
SX:Režim výhradní řádky
S: Uzamkněte stůl v režimu sdílení
SSX:Uzamkněte tabulku v režimu sdílení a řádek ve výhradním režimu
X:Uzamčení stolu ve výhradním režimu
Co je prostředek Enqueue
Každá fronta je udržována prostřednictvím struktury prostředků serverem Oracle a je identifikována tak, jak je vysvětleno výše. Struktura prostředků má tři seznamy
- Seznam vlastníků
- Pořadník
- Seznam převaděčů
Když uživatel požádá o uzamčení zdroje v určitém režimu, získá strukturu zámku a požádá o získání zámku pro určitý zdroj. Je umístěn v těchto seznamech struktury zdrojů podle požadovaného zámku.
Uživatel tedy nejprve požaduje tento zdroj a poté bude umístěn do seznamu vlastníků
Struktura zdrojů se získá z tabulky zdrojů a struktura zámku se získá z tabulky zámků. Obě jsou alokovány v SGA
Počet řádků v tabulce zdrojů je definován inicializačním parametrem enqueue_resources. Použité hodnoty lze vidět v zobrazení v$resource
Počet řádků v tabulce struktury zámku je definován inicializačním parametrem _enqueue_locks. Použité hodnoty lze vidět v v$enqueue_lock
Jak se provádí vyhledávání v tabulce zdrojů?
- Tabulka zdrojů obsahuje veškerou strukturu zdrojů. K nalezení a přístupu ke struktuře zdrojů v tabulce zdrojů se používá hashovací algoritmus.
- Tabulka zdrojů je uspořádána do segmentu hash. Každý segment hash obsahuje seznam struktury zdrojů ve formě propojeného seznamu.
- Když se zdroj hledá, jeho hash se získá pomocí hashovacího algoritmu a poté se získá latch pro nalezení odpovídajícího hashového segmentu a poté se zdroj vyhledá v seznamu v hashovém segmentu. Pokud je zdroj nalezen, je získána struktura zámku a požadavek je umístěn na vlastníka, číšníka a seznam převodníků podle zadané požadované úrovně zámku
Příklad prostředku TM-575-0 hašovaného do segmentu 1, je získán hašovací řetězec latch enqueue pro přístup k hašovacímu segmentu a seznam je zpřístupněn v segmentu za účelem získání struktury zdrojů
- Pokud zdroj není nalezen v seznamu bucket a nová struktura zdrojů je získána ze seznamu bez zdrojů a umístěna do bucket listu. To se děje pod závorou Enqueue. Je také přidělena struktura zámku
Požadavek na zámek je umístěn na seznam vlastníků struktury prostředků
Jak fungují operace fronty?
Když uživatel požádá o uzamčení zdroje, server Oracle provede následující věci
- Pokud zdroj aktuálně nevlastníte, je uživateli přidělen
- Pokud je ve vlastnictví a jsou tam číšníci a převaděč, je umístěn na konci fronty číšníků
- Pokud je ve vlastnictví, ale není k dispozici žádný číšník a převaděč, pak pokud je kompatibilní se zámkem vlastníka, bude žádost schválena. Pokud není kompatibilní, je umístěn na seznam číšníků
- Převodník může pokračovat, pokud je požadavek méně omezující než aktuálně držený zámek nebo je požadovaný režim kompatibilní se zámkem drženým druhým vlastníkem
- Číšník může pokračovat, pokud je seznam převaděčů prázdný, nejsou před ním žádní číšníci a požadovaný zámek je kompatibilní se zámkem, který aktuálně má
- Převodník je vždy zpracováván před číšníky.
- Server Oracle kontroluje tyto fronty pokaždé, když je zámek uvolněn nebo převeden.
Jak se kontroluje fronta, když je zámek Oracle uvolněn nebo převeden
- Procesy čekající na prostředky spí na semaforech a semafory se používají jako mechanismy spánku/probuzení. Po zařazení do fronty se žádající proces uspí na semaforu pomocí volání sync_op.
sync_op(SYNC_WAIT, SYNCF_BINARY, 300) =1
- Jakmile je proces držící prostředek připraven uvolnit prostředek, podívá se na frontu připojenou ke struktuře prostředku. Pokud je ve frontě proces, odešle semaforový signál čekajícímu procesu pomocí
volání sync_op.
sync_op(0x0005, SYNCF_BINARY, 134491620) =1
- Čekající proces zpracuje signál a probudí se. Tento proces čekání upraví stav podle kroků uvedených v operaci zařazování do fronty
Běžné typy fronty
JQ – Fronta úloh. Když je úloha (zadaná DBMS_JOB.SUBMIT) spuštěna, je chráněna frontou JQ (což znamená, že úlohu může spustit pouze jeden proces SNP).
ST – Transakce správy prostoru . Frontu ST je třeba držet pokaždé, když relace přiděluje/zrušuje přidělování oblastí (což znamená, že chce změnit slovníkové tabulky UET$ a FET$), jako je slučování, vypouštění/ořezávání segmentů a třídění disku. Pokud relaci vyprší časový limit při požadavku na frontu ST, vrátí se „Časový limit ORA-1575 čeká na správu prostoru“.
TM – fronta DML (tabulka). Pokaždé, když chce relace uzamknout tabulku, je požadována fronta TM. Pokud relace odstraní řádek v nadřazené tabulce (DEPT) a vytvoří se referenční omezení (cizí klíč) bez indexu v podřízené tabulce (EMP), nebo pokud relace aktualizuje sloupce, které cizí klíčové odkazy na zámek sdílení (úroveň 4) se převezmou na podřízenou tabulku. Pokud se jiná relace pokusí provést změny v podřízené tabulce, musí počkat (protože chtějí, aby fronta byla v režimu výhradního řádku a to není kompatibilní s režimem sdílení). Pokud je ve sloupci cizího klíče podřízené tabulky vytvořen index, pak není na podřízené tabulce vyžadován žádný zámek sdílení.
TX – transakce. Jakmile je transakce zahájena, je potřeba TX enqueue. Transakce je jednoznačně definována číslem segmentu vrácení, číslem slotu v tabulce transakcí segmentu vrácení a pořadovým číslem čísla slotu. Relace může čekat na frontě TX z několika důvodů:
1) Jiná relace uzamkne požadovaný řádek.
2) Když se dvě relace pokusí vložit stejný jedinečný klíč do tabulky (žádná z nich neprovedla COMMIT), pak poslední relace čeká na první, aby se COMMIT nebo ROLLBACK.
3) V záhlaví bloku nejsou žádné volné ITL (Interested Transaction List) (zvýšení INI_TRANS och PCT_FREE pro segment).
UL – Uživatelský zámek . Relace se uzamkla pomocí funkce DBMS_LOCK.REQUEST.
Zobrazení a tabulka pro zobrazení fronty Oracle a zámků Oracle
V$session a v$session_wait
Když relace čeká na frontu nebo zámek, může to být relace z V$session (v 11g a vyšší) a v$session_wait
Vyberte * z v$session_wait, kde událost jako ‚enq%‘;Parametr události čekání ve frontě má následující významP1:typ zdroje a požadovaný režimP2:ID1 zdrojeP3:ID2 zdroje
Můžeme použít níže uvedený dotaz k získání celé fronty v systému
Vyberte událost,p1, p2,p3 z v$session_wait kde wait_time=0 a událost jako 'enq%';
- V$lock je dalším užitečným zobrazením pro kontrolu enqueue ‘s
- V$lock uvádí všechny struktury zámku aktuálně uložené v systému
- Typ sloupce ,id1 a id2 představují typ zdroje , id1 a id2 struktury zdroje. Lze jej tedy spojit s V$resource, který obsahuje seznam všech struktur zdrojů
- LMODE a požadavek nám říkají, která fronta (vlastník, převaděč, číšníci) je relace
LMODE | Žádost | Název fronty |
> 0 | =0 | Vlastník |
=0 | > 0 | Číšník |
> 0 | > 0 | Převodník |
Níže uvedený dotaz lze použít k nalezení držitele a číšníka
SELECT inst_id,DECODE(request,0,'Holder:','Waiter:')||sid sess,id1, id2, lmode, request, typeFROM V$LOCKWHERE (id1, id2, type) IN(SELECT id1 , id2, zadejte FROM V$LOCK WHERE request>0)ORDER BY id1, request;
V případě RAC lze níže uvedený dotaz použít ke zjištění blokujících a číšníků
SELECT inst_id,DECODE(request,0,'Holder:','Witer:')||sid sess,id1, id2, lmode, request, typeFROM GV$LOCKWHERE (id1, id2, type) IN(SELECT id1 , id2, zadejte FROM gV$LOCK WHERE request>0)ORDER BY id1, request;
V$locked_object
je to další užitečný pohled na zámky tabulek Oracle
Obsahuje všechny zámky PP v databázi. Poskytuje transakční slot, proces OS a ID relace relace, která drží zámky TM
Existuje několik pohledů, které lze použít k vyhledání informací o zámcích. Tyto pohledy vytváří catblock.sql
DBA_LOCKS | Zobrazit všechny zámky jako v$lock |
DBA_DML_LOCKS | Zobrazuje všechny držené nebo požadované zámky DML™ |
DBA_DDL_LOCKS | Zobrazuje všechny držené nebo požadované zámky DDL |
DBA_WAITERS | Zobrazuje všechny relace čekající na, ale nedržící čekání na uzamčení |
DBA_BLOCKERS | Zobrazuje nečekající relace, na kterých se čeká na zámky |
Dotaz na zjištění relace čekání a pozastavení relací v Oracle
set linesize 1000sloupce wait_session header 'WAITING|SESSION'sloupec holding_session header 'HOLDING|SESSION'formát sloupce lock_type a15sloupce formát mode_held a15sloupce formát_requested mode a15selectwaiting_session,holding_mode_idreDotaz na zjištění všech zamčených objektů
Jak se zachází se zámky DML na serveru Oracle
Když se v tabulce Oracle provede aktualizace, vložení, odstranění nebo výběr aktualizace, Oracle vezme tyto dva zámky
- Zámek tabulky DML:K zajištění konzistence definice objektu po dobu trvání transakce. To zabrání jakýmkoli operacím DDL, když probíhá DML.
- DML Row Lock:Slouží k zajištění konzistence dat během provádění transakce. Můžeme to přeformulovat takto:Tím získáme zámek na konkrétním dotykovém řádku a jakákoli další transakce pokoušející se upravit stejný řádek bude zablokována, dokud nedokončí ten, který jej již vlastní.
Jak jsou implementovány zámky tabulek Oracle
Infrastrukturu Enqueue jsme již vysvětlili v předchozí části. Zámky tabulky Oracle jsou implementovány jako TM Enqueue
Struktura Enqueue by tedy byla
TM-
Režimy jsou
RS:sdílení řádků
RX:řádek exkluzivní
S:sdílet
SRX:sdílet řádek exkluzivní
X:exkluzivní
Každý kurzor udržuje seznam struktury uzamčení tabulky, která se vytváří při analýze příkazu. Při prvním spuštění se provede volání funkce, která uzamkne celou tabulku v seznamu. Zámky se uvolní, když se transakce potvrdí nebo vrátí zpět.
Možnost vrácení zpět, zejména vrácení zpět do bodu uložení, přidává další rozměr složitosti zamykání slovníku. Konkrétně, pokud je transakce vrácena zpět za bod, ve kterém byl zámek upgradován, pak musí být zámek odpovídajícím způsobem snížen v rámci operace vrácení zpět, aby se snížilo riziko umělých uváznutí.
Požadavky na zamykání slovníků pro transakce a zejména udržování historie převodů zámků zajišťují zámky DML ve spojení s TM enqueue. Každá transakce, která má zámek DML, má také zámek fronty TM. Základní funkce zamykání zajišťuje enqueue a zámek DML přidává údržbu historie konverzí.
Pevné pole zámkových struktur DML je dimenzováno parametrem DML_LOCKS. Jeho volný seznam je chráněn dml zámkem alokace a aktivní sloty jsou viditelné v V$LOCKED_OBJECT .
Chcete-li nastavit DML_LOCKs, zkontrolujte využití v $resource_limit. Můžeme to nastavit velkoryse, protože zabírá velmi méně místa
Jak deaktivovat zámky tabulky?
- Zámky DML a související zámky fronty TM lze deaktivovat, buď úplně, nebo jen pro určité tabulky.
- Chcete-li tyto zámky zcela zakázat, musí být parametr DML_LOCKS nastaven na nulu. V databázi paralelního serveru musí být ve všech případech nastavena na nulu.
- Chcete-li zakázat takové zámky u konkrétní tabulky, je nutné použít klauzuli DISABLE TABLE LOCKS příkazu ALTER TABLE.
- Pokud jsou pro tabulku zakázány zámky, mohou příkazy DML stále upravovat bloky tabulky a zámky na úrovni řádků jsou stále zachovány. Zámky tabulky sub-sdíleného režimu normálně spojené s dotazy a zámky tabulky sub-exkluzivního režimu normálně spojené s DML se však neberou. Místo toho jsou transakce proti tabulce chráněny před konfliktními DDL jednoduchým zákazem všech pokusů o zamknutí celé tabulky, a tím i všech DDL proti tabulce.
- Deaktivace zámků tabulky může zvýšit výkon, protože se sníží režie získávání zámků To je zvláště důležité v případě RAC, kde je tato režie poměrně vysoká.
- Deaktivace zámků tabulky také zabrání vytváření indexů cizích klíčů. Jako cizí klíč je třeba indexovat, aby se zabránilo uzamčení tabulky podřízené tabulky, zatímco se s řádky manipuluje v nadřazené tabulce. Pokud tedy zakážeme zámek tabulky dohromady, indexy nejsou vyžadovány
- Je vhodnější použít alter table k deaktivaci uzamčení tabulek u některé tabulky a poté nastavit na tabulku dml_locks. Jako kdyby byl dml_locks nastaven na nulu, budeme muset instanci vrátit zpět, abychom ji znovu nastavili
- Při vložení přímého načtení přejde relace do fronty TM v režimu „X“. To zabrání jakémukoli jinému DML v průběhu přímého načítání a blokuje všechny DDL
Jak jsou implementovány zámky řádků DML
DML Row locks jsou implementovány jako kombinace následujících dvou věcí
- Zámek na úrovni řádku:Je implementován jako bajt zámku v záhlaví každého řádku a ITL (seznam zainteresovaných transakcí) v každém bloku dat nebo indexu. Ty se nikde neukládají do mezipaměti a protože jsou uloženy v bloku samotném ne v omezeném SGA, je tento mechanismus zamykání pomocí oracle masivně škálovatelný
- Transakční zámky:Jsou implementovány jako TX Enqueue
Bajt zámku ukazuje na záznam ITL v bloku a Všechny záznamy ITL pro transakci ukazuje na TX Enqueue, který nakonec určuje, zda je transakce potvrzena nebo odvolána. Číšníci budou čekat na zámek transakce
Příklad
- Transakce A chce aktualizovat řádky 2 a 3 v bloku. Přidělí ITL (seznam zainteresovaných transakcí). Transakce přistupuje k řádku 2 a 3 a vidí bajt zámku. Pokud je bajt zámku nula, není uzamčen. Transakce aktualizuje řádek 3 , 3
- Nyní začíná transakce B a chce aktualizovat řádky 1 . Přidělí ITL (seznam zainteresovaných transakcí). Transakce přistupuje k řádku 1 a vidí bajt zámku. Pokud je bajt zámku nula, není uzamčen. Transakce aktualizuje řádek 1
- Nyní chce transakce aktualizovat řádek 2. Přistoupí k řádku a zjistí, že je uzamčen, protože bajt zámku nebude nula. Podívá se do ITL, který drží zámek. Provede ITL cleanout, aby zjistil, zda je transakce aktivní nebo neaktivní. V tomto případě zjistí, že transakce A je aktivní. Transakce B tedy musí čekat na transakci A, aby se mohla vrátit zpět nebo potvrdit. Transakce B bude čekat na vyžádání TX Enqueue, kterou transakce A drží ve výhradním režimu
Co je seznam zainteresovaných transakcí (ITL)
Když chce relace upravit blok, musí v bloku přidělit ITL. ITL je datová struktura v hlavičce bloku, která obsahuje mnoho slotů, které transakce zabírá. Je definován parametrem INITRANS a MAXTRANS při vytváření tabulky. Počáteční počty slotů jsou vytvořeny podle INITTRANS a dynamicky rostou na maximum MAXTRANS
Co je transakce?
Když se relace aktualizuje/vymaže/vloží , spustí se transakce. Je dokončeno, když dojde k potvrzení nebo vrácení. Transakce je identifikována pomocí identifikátoru transakce (XID). Transakce identifikuje se skládá ze tří částí
- Vrátit zpět nebo vrátit číslo segmentu
- Číslo slotu tabulky transakcí
- Pořadí nebo číslo zalomení
XID=usn#.slot#.wrap#
Každý blok ITL bude obsahovat XID
Čištění ITL znamená vyhledat XID v ITL a na základě toho prohledat segmenty vrácení zpět a vyhledat tabulku transakcí a číslo zábalu pro kontrolu aktivity transakce.
Můžeme použít níže uvedený příkaz k výpisu jakéhokoli rollback segmentu
Alter system dump undo header
Každá aktivní transakce může být viděna v v$transaction table
vyberte addr, xidusn, xidslot, xidsqnfrom v$transaction;ADDR XIDUSN XIDSLOT XIDSQN-------- ---------- ---------- --- -------3C485875 50 5 3000
Identifikátor transakce (XID) lze také získat ve vlastní relaci pomocí
vyberte dbms_transaction.local_transaction_id z dual;
Čekání na TX enq bude vidět ve v$session_wait
P1:Název|režim
P2:rbs3|wrap#
P3:slot#
Shrnutí zámků řádků DML
První DML v relaci, kde transakce ještě neexistuje, implicitně vytvoří transakci.
- Bude přiřazeno číslo segmentu zpět, blok a zalomení
- Dojde k vytvoření instance fronty TX
Když je identifikován řádek, který má být upraven, relace provede záznam v ITL bloku dat a přiřadí jej k transakci
- USN/SLOT/WRAP bude zapsán do ITL slotu, čímž se tento slot vyhradí pro aktuální transakci
- Řádek se uzamkne nastavením bajtu zámku v adresáři řádku tak, aby ukazoval na slot ITL aktuální transakce.
Jak TM, tak TX Enqueue lze vidět ve V$lock
- Typ identifikuje TM nebo TX
- ID1 a ID2 mohou obsahovat další informace, ale jsou kontextově citlivé s ohledem na frontu TYPE
- Pro TM enqueue je ID1 OBJECT_ID uzamčeného objektu, na který lze odkazovat v DBA_OBJECTS, a ID2 je vždy 0
- U TX Enqueue ID1 a ID2 podrží číslo segmentu zpět, číslo slotu a obal
Podrobný příklad pro vysvětlení fungování zámků Oracle
- Vytvořte fiktivní tabulku
Vytvořte tabulku z j jako select * z dba_objects kde rownum <3;Tabulka vytvořena Vytvořte tabulku z j1 jako select * z dba_objects kde rownum <3;Table created
- Relace A
Pro aktualizaci vyberte * z j;
Podívejme se, co je přítomno ve v$lock
SQL> vyberte odlišnou stranu z v$mystat; SID----------2125SQL> vyberte * z v$lock, kde sid=2125;ADDR KADDR SID TY - ID1 --- ID2 --------------------------- ------------- ---------- ----------- ---------- ----- ----- Žádost o blok Ctime ---------- ---------- ---------- 00000006B5D9D0D0 00000006B5D9D148 2125 TX 2883613 16425600 60 44 0ffffff7DA4B360 FFFFFFFFF7DA4B3C0 2125 TM 21488781 0 30 44 0
Tak to vidíme zde
Je vytvořen zámek tabulky DML Oracle
TX (transaction lock) je vytvořen
- Začněme relaci B
SQL>Vyberte * z j1 pro aktualizaci;SQL> vyberte odlišné sid z v$mystat; SID----------2302SQL> vyberte * z v$lock, kde sid=2302;ADDR KADDR SID TY - ID1 --- ID2 ------ - - - - ------ ------------- ---------- ----------- ---------- ----- ----- Žádost o blok Ctime ---------- ---------- ---------- 00000006AF7FF910 00000006AF7ff988 2302 TX 2949148 16884039 60 10 0FFFFFFFFFF7DA4B360 FFFFFFFFFF7DA4B3C0 2302 TM 33544 0 30 10 000000006DC289D60 00000006DC289DB8 2302 AE 15062272 0 40 106 0
Tak to vidíme zde
Je vytvořen zámek tabulky DML
TX (transaction lock) je vytvořen
Nyní to zkusíme udělat
Pro aktualizaci vyberte * z j;
Toto bude viset
- Začněte další relaci k analýze problému
Pokud vidíte podrobnosti relace sid =2032 ve V$lock
vyberte * z v$lock kde sid=2302;ADDR KADDR SID TY ID1 ID2 ----- LMODE------------------- --- ---------- -- ---------- ---------- ----------ŽÁDOST CTIME BLOCK-- -------- ---------- ---------- fffffff7da4b360 ffffffff7da4b3c0 2302 tm 33544 0 30 47 000000006dc289d60 00000006dc289db8 2302 AE 15062272 0 40 143 00000000000660608088888000. 2302 TX 2883613 16425600 0 6 7 0 FFFFFFFF7DA4B360 FFFFFFFF7DA4B3C0 2302 TM 21488781 0 30 7 0
Tučný řádek je požadavek 6 (exclusive lock ) na nějakém TX enq
Nyní můžeme použít níže uvedený dotaz k nalezení blokující relace
vyberte l1.sid, ' JE BLOKOVÁNO ', l2.sidfrom v$lock l1, v$lock l2 kde l1.block =1 a l2.request> 0a l1.id1=l2.id1and l1.id2=l2.id2SID 'ISBLOCKING' SID---------- ------------- -----------2125 BLOKUJE SE 2302
Nyní můžeme potvrdit nebo vrátit zpět relaci 2125, aby transakce B mohla pokračovat. Můžeme zabít relaci 2125 pomocí níže uvedeného příkazu také k uvolnění zámku
Změňte relaci zabíjení systému ‘2125,’;
Několik dalších doplňujících informací
Zámky TX ve v$lock neříkají informace o řádku, kde se spor nachází. Tyto věci můžeme zobrazit pomocí dotazů
Níže uvedený dotaz je třeba provést z relace, která čeká
SQL> vybrat row_wait_obj#, row_wait_file#, row_wait_block#, row_wait_row#from v$session where sid=2302ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK# ROW_WAIT_ROW#---------- --------- --------------- -------------21488781 461 81063 , 0 vyberte řádek do.wait_ob waj_název_objektu waj #, row_wait_block#, row_wait_row#,dbms_rowid.rowid_create ( 1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW# )z v$session s, dba_objects dowhere s.JECTOB_ID#_WAIT_ID do.23 OBJECT_NAME ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK# ROW_WAIT_ROW# DBMS_ROWID.ROWID_C------------- ------------- ----------- ---- ------------- ------------------J21488781 461 81063 0 ABR+SNAHNAAATid řádek =' ABR+SNAHNAAATynAAA';
Související články
Jak funguje zamykání Oracle
Jak najít podrobnosti o relaci v databázi Oracle
Důležitá kontrola stavu databáze
Dotazy k rozhovoru dba aplikací Oracle
Dotazy na kontrolu zámků v databázi Oracle
oracle dba otázky k rozhovoru
Doporučené kurzy
Níže jsou uvedeny některé z doporučených kurzů, které si můžete zakoupit, pokud se chcete dostat o krok dále
Níže jsou uvedeny odkazy na některé kurzy
Oracle DBA 11g/12c – Správa databáze pro Junior DBA :Tento kurz je vhodný pro lidi, kteří začínají jako Junior DBA nebo aspirují na Oracle DBA. To vám umožní dobře porozumět úlohám zálohování a obnovy a obecné správy
Oracle Database:Oracle 12C R2 RAC Administration :Tento kurz se zabývá instalací a správou Oracle RAC. Dobrý kurz pro Oracle DBA, kteří chtějí upgradovat své dovednosti pro Oracle RAC
Oracle Data Guard:Správa databáze pro Oracle 12C R2 :Tento kurz se zabývá instalací a správou Oracle Dataguard. Dobrý kurz pro Oracle DBA, kteří chtějí upgradovat své dovednosti pro Oracle Dataguard