Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jaki jest cel opcji logowania/nologgingu w Oracle?

REJESTROWANIE/NIELOGOWANIE pomaga zarządzać włączaniem bezpośredniego zapisu ścieżki w celu zmniejszenia generowania REDO i UNDO. Jest to jeden z kilku sposobów kontrolowania delikatnej równowagi między odzyskiwalnością a wydajnością.

Informacje ogólne o architekturze Oracle

PONÓW w ten sposób Oracle zapewnia trwałość, „D” w ACID. Kiedy transakcja jest zatwierdzona, zmiany niekoniecznie są starannie przechowywane w plikach danych. Dzięki temu wszystko działa szybko i procesy w tle mogą zająć się pewną pracą. REDO to opis zmiany. Jest on szybko przechowywany na wielu dyskach w „głupie” dzienniku. Zmiany są szybkie, a jeśli serwer straci moc jedną mikrosekundę po zwróceniu zatwierdzenia, Oracle może przejrzeć dzienniki REDO, aby upewnić się, że zmiana nie zostanie utracona.

COFNIJ pomaga Oracle zapewnić spójność, „C” w ACID. Przechowuje opis, jak cofnąć zmianę. Ta informacja może być potrzebna przez inny proces, który czyta tabelę i musi wiedzieć, jakiej użyła wartość być w starszym momencie.

Bezpośredni zapis ścieżki pomiń REDO, COFNIJ, pamięć podręczną i niektóre inne funkcje oraz bezpośrednio modyfikuj pliki danych. Jest to szybka, ale potencjalnie niebezpieczna opcja w wielu środowiskach, dlatego istnieje tak wiele mylących opcji jej kontrolowania. Bezpośrednie zapisy ścieżki dotyczą tylko WSTAWEK i tylko w scenariuszach opisanych poniżej.

Jeśli nic nie zrobisz, opcja domyślna jest najbezpieczniejsza, REJESTROWANIE.

Wiele sposobów kontrolowania bezpośredniego zapisu ścieżki

REJESTROWANIE/NIELOGOWANIE to jedna z kilku opcji kontrolowania bezpośredniego zapisu ścieżki. Spójrz na tę tabelę z Zapytaj Toma aby zrozumieć, jak różne opcje współpracują ze sobą:

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 może unieważnić wszystkie te ustawienia. Prawdopodobnie istnieją inne przełączniki, o których nie wiem. I oczywiście istnieje wiele ograniczeń, które uniemożliwiają bezpośrednią ścieżkę - wyzwalacze, klucze obce, klaster, tabele zorganizowane według indeksu itp.

Zasady są jeszcze bardziej restrykcyjne dla indeksów. Indeks zawsze generować REDO podczas instrukcji DML. Tylko instrukcje DDL, takie jak CREATE INDEX ... NOLOGGING lub ALTER INDEX ... REBUILD na indeksie NOLOGGING nie wygeneruje REDO.

Dlaczego jest tak wiele sposobów? Ponieważ odzyskiwanie jest niezwykle ważne, a różne role mogą mieć różne poglądy na tę sprawę. A czasami decyzje niektórych osób muszą mieć pierwszeństwo przed innymi.

Programiści zdecyduj na poziomie wyciągu, „Tryb wstawiania”. Wiele dziwnych rzeczy może się zdarzyć z /*+ APPEND */ wskazówka, a programiści muszą starannie wybrać, kiedy z niej skorzystać.

Architekci decydować na poziomie obiektu „Tryb tabeli”. Niektóre tabele, niezależnie od tego, jak szybko programista może chcieć je wstawić, zawsze muszą być możliwe do odzyskania.

Administratorzy bazy danych zdecydować w trybie bazy danych lub przestrzeni tabel, "Dziennik archiwum" i FORCE LOGGING. Może organizacji po prostu nie zależy na odzyskaniu określonej bazy danych, więc ustaw ją w trybie NOARCHIVELOG. A może organizacja ma ścisłą zasadę, że wszystko musi być możliwe do odzyskania, więc ustaw obszar tabel na FORCE LOGGING.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Radzenie sobie z dużymi danymi JSON zwracanymi przez Web API

  2. Jak utworzyć plik login.sql dla SQLcl

  3. Łączenie się z bazą danych Oracle przez C#?

  4. Czas zapytania o połączenie danych ODBC Excel potrzebny do odświeżenia każdego zapytania

  5. Wykorzystanie kolumny typu BLOB w Oracle APEX