เนื้อหา
เนื่องจาก Oracle รวบรวมตัวอย่างและเขียนเซสชันที่แอ็คทีฟทั้งหมดไปยังฐานข้อมูลเคียวรีแบบง่ายช่วยให้คุณดึงข้อมูลประวัติคำสั่ง SQL ในช่วงเวลาที่กำหนด
Oracle เขียนข้อมูล SQL ประวัติไปที่ v $ active_session_history (แล็ปท็อปที่มีฐานข้อมูลบันทึกบนภาพหน้าจอกว้างขนาด 15.4 นิ้วโดย. shock จาก Fotolia.com)
ความสำคัญ
Oracle รวบรวมตัวอย่างของเซสชันทั้งหมดที่ทำงานในฐานข้อมูลโดยอัตโนมัติทุกวินาทีและบันทึกข้อมูลจากประวัติ SQL ในมุมมองพจนานุกรมข้อมูล v $ active_session_history นี่คือบัฟเฟอร์แบบวงกลมดังนั้นเมื่อเต็มแล้ว Oracle จะเก็บข้อมูลในมุมมองพจนานุกรมข้อมูล dba_hist_active_sess_history โดยอัตโนมัติก่อนเขียนทับ
ฟังก์ชัน
คุณสามารถรับประวัติคำสั่ง SQL ที่ดำเนินการเป็นระยะเวลาหนึ่งในฐานข้อมูลโดยการสอบถามทั้งสองมุมมอง ตัวอย่างเช่นเคียวรีต่อไปนี้ส่งคืนรายการของอักขระ 4000 คำสั่ง SQL แรกที่ดำเนินการระหว่าง 9:00 น. และ 9:05 น. ในวันที่ 30 กันยายน 2010:
เลือก a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) จาก dba_hist_active_sess_history a, dba_hist_sqltext b
โดยที่ sample_time ระหว่าง to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')
และ to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') และ b.sql_id = a.sql_id
รวมทั้งหมด
เลือก a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) จาก v $ active_session_history a, v $ sqlarea b
โดยที่ sample_time ระหว่าง to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') และ
to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') และ b.sql_id = a.sql_id
การพิจารณา
นอกจากนี้ Oracle ยังสร้างสถิติการดำเนินการรายชั่วโมงสำหรับคำสั่ง SQL ใน Automatic Workload Repository คุณสามารถดูว่าคำสั่ง SQL ใดที่ต้องใช้ทรัพยากรมากขึ้นในเวลาที่กำหนดโดยการสอบถามมุมมองพจนานุกรมข้อมูล dba_hist_sqlstat และ dba_hist_snapshot
ผลกระทบ
ตัวอย่างเช่นเคียวรีต่อไปนี้จะส่งคืนรายการคำสั่ง SQL ที่ดำเนินการระหว่าง 9.00 น. ถึง 10.00 น. นอกเหนือจากเวลา CPU เวลาที่ผ่านไปเวลา io_wait และจำนวนการเข้าถึงดิสก์ เอาต์พุตถูกเรียงลำดับตามเวลา CPU
เลือก a.sql_id, dbms_lob.substr (b.sql_text, 1,000,1), cpu__id_did จาก select_nshid_chid_chid_chid_chid_id_id_id_id_a จากนั้นจะเลือก a.sql_id_id จาก idba_hist_sql_id = a_ql_id (start_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' และ to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' สั่งซื้อโดย cpu_time
/