ติดตั้ง Oracle Database 11g Release 2 บน CentOS 6

บทความนี้แสดงวิธีการติดตั้ง Oracle Database 11g Release 2 โดยทดสอบบน CentOS 6.5 (x86_64) เผื่อเป็นประโยชน์ ให้สามารถทดลองใช้ Oracle Database ในการเรียนรู้ หลักการ และคำสั่งต่างๆ ก่อนที่จะไปใช้กับเครื่องจริง

ความต้องการขั้นต่ำของเครื่องที่จะติดตั้ง

  • Memory 2GB
  • Swap ขนาด 1.5 เท่าของ Memory

ส่วน Disk ขอแยกปริมาณการใช้ดิสก์ดังนี้

  • ติดตั้ง CentOS 6.5 (Minimal Desktop) 2.6 GB
  • ไฟล์ zip ที่ดาวน์โหลดมาจาก Oracle 2.2 GB
  • ขนาดไฟล์หลัง unzip 2.4 GB
  • ขนาดไฟล์หลังติดตั้ง 5.5 GB

ติดตั้งไฟล์ rpm เพิ่มเติม

แนะนำให้ติดตั้ง CentOS แบบเลือกติดตั้งชุดซอฟต์แวร์ Minimal Desktop

a03-centos-6-minimal-desktop

แล้วใช้ yum ติดตั้งแพ็คเกจเพิ่มเติมดังนี้

[root@cent6-oracle11g2 ~]# yum install gcc
[root@cent6-oracle11g2 ~]# yum install compat-libstdc++-33
[root@cent6-oracle11g2 ~]# yum install elfutils-libelf-devel
[root@cent6-oracle11g2 ~]# yum install gcc-c++
[root@cent6-oracle11g2 ~]# yum install libaio-devel
[root@cent6-oracle11g2 ~]# yum install unixODBC
[root@cent6-oracle11g2 ~]# yum install unixODBC-devel

ต้องติดตั้งแพ็คเกจ i686 ด้วย

[root@cent6-oracle11g2 ~]# yum install libaio.i686
[root@cent6-oracle11g2 ~]# yum install compat-libstdc++-33.i686
[root@cent6-oracle11g2 ~]# yum install libaio-devel.i686
[root@cent6-oracle11g2 ~]# yum install libstdc++.i686
[root@cent6-oracle11g2 ~]# yum install unixODBC.i686
[root@cent6-oracle11g2 ~]# yum install unixODBC-devel.i686

จริงๆ แล้ว Oracle Database ต้องการแพ็คเกจ pdksh แต่ใน CentOS 6 ไม่มี เราสามารถติดตั้ง ksh แทนที่ได้

[root@cent6-oracle11g2 ~]# yum install ksh

 

แก้ไขไฟล์ hosts

แก้ไข DNS  หรือไฟล์ /etc/hosts เพื่อให้สามารถแปลงขื่อ hostname ของเครื่องเป็น IP Address ได้

[root@cent6-oracle11g2 tmp]# hostname
cent6-oracle11g2

[root@cent6-oracle11g2 tmp]# ping cent6-oracle11g2
ping: unknown host cent6-oracle11g2

ตัวอย่างการแก้ไขไฟล์ /etc/hosts

