sql >> Database teknologi >  >> RDS >> Oracle

27 oracle dba scripts til Oracle Database til administration og overvågning

Vi er ofte nødt til at overvåge Oracle-databasesessionen af ​​ydeevneårsager, kontrollere for låse, hente placering af datafiler, gentage filer, få oplysninger om db_links . Her er de bedste oracle dba-scripts  til Oracle  Database til administrations- og overvågningsformål

Script til at finde siden af ​​den session, du er logget på som

vælg distinct(sid) fra v$mystat;

Script til at se alle aktive sessioner

vælg brugernavn,osuser,sid,serial#, program,sql_hash_value,modul fra v$session, hvor brugernavn ikke er nulland status ='AKTIV' og modul ikke er null;

Script til at se tjenere

indstil linjestørrelse 1000column waiting_session heading 'WAITING|SESSION'column holding_session overskrift 'HOLDING|SESSION'column lock_type format a15column mode_held format a15column mode_requested format a15selectwaiting_session,holding_session,/requeheld_lock,holding_session,/i 

Script til, hvordan aktiv transaktion i databasen

col RBS format a15 trunccol SID format 9999col USER format a15 trunccol COMMAND format a60 trunccol status format a8 truncselect r.name "RBS", s.sid, s.serial#, s.username "USER", t.status, t.cr_get, t.phy_io, t.used_ublk, t.noundo,substr(s.program, 1, 78) "KOMMAND"fra v$session s, v$transaction t, v$rollname rwhere t.addr =s. taddrand t.xidusn =r.usnorder af t.cr_get, t.phy_io/

Script til at overvåge de langvarige forespørgsler

indstil linjestørrelse 1000selectOPNAME,sid,SOFAR/TOTALWORK*100,to_char(start_time,'dd-man-yy hh:mi') startede,elapsed_seconds/60,time_maining/60fromv$session_longopswheresid =&sid

Script til at se alle låseobjekter

