ประวัติ Oracle SQL

ผู้เขียน: John Pratt
วันที่สร้าง: 11 มกราคม 2021
วันที่อัปเดต: 4 กรกฎาคม 2024
Anonim
What is SQL Profile in Oracle Database
วิดีโอ: What is SQL Profile in Oracle Database

เนื้อหา

เนื่องจาก 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


/