Translation

The oldest posts, are written in Italian. If you are interested and you want read the post in English, please use Google Translator. You can find it on the right side. If the translation is wrong, please email me: I'll try to translate for you.

venerdì, ottobre 24, 2008

Perfect!

Tre! Tre è il numero perfetto.

In 3 categorie, possiamo classificare i lock:

1. Lock di tipo applicativo
2. Latch sul Dizionario Dati
3. Latch sulle strutture dati di memoria

In 3 categorie possiamo schematizzare le operazioni fatte sulla Buffer Cache:

1. Ricerca (di un blocco in memoria)
2. Modifica/Sostituzione (del blocco ricercercato al punto 1)
3. Scrittura su disco (del blocco modificato al punto 2)

In 3 categorie possiamo raggruppare le informazioni raccolte dalle viste di sistema [Lewis:

1. Persone (v$sesstat, v$session_event, v$sess_time_model)
2. Risorse (v$filestat, v$segstat, v$latch, v$event_histogram)
3. Statement (v$sql, v$sqlstats)

come 3 sono i punti di vista da cui puoi guardare le problematiche:

1. Utente/Sistema
2. Storico
3. In tempo reale

In 3 categorie possiamo raggruppare come viene speso il tempo in Oracle:

1. Prentendo un latch (spinning o sleepling)
2. Mantenendo un latch (lavoro su CPU)
3. Rilasciare un latch (lavoro su CPU)

3 sono gli statement di modifica:

1. Insert
2. Update
3. Delete

3 sono le certificazioni:

1. OCA
2. OCP
3. OCM

Ed infine, 3 sono le leggi a cui un DBA deve sottostare.

Insomma se 3 è il numero perfetto e si adatta bene ad Oracle, vuoi vedere che sotto sotto.....

=================
Update - 04/12/2008
=================

3 sono le maggiori componenti del framework [OCA-CRS-01] per la gestione del db:

1. Istanza, che deve essere gestita
2. Listenser, che consente le connessioni al DB
3. Enterprise Manager, che consente una gestione centralizzata dei database

3 sono le cose che un bravo DBA deve saper utilizzare:
1. vi
2. SQL*Plus
3. RMAN

Sono 3 gli insiemi (di directories) [OCA-ALL-01] che lo standard OFA prevede siano utilizzati per facilitare la gestione del database:

1. Uno per la raccolta dei binari
2. Uno per la raccolta dei files di amministrazione, control files e redolog (archiviati)
3. Uno per la raccolta dei datafiles

Riferimenti:
========
Conquering Oracle Latch Contention - http://www.orapub.com/
How to do Trouble-Shooting - http://www.jlcomp.demon.co.uk/
[OCA-CRS-01] Oracle Database 10g: Administrator Workshop 1, Cap4
[OCA-ALL-01] Oracle Database 10g Certification All-in-One Exam Guide, Parte1, Cap2

martedì, ottobre 14, 2008

Too Many Secrets: Introduzione

A grandi linee possiamo dividere un database in 2 parti distinte: quella su file system (che prende il nome di database) e quella in memoria: la SGA.

La SGA è a sua volta, divisa in 2: processi di background (pmon, smon, etc) e pools (di buffer) tra cui troviamo la Buffer Cache, lo Shared Pool ed il Log Buffer (esistono altre aree in SGA, ma per semplicità, le ometto) [cosmus01].

Alcune domande.

  • La ricerca in Buffer Cache come avviene?
  • Ok, lo statement è nello Shared Pool, ma il suo piano di esecuzione dove lo trovo? Visto che "select * from dual" è diverso da "SELECT * FROM DUAL", dove trovo queste informazioni? Ma sono proprio statement diversi? In fondo a parte la differenza di capitalizzazione, sono proprio la stessa cosa.
  • Bhé si, le "entry di redo" sono scritte in Log Buffer, ma come fa Oracle ad essere sicuro che che la scrittura sia avvenuta?

Ciò che dobbiamo approfondire è quindi:

  1. Buffer Cache

  2. Shared Pool

  3. Log Buffer

In realtà, esiste un punto 0 che va considerato e senza il quale non è possibile proseguire:

  1. Latch
[cosmus01] Sul sito Kosmus, esiste un dettaglio sull'architettura di Oracle 9i. 10g modifica alcune cose aggiungendo ad esempio nuovi processi di backgroud. Tuttavia, tali modifiche non cambiano quanto detto.