Často potřebujeme monitorovat relaci databáze Oracle z důvodu výkonu, zkontrolovat zámky, zjistit umístění datových souborů, znovu provést soubory, získat informace o db_links. Zde jsou nejlepší skripty Oracle dba pro Oracle databázi pro účely správy a monitorování
Skript pro nalezení strany relace, pod kterou jste přihlášeni
vyberte odlišné(sid) z v$mystat;
Skript pro zobrazení všech aktivních relací
vyberte uživatelské jméno,osuser,sid,serial#, program,sql_hash_value,module z v$session, kde uživatelské jméno není nulland status ='ACTIVE' a modul není null;
Skript pro zobrazení číšníků
set linesize 1000sloupce wait_session header ‘WAITING|SESSION’sloupec hold_session title ‘HOLDING|SESSION’formát sloupce lock_type a15column mode_held format a15sloupce mode_requested format a15selectwaiting_session,holding_session,lock_mode2,lock_mode,lock_id,zamknutoSkript pro aktivní transakci v databázi
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) "COMMAND" z v$session s, v$transaction t, v$rollname r kde t.addr =s. taddrand t.xidusn =r.usnorder od t.cr_get, t.phy_io/Skript pro sledování dlouho běžících dotazů
nastavit velikost řádku 1000selectOPNAME,sid,SOFAR/TOTALWORK*100,to_char(start_time,'dd-mon-yy hh:mi') begin,elapsed_seconds/60,time_remaining/60fromv$session_longopswheresid =&sidSkript pro zobrazení všech objektů zámku
Skript pro zobrazení událostí čekání
Skript pro zobrazení konkrétních čekání relace
vyberte sid,seq#,wait_time,event,seconds_in_wait,state from v$session_wait kde sid in (&sid);Skript pro zobrazení všech uživatelů přistupujících k těmto objektům
formát objektu sloupce a30formát vlastníka sloupce a10select * from v$access where object='&object_name'/Skript poskytuje informace o uživatelských relacích zamykání konkrétního objektu
Skript pro zobrazení plánu vysvětlení v Oracle pro příkaz v mezipaměti knihovny
Skript pro vyhledání umístění serveru
vyberte nvl(username,'ORACLE SHADOW PROCESS'),stroj zv$session, kde uživatelské jméno je nulland rownum <2/Skript pro zobrazení segmentu s nejvyšším řazením
formát col sid 999999col spid formát a6col formát tabulkového prostoru a10col formát uživatelského jména a25col formát noexts 9999 head EXTScol formát proginfo a25 trunccol formát mbused 999 999,90col stavový formát a1 truncset ověřit offselect * from (select s.sid.sid.s. ,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 proginfofrom v$sort_usage u, v$session s, v$parameter p, v$process bwhere u.session_addr =s.saddrand p.name ='db_block_size'and b.addr =s .paddrgroup by 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) kde rownum <11;Skript pro kontrolu naposledy analyzovaných tabulek v příkazu SQL
set lin 1000set ověřit offcol formát vlastníka a15col formát název_objektu a25col formát typ_objektu a12col "LAST ANALYZED" formát a13 vyberte do.OWNER,do.OBJECT_NAME,OBJECT_TYPE,decode (OBJECT_TYPE,'TABLE' ,=Vyberte LAST_ANALYZED z tabulky vlastníka do.owner a TABLE_NAME=do.object_name) ,'INDEX' , (Vyberte LAST_ANALYZED z dba_indexes, kde owner=do.owner a INDEX_NAME=do.object_name) ,'NEZNÁMÝ') "LAST ANALYZED",STATUS from_TYPE (' DBA_OBJECTS dowhere TABLE','INDEX')a (OWNER,OBJECT_NAME) v (vyberte OBJECT_OWNER,OBJECT_NAME z V$SQL_PLAN kde HASH_VALUE=&1)/Kontrola zámků a připnutí mezipaměti knihovny
select /*+ all_rows */ w1.sid wait_session,h1.sid holding_session,w.kgllktype lock_or_pin,w.kgllkhdl address,decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 'Unknown') mode_held,decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', 'Unknown') mode_requestedfrom dba_kgllock w, dba_kgllock h, v$session w1, v$session h1where(((h.kgllkmod !=0) a (h.kgllkmod !=1)and ((h.kgllkreq =0) nebo (h.kgllkreq =1))) a (((w.kgllkmod =0) nebo (w.kgllkmod=1)) a ((w.kgllkreq !=0) a (w.kgllkreq !=1)))) a w.kgllktype =h.kgllktypeand w.kgllkhdl =h.kgllkhdland w.kgllkuse =w1.saddrand h.kgllkuse =h1.saddr/Kontrola umístění ovládacího souboru
formát názvu sloupce a60 nadpis "Control Files"select namefrom sys.v_$controlfile/Chcete-li zkontrolovat znovu umístění protokolu
formát col Grp 9999col členský formát a50 nadpis "Online REDO Logs"col File# formát 9999col formát názvu a50 nadpis "Online REDO Logs"přerušení na Grpselect group#,memberfrom sys.v_$logfile/Kontrola umístění datového souboru
col Tspace formát a25col stavový formát a3 nadpis Stacol Id formát 9999col Mbyte formát 999999999col formát názvu a50 nadpis "Databázové datové soubory"col Formát čtení 99,999,999col Zapíše formát 99,999,999break on reportcompute sum label on reportcompute MB report ofToselect 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 Forder by název_tabulkového_prostoru;Kontrola zapnutí/vypnutí automatického rozšíření pro tabulkové prostory:
vyberte substr(název_souboru,1,50), AUTOEXTENSIBLE z dba_data_files(OR)SQL> vyberte název_tabulkového_prostoru,AUTOEXTENSIBLE z dba_data_files;Jak zkontrolovat parametry podtržení
SELECT X.KSPPINM NAME, DECODE(BITAND(KSPPIFFLG/256, 1), 1, 'PRAVDA', 'NEPRAVDA') SESMOD,DECODE( BITAND(KSPPIFFLG/65536, 3), 1, 'IMMEDIATE', 2 , 'ODLOŽENO', 3, 'IMMEDIATE', 'FALSE' ) SYSMOD,KSPPDESC DESCRIPTIONFROM SYS.X_$KSPPI X WHERE X.INST_ID =USERENV('INSTANCE') ANDTRANSLATE(KSPPINM,'_','#') LIKE #%' ORDER BY 1;Jak zobrazit odkazy DBA
Identifikace segmentu podle DBA_extents pomocí file-id a block
SELECT segment_name, segment_typeFROM dba_extentsWHERE file_id =AND BETWEEN block_id a block_id + bloky - 1; Výpis úloh spuštěných z DBMS_SCHEDULER
SET HEADING ONSET VELIKOST ŘÁDKU 300SET VELIKOST STRÁNKY 60SLOUPCE vlastník FORMÁT A20SELECT vlastník,job_name,running_instance,elapsed_timeFROM dba_scheduler_running_jobsORDER BY owner, job_name/Výpis informací o úkolech DBMS_SCHEDULER
SET HEADING ONSET VELIKOST ŘÁDKU 300SET PAGESIZE 60COLUMN vlastník FORMAT A20COLUMN next_run_date FORMAT A35SELECT vlastník,job_name,enabled,job_class,next_run_dateFROM dba_scheduler_jobsORDER BY owner> job_name/Jak získat historický plán pro SQL_ID z AWRNASTAVIT VELIKOST STRÁNKY 60 NASTAVIT VELIKOST ŘÁDKU 300 VYBRAT * Z TABULKY(dbms_xplan.display_awr('&SQL_ID'))/Jak provést čekací analýzu databáze
vyberte událost, stav, počet(*) z v$session_wait skupinu po události, pořadí stavu podle 3;Jak najít High Buffer dostane sql
vyberte * z (SELECT adresa, hash_value,buffer_gets, spuštění, buffer_gets/executions "Gets/Exec",sql_textFROM v$sqlareaWHERE buffer_gets> 500000 a spuštění>0ORDER BY 3 desc) kde rownum <20;Tento seznam skriptů oracle dba pro databázi Oracle pro účely monitorování není úplný. Existuje mnoho dalších skriptů pro monitorování. Budu je prezentovat v následujících příspěvcích
Také čte
Hash Join v Oracle:Podívejte se na tento příspěvek pro podrobný popis Hash join v Oracle, Jak se liší od Nested Loop spojení v Oracle
Oracle Table locks :Oracle Enqueue ,Row Level &DDL,table locks, jak oracle locks funguje, Užitečné dotazy ke zjištění číšníků a blokátorů v oracle
v$active_session_history :Podívejte se na Active Session History ,jak je nakonfigurován,jak najít problémové místo výkonu pomocí ASH, generování zpráv ASH, Dotazy ASH
https://en.wikipedia.org/wiki/Oracle_Database