[root@cent6-oracle11g2 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.5.112 cent6-oracle11g2

หลังการแก้ไข

[root@cent6-oracle11g2 tmp]# ping cent6-oracle11g2
PING cent6-oracle11g2 (192.168.5.112) 56(84) bytes of data.
64 bytes from cent6-oracle11g2 (192.168.5.112): icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from cent6-oracle11g2 (192.168.5.112): icmp_seq=2 ttl=64 time=0.065 ms
^C
--- cent6-oracle11g2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1377ms
rtt min/avg/max/mdev = 0.061/0.063/0.065/0.002 ms

สร้าง group และ user  ของ oracle

[root@cent6-oracle11g2 ~]# groupadd oinstall
[root@cent6-oracle11g2 ~]# groupadd dba
[root@cent6-oracle11g2 ~]# useradd -g oinstall -G dba oracle

[root@cent6-oracle11g2 ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

เปลี่ยนรหัสผ่าน

[root@cent6-oracle11g2 ~]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

แก้ไขค่า Kernel Parameters

ดีฟอลต์จากการติดตั้ง CentOS 6.5

[root@cent6-oracle11g2 ~]# sysctl -a | grep aio-max-nr
fs.aio-max-nr = 65536
[root@cent6-oracle11g2 ~]# sysctl -a | grep file-max
fs.file-max = 201530
[root@cent6-oracle11g2 ~]# sysctl -a | grep shmall
kernel.shmall = 4294967296
[root@cent6-oracle11g2 ~]# sysctl -a | grep shmmax
kernel.shmmax = 68719476736
[root@cent6-oracle11g2 ~]# sysctl -a | grep shmmni
kernel.shmmni = 4096
[root@cent6-oracle11g2 ~]# sysctl -a | grep sem
kernel.sem = 250        32000   32      128
[root@cent6-oracle11g2 ~]# sysctl -a | grep ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000
[root@cent6-oracle11g2 ~]# sysctl -a | grep rmem_default
net.core.rmem_default = 124928
[root@cent6-oracle11g2 ~]# sysctl -a | grep rmem_max
net.core.rmem_max = 124928
[root@cent6-oracle11g2 ~]# sysctl -a | grep wmem_default
net.core.wmem_default = 124928
[root@cent6-oracle11g2 ~]# sysctl -a | grep wmem_max
net.core.wmem_max = 124928

บางค่าที่ทาง Oracle Database ต้องการ ต่ำกว่าค่าดีฟอลต์ที่มีอยู่แล้ว ก็อาจจะข้ามไม่เซ็ตค่าใหม่ได้ เช่นค่า kernel.shmall (ใส่เครื่องหมาย # ไว้หน้าบรรทัด)

เพื่อให้มีผล หากมีการรีสตาร์ตเครื่องได้ด้วย แนะนำให้แก้ไขไฟล์ /etc/sysctl.conf โดยเพิ่มบรรทัดคอนฟิกต่างๆ ดังนี้

[root@cent6-oracle11g2 ~]# vi /etc/sysctl.conf
..
# Minimum values for Oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 536870912
#kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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

รันคำสั่ง sysctl -p เพื่อให้คอนฟิกของ kernel ใหม่มีผล

[root@cent6-oracle11g2 ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
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

แก้ไขค่าคอนฟิก Resource Limits

ดีฟอลต์จากการติดตั้ง CentOS 6.5

[oracle@cent6-oracle11g2 ~]$ ulimit -Sn
1024
[oracle@cent6-oracle11g2 ~]$ ulimit -Hn
4096

[oracle@cent6-oracle11g2 ~]$ ulimit -Su
1024
[oracle@cent6-oracle11g2 ~]$ ulimit -Hu
15889

[oracle@cent6-oracle11g2 ~]$ ulimit -Ss
10240
[oracle@cent6-oracle11g2 ~]$ ulimit -Hs
unlimited

แก้ไขไฟล์ /etc/security/limits.conf

[root@cent6-oracle11g2 ~]# vi /etc/security/limits.conf
...
# Minimum values for Oracle
# -------------------------
# nofile : Open file descriptors
#  - soft = 1024
#  - hard = 65536
#
# nproc : Number of processes available to a single user
#  - soft = 2047
#  - hard = 16384
#
# stack : Size of the stack segment of the process
#  - soft = 10240
#  - hard = 10240
#
oracle          soft    nofile          1024
oracle          hard    nofile          65536
oracle          soft    nproc           2047
oracle          hard    nproc           16384
oracle          soft    stack           10240

เริ่มติดตั้ง Oracle Database

การติดตั้ง Oracle 11g2 ต้องติดตั้งบน X Window

ล็อกอินด้วย oracle บน X Window (Desktop)

b01-login-oracle

 

ดาวน์โหลดไฟล์ติดตั้งจากเว็บ Oracle Database Software Downloads

เลือกดาวน์โหลดเวอร์ชั่น Oracle Database 11g Release 2 สำหรับ Linux x86-64

a01-download

 

ตัวอย่างการดาวน์โหลดแล้วเซฟไฟล์ไว้ใน /tmp

[root@cent6-oracle11g2 tmp]# ls -l
 total 2295600
 -rw-r--r--. 1 root root 1239269270 Apr 13 11:07 linux.x64_11gR2_database_1of2.zip
 -rw-r--r--. 1 root root 1111416131 Apr 13 11:12 linux.x64_11gR2_database_2of2.zip

คำแนะนำ เนื่องจากไฟล์มีขนาดใหญ่มาก แนะนำให้ตรวจสอบความถูกต้องของไฟล์ว่าดาวน์โหลดมาครบถ้วนหรือไม่ ด้วยการใช้คำสั่ง cksum

เปรียบเทียบผลที่แสดงบนหน้าเว็บ (คลิ้กที่ลิ้งค์ See All จากหน้า Download)

a02-chksum

 

หากผลที่ได้ตรงกัน ขั้นต่อไป ใช้คำสั่ง unzip เพื่อแตกไฟล์ zip ทั้งสองไฟล์

[root@cent6-oracle11g2 tmp]# unzip linux.x64_11gR2_database_1of2.zip
[root@cent6-oracle11g2 tmp]# unzip linux.x64_11gR2_database_2of2.zip
[root@cent6-oracle11g2 tmp]# ls -l
total 2295604
drwxr-xr-x. 8 root root       4096 Aug 21  2009 database
-rw-r--r--. 1 root root 1239269270 Apr 13 11:07 linux.x64_11gR2_database_1of2.zip
-rw-r--r--. 1 root root 1111416131 Apr 13 11:12 linux.x64_11gR2_database_2of2.zip

ไฟล์ที่ได้จากการ unzip

[root@cent6-oracle11g2 tmp]# ls -l database/
total 36
drwxr-xr-x. 12 root root 4096 Aug 17  2009 doc
drwxr-xr-x.  4 root root 4096 Aug 15  2009 install
drwxrwxr-x.  2 root root 4096 Aug 15  2009 response
drwxr-xr-x.  2 root root 4096 Aug 15  2009 rpm
-rwxr-xr-x.  1 root root 3226 Aug 15  2009 runInstaller
drwxrwxr-x.  2 root root 4096 Aug 15  2009 sshsetup
drwxr-xr-x. 14 root root 4096 Aug 15  2009 stage
-rw-r--r--.  1 root root 5402 Aug 18  2009 welcome.html

ขนาดไฟล์ unzip

[root@cent6-oracle11g2 tmp]# du -sh database/
2.4G    database/

cd เข้าไปในไดเร็คทอรีที่ unzip ไว้ แล้วรัน ./runInstaller

b02-terminal

 

หน้า Configure Security Updates กรอกข้อมูลหากต้องการรับอีมเล์ข่าวสารจาก Oracle

01-Configure-Security-Updates

 

หน้า Select Installation Option เลือก Create and configure a database

02-Select-Installation-Option

 

หน้า System Class เลือก Server Class

03-System-Class

 

หน้า Node Selection เลือก Single Instance database installation

04-Node-Selection

 

หน้า Select Install Type เลือก Typical install

05-Select-Install-Type

 

หน้า Typical Install Configuration แสดงรายละเอียดที่จะติดตั้ง Oracle Database บนเครื่อง เช่นไดเร็คทอรีต่างๆ

กรอก Admin Password สองครั้งในช่อง Administrative password และ Confirm Password

ดีฟอลต์การติดตั้ง Global database name คือ orcl

06-Typical-Install-Configuration

 

หน้า Create Inventory แสดงชื่อ Inventory Directory

07-Create-Inventory

 

หน้า Perform Prerequisite Checks แสดงค่าคอนฟิกของเครื่องขั้นต่ำ (minimum requirement) ที่จำเป็นต่อการติดตั้ง

แม้หน้าจอจะฟ้องให้ติดตั้ง i386 แต่ ใน CentOS ไม่มีไฟล์แบบ i386 ให้ติดตั้งเวอร์ชั่น i686 แทน แล้วคลิ้กเลือก [x] ignore all แล้วกดปุ่ม Next ต่อไปได้

08c-packages-i386-error

 

หน้า Summary สรุปค่าคอนฟิกทั้งหมดก่อนการติดตั้ง

09-Summary

 

หน้าจอระหว่างการติดตั้ง

10-Install-Product

11-Database-Configuration-Assistant

12-Database-creation-complete

 

เมื่อใกล้สิ้นสุด จะมีหน้าจอ Execute Configuration scripts แจ้งให้รันสคริปต์สองไฟล์

14-Execute-Configuration-scripts

 

ล็อกอินด้วย root แล้วรันสองไฟล์ตามที่แสดง

[root@cent6-oracle11g2 ~]# /home/oracle/app/oraInventory/orainstRoot.sh
Changing permissions of /home/oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /home/oracle/app/oraInventory to oinstall.
The execution of the script is complete.
[root@cent6-oracle11g2 ~]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /home/oracle/app/oracle/product/11.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

หน้าจอ Finish แสดงการติดตั้งเสร็จสิ้น พร้อมแสดงที่อยู่ของหน้าเว็บ Enterprise Manager Database Control ที่เราสามารถเข้าไปจัดการ Oracle Database ด้วย browser ผ่านหน้าเว็บได้

15-Finish

 

ดีฟอลต์ไฟล์ที่ติดตั้งทั้งหมดจะอยู่ในไดเร็คทอรี app/ ใน home ของ oracle

ขนาดดิสก์ที่ใช้ในการติดตั้งประมาณ 5.5 GB

[oracle@cent6-oracle11g2 ~]$ du -sh app
5.5G    app

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.