-
1. ตรวจสอบชื่อและขนาดของพื้นที่โต๊ะ
เลือก t.tablespace_name, รอบ (ผลรวม (ไบต์/(1024*1024)),0) ts_size
จาก dba_tablespaces t, dba_data_files ง
โดยที่ t.tablespace_name = d.tablespace_name
จัดกลุ่มตาม t.tablespace_name;
2. ดูชื่อและขนาดของไฟล์ฟิสิคัลในพื้นที่ตาราง
เลือก tablespace_name, file_id, file_name,
รอบ (ไบต์/(1024*1024),0) Total_space
จาก dba_data_files
สั่งซื้อโดย tablespace_name;
3. ตรวจสอบชื่อและขนาดเซ็กเมนต์การย้อนกลับ
เลือกเซ็กเมนต์_ชื่อ, tablespace_name, r.status,
(initial_extent/1024) InitialExtent, (next_extent/1024) ขอบเขตถัดไป
max_extents, v.curext CurExtent
จาก dba_rollback_segs r, v$rollstat v
โดยที่ r.segment_id = v.usn(+)
เรียงลำดับตามส่วน_ชื่อ;
4. ดูไฟล์ควบคุม
เลือกชื่อจาก v$controlfile;
5. ดูไฟล์บันทึก
เลือกสมาชิกจาก v$logfile;
6.ตรวจสอบการใช้พื้นที่โต๊ะ
เลือกผลรวม(ไบต์)/(1024*1024) เป็น free_space,tablespace_name
จาก dba_free_space
จัดกลุ่มตาม tablespace_name;
เลือก A.TABLESPACE_NAME, รวม A.BYTES, ใช้ B.BYTES, ฟรี C.BYTES,
(B.BYTES*100)/A.BYTES "% ที่ใช้",(C.BYTES*100)/A.BYTES "% ฟรี"
จาก SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
โดยที่ A.TABLESPACE_NAME=B.TABLESPACE_NAME และ A.TABLESPACE_NAME=C.TABLESPACE_NAME;
7. ดูวัตถุฐานข้อมูล
เลือกเจ้าของ, object_type, สถานะ, นับ (*) นับ # จากกลุ่ม all_objects ตามเจ้าของ, object_type, สถานะ;
8. ตรวจสอบเวอร์ชันของฐานข้อมูล
เลือกเวอร์ชันจาก Product_component_version
โดยที่ SUBSTR(PRODUCT,1,6)='Oracle';
9. ดูวันที่สร้างและวิธีการจัดเก็บฐานข้อมูล
เลือกสร้าง, Log_Mode, Log_Mode จากฐานข้อมูล V$;
10. จับ SQL ที่ทำงานมาเป็นเวลานาน
ชื่อผู้ใช้คอลัมน์รูปแบบ a12
คอลัมน์ opname รูปแบบ a16
รูปแบบความคืบหน้าของคอลัมน์ a8
เลือกชื่อผู้ใช้, sid, opname,
รอบ (sofar*100 / รวมงาน,0) ||.
เวลา_เหลือ,sql_text
จาก v$session_longops , v$sql
โดยที่ time_remaining <> 0
และ sql_address = ที่อยู่
และ sql_hash_value = hash_value
-
11. ดูข้อมูลพารามิเตอร์ของแผ่นข้อมูล
เลือก partition_name, high_value, high_value_length, tablespace_name,
pct_free, pct_used, ini_trans, max_trans, Initial_extent,
next_extent, min_extent, max_extent, pct_increase, FREELISTS,
freelist_groups, การบันทึก, BUFFER_POOL, num_rows, บล็อก,
Empty_blocks, avg_space, chain_cnt, avg_row_len, ตัวอย่าง_ขนาด,
สุดท้าย_วิเคราะห์แล้ว
จาก dba_tab_partitions
--WHERE table_name = :tname และ table_owner = :towner
เรียงลำดับตาม partition_position
12. ดูธุรกรรมที่ไม่มีข้อผูกมัด
เลือก * จาก v$locked_object;
เลือก * จาก v$transaction;
13. ค้นหากระบวนการที่วัตถุถูกใช้โดย
เลือก
p.spid,
s.sid,
s.serial# serial_num,
s.ชื่อผู้ใช้ ชื่อผู้ใช้_ชื่อ,
ก.ประเภท object_type
s.osuser os_user_name,
ก.เจ้าของ
ก.วัตถุ object_name
ถอดรหัส(เครื่องหมาย (48 - คำสั่ง)
1,
to_char(คำสั่ง), 'รหัสการกระทำ #' ||. to_char(คำสั่ง) ) การกระทำ
p.โปรแกรม oracle_process,
เทอร์มินัลเทอร์มินัล,
s.โปรแกรม โปรแกรม
s.สถานะ session_status
จาก v$session s, v$access a, v$process p
โดยที่ s.padr = p.addr และ
s.type = 'ผู้ใช้' และ
a.sid = s.sid และ
a.object='SUBSCRIBER_ATTR'
สั่งซื้อโดย s.username, s.osuser
14. มุมมองส่วนย้อนกลับ
เลือก rownum, sys.dba_rollback_segs.segment_name ชื่อ, v$rollstat.extents
ขอบเขต v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,
v$rollstat.gets รับ v$rollstat.waits รอ v$rollstat.writes เขียน
สถานะ sys.dba_rollback_segs.status จาก v$rollstat, sys.dba_rollback_segs,
v$rollname โดยที่ v$rollname.name(+) = sys.dba_rollback_segs.segment_name และ
v$rollstat.usn (+) = v$rollname.usn เรียงลำดับตาม rownum
15. กระบวนการที่ใช้ทรัพยากรมาก (เซสชันบนสุด)
เลือก s.schemaname schema_name, ถอดรหัส (เครื่องหมาย (48 - คำสั่ง), 1,
to_char(command), 'รหัสการกระทำ #' ||. to_char(command) ) การกระทำ, สถานะ
session_status, s.osuser os_user_name, s.sid, p.spid, s.serial# serial_num,
nvl(s.username, '[กระบวนการ Oracle]') user_name, เทอร์มินัล s.terminal,
โปรแกรม s.program, st.value เกณฑ์_ค่าจาก v$sesstat st, v$session s, v$process p
โดยที่ st.sid = s.sid และ st.statistic# = to_number('38') และ ('ALL' = 'ALL'
หรือ s.status = 'ALL') และ p.addr = s.paddr เรียงลำดับตาม st.value desc, p.spid asc, s.username asc, s.osuser asc
16. ตรวจสอบสถานะการล็อค
เลือก /*+ กฎ */ ls.osuser os_user_name, ls.username user_name,
ถอดรหัส (ls.type, 'RW', 'รอแถวรอล็อคคิว', 'TM', 'ล็อคคิว DML', 'TX',
'ล็อคลำดับการทำธุรกรรม', 'UL', 'ล็อคที่ผู้ใช้ระบุ') lock_type,
วัตถุ o.object_name, ถอดรหัส (ls.lmode, 1, null, 2, 'แชร์แถว', 3,
'แถวพิเศษ', 4, 'แบ่งปัน', 5, 'แบ่งปันแถวพิเศษ', 6, 'พิเศษ', null)
lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2
จาก sys.dba_objects o (เลือก s.osuser, s.username, l.type,
l.lmode, s.sid, s.serial#, l.id1, l.id2 จาก v$session s,
v$lock l โดยที่ s.sid = l.sid ) ls โดยที่ o.object_id = ls.id1 และ o.owner
<> คำสั่ง 'SYS' โดย o.owner, o.object_name
17. ตรวจสอบสถานะการรอ
เลือก v$waitstat.class, จำนวน v$waitstat.count, SUM(v$sysstat.value) sum_value
จาก v$waitstat, v$sysstat โดยที่ v$sysstat.name IN ('db block gets',
'ได้รับที่สอดคล้องกัน') จัดกลุ่มตาม v$waitstat.class, v$waitstat.count
18. ตรวจสอบสถานการณ์สกา
เลือกชื่อ ไบต์จาก SYS.V_$SGASTAT เรียงลำดับตามชื่อ ASC
19. ดูวัตถุที่จับได้
เจ้าของ SELECT, ชื่อ, db_link, เนมสเปซ
ประเภท, shareable_mem, โหลด, การดำเนินการ,
ล็อค, พิน, เก็บไว้จาก v$db_object_cache
20. ดู V$SQLAREA
เลือก SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, เรียงลำดับ,
VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, การดำเนินการ,
USERS_EXECUTING, โหลด, FIRST_LOAD_TIME, การไม่ถูกต้อง, PARSE_CALLS, DISK_READS,
BUFFER_GETS, ROWS_PROCESSED จาก V$SQLAREA
ยี่สิบเอ็ด ดูจำนวนหมวดหมู่วัตถุ
เลือกถอดรหัส (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,
'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) ปริมาณจาก
sys.obj$ o โดยที่ o.type# > 1 กลุ่มโดยการถอดรหัส (o.type#,1,'INDEX' , 2,'TABLE' , 3
, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) เลือกสหภาพ
'COLUMN' นับ(*) จาก sys.col$ union เลือก 'DB LINK' นับ (*) จาก
ยี่สิบสอง ดูประเภทวัตถุตามผู้ใช้
เลือก u.name schema, ผลรวม (ถอดรหัส (o.type#, 1, 1, NULL)) ดัชนี
ผลรวม(ถอดรหัส(o.type#, 2, 1, NULL)) ตาราง, ผลรวม(ถอดรหัส(o.type#, 3, 1, NULL))
คลัสเตอร์, ผลรวม (ถอดรหัส (o.type#, 4, 1, NULL)) มุมมอง ผลรวม (ถอดรหัส (o.type#, 5, 1,
NULL)) คำพ้องความหมาย ผลรวม (ถอดรหัส (o.type#, 6, 1, NULL)) ลำดับ
ผลรวม (ถอดรหัส (o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))
อื่นๆ จาก sys.obj$ o, sys.user$ u โดยที่ o.type# >= 1 และ u.user# =
o.owner# และ u.name <> 'PUBLIC' กลุ่มโดย u.name เรียงลำดับโดย
sys.link$ union เลือก 'CONSTRAINT' นับ (*) จาก sys.con$
ยี่สิบสาม ข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อ
1) ตรวจสอบว่าผู้ใช้รายใดเชื่อมต่ออยู่
เลือก s.osuser os_user_name, ถอดรหัส (เครื่องหมาย (48 - คำสั่ง), 1, to_char (คำสั่ง),
'รหัสการกระทำ #' ||. to_char (คำสั่ง) ) การกระทำ p.program oracle_process
สถานะ session_status, เทอร์มินัล s.terminal, โปรแกรม s.program,
s.ชื่อผู้ใช้ ชื่อผู้ใช้ s.fixed_table_sequence กิจกรรม_meter, ' แบบสอบถาม,
0 หน่วยความจำ, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num
จาก v$session s, v$process p โดยที่ s.paddr=p.addr และ s.type = 'USER'
สั่งซื้อโดย s.username, s.osuser
2) ตรวจสอบการใช้ทรัพยากรของการเชื่อมต่อที่เกี่ยวข้องตาม v.sid
เลือก n.ชื่อ
ก.คุณค่า,
n.คลาส,
n.สถิติ#
จาก v$statname n
v$sesstat v
โดยที่ v.sid = 71 และ
v.statistic# = n.statistic#
เรียงลำดับตาม n.class, n.statistic#
3) ตรวจสอบ sql ที่ทำงานอยู่ของการเชื่อมต่อที่เกี่ยวข้องตาม sid
เลือก /*+ PUSH_SUBQ */
คำสั่ง_ประเภท,
sql_text,
แบ่งปันได้_mem,
ถาวร_mem,
รันไทม์_mem,
แปลก
รุ่น_นับ,
โหลด_รุ่น,
open_versions,
users_opening,
การประหารชีวิต
users_executing,
โหลด
first_load_time,
การทำให้เป็นโมฆะ
parse_calls,
ดิสก์_อ่าน,
buffer_gets,
แถว_ประมวลผลแล้ว
sysdate start_time,
sysdate เสร็จสิ้น_เวลา,
'>' ||. ที่อยู่ sql_address,
สถานะ 'เอ็น'
จาก v$sqlarea
โดยที่ที่อยู่ = (เลือก sql_address จาก v$session โดยที่ sid = 71)
ยี่สิบสี่ การใช้พื้นที่ตารางแบบสอบถามเลือก a.tablespace_name "ชื่อพื้นที่ตาราง"
100 รอบ((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "อัตราการเข้าพัก (%)",
รอบ (a.bytes_alloc/1024/1024,2) "ความจุ (M)",
รอบ (nvl (b.bytes_free,0)/1024/1024,2) "ฟรี (M)",
รอบ ((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "ใช้ (M)",
"ส่วนส่วนขยายสูงสุด (M)" ที่ใหญ่ที่สุด
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "เวลาสุ่มตัวอย่าง"
จาก (เลือก f.tablespace_name,
ผลรวม (f.bytes) bytes_alloc,
ผลรวม (ถอดรหัส (f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) แม็กซ์ไบต์
จาก dba_data_files f
จัดกลุ่มตาม tablespace_name)
(เลือก f.tablespace_name,
ผลรวม (f.bytes) bytes_free
จาก dba_free_space f
จัดกลุ่มตาม tablespace_name) b,
(เลือกรอบ(สูงสุด(ff.length)*16/1024,2) ใหญ่ที่สุด,
ts.name tablespace_name
จาก sys.fet$ ff, sys.file$ tf,sys.ts$ ts
โดยที่ ts.ts#=ff.ts# และ ff.file#=tf.relfile# และ ts.ts#=tf.ts#
จัดกลุ่มตาม ts.name, tf.blocks) c
โดยที่ a.tablespace_name = b.tablespace_name และ a.tablespace_name = c.tablespace_name
25. สอบถามระดับการกระจายตัวของพื้นที่ตาราง
เลือก tablespace_name,count(tablespace_name) จากกลุ่ม dba_free_space โดย tablespace_name
มีการนับ (tablespace_name)>10;
เปลี่ยนชื่อ tablespace รวมกัน;
เปลี่ยนชื่อตารางจัดสรรคืนที่ไม่ได้ใช้;
สร้างหรือแทนที่มุมมอง ts_blocks_v เป็น
เลือก tablespace_name, block_id, ไบต์, บล็อก, 'พื้นที่ว่าง' ส่วน_ชื่อจาก dba_free_space
สหภาพทั้งหมด
เลือก tablespace_name,block_id,bytes,blocks,segment_name จาก dba_extents;
เลือก * จาก ts_blocks_v;
เลือก tablespace_name,sum(bytes),max(bytes),count(block_id) จาก dba_free_space
จัดกลุ่มตาม tablespace_name;
26. ตรวจสอบว่าอินสแตนซ์ใดกำลังทำงานอยู่:
เลือก * จาก v$active_instances;
-