การกำหนดค่า Shared Server Mode ของ Oracle
1.SHARED_SERVERS:
ค่าจำนวน Shared Services ขั้นต่ำซึ่งจะเปิดขึ้นเมื่อเริ่ม Start Database Services โดยควรกำหนดค่ามาก 0
ถ้าเท่ากับ 0 แสดงว่าเป็นการ Disable ใน Mode นี้ อัติโนมัติให้กลับเป็นแบบ Dedicated Mode
การประมาณการค่า Shared Servers มีหลักการคือ
ตัวอย่าง
1.ระบบมี Client ที่ต้องการเข้าใช้งาน 1000
2.ประมาณการการเข้าใช้พร้อมๆ กัน (Con-Current ) ที่ 10%
3.แสดงว่า Minimun ค่า Shared Servers ควรเท่ากับ 1000*(10/100) = 100
ตัวอย่าง คำสั่ง
SQL> alter system set shared_servers = 100 scope=both sid='*'
2.MAX_SHARED_SERVERS:
ค่าสูงสุดที่จะสร้าง Shared Services โดยค่านี่จะถูกใช้ในกระบวนการ Process ภายในของ Oracle เอง
ซึ่งหาก Database เกิด Load มากๆ และ Resource ใน Server เริ่มไม่พอ Oracle จะพยายามปรับค่า Shared Server ลง ไม่ให้เกินค่านี้
ซึ่งถ้าไม่ได้กำหนด Oracle เองจะปรับให้เหมาะสมโดยอัติโนมัติซึ่งไม่เกี่ยวกับค่า SHARED_SERVERS
โดยค่า SHARED_SERVERS เป็นการ กำหนดค่า โดย DBA จงใจให้ Oracle สร้าง Shared ให้รองรับ
ซึ่งอาจมากกว่า ค่า MAX_SHARED_SERVERS ก็ได้
ตัวอย่าง คำสั่ง
SQL> alter system set max_shared_servers = 100 scope=both sid='*'
3.SHARED_SERVER_SESSIONS:
ค่าจำนวน Shared Services ที่ อนุญาตต่อ 1 session ที่จะ Run ได้สูงสุดซึ่ง
กำหนดค่าไม่เกินค่า SESSION รวมที่กำหนดไว้ใน Service หลัก
ถ้าไม่ระบุ Oracle จะกำหนดให้ตามความค่าที่ Session เหลือ ณ ขณะนั้นๆ .
ตัวอย่าง คำสั่ง
SQL> alter system set shared_servers_sessions = 100 scope=both sid='*'
4.DISPATCHERS:
กำหนดจะเป็นค่าการกระจาย Service ของ Oracle ใน Shared Servers Mode
มีค่าที่ต้องเกี่ยวข้องเพื่อใช้อ้างอิงอีกคือ
ค่า processes , sessions และ transactions โดยสามารถตรวจสอบได้ด้วยคำสั่ง
SQL> show parameter processes ;
SQL> show parameter sessions ;
SQL> show parameter transactions;
โดยค่าที่เกิดจากการคำนวณได้จาก
อ้างอิงค่าจากข้อ 1 ค่า Client connection สูงสุด = 1000 ซึ่ง ได้เท่ากับ X = 1000
1. Processes = X =1000
2. Sessions = X*1.1+5 =1150
3. Transactions = sessions *1.1 =1265
การประมาณการค่า DISPATCHERS: มีหลักการคือ
ตัวอย่าง
Number of dispatchers = CEIL ( max. concurrent sessions / connections for each dispatcher )
จากข้างต้น
max. concurrent sessions = 1150
connections for each dispatcher = Processes / (Con-Current = 10% ) = 1000 / 100 = 10
ดั้งนั้น ค่า
DISPATCHERS: = 1150 / 10 = 115
ตัวอย่าง คำสั่ง
SQL> alter system set dispatchers = "(PROTOCOL=TCP) (DISPATCHERS=115) " scope=both sid='*' ;
#ตรวจสอบค่า โดย
SQL> select * from v$shared_server;
SQL> select * from V$DISPATCHER ;
#สิ่งที่จำเป็นตามมาที่ต้องปรับเพิ่มเติมคือ
1.ต้องปรับค่า Oracle ให้เป็น Mode Auto Memory Management โดยการกำหนดค่าเพิ่มเติมดังนี้
Alter system set memory_target = 3000m scope=both;
Alter system set sga_target = 2000m scope=both;
Alter system set pga_aggregate_target = 1000m scope=both;
Alter system set memory_target = 0 ;จะเป็นการปิด automatic memory management AMM
SGA + PGA ไม่ควรเกิน 70% ของ total memory
2.ต้องกำหนดให้ Oracle รองรับการ Share Cursor ด้วยการปรับค่าเป็น
ALTER SYSTEM SET CURSOR_SHARING=FORCE SCOPE=BOTH
รายละเอียดอ้างอิง
https://forums.oracle.com/forums/thread.jspa?messageID=2114775
http://docs.oracle.com/cd/B28359_01/server.111/b28310/manproc003.htm#autoId7
http://it.toolbox.com/wiki/index.php/Shared_server
http://www.connectionstrings.com/oracle
http://www.exploreoracle.com/2009/07/22/configuration-of-oracle-shared-server/
http://sapbasis.wordpress.com/2010/06/19/how-to-estimate-the-pga-sga-size-configuration-database-server-memory/
http://psoug.org/reference/cursor_sharing.html
ไม่มีความคิดเห็น:
แสดงความคิดเห็น