經過這幾天的血汗歷程,在重裝了N次oracle和CentOS后。終於在CentOS中把Oracle搞定了,現在並且將我在安裝過程中遇到的問題結合網上的資源整理了出來,希望對大家有點幫助。其中存在的一些問題可能跟環境有關,所以本文只提供參考。今天做了修改,將我最終在服務器上的安裝過程融合到這篇文中了。服務器是RedHat系統,所以這篇文章同時適合CentOS和RedHat的。
1、確保系統中安裝了yum
因為我安裝的是服務器,而且redhat系統還沒注冊,所以不能使用在線更新軟件。為了保證服務器能在線更新軟件,或者保證安裝oracle的必備軟件包都已經安裝,那么可以通過以下方法檢查是否安裝yum,CentOS應該是免費自帶可用的。
saas@dbserver yum.repos.d]$ rpm -qa |grep yum
yum-3.2.22-26.el5
yum-rhn-plugin-0.5.4-15.el5
yum-security-1.1.16-13.el5
yum-updatesd-0.9-2.el5
yum-metadata-parser-1.1.2-3.el5
2、在dbserver服務器上添加CentOS的yum
先到/etc/yum.repos.d文件夾下
[saas@dbserver yum.repos.d]$cd /etc/yum.repos.d
查看文件夾內已有文件
[saas@dbserver yum.repos.d]$ dir
rhel-debuginfo.repo rhel-debuginfo.repo.bak
在網絡上獲取新的CentOS的yum配置文件
[saas@dbserver yum.repos.d]$ sudo wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
--2011-08-25 01:57:13-- http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
Resolving docs.linuxtone.org... 119.57.20.28
Connecting to docs.linuxtone.org|119.57.20.28|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1426 (1.4K) [application/octet-stream]
Saving to: `CentOS-Base.repo'
100%[======================================>] 1,426 --.-K/s in 0s
2011-08-25 01:57:15 (151 MB/s) - `CentOS-Base.repo' saved [1426/1426]
再次查看文件夾內文件, 發現多了一個CentOS-Base.repo。
[saas@dbserver yum.repos.d]$ dir
CentOS-Base.repo rhel-debuginfo.repo rhel-debuginfo.repo.bak
這個時候已經添加成功了, 而且還沒有修改redhat中自帶了yum的配置文件rhel-debuginfo.repo
3、測試添加的CentOS的yum
先隨便找幾個有必要安裝的軟件進行查詢看裝了沒, 當然是假設我已經知道這些軟件中有一
個或幾個並沒有裝過, 然后我們通過新的yum進行安裝。
例如我要裝sysstat這個軟件包, 那么我先查詢確認系統中沒有裝
[saas@dbserver /]$ rpm -q make compat-libstdc++ sysstat
make-3.81-3.el5
package compat-libstdc++ is not installed
package sysstat is not installed
然后我在用新的yum來安裝sysstat
[saas@dbserver /]$ sudo yum install sysstat
[sudo] password for saas:
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
addons | 951 B 00:00
addons/primary | 204 B 00:00
base | 2.1 kB 00:00
base/primary_db | 2.2 MB 00:08
extras | 2.1 kB 00:00
extras/primary_db | 260 kB 00:01
update | 1.9 kB 00:00
update/primary_db | 725 kB 00:03
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:7.0.2-3.el5_5.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
sysstat x86_64 7.0.2-3.el5_5.1 base 174 k
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 174 k
Is this ok [y/N]: y
Downloading Packages:
sysstat-7.0.2-3.el5_5.1.x86_64.rpm | 174 kB 00:01
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
base/gpgkey | 1.5 kB 00:00
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : sysstat 1/1
Installed:
sysstat.x86_64 0:7.0.2-3.el5_5.1
Complete!
這個時候sysstat已經裝好了, 我們再次查詢確認下:
[saas@dbserver /]$ rpm -q make compat-libstdc++ sysstat
make-3.81-3.el5
package compat-libstdc++ is not installed
sysstat-7.0.2-3.el5_5.1
至此新的yum貌似已經可以用了, 那么接下來就可以大膽的通過這種方式安裝軟件了。不過呢,最好
在安裝完軟件之后,把下載下來的安裝包刪去,因為它會占緩存,你懂得!
命令:sudo yum clean all
4、通過新的yum下載安裝軟件包
具以前專業人士編寫的文檔, redhat安裝軟件包大致需要以下相關的東東:
X11相關的庫 (軟件包名視操作系統而定,故不一一列出)
gcc (版本至少為2.96-124)
make (版本至少為3.79)
binutils (版本至少為2.11)
openmotif (版本至少為2.1.30)
setarch (版本至少為1.3)
compat-db (版本至少為4.0.14.5)
compat-gcc (版本至少為7.3-2.96.122)
compat-gcc-c++ (版本至少為7.3-2.96.122)
compat-libstdc++ (版本至少為7.3-2.96.122)
compat-libstdc++-devel (版本至少為7.3-2.96.122)
sysstat (版本至少為5.0.5-1)
libaio (版本至少為0.3.103-3)
libaio-devel (版本至少為0.3.103-3)
libstdc++
libstdc++-devel
下面是我裝oracle的必要軟件列表(僅供參考)
binutils-2.15.92.0.2-10.EL4
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9.EL4
libstdc++-devel-3.4.3-9.EL4
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2
libaio-0.3.96
openmotif21-2.1.30-11.RHEL4.2 (Required only to install Oracle demos. Installation of Oracle demos is not covered by this guide.)
在我綜合了眾位網友的經驗之后,覺得大致也差不多,只是軟件包名有點出路而已。
那么先看看系統中查什么包吧
檢查這些軟件包的命令如下:
[saas@dbserver /]$ rpm -q gcc make binutils openmotif setarch compat-db compat-gcc compat-gcc-c++ compat-gcc-34 compat-gcc-34-c++ compat-libstdc++ compat-libstdc++-devel compat-libstdc++-296 compat-libstdc++-33 unixODBC unixODBC-devel libaio libaio-devel sysstat glibc
其中我故意的將compat-gcc compat-gcc-c++ compat-gcc-34 compat-gcc-34-c++四個包都寫上
目的就是想告訴大家,以前網上說要檢查compat-gcc和compat-gcc-c++,很多人發現再怎么安裝,
再怎么檢查都是未裝上,后來安裝oracle時也沒出錯, 其實不是他沒裝, 是軟件包名更換了,說不
定他裝上的是compat-gcc-34 compat-gcc-34-c++這兩個包, 但不管怎么說這些包還是必須的,如
果說不裝這些先決軟件包, 那么安裝oracle時很有可能就會出錯。至於你信不信, 反正我是信了。
上面的檢查結果如下:
compat-gcc-34-c++
gcc-4.1.2-50.el5
make-3.81-3.el5
binutils-2.17.50.0.6-14.el5
package openmotif is not installed
setarch-2.0-1.1
package util-linux-ng is not installed
package compat-db is not installed
package compat-gcc is not installed
package compat-gcc-c++ is not installed
package compat-gcc-34 is not installed
package compat-gcc-34-c++ is not installed
package compat-libstdc++ is not installed
package compat-libstdc++-devel is not installed
package unixODBC is not installed
package unixODBC-devel is not installed
compat-libstdc++-296-2.96-138
compat-libstdc++-33-3.2.3-61
compat-libstdc++-33-3.2.3-61
libaio-0.3.106-5
libaio-0.3.106-5
package libaio-devel is not installed
sysstat-7.0.2-3.el5_5.1
其中gcc-4.1.2-50.el5和sysstat-7.0.2-3.el5_5.1是我上面測試的時候裝上的
那么接下來就動手裝上那些oracle需要的軟件包吧。。。
注:CentOS中setarch好像和util-linux-ng有某種關聯, 我說不清, 但我只能確定我在CentOS拼命的
裝setarch都沒裝上, 提示util-linux-ng這個卻裝上了。不過現在我在redhat中卻發現setarch已經
裝上了, 所以少了這個麻煩了。
5、檢查安裝oracle軟件環境
再次查看安裝oracle所需的軟件環境
[saas@dbserver /]$ rpm -q gcc make binutils openmotif setarch compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-296 compat-libstdc++-33 libaio libaio-devel sysstat glibc
gcc-4.1.2-50.el5
make-3.81-3.el5
binutils-2.17.50.0.6-14.el5
openmotif-2.3.1-5.el5_6.2
setarch-2.0-1.1
compat-db-4.2.52-5.1
compat-gcc-34-3.4.6-4.1
compat-gcc-34-c++-3.4.6-4.1
package unixODBC is not installed
package unixODBC-devel is not installed
compat-libstdc++-296-2.96-138
compat-libstdc++-33-3.2.3-61
libaio-0.3.106-5
libaio-devel-0.3.106-5
sysstat-7.0.2-3.el5_5.1
glibc-2.3.4-2
glibc-common-2.3.4-2
刪除更新軟件時所下載的文件,這步目的是清空沒用的文件,是可選的
[saas@dbserver /]$ sudo yum clean all
[sudo] password for saas:
Loaded plugins: rhnplugin, security
Cleaning up Everything
至此軟件環境就准備好了
6、檢查安裝oracle時對操作系統的要求
先了解下我在CentOS中遇到過的問題
[oracle@localhost database]$ ./runInstaller
正在啟動 Oracle Universal Installer...
正在檢查安裝程序要求...
檢查操作系統版本: 必須是redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
未通過 <<<<
正在退出 Oracle Universal Installer。
大致的意思就是說系統不是oracle推薦可以安裝的linux版本。
那么我現在看看dbserver中redhat的系統信息
[saas@dbserver /]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
發現也不是oracle推薦的,那么就按照我在CentOS中安裝時的修改辦法
1) 先備份管理linux版本的信息文件"/etc/redhat-release"
[saas@dbserver etc]$ sudo cp redhat-release redhat-release.bak
2) 修改內容
[saas@dbserver etc]$ sudo vim redhat-release
將內容由
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
修改為
Red Hat Enterprise Linux Server release 4.5 (Tikanga)
7、設置安裝語言
1) 切換為root用戶(su - root)或者有一定root權限的用戶使用sudo管理, 這里用的是具有一定權
限用戶,所以后面說的以root身份登錄時我直接用sudo代替了, 但一定要注意用戶的切換。所以我每
次用到sudo時, 大家可以用root就行了, 然后把我的sudo去掉
2) 安裝語言:export LANG=en_US.UTF-8
上面是后來修改的,上面有些命令前加了sudo意思也就是以root權限執行,相當於切換為root。
8、修改內核參數
1) 以root身份登錄
2) 編輯文件 /etc/sysctl.conf,修改以下項目,如果沒有可以自己添加。
kernel.shmall = 2097152 # 可以使用的共享內存的總量。
kernel.shmmax = 1073741824 # 最大共享內存段大小。
kernel.shmmni = 4096 # 整個系統共享內存段的最大數目。
kernel.sem = 250 32000 100 128 #每個信號對象集的最大信號對象數;系統范圍內最大信號對象數;每個信號對象支持的最大操作數;系統范圍內最大信號對象集數。
fs.file-max = 65536 # 系統中所允許的文件句柄最大數目。
net.ipv4.ip_local_port_range = 1024 65000 # 應用程序可使用的IPv4端口范圍。
net.core.rmem_default = 262144 # 套接字接收緩沖區大小的缺省值
net.core.rmem_max = 262144 # 套接字接收緩沖區大小的最大值
net.core.wmem_default = 262144 # 套接字發送緩沖區大小的缺省值
net.core.wmem_max = 262144 # 套接字發送緩沖區大小的最大值
3) 運行sysctl -p 應用以上參數,即可馬上生效。
4) 修改/etc/security/limits.conf文件,在文件末尾添加以下內容:
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
5) 修改/etc/pam.d/login文件,並在文件末尾添加以下內容
session required pam_limits.so
6) 查看/etc/selinux/config 文件,確保SELINUX 為disabled狀態
SELINUX=disabled
7)注:內核參數並非必須修改,可以根據自己實際情況而定。
9.安裝Oracle必須指定擁有DBA權限的組和運行Oracle的用戶
1) 以root身份登錄
2) 查看用戶和組
cat /etc/group
cat /etc/passwd |cut -f 1 -d
2) 創建組: groupadd oradba
3) 創建用戶: useradd -g oradba oracle
4) 設置oracle用戶密碼: passwd oracle
10、創建oracle安裝時的目標目錄
1) 以root身份登錄
2) 創建Oracle系統目錄:mkdir /app/oracle
3) 創建Oracle服務器主目錄:mkdir /app/oracle/10g
4) 將該目錄的所有者設置為oracle:chown oracle /app/oracle -R
5) 編輯 /etc/profile,在后面追加以下兩行
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=/app/oracle/10g
export ORACLE_SID=LHSID
6) 注: 安裝Oracle的目標目錄可以任意指定, 但是安裝和運行Oracle的用戶必須
有完全修改該目錄的權限
11、編輯安裝需要的應答文件
1) 以root身份登錄
2) 靜默模式(Silent)安裝必須指定一個應答文件來完成安裝過程所須的各類參數。
在Oracle安裝目錄的response子目錄里有enterprise.rsp、standard.rsp
和custom.rsp三個應答文件,分別對應企業版、標准版和定制的安裝。
3) 以enterprise.rsp為例,用任意的文本編輯器打它,修改以下這些項目的值。
ORACLE_HOME Oracle服務器的主目錄位置, 必須是絕對路徑, 這里我
設置為/app/oracle/10g
ORACLE_HOME_NAME Oracle服務器的名稱, 必須以字母開頭, 這里我
設置為ALINHOME
COMPONENT_LANGUAGES Oracle服務器支持的語言, 默認只有英語,可以添
加多個語言,這里默認不修改
s_nameForDBAGrp 用於Oracle系統管理的linux用戶組名,該組的用戶
擁有管理Oracle服務器的權限,這里我設置為 oradba
s_nameForOPERGrp 用於Oracle數據庫常規操作的linux用戶組名, 該組的
用戶擁有常規操作Oracle數據庫的權限,這里我設置為oracle
n_configurationOption 安裝類型(1為在安裝后創建數據庫, 2為安裝后
創建一個自動存儲管理實例, 3為只安裝服務器軟件),這里我選擇3。
其它項目用默認值即可,也可以根據自己的須要進行修改
4) 注:如果Oracle從光盤安裝,必須先將應答文件復制到硬盤上,才能修改
12、開始安裝
1) 用oracle用戶登錄,然后在Oracle安裝目錄里執行
./runInstaller -ignoreSysPrereqs -silent -responseFile <應答文件的絕對路徑>
2) 接下來就是等待安裝結束了。
各安裝參數的含義如下
ignoreSysPrereqs
讓Oracle忽略系統檢查,因為Oracle官方聲明只支持Linux服務器產品,所以要在非服務器產品的Linux上安裝就必須指定此參數。
silent 讓安裝程序以靜默模式運行。
responseFile 指定一個應答文件
在這里我輸入:./runInstaller -ignoreSysPrereqs -silent -responseFile /app/soft/database/response/enterprise.rsp 當前目錄為安裝目錄
系統反應為:
Starting Oracle Universal Installer...
Checking installer requirements...
13、系統初始化
1) 在安裝完成后讀信息發現:
WARNING:A new inventory has been created in this session. However, it has not yet been registered as the central inventory of this system.
To register the new inventory please run the script '/app/oracle/oraInventory/orainstRoot.sh' with root privileges.
If you do not register the inventory, you may not be able to update or patch the products you installed.
The following configuration scripts
/app/oracle/10g/root.sh
need to be executed as root for configuring the system. If you skip the execution of the configuration tools, the configuration will not be complete and the product wont function properly. In order to get the product to function properly, you will be required to execute the scripts and the configuration tools after exiting the OUI.
2) 以root用戶登錄
3) 運行$ORACLE_HOME/root.sh,進行系統初始化
一路按回車用默認值即可
系統反應:
/app/oracle/10g/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/oracle/10g
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by8.Oracle系統初始化
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
14、安裝網絡監聽器
1) 以oracle登陸
2) 沒有網絡監聽器,客戶端就無法通過網絡連接Oralce服務器。要在命令行安裝網
絡監聽器,也只能使用靜默模式。
3) 編輯Oracle安裝目錄里response子目錄下的應答文件 netca.rsp, 修改以下項目:
INSTALL_TYPE=""custom"" 安裝的類型,這里我使用默認值
LISTENER_NUMBER=1 監聽器數量,這里我使用默認值
LISTENER_NAMES={"LISTENER"} 監聽器的名稱列表,這里我使用默認值
LISTENER_PROTOCOLS={"TCP;1521"} 監聽器使用的通訊協議列表,這里我使用默認值
LISTENER_START=""LISTENER"" 監聽器啟動的名稱,這里我使用默認值
4) 然后運行
$ORACLE_HOME/bin/netca /silent /responseFile <應答文件的絕對路徑>
這里我輸入的命令為:$ORACLE_HOME/bin/netca /silent /responseFile /app/soft/database/response/enterprise.rsp
15、修改dbstart
1) 以oracle身份登錄
2) 打開 $ORACLE_HOME/bin/dbstart,將
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
改為
ORACLE_HOME_LISTNER=$ORACLE_HOME
否則網絡監聽器可能無法自動啟動。
16、安裝數據庫實例
1) 以root身份登錄
2) 編輯Oracle安裝目錄里response子目錄下的應答文件 dbca.rsp,修改以下項目:
GDBNAME 數據庫全局名稱,這里我設置為:GDBNAME = "LHSYSTEM"
SID 數據庫的SID,這個比較重要,我第一次安裝時就是因為這個問題無法使用,這里我修改為:SID = "LHSYSTEMSID"
SYSPASSWORD SYS用戶的初始密碼,我設置為manager
SYSTEMPASSWORD SYSTEM用戶的初始密碼,我設置為manager
CHARACTERSET 數據庫字符集(中文為 ZHS16GBK),當然得設置成中文了
NATIONALCHARACTERSET 數據庫國家字符集,使用默認值
3)然后登陸oracle運行
$ORACLE_HOME/bin/dbca -silent -responseFile <應答文件的絕對路徑> -cloneTemplate
這里我輸入的命令為:$ORACLE_HOME/bin/dbca -silent -responseFile /usr/local/oracle10G/response/dbca.rsp -cloneTemplate
4) 系統反應:
[oracle@alin ~]$ $ORACLE_HOME/bin/dbca -silent -responseFile /usr/local/oracle10G/response/dbca.rsp -cloneTemplate
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
33% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/app/oracle/10g/cfgtoollogs/dbca/JXSYSTEM/JXSYSTEM.log" for further details.
17、數據庫創建成功后須要注冊一些信息
1) 以oracle用戶登錄
2) 輸入顯示以下信息
[oracle@alin ~]$ $ORACLE_BASE/oraInventory/orainstRoot.sh
chmod: changing permissions of `/etc': Operation not permitted
cp: cannot create regular file `/etc/oraInst.loc': Permission denied
Changing permissions of /app/oracle/oraInventory to 770.
Changing groupname of /app/oracle/oraInventory to oradba.
The execution of the script is complete
3) 改為root用戶輸入后
$ORACLE_BASE/oraInventory/orainstRoot.sh
系統反應:
Changing permissions of /app/oracle/oraInventory to 770.
Changing groupname of /app/oracle/oraInventory to oradba.
The execution of the script is complete
4) 然后編輯 /etc/oratab
將<Oracle的SID>:<Oracle的主目錄>:N
修改為<Oracle的SID>:<Oracle的主目錄>:Y
使數據庫實例能夠自動啟動。
18、讓Oracle運行為服務
1) 以root身份登錄
2) 創建文件 /etc/init.d/oracle,輸入下列內容
#!/bin/sh
#
export ORACLE_HOME=/app/oracle/10g #----<Oracle服務器主目錄的絕對路徑>
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export ORACLE=oracle
. /etc/init.d/functions
export PATH=${PATH}:$ORACLE_HOME/bin
start()
{
daemon --user $ORACLE $ORACLE_HOME/bin/dbstart
daemon --user $ORACLE "$ORACLE_HOME_LISTNER/bin/lsnrctl start"
}
stop()
{
daemon --user $ORACLE "$ORACLE_HOME_LISTNER/bin/lsnrctl stop"
daemon --user $ORACLE $ORACLE_HOME/bin/dbshut
}
case $1 in
'start')
start
RETVAL=$?
;;
'stop')
stop
RETVAL=$?
;;
'restart')
stop
start
RETVAL=$?
;;
*)
echo "usage: $0 {start|stop|restart}"
exit
;;
esac
#
exit
3) 然后將這個文件賦予可執行的權限,運行
chmod a+x /etc/init.d/oracle
4) 讓Oracle的服務在Linux啟動時自動運行
ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracle
這樣就可以用service來啟動和停止Oracle了
19、卸載oracle
現在Oracle 10g的安裝已經完成,在任何一台電腦上裝個Oracle客戶端就可以對它進行管理了。
如果要卸載Oracle,只須運行
$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches
"REMOVE_HOMES={$ORACLE_HOME}" -responseFile <安裝時使用的應答文件>