[Oracle]Oracle 12c on Centos 7 安裝紀錄

記錄自己安裝 Oracle 12c 的筆記,把一些注意事項給整理下來

為了要測試一些 SQL 指令,因為在 SQL Server 上對於 Window Function 支援比較有限,因此想安裝一下 Oracle 來測試一下,之前安裝其他的版本,差不多已經是六七年之前了,因此怕安裝過程中又忘記了,先把相關要注意的部分給記下來。

1. 安裝 Centos ( https://www.centos.org/download/ ):基本上沒有甚麼特別的選擇,除了之前 mandrake 有比較多使用,目前其他的我也不大熟悉,但現在 Centos 安裝上來說也是非常的方便,因為只是要來測試 Oracle,因此就選擇最基本的安裝。基本上安裝不是甚麼問題,但如果也是要跟我一樣安裝在 VM 的環境的時候,要記得調整 Memory 在 2G 以上,而 Swap 空間也要在 2.5GB 以上,這樣安裝過程會順利許多。

2. 安裝 XMing ( http://sourceforge.net/projects/xming/ ) : 在安裝其他版本的時候,都是直接用 SSH 連線就可以進行安裝就可以了,但是在 Oracle 12c 開始,就需要搭配 X Window 才能安裝。因為我都是使用 pietty ,因此就搭配 XMing 來進行 Oracle 安裝。


預備好相關檔案,就可以進行前置設定了,如果安裝 Centos 的時候,選擇全部安裝,基本上也沒有甚麼問題了,但是一般我們都會希望最精簡的方式,避免安裝太多不必要的套件,安裝越多就可能造成的漏洞就越多的情況下,因此可以利用 yum 來幫我們安裝一些必要的套件

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 libXtst libXtst.i686 libXi libXi.i686 make sysstat 

因為新版本的 oracle 要在 X Window 下面進行安裝,因此也必須安裝 X Window 相關套件

yum groupinstall "X Window System" "Fonts" -y 

 

在 Linux 下,很多時候很多服務我們都會建立一個個別的帳號去啟動,這樣做相關權限管理會比較容易,因此 Oracle 安裝在 Linux 上也不例外,因此我們會建立一個 oracle 的帳號並且設定相關群組。而按照慣例會建立三個群組,如果要管控更細緻,可以建立更多的群組來分類,一般建立會使用 「groupmod [-g gid] 群組名」的方式來建立,在官方文件會特別指定 gid,我個人是覺得可有可無,因此就利用以下指令來做建立三個群組和一個 oracle 的帳號,並且指定 oracle 帳號的密碼。 ( 可參考 oracle 官方文件說明 )

接下來要建立目錄,並且設定對目錄有存取權限

oracle 使用者的環境參數設定

接下來就是對 Linux 環境參數調整,這個部分則看你的使用是單機測試還是正式環境,在官方文件上的說明,有特別介紹在安裝後如何針對需要的部分去放大參數,但如果是個人測試環境,則這些參數可以不用調整,至於這些參數的用途,等後續有機會再來整理看看,目前先記下來不做調整。下面的這些參數需要修改「 /etc/sysctl.conf 」內來做設定,設定好之後則透過 「 /sbin/sysctl -p 」 去套用。

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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

另外一個則是「/etc/security/limit.conf」,在這裡要指定我們之前所建立的 oracle 帳號的對開檔案和一些支援的限制,此部分可以參考官方文件上的說明,如同前面設定一樣,此部分如果再使用量很小的狀況是可以不用考慮的。

oracle   soft   nofile   1024
oracle   hard   nofile   65536
oracle   soft   nproc    2047
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768

前置處理完成之後,就可以開啟新的視窗使用 oracle 帳號登入進行安裝,此使如果使用 Putty or Pietty 之類的 SSH 連線軟體,要記得把 X11 forwarding 給開啟,這樣安裝的時候才可以透過前端的 XMing 軟體將 X Window 畫面在前端顯示

因此就可以解開 oracle 安裝程式來進行安裝,透過執行「 . /runInstaller 」來執行安裝程式

後面就按照你的需求去做設定和調整

 

安裝到一半的時候,會出現有如下的視窗,要你另外再開一個視窗,利用 root 的權限去執行兩段 script

 

因此我們另外開視窗來進行安裝


設定開機自動啟動 Oracle 服務,首先先修改 /etc/oratab 的檔案,將第三個參數由原本的 N 改成 Y

 

接著新增一個檔案到 /etc/init.d/ 目錄下 ,命名為 dbora ,此部分可以參考官方文件上的設定

#!/bin/bash

# oracle: Start/Stop Oracle Database 11g R2/12c
#
# chkconfig: 345 90 10
# description: The Oracle Database Server is an RDBMS created by Oracle Corporation
#
# processname: oracle

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1/
ORACLE_USER=oracle

case "$1" in
'start')
   if [ -f $LOCKFILE ]; then
      echo $0 already running.
      exit 1
   fi
   echo -n $"Starting Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
   touch $LOCKFILE
   ;;
'stop')
   if [ ! -f $LOCKFILE ]; then
      echo $0 already stopping.
      exit 1
   fi
   echo -n $"Stopping Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
   rm -f $LOCKFILE
   ;;
'restart')
   $0 stop
   $0 start
   ;;
'status')
   if [ -f $LOCKFILE ]; then
      echo $0 started.
      else
      echo $0 stopped.
   fi
   ;;
*)
   echo "Usage: $0 [start|stop|status]"
   exit 1
esac

exit 0

 

建立好之後,就可以透過指令設定權限,並且透過 chkconfig 加入,這樣重新啟動之後就會自動將 oracle 給帶起來了。

cd /etc/init.d
chgrp dba dbora
chmod 750 dbora
chkconfig --add dbora

PS

1. 如果 X Window 執行有問題,可以考慮看看是否在執行 Xming 的時候提升為 Administrator 權限,我在部分電腦上是靠這樣才執行成功的。

 

2. Centos 7 開始預設的防火牆不是 iptables ,所以要注意一下新的設定方式,否則想說就沒有防火牆,怎麼會連不上去。

# firewall-cmd --zone=public --add-port=1521/tcp --permanent 
# firewall-cmd --zone=public --add-port=5500/tcp --permanent 
# firewall-cmd --zone=public --list-all --permanent

 

3. EM 連線的部分可以有 HTTP 和 HTTPS 兩種,因此要使用的時候要注意指令是否有加入 s,測試前要注意前面一項所說的防火牆設定。

select 
    dbms_xdb_config.gethttpport() http,
    dbms_xdb_config.gethttpsport() https
from dual;

-- 設定 HTTPS 的通道
exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

-- 設定 HTTP 的通道
exec DBMS_XDB_CONFIG.SETHTTPSPORT(8080);

 

4. 以往使用 SQL Server 的時候都是一個 SSMS 就直接搞定,現在使用 SQLPlus 就沒有那麼順手了,之前都還會找 Aqua Data Studio 來使用,但現在要申請 14 天的測試版本有點複雜,而且還不能重複申請,好在 Oracle 還有一個免費的開發工具 Oracle Developer 可以使用,算是不錯的 GUI Tools。

 

5. 最好要把預設的 listen 的設定做個調整,可以先透過 lsnrctl status 查看一下 listen 設定檔案的位置,預設會是 $ORACLE_HOME/network/admin/listener.ora ,如果沒有修改的話,因為預設是抓 localhost,那可能會造成他只監聽 127.0.0.1,造成主機之外無法連接,因此建議更改微電腦名稱,這樣就算更改 IP 也不會出問題。