เหตุใดเซสชันของ Oracle ยังคงมีชีวิตอยู่หลังจากสองสัปดาห์ที่ไม่ได้ใช้งาน


16

ฐานข้อมูล: Oracle 10g

O / S: Windows Server 2003 64 บิต

ฉันค้นหารายการเซสชันของ Oracle ที่สร้างขึ้นโดยเว็บแอปพลิเคชัน (กรองโดย program = w3wp.exe)

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

ป้อนคำอธิบายรูปภาพที่นี่

ตาม Logon_Time เหตุใดจึงยังคงมีเซสชันอยู่ตั้งแต่ 31/07/2012 หรือ 01/08/2012 หรือเซสชันใด ๆ ก่อนวันนี้ (21/8/2555)

ฉันได้กำหนดค่าใน sqlnet.ora: SQLNET.EXPIRE_TIME = 20 ดังนั้นหมายความว่า Oracle ทุก ๆ 20 นาทีกำลังตรวจสอบว่าการเชื่อมต่อยังคงทำงานอยู่หรือไม่

ผู้ใช้ schema ทั้งหมดมีโปรไฟล์เริ่มต้น หมายความว่าจะไม่มีเซสชันใดที่จะไม่มีวันหมดอายุหรือตาย

ป้อนคำอธิบายรูปภาพที่นี่

เพิ่มการตอบสนองต่อความคิดเห็นของ Phil:

ป้อนคำอธิบายรูปภาพที่นี่

เพิ่มการตอบสนองของคำตอบของฟิล:

ป้อนคำอธิบายรูปภาพที่นี่


อะไรคือสิ่งที่v$session.PREV_EXEC_STARTสำหรับการประชุมเหล่านี้หรือไม่ ฉันสงสัยว่าพวกเขาเป็นส่วนหนึ่งของกลุ่มการเชื่อมต่อและดังนั้นจึงไม่ได้ใช้งานเพราะพวกเขากำลังใช้บ่อย
Philᵀᴹ

Mine เป็น Oracle 10g ดังนั้นจึงไม่มีคอลัมน์ PREV_EXEC_START ในเซสชัน v $ แต่ฉันมีแบบสอบถามอีกครั้งรวมถึงคอลัมน์ Last_Call_ET (ฉันเพิ่มรูปภาพนั้นลงในคำถามของฉัน)
Delmonte

ฉันพูดคุยกับนักพัฒนาของเราและพวกเขาบอกฉันว่าพวกเขากำลังใช้ ODP.NET ในเว็บแอปของพวกเขา ดังนั้นจึงแน่นอนว่าเซสชันเหล่านั้นถูกสร้างขึ้นในกลุ่มการเชื่อมต่อ ฉันไม่เชื่อถืออย่างสมบูรณ์เมื่อ Oracle แสดงสถานะไม่ทำงาน แต่ในกรณีนี้ ... คุณคิดว่าฉันสามารถฆ่าเซสชันจากสองสัปดาห์ที่ผ่านมาได้หรือไม่
Delmonte

7
เลขที่INACTIVEเพียงหมายความว่ามีไม่ได้เป็นคำสั่ง SQL v$sessionถูกดำเนินการในขณะที่แน่นอนคุณตรวจสอบ หากพวกเขาเป็นส่วนหนึ่งของกลุ่มการเชื่อมต่อที่พวกเขากำลังทำงานได้อย่างถูกต้อง - จุดรวมของการเชื่อมต่อทั้งหมดคือการลบความจำเป็นในการเข้าสู่ระบบ / ออกจากระบบจำนวนมากและเก็บเซสชันถาวรสำหรับการเริ่มต้นอย่างรวดเร็ว เพียงเพื่อดำเนินการหนึ่งแบบสอบถาม) ฉันไม่เข้าใจว่าทำไมคุณถึงเป็นห่วงเรื่องนี้
Philᵀᴹ

@Phil - ฉันมีความสุข upvote ว่าเป็นคำตอบ!
Justin Cave

คำตอบ:


22

ฉันสงสัยว่าพวกเขาเป็นส่วนหนึ่งของกลุ่มการเชื่อมต่อและดังนั้นจึงไม่ได้ใช้งานเพราะพวกเขากำลังใช้บ่อย

