hur man kontrollerar Oracle Databasminne och lagringsstorlek
vid vissa tillfällen kommer jag att bli ombedd att uppskatta resurskraven för en databas som kommer att ställas in för en utvecklingsmiljö eller som en standby-databas. Följande är mina metoder för att beräkna minnes-och lagringsstorleken baserat på den befintliga produktionsdatabasen. Beräkningen på lagringsstorleken är avsedd för UNIX och LINUX.
1. Få det uppskattade minnesavtrycket för en befintlig databas.
—- få SGA-fotavtrycket för en databasinstans:
SQL> välj summa (värde)/1024 / 1024″ TOTAL SGA (MB)”från V$sga;
—- hämta den aktuella pga-förbrukningen för en databasinstans:
välj summa (pga_max_mem) / 1024 /1024″ TOTAL MAX PGA (MB) ” från V$process;
en mer detaljerad uppdelning av PGA-minnesanvändning:
välj spid, program,
pga_max_mem max,
pga_alloc_mem alloc,
pga_used_mem används,
pga_freeable_mem gratis
från V$PROCESS;
Obs: det resulterande programnamnet har inget associerat processnamn (ex. PMON, SMON, RECO,..) är en sessionsprocess.
beroende på inställningarna för init-parameterprocesserna kan det vara så att frågorna ovan bara fångar de aktiva anslutningarna.
—- få det uppskattade minneskravet för de oanslutna sessionerna:
frågan nedan ger det maximala tilldelade minnet av en användarsession. Vi använder detta för att beräkna de återstående minneskraven för de okopplade processerna.
välj max (p. pga_max_mem) / 1024 / 1024 ”PGA MAX minne för användarsession (MB)”
från V$process p, v$session s
där P. ADDR = S. paddr och s. användarnamn är inte null;
få det maximala antalet processer som en Oracle-instans kan hantera.
välj namn, värde från V$parameter
där name = ’processer’;
låt oss räkna antalet anslutna sessioner:
välj räkna (1) från V$session
där användarnamnet inte är null;
få de totala tillgängliga anslutningarna genom att subtrahera antalet anslutna sessioner från processparametervärdet.
det resulterande värdet multipliceras med det resulterande maximala tilldelade minnet med en session som gjorts av föregående fråga.
detta skulle då ge dig den beräknade mängden reservminne som behövs för att rymma ytterligare anslutningar.
uppskattat totalt minneskrav
SGA + PGA = est-minneskrav för aktuella anslutningar
SGA + PGA + oanslutna sessioner = est-minneskrav vid maximalt PROCESSUTNYTTJANDE
var:
oanslutna sessioner (MB) = (processer – anslutna sessioner) * pga max minne för användarsession
2. Få de beräknade lagringskraven för en databas.
proceduren nedan för att bestämma lagringsstorleken är avsedd för UNIX och LINUX-miljö. När det gäller windows, högerklicka bara och välj egenskaperna på var och en av drivbokstäverna som ges av resultaten av frågorna.
@primär server,
— kopiera och klistra in varje resulterande kommandon på ett skalskript och kör i primär server för att få monteringspunktstorleken
välj unik ’df-k’ / / a.MTPOINT MOUNT_POINT
från ( Välj substr(filnamn,0,instr (filnamn,’/’,1,2)-1) MTPOINT
från dba_data_files
union
välj substr (filnamn, 0, instr(filnamn,’/’,1,2)-1) MTPOINT
från dba_temp_files
union
välj substr (medlem, 0, instr (medlem,’/’,1,2)-1) MTPOINT
från V$loggfil
union
välj substr (namn, 0, instr (Namn,’/’,1,2)-1) MTPOINT
från V$controlfile
) a;
— fråga alla parameterfilens destination och avgöra om de har en annan sökväg från datafilens monteringspunkt eller ORACLE_BASE dir.
hämta monteringspunktstorleken för fildestinationer
välj namn, värde
från V$parameter
var (regexp_like(namn, ’^log_archive_(dest|dest\_())$’, ’i’) eller namn som ’%dump_dest’ eller namn som ’%file_dest’ eller namn som ’diag%dest’ eller namn =’utl_file_dir’) och värdet är inte null;
— sök i databaskatalogerna för monteringspunkter
välj ’ DF-k ’||substr(DIRECTORY_PATH,0,instr(DIRECTORY_PATH,’/’,1,2)-1) MTPOINT från dba_directories;
ett alternativ för ett DF-kommando är att grep all giltig databasrelaterad monteringspunkt i en enda sträng för att få en mycket mer kortfattad rapport.
exempel:
$ DF-k / grep-e ’/ u01 / / u02 / / utldir / / opt’