之前在Windows server上安裝Oracle 11g是有圖形界面的對於我這樣的新手是非常友好的。可是今天想要在Linux上使用下Oracle(我自己使用MySQL更多,Oracle使用的很少),雖然centos是可以安裝圖形界面的,但是我們知道大部分的Linux服務器基於資源暫用是不使用圖形界面的,那么要怎么在無圖形界面下進行安裝呢。。。下面的我的小段爬坑經歷,有不對的地方還望能夠指出。
一、准備centos系統(centos6與centos7有比較大的區別,具體的系統命令參考各自的手冊就好,當然也可以使用其他Linux)這里我使用的是centos7.3x
安裝過程省略(我使用的是帶開發工具的最小安裝)
二、下載Oracle 11g R2和其他軟件工具
1.
官方下載地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
選擇64位下載。一共有兩個文件:linux.x64_11gR2_database_1of2.zip 和linux.x64_11gR2_database_2of2.zip
ps:為保證文件完整性可以測下md5值與官方比對。
2.為方便操作VMware里的Linux虛擬機,使用遠程登錄工具進行操作:
xshell和xftp:鏈接: https://pan.baidu.com/s/1MQYcPpgSNLQRNQ7srl7bEA 提取碼: 63fn (此為學校or家庭使用的免費版,企業版請購買正版)
putty:鏈接: https://pan.baidu.com/s/1ygPEXSb37laU5g_CwJqDLg 提取碼: w9ui
ftp工具也可以使用:filezilla(個人認為也是比較好用的一款工具)
三、安裝
1.安裝依賴包:
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
使用yum方式不能安裝pdksh因此需要自己去下載安裝:
安裝pdksh的RPM包:
cd /opt wget http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
ps:有可能會遇到
pdksh和ksh只能保留一個,這里我們保留pdksh
這里我把yum源改成了國內的yum源使用的是系統自帶的yum源有時候會很慢,更換方法為:
創建備份
mkdir /back
cd /etc
mv yum.repos.d /back/yum.repos.d.bak
更新阿里的yum源
mkdir yum.repos.d wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache #生成緩存
檢查安裝的依賴包,使用rpm -qa 或者再次使用yum來檢查所有包是否安裝。
2.安裝前的環境准備
添加用戶和用戶組:
oinstall為Oracle的主組,dba設置為附加組
初始化Oracle用戶密碼:
passwd oracle
在安裝centos時我沒有進行主機名初始化,現在來配置hostname:
vim /etc/hosts
ip地址的查看方式:ifconfig 或者ip addr
修改好了以后:ping 修改的主機名 能ping通就ok!
優化系統內核參數:
因為是虛擬機的原因我們選擇最小化(具體配置需要根據自己的硬件參照手冊進行修改):
vim /etc/sysctl.conf #在文本末尾加入
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 = 1048586
使參數生效:
sysctl -p
設置創建的Oracle用戶權限
vim /etc/security/limits.conf #末尾加入
oracle soft nproc 2047 #oracle 在 linux上打開 proc 數量
oracle hard nproc 16384
oracle soft nofile 1024 #oracle 在 linux上打開 file 數量
oracle hard nofile 65536
vim /etc/pam.d/login #末尾加入
session required /lib64/security/pam_limits.so
session required pam_limits.so
vim /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
創建Oracle安裝路徑:
mkdir -p /app/oracle/product/11.2.0
mkdir -p /app/oracle/inventory
mkdir -p /app/oracle/oradata
chown -R oracle:oinstall /app
配置Oracle環境變量
vim ~oracle/.bash_profile
ps:
export ORACLE_BASE=app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1 #path路徑設置方法與jdk基本一致
export ORACLE_SID=orcl # 最多 8個字符 ; 操作系統和 oracle實例關聯的紐帶 ;ORACLE_HOME+ORACLE_SID==>hash==> 共享內存段
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin #將安裝后的 oracle 命令追加到執行搜索路徑
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #動態庫的位置
export nls_lang="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" #客戶端字符集設置
到此重啟系統:
reboot init 6 shutdown -r now #上面3個命令都可以用於重啟。
hostname等設置已經生效
3.開始安裝
使用xftp或者其他ftp工具上傳從官網下載的安裝包:(也可以直接使用wget工具直接將安裝包下載到Linux)這是上傳到/opt路徑下
分別解壓2個壓縮包:
[root@centos7 opt]# unzip linux.x64_11gR2_database_1of2.zip [root@centos7 opt]# unzip linux.x64_11gR2_database_2of2.zip
[root@centos7 opt]# cd ./database/ [root@centos7 database]# ls doc install response rpm runInstaller sshsetup stage welcome.html [root@centos7 database]# cd ./response/ [root@centos7 response]# ls dbca.rsp db_install.rsp netca.rsp [root@centos7 response]#
進入響應文件夾有3個文件分別是數據庫靜默響應文件、數據庫安裝響應文件以及監聽響應文件。
修改安裝響應文件:
[root@centos7 response]# vim ./db_install.rsp
修改以下選項:
29 oracle.install.option=INSTALL_DB_SWONLY #安裝選項
37 ORACLE_HOSTNAME=centos7 #hostname
42 UNIX_GROUP_NAME=oinstall #主組
47 INVENTORY_LOCATION=/app/oracle/inventory
78 SELECTED_LANGUAGES=en,zh_CN
83 ORACLE_HOME=/app/oracle/product/11.2.0
88 ORACLE_BASE=/app/oracle
99 oracle.install.db.InstallEdition=EE #版本
108 oracle.install.db.isCustomInstall=true
142 oracle.install.db.DBA_GROUP=dba #admin管理組名
147 oracle.install.db.OPER_GROUP=dba #oper操作員組名
160 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
170 oracle.install.db.config.starterdb.SID=orcl
200 oracle.install.db.config.starterdb.memoryLimit=800 #根據自己設定的物理內存設置,一般為物理內存的40%-60%
233 oracle.install.db.config.starterdb.password.ALL=123456 #設置所有用戶密碼,方便后面更改。
開始靜默安裝:
[root@centos7 response]# su oracle [oracle@centos7 response]$ ls dbca.rsp db_install.rsp netca.rsp [oracle@centos7 response]$ cd ../ [oracle@centos7 database]$ ls doc install response rpm runInstaller sshsetup stage welcome.html [oracle@centos7 database]$ ./runInstaller -silent -ignorePrereq -responseFile /opt/database/response/db_install.rsp
另起一個終端查看安裝實時日志:
注意安裝過程會持續一會,沒有出現[FATAL]或者[error]安裝程序仍在運行。也可通過安裝日志來確定安裝進程:
看到如下表示安裝成功:
按要求運行腳本:
到此Oracle 11g r2就安裝成功了!
4.配置Oracle。
配置監聽:
在Oracle用戶下執行:
[oracle@centos7 ~]$ netca /silent /responseFile /opt/database/bakrsp/netca.rsp
我這里備份了response里的文件,bakrsp是備份目錄,不需要備份直接從response文件夾中的文件執行!
結果反饋:
檢查監聽狀態:
[oracle@centos7 ~]$ netstat -tnulp | grep 1521 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::1521 :::* LISTEN 18790/tnslsnr
創建數據庫:
[oracle@centos7 ~]$ dbca -silent -responseFile /opt/database/bakrsp/dbca.rsp
dbca.rsp可以根據自己的安裝情況修改,大致需要修改的選項差不多有:
GDBNAME SID SYSPASSWORD SYSTEMPASSWORD SYSMANPASSWORD DBSNMPPASSWORD DATAFILEDESTINATION CHARACTERSET = "AL32UTF8" TOTALMEMORY = "1638" #物理內存的40-80%,一般80%
查看監聽狀態:
[oracle@centos7 ~]$ lsnrctl status
結果為:
如果遇到:上圖中的實例狀態REDAY為“UNKNOW”則需要檢查自己的監聽配置,或者查看/app/oracle/product/11.2.0/network/admin目錄下的監聽文件參考自己的情況進行排查。
最后,登錄數據庫:
[oracle@centos7 ~]$ lsnrctl start [oracle@centos7 ~]$ sqlplus / as sysdba
常見問題:
- startup后出現:
解決方法:參考:https://www.linuxidc.com/Linux/2012-12/76976.htm
- 無法使用
sqlplus / as sysdba 登錄,解決方法在/app/oracle/product/11.2.0/network/admin中編輯sqlnet文件加入SQLNET.AUTHENTICATION_SERVICES=(ALL)
- startup后出現:
這個情況比較復雜具體參考:https://www.linuxidc.com/Linux/2016-10/135746.htm
看到這個基本就問題不大了:
嘗試遠程連接:
由於是在虛擬機內,可以關掉防火牆:
[root@centos7 ~]# systemctl stop firewalld
連接成功。。。。爬坑第一天到此結束啦。。。
PS:至於增加開機啟動添加到服務等事宜,大家可以參考論壇等,或者我也會在開一個隨筆來記錄下。下一篇就說說簡單點的MySQL的安裝配置吧。