INACTIVEในv$sessionเพียงหมายความว่ามีไม่ได้เป็นคำสั่ง SQL v$sessionถูกดำเนินการในขณะที่แน่นอนคุณตรวจสอบ

หากพวกเขาเป็นส่วนหนึ่งของกลุ่มการเชื่อมต่อที่พวกเขากำลังทำงานได้อย่างถูกต้องโดยการเข้าสู่ระบบเป็นเวลานาน ประเด็นทั้งหมดของการรวมการเชื่อมต่อคือการลบความจำเป็นในการเข้าสู่ระบบ / การออกจากระบบจำนวนมาก & เก็บเซสชันถาวรสำหรับการเริ่มต้นการสืบค้นอย่างรวดเร็ว - มีการบันทึกค่าใช้จ่ายที่มีขนาดใหญ่กว่า

ในการรับเวลากิจกรรมล่าสุดสำหรับแต่ละเซสชัน:

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

ฉันขอแนะนำให้ต่อต้านเซสชันการฆ่าเว้นแต่คุณจะรู้ว่าการทำเช่นนั้นจะไม่ทำให้เกิดปัญหาในด้านแอปพลิเคชัน (พยายามใช้เซสชันที่ถูกฆ่าเช่น)

อาจเป็นกรณีที่คุณกำลังมองหาพูลการเชื่อมต่อที่ตั้งค่าไว้อย่างไม่ถูกต้องซึ่งจะสร้างการเชื่อมต่อหลายร้อยครั้งเมื่อแอปเริ่มทำงาน - พูลการเชื่อมต่ออาจเป็นลำดับที่มีขนาดใหญ่กว่าที่มันต้องการ ฉันขอแนะนำให้ติดต่อกับทีมงานผู้พัฒนา / แอปพลิเคชันและดูที่วิธีกำหนดค่าพูลการเชื่อมต่อ

เมื่อทำการวิจัยเล็กน้อย w3wp.exe เป็นกระบวนการ IIS Application Pool - คุณเกือบจะต้องการพูดคุยกับผู้ดูแลระบบ IIS เว็บเซิร์ฟเวอร์ของคุณเพื่อช่วยให้ไปที่ด้านล่างของการกำหนดค่าการรวมการเชื่อมต่อ


ขอบคุณสำหรับคำอธิบายของคุณ แต่จะเกิดอะไรขึ้นถ้าค่าของเซสชัน odp.net กำลังเพิ่มจำนวนขึ้นเรื่อย ๆ ? ฉันสอบถาม v $ resource_limit (เพิ่มที่คำถามเดิมของฉัน) และแสดงให้เห็นว่ากระบวนการและค่าของเซสชันนั้นมีค่าถึง 80% ของขีด จำกัด ของมูลค่า เซสชัน odp.net เหล่านั้นอาจใช้ค่าเซสชันของฉันถึงค่าขีด จำกัด 701 และจากนั้นปล่อยการเชื่อมต่อฐานข้อมูลของฉัน (ฉันรู้ว่าฉันสามารถขยายวงเงินค่าเหล่านั้นถึง 1000 หรือ 2000 แต่ก็ไม่ได้เป็นส่วนหนึ่งของคำถาม)
Delmonte

คุณมีปัญหาเกี่ยวกับแอปพลิเคชัน
ฟิลᵀᴹ

ทำไม? แอปพลิเคชั่นบนเว็บกำลังเปิดปิดและกำจัดการเชื่อมต่อ odp.net ... ตามที่ฉันเข้าใจเซสชัน odp.net เหล่านั้นยังคงมีชีวิตรอการเชื่อมต่อในอนาคตแม้ว่าเว็บแอปพลิเคชันจะกำจัดพวกเขา
Delmonte

ดูเหมือนว่าจะเป็นปัญหาการกำหนดค่าพูลการเชื่อมต่อ คุณได้กราฟจำนวนครั้ง (*) ของ v $ เซสชันตลอดเวลาหรือไม่ คุณมีใบอนุญาตชุดการวินิจฉัยสำหรับฐานข้อมูลหรือไม่
Philᵀᴹ

3
ฉันคิดว่าคุณหมายถึง IIS (เซิร์ฟเวอร์ HTTP / แอพของ Microsoft) ไม่ใช่ ISS (สถานีอวกาศนานาชาติ) :-)
Justin Cave
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.