Често се налага да наблюдаваме сесията на базата данни на oracle поради причина за производителността, да проверяваме за ключалки, да получаваме местоположение на файловете с данни, да правим отново файлове, да получаваме информацията за db_links. Ето най-добрите скриптове на oracle dba за Oracle база данни за административна и мониторингова цел
Скрипт за намиране на страната на сесията, от която сте влезли
изберете различен(sid) от v$mystat;
Скрипт, за да видите всички активни сесии
изберете потребителско име,osuser,sid,serial#, program,sql_hash_value,module от v$session, където потребителското име не е nulland status ='ACTIVE' и модулът не е null;
Скрипт, за да видите сервитьори
задайте linesize 1000column waiting_session heading ‘WAITING|SESSION’column hold_session heading ‘HOLDING|SESSION’column lock_type format a15column mode_held format a15column mode_requested формат a15selectrequest_session,lockrequesti,locksession_fr,lockrequest_session,locksmod_a15selectwaiting_session,locksmodmoid_Скрипт за активна транзакция в базата данни
col RBS формат a15 trunccol SID формат 9999col USER формат a15 trunccol COMMAND формат a60 trunccol формат на състоянието a8 trunccol 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" от v$session s, v$transaction t, v$rollname r, където t.addr =s. taddrand t.xidusn =r.usnorder от t.cr_get, t.phy_io/Скрипт за наблюдение на продължителните заявки
задайте размер на линията 1000selectOPNAME,sid,SOFAR/TOTALWORK*100,to_char(start_time,'dd-mon-yy hh:mi') start,elapsed_seconds/60,time_remaining/60fromv$session_longopswheresid =&sidСкрипт, за да видите всички заключени обекти
задайте термин на;задайте редове 130;колона sid_ser формат a12 заглавие 'сесия,|сериен#';формат потребителско име на колона a12 заглавие 'os потребител/|db потребител';колона процес формат a9 заглавие 'os|process';колона spid формат a7 заглавие 'trace|number'; колона owner_object формат a35 заглавие 'owner.object'; колона locked_mode формат a13 заглавие 'заключен|режим'; формат на състоянието на колоната a8 заглавие '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 !='УБИТ'/Скрипт, за да видите изчакващи събития
set linesize 1000column sid format 999column username format a15 wrappedcolumn spid format a8column event format a30 wrappedcolumn osuser format a12 wrappedcolumn машинен формат a25 wrappedcolumn формат на програмата a30 swrappedcolumn формат на програмата a30 swrappedcolumn, swrappedcolumn sid. osuser, sw.event събитие, s.machine machine, s.program program from v$session_wait sw, v$session s, v$process pwhere s.paddr =p.addrand събитие не е в ('pipe get','client message' )и sw.sid =s.sid/Скрипт, за да видите изчакване на конкретна сесия
изберете sid,seq#,wait_time,event,seconds_in_wait,state от v$session_wait където sid е (&sid);Скрипт, за да видите всички потребители, които имат достъп до тези обекти
формат на обект на колона a30формат на собственик на колона a10select * от v$access където object='&ime_object'/Скриптът дава информация за потребителските сесии, които заключват конкретен обект
set linesize 1000column program format a15column object format a15select substr(username||'('|| se0.sid||')',1,5) "User Session",substr(owner,1,5) "Object Собственик",substr(object,1,15) "Object",se0.sid,substr(serial#,1,6) "Serial#",substr(program,1,15) "Program",logon_time "Време за влизане" ,process "Unix Process"от v$access ac, v$session se0where ac.sid =se0.sidand Object ='&PACKAGE'подреждане по време на влизане,"Object Owner","Object"/Скрипт, за да видите плана за обяснение в Oracle за изявлението в кеша на библиотеката
set linesize 9999column QUERY формат a999set pages 250set head offset verify offselect id,lpad(' ',2*(depth-1)) || дълбочина ||'.' || nvl(позиция,0) || ''|| операция || ''|| опции || ''|| име_обект ||' '||'cost='|| to_char(цена)||' '|| оптимизатор "QUERY" от v$sql_plan, където hash_value =&sql_hash_valueподреди по номер_на дете, идентификатор/Скрипт за намиране на местоположение на сървъра
изберете nvl(потребителско име,'ORACLE SHADOW PROCESS'),машина от v$session, където потребителското име е nulland rownum <2/Скрипт, за да видите използването на сегмента за най-горно сортиране
col sid формат 999999col spid формат a6col формат пространство за таблици a10col потребителско име формат a25col noexts формат 9999 глава EXTScol proginfo формат a25 trunccol mbused формат 999,999.90col формат на състоянието a1 truncset s.d. verify (изкл. ,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$параметър p, v$process b, където u.session_addr =s.saddrand p.name ='db_block_size' и b.addr =s .paddrgroup по s.sid,s.status,b.spid,s.sql_hash_value,u.sqlhash,s.username,u.tablespace,u.segtype,s.module || ' - ' || s.programorred by 8 desc,4)където rownum <11;Скрипт за проверка на последно анализираните таблици в sql оператор
set lin 1000set verify offcol owner format a15col object_name format a25col object_type format a12col "ПОСЛЕДЕН АНАЛИЗИРАН" формат a13 избере do.OWNER,do.OBJECT_NAME,OBJECT_TYPE,декодиране (OBJECT_TYPE,'TABLESelect's LAST от където (TABLESelect LAST) откъдето do.owner и TABLE_NAME=do.object_name) ,'INDEX' , (Изберете LAST_ANALYZED от dba_indexes, където owner=do.owner и INDEX_NAME=do.object_name) ,'UNKNOWN') "LAST ANALYZED",STATUSfrom S DBA_OBJECT (SAD_JE_DBA_OBJECT) TABLE','INDEX')и (OWNER,OBJECT_NAME) в (изберете OBJECT_OWNER,OBJECT_NAME от V$SQL_PLAN, където HASH_VALUE=&1)/За да проверите заключванията и щифтовете на кеша на библиотеката
select /*+ all_rows */ w1.sid waiting_session,h1.sid holding_session,w.kgllktype lock_or_pin,w.kgllkhdl адрес,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 h1, където (((h.kgllkmod !=0) и (h.kgllkmod !=1) и ((h.kgllkreq =0) или (h.kgllkreq =1))) и (((w.kgllkmod =0) или (w.kgllkmod=1)) и ((w.kgllkreq !=0) и (w.kgllkreq !=1)))) и w.kgllktype =h.kgllktypeand w.kgllkhdl =h.kgllkhdland w.kgllkuse =w1.saddrand h.kgllkuse =h1.saddr/За да проверите местоположението на контролния файл
col име формат a60 заглавие "Контролни файлове" изберете име от sys.v_$controlfile/За да проверите местоположението на регистрационния файл за повторно изпълнение
col Grp формат 9999 col член формат a50 заглавие "Онлайн REDO регистрационни файлове" col File# формат 9999 col име формат a50 заглавие "Онлайн REDO журнали" прекъсване на Grpselect group#,memberfrom sys.v_$logfile/За да проверите местоположението на файла с данни
col Tspace формат a25col status format a3 heading Stacol Id format 9999col Mbyte format 999999999col name format a50 heading "Database Data Files"col Чете формат 99,999,999col Записва формат 99,999,Breakbym on reportsee99. F.file_id Id,F.file_name name,F.bytes/(1024*1024) Mbyte,декодиране(F.status,'AVAILABLE','OK',F.status) състояние,F.tablespace_name Tspacefrom sys.dba_data_files Forder by име_пространство на таблица;Проверка за включване/изключване на автоматичното удължаване за пространства за таблици:
изберете substr(име_на_файл,1,50), AUTOEXTENSIBLE от dba_data_files(OR)SQL> изберете име_пространство на таблица,AUTOEXTENSIBLE от dba_data_files;Как да проверите параметрите на долната черта
ИЗБЕРЕТЕ X.KSPPINM ИМЕ, DECODE(BITAND(KSPPIFLG/256, 1), 1, 'TRUE', 'FALSE') SESMOD,DECODE( BITAND(KSPPIFLG/65536, 3), 1, 'НЕЗАБАВНО', 2 , 'ОТЛОЖЕНО', 3, 'НЕЗАБАВНО', 'FALSE' ) SYSMOD,KSPPDESC ОПИСАНИЕ ОТ SYS.X_$KSPPI X КЪДЕТО X.INST_ID =USERENV('INSTANCE') ANDTRANSLATE(KSPPINM,'_','#') #%' ПОРЪЧАЙТЕ С 1;Как да се показват DBA връзки
set linesize 128 pages 1000col owner format a15col db_link format a15col username format a20col host format a15col name format a30Prompt Връзки към базата данни:изберете собственик, db_link, потребителско име, хост от dba_db_links подреждане по собственик, dbnosennymPro link Sync собственик, db_link от dba_synonyms, където db_link не е null/Връзки за бърза моментна снимка:изберете собственик, име, замени(master_link,'@','') db_link от dba_snapshots, където master_link не е null/Идентифициране на сегмента чрез DBA_extents чрез file-id и block
ИЗБЕРЕТЕ име_на_сегмент, тип_сегментFROM dba_extentsWHERE file_id =<файл> ИМЕЖДУ block_id и block_id + блокове - 1; Изброяване на задачи, изпълнявани от DBMS_SCHEDULER
ЗАДАДЕТЕ НАЧАЛЕН РАЗМЕР НА РАЗМЕР 300ЗАДАДЕТЕ РАЗМЕР НА СТРАНИЦА 60КОЛОНА собственик ФОРМАТ A20ИЗБОР собственик,име_на работа,изпълнение_екземпляр,изминало_времеFROM dba_scheduler_running_jobsORDER BY собственик, име_на работа/Изброяване на информация за DBMS_SCHEDULER JOB
ЗАДАДЕТЕ НАЧАЛЕН РАЗМЕР ЛИНИЯ 300 ЗАДАВАТЕ РАЗМЕР НА СТРАНИЦА 60 COLUMN собственик FORMAT A20COLUMN next_run_date FORMAT A35SELECT owner,job_name,enabled,job_class,next_run_dateFROM dba_schedulerBY, job_name/ ownerКак да получите исторически план за SQL_ID от AWR
ЗАДАДЕТЕ РАЗМЕР НА СТРАНИЦА 60 КОМПЛЕКТ ЛИНИЯ РАЗМЕР 300 ИЗБЕРЕТЕ * ОТ ТАБЛИЦА(dbms_xplan.display_awr('&SQL_ID'))/Как да направя изчакващ анализ на базата данни
изберете събитие, състояние, count(*) от v$session_wait група по събитие, състояние на поръчка по 3 desc;Как да намеря High Buffer получава sql
изберете * от (SELECT адрес, hash_value,buffer_gets, executions, buffer_gets/executions "Gets/Exec",sql_textFROM v$sqlareaWHERE buffer_gets> 500000 и изпълнения>0ORDER BY 3 desc) където rownum>Този списък със скриптове на oracle dba за база данни на oracle с цел наблюдение не е пълен. Има още много скриптове за наблюдение. Ще ги представя в следващите публикации
Също чете
Присъединяване на хеш в Oracle :Вижте тази публикация за подробно описание на присъединяването на хеш в Oracle, как е различно от присъединяването на вложен цикъл в oracle
Заключване на таблицата на Oracle:Oracle Enqueue, ниво на ред и DDL, таблица ключалки, как работи Oracle locks, Полезни заявки за откриване на сервитьорите и блокиращите устройства в oracle
v$active_session_history :Проверете за Active Session History, как е конфигурирана, как да намерите затруднено място в производителността с помощта на ASH, генериране на ASH отчети, ASH заявки
https://en.wikipedia.org/wiki/Oracle_Database