1. 程式人生 > >CentOS7 靜默安裝Oracle 11gR2(11.2.0.1)

CentOS7 靜默安裝Oracle 11gR2(11.2.0.1)

文件的 sil swapon profile pytho ise sym 端口 啟動

最近有個項目需要遷移,項目中數據庫用的是oracle,期間折騰了好久,特此記錄。

一,下載Oracle

1,首先下載Oracle 11gR2,地址如下:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html?spm=a2c4e.11153940.blogcont566703.10.36ae6c23iChOrf
2,在頁面上方勾選同意許可:
技術分享圖片
3,在下方選擇對應的oracle版本,這裏選擇11gR2的linux x86_64版本:
技術分享圖片
一共有兩個文件,註意下載前需要登錄oracle賬號,沒有的話,註冊一個就好。

下載完這兩個包即可
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

二,安裝前檢查

1,查看操作系統版本:

[root@oracle ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

2,查看內核版本:

[root@oracle ~]# uname -r
3.10.0-693.2.2.el7.x86_64

3,查看系統內存大小(oracle 11g官方建議物理內存在2G以上):

[root@oracle ~]# cat /proc/meminfo | grep MemTotal
MemTotal:        8010460 kB

4,檢查防火墻是否開啟:

[root@oracle ~]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-02 17:50:42 CST; 1s ago
     Docs: man:firewalld(1)
 Main PID: 20136 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─20136 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

關閉防火墻:

[root@oracle ~]# systemctl stop firewalld

關閉自啟動:

[root@oracle ~]# systemctl is-enabled firewalld
enabled

[root@oracle ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@oracle ~]# systemctl is-enabled firewalld
disabled

5,關閉selinux:

[root@oracle ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/sysconfig/selinux
[root@oracle ~]# setenforce 0

6,安裝相關依賴包:

yum -y install binutils compat-libstdc++-33 compat-libcap1 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make elfutils-libelf-devel sysstat

7,設置/dev/shm空間:

[root@oracle ~]# vi /etc/fstab
在fstab文件中追加如下內容:
shmfs                     /dev/shm            tmpfs   size=7g         0 0

[root@oracle ~]# mount -a

[root@oracle ~]# df -Th 
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       59G  3.8G   53G   7% /
devtmpfs       devtmpfs  3.9G     0  3.9G   0% /dev
shmfs          tmpfs     7.0G     0  7.0G   0% /dev/shm

三,安裝Oracle 11g

1,創建相關用戶:

[root@oracle ~]# /usr/sbin/groupadd oinstall 
[root@oracle ~]# /usr/sbin/groupadd dba
[root@oracle ~]# /usr/sbin/groupadd asmadmin
[root@oracle ~]# /usr/sbin/groupadd asmdba 
[root@oracle ~]# /usr/sbin/useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
[root@oracle ~]# id oracle 
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba),1003(asmdba)
[root@oracle ~]# passwd oracle

2,調整內核參數(編輯/etc/sysctl.conf,追加如下內容):

kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6553600
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@oracle ~]# sysctl -p

3,增加shell限制(編輯/etc/security/limits.conf,追加如下內容):

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

修改/etc/pam.d/login文件

session   required    /lib/security/pam_limits.so
session   required    pam_limits.so

修改/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

4,創建必要的目錄,並修改權限:

[root@oracle ~]# mkdir -p /home/app/oracle/
[root@oracle ~]# chown -R oracle:oinstall /home/app/
[root@oracle ~]# chmod -R 755 /home/app/
[root@oracle ~]# chown -R oracle:oinstall /home/oracle
[root@oracle ~]# chmod -R 775 /home/oracle

5,配置/etc/hosts文件:

10.56.90.212     oracle

6,配置oracle用戶的環境變量:

[root@oracle ~]# su - oracle
[oracle@oracle ~]$ vi .bash_profile
#添加如下內容
export ORACLE_HOSTNAME=oracle
export ORACLE_UNQNAME=ora11g
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
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/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export TMP=/tmp
export TMPDIR=$TMP
umask 022

7,解壓oracle安裝文件:

[oracle@oracle ~]$ unzip linux.x64_11gR2_database_1of2.zip
[oracle@oracle ~]$ unzip linux.x64_11gR2_database_2of2.zip

進入到database目錄,並生成響應文件:

[oracle@oracle ~]$ mkdir scripts
[oracle@oracle ~]$ cp -R database/response/ scripts/

修改response目錄中的db_install.rsp文件的參數:

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=oracle
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/home/app/oracle/product/11.2.0
ORACLE_BASE=/home/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ORCL
oracle.install.db.config.starterdb.SID=ORCL
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.automatedBackup.enable=false

8,開始靜默安裝數據庫軟件:

