http://blog.csdn.net/sheen1991/article/details/47026591
在Linux系統中,安裝oracle有時還是比較蛋疼的一件事情。但是如果安裝前的準備工作做的好的話,可能就比較順利。如依賴包安裝完整,配置文件設置正確。如下的總結是在centos服務器上安裝oracle10g,不過此方法在本機的centos7上安裝oracle12C驗證也通過,感覺在centos7上安裝oracle12C要比在censor6.5上安裝oracle10g容易,可能是新系統兼容性比較好的緣故。
由于本人水平有限,搞Linux只是業余,主要工作還是Java后端開發,目前使用kotlin語言。可能很多地方不完善,希望大家提出寶貴的意見,大家一起進步。謝謝!!
centos6系列安裝oracle11g教程
1、centos系統的安裝
1、做好u盤啟動系統。
2、安裝系統。
a、安裝系統時,分區一般按照如下分配:
/boot 200MB
/swap 一般為內存的1.5到2倍
/u01 120000MB
/ 剩余的空間
3、安裝定制軟件包。
注意:Development Tools中,選中libXp和glibc開頭的幾個包。
4、網絡配置
vi /etc/sysconfit/network-scripts/ifcfg-eth0
一般更改為如下配置:
ONBOOT=yes
BOOTPROTO=static #注意:此處應該更改為static,否則安裝會報錯
IPADDR=X.X.X.X #ip地址
NETMASK=255.255.255.0 #子網掩碼
GATEWAY=X.X.X.X #默認網關
dns1=X.X.X.X #DNS
保存退出,然后重啟網絡。
service network restart
如果以上命令失敗,則直接配置網絡。
打開網絡配置:
按照如上配置之后,點擊Apply保存網絡。然后重啟網絡。
重啟成功之后,進入網絡配置,vi /etc/sysconfit/network-scripts/ifcfg-eth0
將里面的BOOTPROTO更改為static,然后重啟網絡。在終端ping www.baidu.com,如果通了說明網絡配置好了。
5、安裝必須的依賴包。
執行以下命令,安裝完所有的依賴包,一般在oracle安裝時不會再報錯了(一下安裝包在oracle10g和oracle12c已經驗證)。
yum install -y compat-libcap1.i686 binutils.x86_64 binutils-devel.x86_64 compat-libstdc++-296.i686 compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.x86_64 libstdc++-devel.i686 libaio.i686 libaio.x86_64 libaio-devel.x86_64 libaio-devel.i686 libXext.x86_64 libXext.i686 libXext-devel.i686 libXext-devel.x86_64 libXtst.x86_64 libXtst-devel.x86_64 libXtst.i686 libXtst-devel.i686 libX11.x86_64 libX11.i686 libX11-devel.x86_64 libX11-devel.i686 libXau.x86_64 libXau.i686 libXau-devel.x86_64 libXau-devel.i686 libxcb.x86_64 libxcb-devel.x86_64 libxcb.i686 libxcb-devel.i686 libXi.x86_64 libXi.i686 libXi-devel.x86_64 libXi-devel.i686 make.x86_64 sysstat.x86_64 libXp.x86_64 libXp-devel.x86_64 libXp.i686 libXp-devel.i686 libXpm.x86_64 libXpm-devel.x86_64 libXpm.i686 libXpm-devel.i686
2、安裝oracle之前必要配置
1、修改linux系統所需的配置文件
Oracle數據庫的安裝不建議在超級用戶root上安裝,建議另外增加一個用戶oracle在linux系統上。但是在增加該用戶之前,我們還需要為該用戶設置一些系統內核參數。
使用Vi編輯器在/etc/sysctl.conf文件的末尾增加下面的參數:
kernel.shmall= 2097152 #表示系統一次可以使用的共享內存總量(以頁為單位)。
kernel.shmmax= 2147483648 #定義了共享內存段的最大尺寸(以字節為單位)。缺省為32M,對于oracle來說,該缺省值太低了,通常將其設置為2G。
kernel.shmmni= 4096 #用于設置系統范圍內共享內存段的最大數量。該參數的默認值是 4096
kernel.sem= 250 32000 100 128 #表示設置的信號量
net.ipv4.ip_local_port_range= 1024 65000 #本地端口數量上限
net.core.rmem_default=4194304 #默認的接收窗口大小
net.core.rmem_max=4194304 #接收窗口的最大大小
net.core.wmem_default=262144 #默認的發送窗口大小
net.core.wmem_max=262144 #發送窗口的最大大小
[root@CentOS6~]# /sbin/sysctl -p #執行生效
編輯/etc/security/limits.conf文件,用于設置系統資源限制。假如未來由oracle這個用戶來安裝oracle數據庫,則需要系統管理員將以下參數添加到limits.conf。
vi/etc/security/limits.conf
加入以下四行:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
然后在編輯/etc/pam.d/login文件,增加以下參數:
vi/etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
注:
etc目錄下包括pam.d目錄,在pam.d目錄下還有個login子目錄。etc指的系統配置文件目錄,pam.d指的是驗證登陸配置,login是登陸配置文件。簡單說就是linux操作系統的登陸配置文件。
2、創建相應的用戶名及用戶組
在這里只討論單主機環境,不考慮RAC環境的配置。執行以下指令以新增oracle安裝時所需要的使用者與群組。
2.1建立群組oinstall
groupadd oinstall
2.2建立群組dba
groupadd dba
2.3建立用戶oracle將加入oinstall和dba群組,并測試
useradd -g oinstall -G dba oracle
2.4 建立oracle的新密碼
passwd oracle
3、修改/etc/profile,修改用戶的shell limits
將以下代碼新增到profile文件中:
if [[ $USER = "oracle" ]]; then
if [[ $SHELL = "/bin/ksh" ]]; then
ulimit -p16384
ulimit -n65536
else
ulimit -u16384 -n 65536
fi
fi
注意中括號的空格。
4、修改Linux發行版本信息
由于Oracle10g發行的時候,CentOS6.6沒有發行,所以Oracle10g并沒有對CentOS6.6確認支持,需要修改相關文件讓Oracle10g支持CentOS 6。
我們需要手工修改Linux的發行注記,讓Oracle 10g支持CentOS6.5。
編輯/etc/RedHat-release文件
vim /etc/redhat-release
將其中的內容CentOS release 6.5 (Final)修改為redhat 4
5、創建oracle的安裝文件夾及數據存放目錄
mkdir –p /u01/app/oracle
5.1修改/u01/app/oracle目錄所屬用戶及組,修改為oracle和oinstall組。
查看目前oracle目錄的用戶及組:ls –la |grep oracle
修改oracle目錄用戶及組:
chown -R oracle:oinstall /u01/app/oracle
5.2 修改/u01/app/oracle的目錄權限,使oinstall組對/u01/app/oracle目錄也有可讀寫執行權限。
使用如下命令:
chmod -R 775 /u01/app/oracle
6、配置oracle用戶的環境變量
打開cd /home/oracle,使用Vi編輯.bash_profile。如下圖:
修改并加入以下內容:
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=orcl;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
保存后使用如下命令,使設置生效:
source /home/oracle/.bash_profile
7、安裝Oracle,并進行相關設置
7、1將下載的壓縮包放至即將安裝oracle的文件夾/uo1/app/oracle下
unzip 文件名,將該文件解壓。
解壓縮完成會在同一個文件夾中看到database的文件夾
目前database文件夾的所有者和用戶組均是root。現在我們要該更它:
chown -R oracle:oinstall /u01/app/oracle/database
3、安裝oracle數據庫
1、安裝準備
上述解壓oracle安裝包后,我們要注銷掉root用戶,使用Oracle用戶登錄,然后使用該用戶進行oracle的安裝。
在終端下,進入/u01/app/oracle/database目錄:
準備執行數據庫安裝,如果你的centos是中文環境,安裝時會出現中文亂碼,請下以下指令。使系統臨時為英文狀態:
export LC_ALL=en_US.UTF-8
2、安裝oracle
進入database目錄,執行./ runInstaller
等待一會,出現下面這個界面,說明啟動安裝。
選擇高級安裝
注意:修改存放目錄。
上圖是指定證書存放的目錄。(如果提示目錄不存在,請先創建目錄)
上圖選擇安裝的數據庫類型及oracle所支持的語言,這里選擇企業版,語言選擇英文和簡體中文。
上圖指定oracle環境變量,及安裝路徑。因為我們在.bash_profile中已經聲明,所以這里會自動填充。
以上步驟,如果有錯或者警告,根據信息來做相應調整,調整之后,再次點擊Retry檢查,檢查通過后,點擊Next繼續安裝。
選擇配置選項,在這有三個選擇項:創建數據庫、配置自動存儲管理、只安裝數據軟件。
我們在此選擇第一項,創建數據庫。創建數據庫后,我們就不必再執行"dbca"進行數據庫的創建。
此處選擇第四個Advanced,因為 "Advanced" 后面有很多SGA,文件系統都可以自行設置。
指定oracle數據庫默認的SID。指定字符集為庫所用的字符集,中文為simplified Chinesezhs16gbk。如果字符集不對,可能造成以后數據亂碼。最下面不用打鉤Create databasewithsample schemas(已有的模式建庫)。
配置數據庫的數據文件存儲的位置
配置數據庫備份恢復的相關選項
配置數據庫相關用戶密碼,輸入所有用戶使用同一個密碼。
開啟一個新的終端,su到root。將要求執行的兩段script依序執行。
/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/10.2.0/db_1/root.sh
到此oracle數據庫安裝完畢。
查看數據庫的狀態:
登錄數據庫:
sqplus / as sysdba
SQL> select instance_name,status fromv$instance;
INSTANCE_NAME STATUS
orcl OPEN
3、創建數據庫
如果上一步沒有選擇創建數據庫,則現在創建數據庫。
進入oracle安裝目錄的bin/目錄下,執行./dbca即可創建數據庫。
注意:創建數據的時候,如果報錯提示:unable to create shared memory segment
執行如下命令:
[root@zhaotong database]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
[root@zhaotong database]# echo 501 >/proc/sys/vm/hugetlb_shm_group
4、創建監聽
如果沒有創建監聽,則創建監聽。
進入oracle的安裝目錄的bin/目錄下,執行./netcat即可創建監聽。
4、oracle安裝的后續工作
1、oracle數據庫中文亂碼
SQL> select userenv('language') from dual;
把結果記錄下來
然后到Oracle用戶下 vim .bash_profile
查看NLS_LANG對應的值與這里寫圖片是否一樣,不一樣的話,改為圖片上的編碼格式。
如果bash_profile里面沒有NLS_LANG選項,就自己添加
2、開放端口
/sbin/iptables -I INPUT -p tcp --dport 1521 -j ACCEPT #寫入修改
/sbin/iptables -I INPUT -p tcp --dport 1158 -j ACCEPT #寫入修改
/etc/init.d/iptables save #保存修改
service iptables restart #重啟防火墻,修改生效
3、監聽管理
如果沒有創建監聽,使用oracle用戶登錄,進入oracle的安裝目錄下的bin目錄,執行./netca即可創建監聽
查看oracle的監聽狀態
lsnrctl status
停止監聽
lsnrctl stop
啟動監聽
lsnrctl start
查看oracle監聽參數文件,一般在oracle安裝目錄下的/network/admin目錄下
listener.ora和ternname.ora
啟動指定的監聽:
lsnrctl start [監聽名]
重啟監聽
lsnrctl reload
監聽幫助
lsnrctl help
某個監聽命令的詳細幫助
lsnrctl help start
4、oracle數據庫的啟動與停止
4.1、啟動數據庫
4.1.1、第一種方法:
以oracle用戶登錄終端,進入到oracle安裝目錄的bin目錄下,執行dbstart,等待完成oracle數據庫的啟動。
4.1.2.、第二種方法:
以oracle用戶登錄終端:
使用sqlplus登錄數據庫:
sqlplus / as sysdba
執行:
startup
4.2、停止數據庫
4.2.1、第一種方法
使用sqlplus登錄數據庫:
sqlplus / as sysdba
執行:
shutdown immediate
4.2.2、第二種方法
以oracle用戶登錄終端,進入到oracle安裝目錄的bin目錄下,執行dbshut,等待完成oracle數據庫的啟動
5、oracle設置開機自啟動
1、以root身份登錄到系統。
執行命令:vi /etc/oratab
orcl:/u01/app/oracle/product/10.2.0/db_1/dbhome_1:N
將以上內容更改為:
orcl:/u01/app/oracle/product/10.2.0/db_1/dbhome_1:Y
保存退出。
注意:/u01/app/oracle/product/10.2.0/db_1為oracle的安裝目錄。
執行命令:vi /etc/rc.d/rc.local
加入以下配置:
su oracle -lc "/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/10.2.0/db_1/bin/dbstart
保存退出。
注意:第一行因為有空格,所以要加引號。
重啟系統。
6、oracle常見問題
1、啟動數據庫的時候報錯:ORA-27125: unable to create shared memory segment
執行如下命令:
[root@zhaotong database]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
[root@zhaotong database]# echo 501 >/proc/sys/vm/hugetlb_shm_group
但以上這種方式在重啟操作系統后失效, /proc/sys/vm/hugetlb_shm_group又變為了0,建議采用以下方式解決:
加入vm.hugetlb_shm_group = 501 到/etc/sysctl.conf中來解決:
vi /etc/sysctl.conf
加入如下的內容,其中501為dba組號,需要根據你實際的情況進行改變。
vm.hugetlb_shm_group = 501
保存退出!
執行生效:
/sbin/sysctl -p