การแก้ไข Error ที่พบเวลาติดตั้ง Oracle Database 11g Release 2
จัดทำโดย คุณธวัชชัย จันทร์เดช

เมื่อการติดตั้ง ดำเนินมาถึงขั้นตอน Prerequisite Checks หรือ ขั้นตอนการเช็ค "สิ่งที่จำเป็นต้องมี" โดยปกติแล้ว Oracle Database จะกำหนด Package, Library และ Kernel Parameter ที่ต้องการ และเมื่อสิ่งที่กล่าวมา ‘ไม่พบ’ หรือ ‘ไม่เพียงพอต่อความต้องการ’ ตัวติดตั้งก็จะฟ้องว่า ‘ล้มเหลว’ (Failed) ในขั้นตอนนี้เองก็จะเห็นว่า มี Kernel Parameter และ Package ตัวไหน ที่ยังไม่เพียงพอ เมื่อมองที่ช่องด้านล่างจะพบ Expected Value คือ ค่าที่ต้องการ, Actual Value คือ ค่าที่เป็นอยู่ในปัจจุบัน

อันดับแรก การจะติดตั้ง Package, Library หรือแก้ไข Kernel Parameter เราจำเป็นต้องใช้ User: Root

1. Hard Limit: maximum open file descriptors
ให้เข้าไปแก้ไฟล์ limits.conf ที่อยู่ใน /etc/security/ โดยใช้คำสั่ง vi

vi /etc/security/limits.conf

จากนั้นเพิ่มบรรทัดนี้เข้าไป

* hard nofile 65536


2. OS Kernel Parameters (วิธีที่ 1)
ในพาธ /proc/sys/kernel/sem ในไฟล์จะประกอบไปด้วยพารามิเตอร์ 4 ค่า คือ semmsl, semmns, semopm และ semmni เรียงกัน ตัวที่เราสนใจคือ semopm ซึ่งอยู่ลำดับที่ 3 ของตัวเลข
เปิด Terminal ขึ้นมาแล้วไปที่ /proc/sys ด้วยคำสั่ง cd

cd /proc/sys

จากนั้นคนหาไฟล์ที่มีชื่อว่า sem ด้วยคำสั่ง find

find |grep sem

จะพบว่า ไฟล์ sem อยู่ในพาธ ./kernel/sem ลองเปิดอ่านไฟล์ด้วยคำสั่ง cat

cat ./kernel/sem

จะพบว่า มีค่าพารามิเตอร์ 4 ค่า ดังที่กล่าวไว้ ให้ทำการแก้ไขค่าพารามิเตอร์ semopm (ตัวที่ 3)

echo “250 32000 100 128" > ./kernel/sem

และลองตรวจสอบค่าที่เปลี่ยนด้วยคำสั่ง cat อีกรอบ


ในที่นี้ เพื่อให้พิมพ์สะดวก พาธที่อยู่ปัจจุบันคือ /proc/sys ฉะนั้นจึงสามารถย่อการพิมพ์ลงเป็น ./
แต่ถ้าหาก ไม่ได้อยู่ในพาธ จะจำเป็นต้องอ้างอิงพาธเต็มๆของมัน เช่น /proc/sys/kernel/sem
ต่อไป เมื่อรู้หลักการแล้วว่า จะค้นหา Kernel Parameter แต่ละตัวว่าอยู่ที่พาธไหน
ด้วยคำสั่ง find |grep ตามด้วยชื่อของพารามิเตอร์

find |grep file-max
find |grep ip_local_port_range
find |grep rmem_default
find |grep rmem_max
find |grep wmem_default
find |grep wmem_max
find |grep aio-max-nr

แทนที่ข้อมูลด้วยคำสั่ง echo “ค่าตัวเลข" > พาธของพารามิเตอร์

echo “6815744" > ./fs/file-max
echo “9000 65500" > ./net/ipv4/ip_local_port_range
echo “262144" > ./net/core/rmem_default
echo “4194304" > ./net/core/rmem_max
echo “262144" > ./net/core/wmem_default
echo “1048576" > ./net/core/wmem_max
echo “1048576" > ./fs/aio-max-nr

(ถ้าไม่ได้อยู่พาธ /proc/sys จะต้องพิมพ์ชื่อพาธเต็ม เช่น proc/sys/net/ipv4/ip_local_port_range)


วิธีนี้จะใช้เวลามากกว่าวิธีถัดไป แต่ค่าพารามิเตอร์ต่างๆจะถูกเปลี่ยนและนำไปใช้ในทันที ซึ่งสามารถกด Check Again ในขั้นตอนการติดตั้งเพื่อเช็ค Status ใหม่ได้ทันที โดยไม่ต้อง Reboot เครื่อง

3. OS Kernel Parameters (วิธีที่ 2)
นำค่าพารามิเตอร์ทั้งหมดไปกำหนดไว้ที่ไฟล์ๆเดียว คือ /etc/sysctl.conf และอ้างอิงถึงพาธที่ลึกกว่าของค่าพารามิเตอร์ด้วย “." ตามด้วยพาธ การแก้ไขไฟล์ sysctl.conf ด้วยคำสั่ง vi /etc/sysctl.conf

kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576

ตรวจเช็คค่าพารามิเตอร์ที่ถูกกำหนดใน sysctl.conf ด้วยคำสั่ง

/sbin/sysctl –p

จากนั้นยืนยันค่าด้วยคำสั่ง

/sbin/sysctl –a

ถ้าหากจะให้ค่าเหล่านี้มีผลในทุกๆครั้งที่ Boot เครื่อง ให้ ใช้คำสั่ง

/sbin/chkconfig boot.sysctl on


วิธีนี้อาจจะต้อง Reboot ระบบ เพื่อให้ค่าพารามิเตอร์นั้นเปลี่ยน

4. Packages
Package ต่างๆ รวมไปถึง Library จะอยู่ในโฟลเดอร์ Server ในแผ่นดีวีดีติดตั้ง Linux
คำสั่งที่ใช้ในการติดตั้ง Package คือ rpm

rpm –ivh ตามด้วยชื่อแพ็คเกจ สำหรับการติดตั้งและดูรายละเอียด

หรือ

rpm –Uvh ตามด้วยชื่อแพ็คเกจ สำหรับการติดตั้งแบบอัพเดทและดูรายละเอียด

หรือจะใช้ yum install ก็ได้


5. Successful


141211.9:53:58
• แปลงเป็น web page.
• Published.