Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

27 skrip Oracle dba untuk Oracle Database untuk Administrasi dan Pemantauan

Kita sering perlu memantau sesi database Oracle untuk alasan kinerja, memeriksa kunci, mendapatkan lokasi file data, mengulang file, mendapatkan informasi tentang db_links.

Script untuk menemukan sisi sesi yang Anda gunakan untuk login

pilih yang berbeda(sid) dari v$mystat;

Script untuk melihat semua sesi aktif

pilih username,osuser,sid,serial#, program,sql_hash_value,module from v$session dimana username bukan null dan status ='ACTIVE' dan modul bukan null;

Skrip untuk melihat pelayan

atur ukuran baris 1000column waiting_session heading ‘WAITING|SESSION’column holding_session heading ‘HOLDING|SESSION’column lock_type format a15column mode_held format a15column mode_requested format a15selectwaiting_session,holding_session,lock_type,mode_held,mode_requested,lock 

Script cara transaksi aktif di database

col format RBS a15 trunccol format SID 9999col format USER a15 trunccol format COMMAND format a60 trunccol status a8 truncpilih 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"dari v$session s, v$transaction t, v$rollname rwhere t.addr =s. taddrand t.xidusn =r.usnorder oleh t.cr_get, t.phy_io/

Skrip untuk memantau kueri yang berjalan lama

setel ukuran garis 1000selectOPNAME,sid,SOFAR/TOTALWORK*100,to_char(start_time,'dd-mon-yy hh:mi') dimulai,elapsed_seconds/60,time_remaining/60fromv$session_longopswheresid =&sid

Script untuk melihat semua objek kunci

set term on;set lines 130;kolom format sid_ser a12 heading 'session,|serial#';column username format a12 heading 'os user/|db user';kolom format proses a9 heading 'os|process';kolom spid format a7 heading 'trace|number';column owner_object format a35 heading 'owner.object';columnlocked_mode format a13 heading 'locked|mode';format kolom status 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) nama pengguna,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 Eksklusif',4 ,'Bagikan',5,'Bagikan Baris Kecuali',6,'Eksklusif',null)lock_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 untuk melihat acara menunggu

atur ukuran baris, format 1000 kolom, format sid, 999, format nama pengguna kolom, a15, format kolom, terbungkus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,”) sendiri, ini sendiri, 8,8 kolom, format acara a30 terbungkus format kolom osuser a12 terbungkus kolom format mesin a25 terbungkus kolom format program a30 terbungkus pilih sw.sid sid, p.spid spid, s.osusername username, s.osusername osuser, sw.event event, s.machine machine, s.program programfrom v$session_wait sw, v$session s, v$process pwhere s.paddr =p.addrand event not in ('pipe get','client message' )dan sw.sid =s.sid/

Skrip untuk melihat sesi tertentu menunggu

pilih sid,seq#,wait_time,event,seconds_in_wait,status dari v$session_wait di mana sid di (&sid);

Skrip untuk melihat semua pengguna mengakses objek tersebut

format objek kolom a30format pemilik kolom a10select * dari v$access where object='&object_name'/

Script memberikan informasi tentang sesi pengguna yang mengunci objek tertentu

