Tuesday, November 18, 2008

在 Ubuntu 8.10 安裝 Oracle 11g

最近因買了一台 Core Duo 2 的 notebook, 於是就分割了一塊硬碟區域裝 Ubuntu 8.10 版本,至於為何會裝 8.10 版, 因為它的 kernel 支援我的無限網卡, 完全不用再安裝其他軟體

在台灣, 最常用的 database 就是 mssql, oracle, mysql。 在 linux 下安裝 mssql 是不可能的事,除非用 VM 去模擬 Windows 環境。 看了一下 Oracle 的安裝手冊,全部都是英文的,於是想在安裝的時候順便把過程用中文寫下來,便於日後參考。安裝步驟如下

1. 下載 oracle 11g 版本 (安裝版本為 linux_11gR1_database_1013.zip),這裡需提醒你必須要註冊成為 oracle 的使用者才能下載,註冊是免費的

2. 用 root 進入
$ sudo su -

2. 安裝額外的 package 給 oracle 用
# apt-get install gcc make binutils gawk x11-utils rpm alien ksh lsb-rpm

3. 因為 Ubuntu 的預設 shell 是 sh,需改成 bash
# ln -sf /bin/bash /bin/sh
# ls -l /bin/sh

3. 建立群組與使用者
# addgroup oinstall
# addgroup dba
# addgroup nobody
# usermod -g nobody nobody
# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
# mkdir /home/oracle
# chown -R oracle:dba /home/oracle
# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
# mkdir /etc/rc.d
# for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

4. 建立 Oracle 專用目錄
# mkdir -p /u01/app/oracle
# chown -R oracle:dba /u01

. 解壓縮 linux_11gR1_database_1013.zip 到 /u01 下


6. 加入以下參數到 /etc/sysctl.conf
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144


7. 將下列參數加到 /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

8. 將下列參數加到 /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so

9. 重新啟動 Ubuntu Server 開機

10. 先用 oracle 登入後,執行以下命令以安裝 11g。因不支援 zh_TW:UTF-8 的語系,必需先改成 zh_TW:Big5 在執行安裝程式
$ cd /u01/database
$ export LANG=zh_TW:Big5
$ ./runInstaller -ignoreSysPrereqs

11. 這時候英文版的安裝畫面會出現,繼續執行安裝
Next >> Operating System group name = dba >> Standard Edtion >>
Name=oraubuntu, Location /u01/app/oracle/product/11.1.0/oraubuntu

12. 畫面跳到檢查系統需求,這時候將所有的 check box 勾選成 user verified.

13. 按 Next 繼續,然後選擇 "Install Software Only"

14. 按 Next 繼續,將所有 group 選 "dba"

15. 按 Next 繼續,再按 Install 開始正式安裝

16. 經過兩杯 coffee 時間,終於出現下一個畫面,安裝程式需要你用 root 執行兩個 script 分別為
/u01/app/orsInventory/orainstRoot.sh
/u01/app/oracle/product/11.1.0/oraubuntu/root.sh

17. 用 root 執行完這兩個 script 後按 OK,整個安裝就算完成了

18. 此時只有安裝完 oracle ,但尚未建立資料庫,在建立資料庫之前,必須先安裝幾個 package 再建立資料庫
# apt-get install libaio1 lesstif2 libmotif3

19. 用 root 建立 script 以便在開機時啟動 oracle 資料庫
# cat /etc/init.d/oracledb
===============================================================
#!/bin/bash
#
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Listener and Instances
# It relies on the information on /etc/oratab

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/oraubuntu
export ORACLE_OWNR=oracle
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
touch /var/lock/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0
=======================================================================
# chmod a+x /etc/init.d/oracledb
# update-rc.d oracledb defaults 99

20. 用 oracle 開始建立資料庫
$ export ORACLE_HOME=/u01/app/oracle/product/11.1.0/oraibex
$ export PATH=$PATH:/u01/app/oracle/product/11.1.0/oraibex/bin
$ dbca

21. 接下來按 Next >> "Create Database", Next >> Next

22. Global Database Name : vmid , SID : vmid

23. 不要選擇 "Configure Enterprise Manager" 再按 Next

24. password 統一用 "oracle" ,再按 Next

25. 選 File System ,再按 Next

26. 選第一個,"Use Databaes File Location from Template" 再按 Next

27. 將 archive 功能 disable 再按 Next

28. 選擇 "Sample Schema" 再按 Next

29. 在 "Character Sets" 選 "Unicode" 再按 Next

30. 選 "Keep default security settings" ,再按 Next

31. 將 "Enable automatic maintenance tasks" disable 後,再按 Next

32. 再按 "Next" >> "Finish" >> "ok" 後 vmid 的資料庫開始建立

33. 建立完成後按 "exit" 離開,此時資料庫建立完成

34. 測試資料庫連接
$ export ORACLE_ID=vmid
$ sqlplus system/oracle

若可以連進去,便是成功

35. 開機時啟動 oracle 並可連接,需編輯 /etc/oratab
intrepid:/u01/app/oracle/product/11.1.0/oraibex:N
並將 N 改為 Y

36. 重新啟動 server ,如此才能從外部連接 oracle

No comments: