แต่หากดาต้าเบสมีขนาดใหญ่ จนต้องใช้จำนวน tablespace มากๆ มันเริ่มจะมีคำถามกลับมาที่จำนวนของ datafile ที่จะสร้างได้ในดาต้าเบส
ผู้ดูแลดาต้าเบสสามารถที่จะหาจำนวนของ datafile ที่จะสามารถสร้างบนดาต้าเบส ได้จาก DB_FILES พารามิเตอร์
SQL> show parameter db_filesจากตัวอย่าง สามารถสร้าง datafile ได้ที่ 200 ไฟล์
NAME TYPE VALUE
----------------------
db_files integer 200
แต่ทั้งนี้ต้องขึ้นกัน Operation System (การจำกัดจำนวนไฟล์บน OS) ด้วย... ซึ่งจะเจอได้น้อยมาก
หากมีการสร้าง datafile ที่มากกว่าค่า db_files พารามิเตอร์ แน่นอนจะทำให้ผู้ดูแลรู้จัก ORA Error มากขึ้นอีกตัว
SQL> create tablespace a01 datafile '+DATA1' size 20M;อย่างไรก็ตาม ผู้ดูแลสามารถที่จะเพิ่มค่า DB_FILES พารามิเตอร์
create tablespace a01 datafile '+DATA1' size 20M
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded
แต่ต้อง restart ดาต้าเบส...
ในเคสที่ใช้ Oracle RAC ผู้ดูแลต้อง shutdown ทุก node (shutdown ดาต้าเบส นั่นเอง... ไม่สามารถ restart ทีละnode)
ค่า db_files เท่าไหร่... ถึงจะเป็นค่าที่เหมาะสม
นั่นเป็นสิ่งที่ผู้ดูแลต้องคิดและตอบโจทย์ เพราะมันผูกกับการจำกัดจำนวนไฟล์บน OS... แล้วยังใช้ SGA memory ในการเก็บข้อมูล datafile ด้วย
หลายคนที่ใช้ Oracle ดาต้าเบส คงมีคำถามว่า... แล้ว MAXDATAFILES บน controlfile ??? ...ยังมีผลเกี่ยวข้องหรือไม่
แน่นอน! ถ้าคุณใช้ Oracle 8i หรือสูงกว่า ค่า MAXDATAFILES บน controlfile จะการขยายโดยอัตโนมัติ... เมื่อมีการเพิ่มจำนวน datafile เกินค่า MAXDATAFILES แต่น้อยกว่าหรือเท่ากับค่า db_files (metalink: 331067.1)
ตัวอย่างการเพิ่ม db_files พารามิเตอร์ (เมื่อใช้ spfile)
SQL> show parameter db_filesการเปลี่ยนค่า db_files ไม่ใช่ปัญหา ถ้าระบบสามารถหยุดการใช้งาน
NAME TYPE VALUE
----------------------
db_files integer 200
SQL> alter system set set db_files=500 scope=spfile;
SQL> shutdown immediate
SQL> startup
SQL> show parameter db_files
NAME TYPE VALUE
----------------------
db_files integer 500
สิ่งที่ยากยิ่งกว่า คือการกำหนดค่า ว่าในเวลาหนึ่งปี หรือสองปี ต้องใช้จำนวน datafile เท่าไหร่
ไม่มีความคิดเห็น:
แสดงความคิดเห็น