mengatur ukuran baris 1000column format program a15column object format a15select substr(username||'('|| se0.sid||')',1,5) "User Session",substr(owner,1,5) "Object Pemilik",substr(objek,1,15) "Objek",se0.sid,substr(serial#,1,6) "Serial#",substr(program,1,15) "Program",logon_time "Waktu Masuk" ,proses "Unix Process"dari v$access ac, v$session se0where ac.sid =se0.sidand Object ='&PACKAGE'order by logon_time,"Object Owner","Object"/

Script untuk melihat rencana penjelasan di Oracle untuk pernyataan di cache perpustakaan

setel ukuran garis 9999column format QUERY a999set halaman 250set head offset verifikasi offselect id,lpad(' ',2*(depth-1)) || kedalaman ||'.' || nvl(posisi,0) || ' '|| operasi || ' '|| pilihan || ' '|| nama_objek ||' '||'biaya='|| to_char(biaya)||' '|| pengoptimal "QUERY"dari v$sql_planwhere hash_value =&sql_hash_valuediurutkan berdasarkan child_number,id/

Skrip untuk menemukan lokasi server

pilih nvl(username,'ORACLE SHADOW PROCESS'),mesin dariv$session dimana username adalah null dan rownum <2/

Script untuk melihat penggunaan segmen sortir teratas

format col sid 999999col format spid a6col format tablespace a10col format nama pengguna a25col format noexts 9999 head EXTScol format proginfo a25 trunccol mbused format 999,999.90format status col a1 truncset verifikasi offpilih * dari (pilih s.sid,s.status,b.spid ,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 menurut s.sid,s.status,b.spid,s.sql_hash_value,u.sqlhash,s.username,u.tablespace,u.segtype,s.module || ' - ' || s.program diurutkan oleh 8 desc,4)di mana rownum <11;

Script untuk memeriksa analisis terakhir untuk tabel dalam pernyataan sql

set lin 1000set verifikasi offcol format pemilik a15col format nama_objek a25col format tipe_objek a12col format "LAST ANALYZED" a13 pilih do.OWNER,do.OBJECT_NAME,OBJECT_TYPE,decode (OBJECT_TYPE,'TABLE'  , (Pilih LAST_ANALYZED dari mana pemilik=dba_tables do.owner dan TABLE_NAME=do.object_name)  ,'INDEX'  , (Pilih LAST_ANALYZED dari dba_indexes di mana owner=do.owner dan INDEX_NAME=do.object_name) ,'UNKNOWN') "LAST ANALYZED",STATUSdari   DBA_OBJECTS dowhere TABLE','INDEX')dan    (OWNER,OBJECT_NAME) di (pilih OBJECT_OWNER,OBJECT_NAME dari V$SQL_PLAN di mana HASH_VALUE=&1)/

Untuk memeriksa kunci dan pin Tembolok Perpustakaan

pilih /*+ 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, 'Bagikan', 3, 'Eksklusif','Tidak Diketahui') mode_held,decode(w.kgllkreq, 0, 'Tidak Ada', 1, 'Null', 2, 'Bagikan', 3, 'Eksklusif','Tidak Diketahui') mode_requestedfrom dba_kgllock w, dba_kgllock h, v$session w1, v$session h1where(((h.kgllkmod !=0) and (h.kgllkmod !=1)and ((h.kgllkreq =0) atau (h.kgllkreq =1))) dan(((w.kgllkmod =0) atau (w.kgllkmod=1))dan ((w.kgllkreq !=0) dan (w.kgllkreq !=1)))) dan w.kgllktype =h.kgllktypeand w.kgllkhdl =h.kgllkhdland w.kgllkuse =w1.saddrand h.kgllkuse =h1.saddr/

Untuk memeriksa lokasi File Kontrol

col format nama a60 heading "Control Files"pilih namadari sys.v_$controlfile/

Untuk memeriksa ulangi lokasi log

col Format Grp 9999col format anggota a50 heading "Online REDO Logs"col File# format 9999col format nama a50 heading "Online REDO Logs"break pada Grppilih grup#,memberfrom sys.v_$logfile/

Untuk memeriksa lokasi file data

col Format Tspace a25col format status a3 heading Stacol Id format 9999col Format Mbyte 999999999col format nama a50 heading "Database Data Files"col Membaca format 99,999,999col Menulis format 99,999,999break pada reportcompute sum label 'Total(MB)' dari Mbyte pada reportselect 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 Dipesan oleh tablespace_name;

Memeriksa aktif/nonaktif perpanjangan otomatis untuk Tablespaces:

pilih substr(file_name,1,50), AUTOEXTENSIBLE dari dba_data_files(OR)SQL> pilih tablespace_name,AUTOEXTENSIBLE dari dba_data_files;

Cara memeriksa parameter Garis Bawah

PILIH NAMA X.KSPPINM, DECODE(BITAND(KSPPIFLG/256, 1), 1, 'TRUE', 'FALSE') SESMOD,DECODE( BITAND(KSPPIFLG/65536, 3), 1, 'IMMEDIATE', 2 , 'DEFERRED', 3, 'IMMEDIATE', 'FALSE' ) SYSMOD,KSPPDESC DESCRIPTIONFROM SYS.X_$KSPPI X WHERE X.INST_ID =USERENV('INSTANCE') ANDTRANSLATE(KSPPINM,'_','#') LIKE ' #%' PESAN SEBELUM 1;

Cara menampilkan tautan DBA

atur ukuran garis 128 halaman 1000col format pemilik a15col format db_link a15col format nama pengguna a20col format host a15col format nama a30Prompt Database Links:pilih pemilik, db_link, nama pengguna, host dari dba_db_links diurutkan berdasarkan pemilik,db_link,namapengguna/Prompt Synonym Links:pilih yang berbeda pemilik, db_link from dba_synonyms di mana db_link bukan null/Tautan Snapshot Cepat:pilih pemilik, nama, ganti(master_link,'@','') db_link dari dba_snapshotsdi mana master_link bukan null/

Mengidentifikasi segmen menurut DBA_extents menggunakan file-id dan blok

SELECT segment_name, segment_typeFROM dba_extentsWHERE file_id = DAN ANTARA block_id dan block_id + block - 1;

Mencantumkan pekerjaan yang berjalan dari DBMS_SCHEDULER

SET HEADING ONSET LINESIZE 300SET PAGESIZE 60COLUMN owner FORMAT A20SELECT owner,job_name,running_instance,elapsed_timeFROM dba_scheduler_running_jobsORDER BY owner, job_name/

Mencantumkan informasi PEKERJAAN DBMS_SCHEDULER

SET HEADING ONSET LINESIZE 300SET PAGESIZE 60COLUMN owner FORMAT A20COLUMN next_run_date FORMAT A35SELECT owner,job_name,enabled,job_class,next_run_dateFROM dba_scheduler_jobsORDER BY owner, job_name/

Cara mendapatkan paket Historis untuk SQL_ID dari AWR

SET PAGESIZE 60SET LINESIZE 300SELECT * FROM TABLE(dbms_xplan.display_awr('&SQL_ID'))/

Bagaimana melakukan analisis tunggu database

pilih event, state, count(*) dari v$session_wait group by event, state order by 3 desc;

Cara menemukan High Buffer mendapat sql 

pilih * dari (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) dimana rownum <20;

Daftar skrip Oracle dba untuk database Oracle untuk tujuan pemantauan ini tidak lengkap. Masih banyak lagi script untuk monitoring. Akan saya presentasikan di postingan selanjutnya

Juga Dibaca
Hash Join di Oracle :Lihat posting ini untuk penjelasan rinci tentang Hash join di Oracle, Apa bedanya dengan Nested Loop bergabung di Oracle
Oracle Table locks :Oracle Enqueue ,Row level &DDL,table kunci, cara kerja kunci oracle, Kueri yang berguna untuk mengetahui pelayan dan pemblokir di oracle
v$active_session_history :Lihat tentang Riwayat Sesi Aktif, cara mengkonfigurasinya, cara menemukan hambatan kinerja menggunakan ASH, pembuatan laporan ASH, Kueri ASH
https://en.wikipedia.org/wiki/Oracle_Database


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengantisipasi dan menghindari kutipan tunggal ' di oracle

  2. FROM kata kunci tidak ditemukan di tempat yang diharapkan (Oracle SQL)

  3. Tipe data Oracle JDBC dan Oracle CHAR

  4. Bagaimana cara mendapatkan tahun berjalan menggunakan SQL di Oracle?

  5. Ubah interval menjadi menit