sql >> Databáze >  >> RDS >> Oracle

Jaký je účel možnosti protokolování/nologování v Oracle

LOGGING/NOLOGGING pomáhá spravovat povolení přímého zápisu cesty, aby se omezilo generování REDO a UNDO. Je to jeden z několika způsobů, jak kontrolovat křehkou rovnováhu mezi obnovitelností a výkonem.

Základní informace o architektuře Oracle

ZNOVU je to, jak Oracle poskytuje odolnost, "D" v ACID. Když je transakce potvrzena, změny nemusí být nutně uloženy úhledně v datových souborech. To udržuje věci rychlé a umožňuje procesům na pozadí zvládnout nějakou práci. REDO je popis změny. Ukládá se rychle, na více discích, v „němém“ protokolu. Změny jsou rychlé a pokud server ztratí napájení jednu mikrosekundu po návratu potvrzení, může Oracle projít protokoly REDO, aby se ujistil, že se změna neztratí.

ZPĚT pomáhá Oracle zajistit konzistenci, "C" v ACID. Ukládá popis, jak změnu vrátit zpět. Tyto informace může potřebovat jiný proces, který čte tabulku a potřebuje vědět, jakou hodnotu použila být ve starším časovém okamžiku.

Přímý zápis cesty přeskočte REDO, UNDO, mezipaměť a některé další funkce a přímo upravte datové soubory. Toto je rychlá, ale potenciálně nebezpečná možnost v mnoha prostředích, a proto existuje tolik matoucích možností, jak ji ovládat. Přímé zápisy cesty se vztahují pouze na INSERTS a pouze ve scénářích popsaných níže.

Pokud nic neuděláte, výchozí možnost je nejbezpečnější, LOGGING.

Mnoho způsobů, jak řídit zápisy přímé cesty

LOGGING/NOLOGGING je jednou z několika možností řízení přímého zápisu cesty. Podívejte se na tuto tabulku z AskTom abyste pochopili, jak různé možnosti spolupracují:

Table Mode    Insert Mode     ArchiveLog mode      result
-----------   -------------   -----------------    ----------
LOGGING       APPEND          ARCHIVE LOG          redo generated
NOLOGGING     APPEND          ARCHIVE LOG          no redo
LOGGING       no append       ARCHIVE LOG          redo generated
NOLOGGING     no append       ARCHIVE LOG          redo generated
LOGGING       APPEND          noarchive log mode   no redo
NOLOGGING     APPEND          noarchive log mode   no redo
LOGGING       no append       noarchive log mode   redo generated
NOLOGGING     no append       noarchive log mode   redo generated

FORCE LOGGING může potlačit všechna tato nastavení. Pravděpodobně existují nějaké další přepínače, o kterých nevím. A samozřejmě existuje mnoho omezení, která brání přímé cestě – spouštěče, cizí klíče, cluster, indexované organizované tabulky atd.

Pro indexy jsou pravidla ještě přísnější. Index bude vždy generovat REDO během příkazů DML. Pouze příkazy DDL, jako je CREATE INDEX ... NOLOGGING nebo ALTER INDEX ... REBUILD na indexu NOLOGGING nevygeneruje REDO.

Proč existuje tolik způsobů? Protože obnovitelnost je neuvěřitelně důležitá a různé role mohou mít na věc různé názory. A někdy musí rozhodnutí některých lidí převážit nad ostatními.

Vývojáři rozhodnout na úrovni příkazu, "Režim vkládání". S /*+ APPEND */ se může stát mnoho podivných věcí nápověda a vývojáři si musí pečlivě vybrat, kdy ji použijí.

Architekti rozhodnout na úrovni objektu, "Table Mode". Některé tabulky, bez ohledu na to, jak rychle do nich vývojář může chtít vkládat, musí být vždy obnovitelné.

Správci databáze rozhodnout v režimu databáze nebo tabulkového prostoru, "Archive log" a FORCE LOGGING. Možná se organizace jen nestará o obnovu konkrétní databáze, takže ji nastavte na režim NOARCHIVELOG. Nebo možná má organizace přísné pravidlo, že vše musí být obnovitelné, takže nastavte tabulkový prostor na FORCE LOGGING.



  1. Rozdíl mezi oracle DATE a TIMESTAMP

  2. Výjimka při načítání ovladače JDBC-ODBC

  3. Woocommerce získat ID produktu pomocí SKU produktu

  4. Qt MySQL -------- Nelze otevřít začleněný soubor:'mysql.h':