set term on;set lines 130;column sid_ser format a12 heading 'session,|serial#';column username format a12 heading 'os user/|db user';column process format a9 heading 'os|process';column spid format a7 overskrift 'trace|number';column owner_object format a35 heading 'owner.object';column locked_mode format a13 heading 'locked|mode';column status format a8 heading 'status';selectsubstr(to_char(l.session_id)| |','||to_char(s.serial#),1,12) sid_ser,substr(l.os_user_name||'/'||l.oracle_username,1,12) username,l.process,p.spid, substr(o.owner||'.'||o.object_name,1,35) owner_object,decode(l.locked_mode,1,'No Lock',2,'Row Share',3,'Row Exclusive',4 ,'Share',5,'Share Row Excl',6,'Exclusive',null) locked_mode,substr(s.status,1,8) statusfromv$locked_object l,all_objects o,v$session s,v$process pwherel .object_id =o.object_idand l.session_id =s.sidand s.paddr =p.addrand s.status !='KILLED'/

Script til at se waits-begivenheder

indstil linjestørrelse 1000kolonne sid format 999kolonne brugernavn format a15 wrappedcolumn spid format a8column hændelsesformat a30 wrappedcolumn osuser format a12 wrappedcolumn maskine format a25 wrappedcolumn programformat a30 wrappedselect sw.sid,sid.sid, username osuser, sw.event hændelse, s.machine machine, s.program program fra v$session_wait sw, v$session s, v$process pwhere s.paddr =p.addrand hændelse ikke i ('pipe get','client message' )og sw.sid =s.sid/

Script til at se bestemte sessionsventer

vælg sid,seq#,wait_time,hændelse,seconds_in_wait,stat fra v$session_wait hvor sid in (&sid);

Script til at se alle brugere, der har adgang til det pågældende objekt

kolonneobjektformat a30kolonneejerformat a10vælg * fra v$access hvor objekt='&objektnavn'/

Script giver information om brugersessioner, der låser et bestemt objekt

indstil linjestørrelse 1000kolonne programformat a15kolonne objektformat a15select substr(brugernavn||'('|| se0.sid||')',1,5) "Bruger Session",substr(ejer,1,5) "Objekt Ejer",substr(object,1,15) "Object",se0.sid,substr(serial#,1,6) "Serial#",substr(program,1,15) "Program",logon_time "Logon Time" ,process "Unix Process"fra v$access ac, v$session se0where ac.sid =se0.sidand Object ='&PAKKE'bestil af logon_time,"Object Owner","Object"/

Script til at se forklaringsplanen i Oracle for sætningen i bibliotekets cache

indstil linjestørrelse 9999kolonne QUERY format a999sæt sider 250sæt hoved offset verify offselect id,lpad(' ',2*(depth-1)) || dybde ||'.' || nvl(position,0) || ' '|| operation || ' '|| muligheder || ' '|| objektnavn ||' '||'cost='|| to_char(cost)||' '|| optimizer "QUERY" fra v$sql_planwhere hash_value =&sql_hash_valueorder by child_number,id/

Script til at finde serverplacering

vælg nvl(brugernavn,'ORACLE SHADOW PROCESS'),maskine frav$session, hvor brugernavn er nulland rownum <2/

Script til at se brugen af ​​topsorteringssegmentet

col sid format 999999col spid format a6col tablespace format a10col brugernavn format a25col noexts format 9999 head EXTScol proginfo format a25 trunccol mbused format 999.999.90col status format a1 truncset verify offselect * from (select sids. ,s.sql_hash_value sesshash,u.SQLHASH sorthash,s.username,u.tablespace,sum(u.blocks*p.value/1024/1024) mbused ,sum(u.extents) noexts,u.segtype,s.module || ' - ' || s.program proginfo fra v$sort_usage u, v$session s, v$parameter p, v$process bhvor u.session_addr =s.saddrand p.name ='db_block_size'og b.addr =s .paddrgroup efter s.sid,s.status,b.spid,s.sql_hash_value,u.sqlhash,s.username,u.tablespace,u.segtype,s.module || ' - ' || s.programorder by 8 desc,4)hvor rækkenummer <11;

Script til at kontrollere den sidst analyserede for tabellerne i sql-sætningen

set lin 1000set verify offcol ejer format a15col objektnavn format a25col objekttype format a12col "SIDST ANALYSERET" format a13 vælg do.OWNER,do.OBJECT_NAME,OBJECT_TYPE,decode (OBJECT_TYPE,'TABLE'  ,_Select LAST hvor dbaANALYZEDs do.owner og TABLE_NAME=do.object_name)  ,'INDEX'  , (Vælg LAST_ANALYZED fra dba_indexes, hvor ejer=do.owner og INDEX_NAME=do.object_name) ,'UNKNOWN') "SIDSTE ANALYSERET",STATUS fra '  DOWN_where_OBJ (JECTS_where_OBJ) TABLE','INDEX')og    (OWNER,OBJECT_NAME) i (vælg OBJECT_OWNER,OBJECT_NAME fra V$SQL_PLAN hvor HASH_VALUE=&1)/

For at kontrollere bibliotekets cachelås og pin

select /*+ all_rows */ w1.sid waiting_session,h1.sid holding_session,w.kgllktype lock_or_pin,w.kgllkhdl address,decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Del', 3, 'Eksklusiv', 'Ukendt') mode_held,decode(w.kgllkreq, 0, 'Ingen', 1, 'Nul', 2, 'Del', 3, 'Eksklusiv', 'Ukendt') mode_requestedfrom dba_kgllock w, dba_kgllock h, v$session w1, v$session h1where(((h.kgllkmod !=0) og (h.kgllkmod !=1)and ((h.kgllkreq =0) eller (h.kgllkreq =1)))og(((w.kgllkmod =0) eller (w.kgllkmod=1))og ((w.kgllkreq !=0) og (w.kgllkreq !=1))))og w.kgllktype =h.kgllktypeand w.kgllkhdl =h.kgllkhdland w.kgllkuse =w1.saddrand h.kgllkuse =h1.saddr/

For at kontrollere kontrolfilplacering

col name format a60 heading "Control Files"vælg navn fra sys.v_$controlfile/

Sådan kontrolleres gentag-logplacering

col Grp format 9999col member format a50 heading "Online REDO Logs"col File# format 9999col name format a50 heading "Online REDO Logs"break on Grpselect group#,memberfrom sys.v_$logfile/

For at kontrollere datafilens placering

col Tspace format a25col status format a3 heading Stacol Id format 9999col Mbyte format 999999999col name format a50 heading "Database Data Files"col Læser format 99.999.999col Skriver format 99.999.999pause på 'Reportcompute(MB) label' F.file_id Id,F.file_name name,F.bytes/(1024*1024) Mbyte,decode(F.status,'AVAILABLE','OK',F.status) status,F.tablespace_name Tspacefrom sys.dba_data_files Forer by tablespace_name;

Tjekker automatisk forlængelse til/fra for Tablespaces:

vælg substr(filnavn,1,50), AUTOEXTENSIBLE fra dba_data_files(OR)SQL> vælg tablespace_name,AUTOEXTENSIBLE fra dba_data_files;

Sådan kontrollerer du understregningsparametre

VÆLG X.KSPPINM NAVN, DECODE(BITAND(KSPPIFLG/256, 1), 1, 'TRUE', 'FALSE') SESMOD,DECODE( BITAND(KSPPIFLG/65536, 3), 1, 'IMMEDIATE', 2 , 'UDSETT', 3, 'IMMEDIATE', 'FALSE' ) SYSMOD,KSPPDESC DESCRIPTIONFROM SYS.X_$KSPPI X WHERE X.INST_ID =USERENV('INSTANCE') ANDTRANSLATE(KSPPINM,'_','#') LIKE ' #%' BESTIL EFTER 1;

Sådan viser du DBA-links

indstil liniestørrelse 128 sider 1000col ejerformat a15col db_link format a15col brugernavn format a20col værtsformat a15col navn format a30Prompt Database Links:vælg ejer, db_link, brugernavn, vært fra dba_db_links sorter efter ejer,db_link,username Link/Prompset Synlecttinc ejer, db_link fra dba_synonymer hvor db_link ikke er null/Spørg Snapshot Links:vælg ejer, navn, replace(master_link,'@','') db_link fra dba_snapshotshvor master_link ikke er null/

Identifikation af segmentet ved DBA_extents ved hjælp af fil-id og blok

SELECT segment_name, segment_typeFROM dba_extentsWHERE file_id = OG MELLEM blok_id og blok_id + blokke - 1;

Angivelse af job, der kører fra DBMS_SCHEDULER

INDSTIL OVERSKRIFT ONSET LINJESTØRRELSE 300SÆT SIDESTØRRELSE 60KOLUMNE ejer FORMAT A20VÆLG ejer,job_navn,running_instance,elapsed_timeFRA dba_scheduler_running_jobsORDER BY ejer, job_name/

Angivelse af DBMS_SCHEDULER JOB-oplysninger

SET OVERSKRIFT ONSET LINJESTØRRELSE 300SET SIDESTØRRELSE 60COLUMN ejer FORMAT A20COLUMN next_run_date FORMAT A35SELECT ejer,job_name,enabled,job_class,next_run_dateFROM dba_scheduler_jobsORDER BY ejer, job_name/

Sådan får du historisk plan for SQL_ID'et fra AWR

INDSTIL SIDESTØRRELSE 60SÆT LINJESTØRRELSE 300VÆLG * FRA TABEL(dbms_xplan.display_awr('&SQL_ID'))/

Sådan laver du venteanalyse af databasen

vælg begivenhed, tilstand, tæl(*) fra v$session_wait gruppe efter begivenhed, tilstandsrækkefølge efter 3 desc;

Sådan finder du High Buffer får sql 

vælg * fra (SELECT address, hash_value,buffer_gets, executions, buffer_gets/executions "Gets/Exec",sql_textFROM v$sqlareaWHERE buffer_gets> 500000 and executions>0ORDER BY 3 desc) hvor rækkenummer <20;

Denne liste over oracle dba-scripts til oracle-database til overvågningsformål er ikke komplet. Der er mange flere scripts til overvågning. Jeg vil præsentere dem i efterfølgende indlæg

Læser også
Hash Join i Oracle:Tjek dette indlæg for den detaljerede beskrivelse af Hash Join i Oracle, hvordan det er forskelligt fra Nested Loop Join i Oracle
Oracle Table-låse:Oracle Enqueue, Rækkeniveau &DDL,tabel låse, hvordan oracle-låse fungerer, Nyttige forespørgsler til at finde ud af tjenerne og blokeringerne i oracle
v$active_session_history :Tjek mere om Active Session History, hvordan den er konfigureret, hvordan man finder ydeevneflaskehals ved hjælp af ASH, ASH-rapportgenerering, ASH-forespørgsler
https://en.wikipedia.org/wiki/Oracle_Database


  1. oracle systimestamp (sysdate) til millisekunder

  2. Oracle sql:rækkefølge efter og distinkt klausul

  3. Flere datacenteropsætninger ved hjælp af Galera Cluster til MySQL eller MariaDB

  4. DATEPART() Eksempler i SQL Server