So überprüfen Sie den Speicher und die Speichergröße der Oracle-Datenbank
Bei bestimmten Gelegenheiten werde ich nach einem geschätzten Ressourcenbedarf für eine Datenbank gefragt, die für eine Entwicklungsumgebung oder als Standby-Datenbank eingerichtet wird. Im Folgenden sind meine Methoden zum Berechnen des Speichers und der Speichergröße basierend auf der vorhandenen Produktionsdatenbank aufgeführt. Die Berechnung der Speichergröße ist für UNIX und LINUX gedacht.
1. Ermitteln Sie den geschätzten Speicherbedarf einer vorhandenen Datenbank.
—- Abrufen des SGA-Footprints einer Datenbankinstanz:
SQL> SELECT sum(value)/1024/1024 „TOTAL SGA (MB)“ FROM v$sga;
—- Ermitteln des aktuellen PGA-Verbrauchs einer Datenbankinstanz:
wählen Sie sum(pga_max_mem) / 1024 / 1024 „TOTAL MAX PGA (MB)“ aus dem v $ -Prozess;
Eine detailliertere Aufschlüsselung der PGA-Speichernutzung:
SELECT spid, program,
pga_max_mem max,
pga_alloc_mem alloc,
pga_used_mem verwendet,
pga_freeable_mem frei
VON V$PROCESS;
HINWEIS: Der resultierende Programmname ohne zugeordneten Prozessnamen (Bsp. PMON, SMON, RECO,..) ist ein Session-Prozess.
Abhängig von den Einstellungen des Init-Parameters processes kann es sein, dass die obigen Abfragen nur die aktiven Verbindungen erfassen.
—- Ermitteln des geschätzten Speicherbedarfs für die nicht verbundenen Sitzungen:
Die folgende Abfrage gibt den maximal zugewiesenen Speicher durch eine Benutzersitzung an. Wir verwenden dies, um den verbleibenden Speicherbedarf für die nicht verbundenen Prozesse zu berechnen.
select max(p.pga_max_mem)/1024/1024 „PGA MAX SPEICHER DER BENUTZERSITZUNG (MB)“
from v$process p, v$session s
where P.ADDR = S.paddr and s.username is not null;
Ermittelt die maximale Anzahl von Prozessen, die eine Oracle-Instanz verarbeiten kann.
wählen Sie name, Wert aus v$parameter
where name = ‚processes‘;
Zählen wir die Anzahl der verbundenen Sitzungen:
select count(1) from v$session
where Benutzername ist nicht null;
Ermitteln Sie die insgesamt verfügbaren Verbindungen, indem Sie die Anzahl der verbundenen Sitzungen vom Parameterwert Prozesse subtrahieren.
Der resultierende Wert wird mit dem resultierenden max zugewiesenen Speicher durch eine Sitzung multipliziert, die von der vorherigen Abfrage durchgeführt wurde.
Dies würde Ihnen dann die geschätzte Menge an Reservespeicher geben, die benötigt wird, um zusätzliche Verbindungen aufzunehmen.
GESCHÄTZTER GESAMTSPEICHERBEDARF
SGA + PGA = EST SPEICHERBEDARF FÜR AKTUELLE VERBINDUNGEN
SGA + PGA + UNVERBUNDENE SITZUNGEN = MAXIMALER SPEICHERBEDARF BEI MAXIMALER PROZESSAUSLASTUNG
wobei:
Unverbundene Sitzungen (MB) = (Prozesse – verbundene Sitzungen) * pga maximaler Speicher der Benutzersitzung
2. Ermitteln Sie die geschätzten Speichergrößenanforderungen einer Datenbank.
Das folgende Verfahren zur Bestimmung der Speichergröße ist für UNIX- und LINUX-Umgebungen gedacht. Klicken Sie bei Windows einfach mit der rechten Maustaste und wählen Sie die Eigenschaften für jeden Laufwerksbuchstaben aus, der durch die Ergebnisse der Abfragen angegeben wird.
@primary server,
— Kopieren Sie alle resultierenden Befehle, fügen Sie sie in ein Shell-Skript ein und führen Sie sie auf dem Primärserver aus, um die Größe des Einhängepunkts zu ermitteln
wählen Sie eindeutig ‚df -k ‚|/a.MTPOINT MOUNT_POINT
von ( select substr(DATEINAME,0,instr(DATEINAME,’/‘,1,2)-1) MTPOINT
von dba_data_files
union
select substr(DATEINAME,0,instr(DATEINAME,’/‘,1,2)-1) MTPOINT
aus dba_temp_files
union
select substr(MEMBER,0,instr(MEMBER,’/‘,1,2)-1) MTPOINT
von v$logfile
union
select substr(NAME,0,instr(NAME,’/‘,1,2)-1) MTPOINT
von v$controlfile
) ein;
— Fragen Sie alle Parameterdateiziele ab und stellen Sie fest, ob sie einen anderen Pfad als der Einhängepunkt der Datendatei oder das Verzeichnis ORACLE_BASE haben.
Ermitteln Sie die Größe des Einhängepunkts der Dateiziele
Wählen Sie name, Wert
aus v$parameter
where (regexp_like(name, ‚^log_archive_(Ziel | Ziel \_())$‘, ‚i‘) oder Name wie ‚%dump_dest‘ oder Name wie ‚%file_dest‘ oder Name wie ‚diag%dest =’utl_file_dir‘) und der Wert ist nicht null;
— Abfragen der Datenbankverzeichnisse nach Einhängepunkten
wählen Sie ‚df -k ‚|/substr(DIRECTORY_PATH,0,instr(DIRECTORY_PATH,’/‘,1,2)-1) MTPOINT aus dba_directories;
Eine Alternative für einen df-Befehl besteht darin, alle gültigen datenbankbezogenen Einhängepunkte in einer einzigen Zeichenfolge zu grep , um einen viel präziseren Bericht zu erhalten.
Beispiel:
$ df -k / grep -E ‚/u01|/u02|/utldir|/opt‘