[oracle@oracle database]$ ./runInstaller -silent -responseFile /home/oracle/scripts/response/db_install.rsp -ignorePrereq

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 51039 MB    Passed
Checking swap space: 0 MB available, 150 MB required.    Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

這裏有一個報錯,提示swap不夠,由於是阿裏雲的機器,默認沒有swap空間,因此要手動創建:

[root@oracle ~]# dd if=/dev/zero of=/home/swapfile bs=1M count=2049
[root@oracle ~]# mkswap /home/swapfile
[root@oracle ~]# swapon /home/swapfile

再次執行靜默安裝,發現又有一個報錯:

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-07-02_08-45-55PM. Please wait ...[oracle@oracle database]$ Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2018-07-02_08-45-55PM/jdk/jre/lib/amd64/xawt/libmawt.so: libXext.so.6: cannot open shared object file: No such file or directory
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1647)
    at java.lang.Runtime.load0(Runtime.java:769)
    at java.lang.System.load(System.java:968)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1668)
    at java.lang.Runtime.loadLibrary0(Runtime.java:822)
    at java.lang.System.loadLibrary(System.java:993)
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.loadLibraries(Toolkit.java:1509)
    at java.awt.Toolkit.<clinit>(Toolkit.java:1530)
    at java.awt.Font.<clinit>(Font.java:141)
    at oracle.sysman.oii.oiif.oiifo.OiifoOCMUI.<init>(OiifoOCMUI.java:104)
    at oracle.sysman.oii.oiif.oiifo.OiifoOCMInterfaceManager.<init>(OiifoOCMInterfaceManager.java:79)
    at oracle.sysman.oii.oiif.oiifo.OiifoOCMInterfaceManager.getInstance(OiifoOCMInterfaceManager.java:124)
    at oracle.install.ivw.db.driver.DBInstaller.run(DBInstaller.java:123)
    at oracle.install.commons.util.Application.startup(Application.java:869)
    at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:164)
    at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181)
    at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:265)
    at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:114)
    at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:132)

解決辦法是安裝libXext:

[root@oracle ~]# yum install libXext -y

看到如下信息時,表示數據庫安裝完成:

 #!/bin/sh 
 #Root scripts to run

/home/app/oracle/oraInventory/orainstRoot.sh
/home/app/oracle/product/11.2.0/root.sh
To execute the configuration scripts:
     1. Open a terminal window 
     2. Log in as "root" 
     3. Run the scripts 
     4. Return to this window and hit "Enter" key to continue 

Successfully Setup Software.

之後,根據提示,需要執行兩個相關修改權限的腳本(要切換為root用戶):

[root@oracle ~]# sh /home/app/oracle/oraInventory/orainstRoot.sh

[oracle@oracle ~]$ more /etc/oraInst.loc
inventory_loc=/home/app/oracle/oraInventory
inst_group=oinstall

[root@oracle ~]# sh /home/app/oracle/product/11.2.0/root.sh

9,配置靜默監聽:
通過response文件運行netca, 生成sqlnet.ora和listener.ora文件, 位於$ORACLE_HOME/network/admin目錄下

[oracle@oracle ~]$ netca -silent -responsefile /home/oracle/scripts/response/netca.rsp

這裏可能會有一個報錯:

****DISPLAY environment variable not set!
    Oracle Net Configuration Assistant is a GUI tool
    which requires that DISPLAY specify a location
    where GUI tools can display.
    Set and export DISPLAY, then re-run.

需要設置一個DISPLAY環境變量:

[oracle@oracle ~]$ export DISPLAY=10.66.90.222:0.0       #ip設為本機即可

配置好後查看端口,發現1521已監聽:

[oracle@oracle ~]$ netstat -tnlp 
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:1521            0.0.0.0:*               LISTEN      23795/tnslsnr       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               

10,最後一步,靜默建庫。
修改response目錄下的dbca.rsp文件:

SID = "ORCL"

開始靜默建庫:

[oracle@oracle ~]$ dbca -silent -responseFile  /home/oracle/scripts/response/dbca.rsp
Copying database files                                                                                                                                                                   
1% complete                                                                                                                                                                              
3% complete                                                                                                                                                                              
11% complete                                                                                                                                                                             
18% complete                                                                                                                                                                             
26% 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 "/home/app/oracle/cfgtoollogs/dbca/orcl11g/orcl11g.log" for further details.

啟動oracle:

[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Mon Jul 2 21:53:11 2018

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 3273641984 bytes
Fixed Size          2217792 bytes
Variable Size        1795164352 bytes
Database Buffers     1459617792 bytes
Redo Buffers           16642048 bytes
Database mounted.
Database opened.

至此,oracle11g安裝完成。

CentOS7 靜默安裝Oracle 11gR2(11.2.0.1)