1. 程式人生 > 實用技巧 >靜默安裝Oracle11g

靜默安裝Oracle11g

系統配置

# OS版本
[root@ljforacle03 ~]# cat /proc/version 
Linux version 3.10.0-514.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016
[root@ljforacle03 ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

## 核心資訊
[root@ljforacle03 ~]# uname -r
3.10.0-514.el7.x86_64

# 系統記憶體
[root@ljforacle03 ~]# cat /proc/meminfo |grep MemTotal
MemTotal:       16267760 kB

# swap記憶體和交換空間容量
[root@ljforacle03 ~]# free -t
              total        used        free      shared  buff/cache   available
Mem:       16267760      599752      660004      619444    15008004    14633956
Swap:       8388604        6632     8381972
Total:     24656364      606384     9041976

# /tmp目錄中的空間
[root@ljforacle03 ~]# df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       192G  134G   59G  70% /

# 磁碟空間
[root@ljforacle03 ~]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       192G  134G   59G  70% /
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  8.6M  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1       197M  114M   83M  58% /boot
tmpfs           1.6G     0  1.6G   0% /run/user/0

1、安裝oracle依賴包關係

yum install -y  binutils  compat-libcap1  compat-libstdc++-33  compat-libstdc++-33.i686  glibc  glibc.i686 glibc-devel glibc-devel.i686 ksh  libaio  libaio.i686  libaio-devel  libaio-devel.i686  libX11  libX11.i686  libXau  libXau.i686 libXi  libXi.i686  libXtst  libXtst.i686  libgcc  libgcc.i686  libstdc++  libstdc++.i686  libstdc++-devel  libstdc++-devel.i686  libxcb  libxcb.i686  make  nfs-utils  net-tools  smartmontools  sysstat  unixODBC  unixODBC-devel    gcc   gcc-c++   libXext   libXext.i686   zlib-devel   zlib-devel.i686

2、修改核心引數

主要包括對記憶體排程、埠範圍、開啟檔案數、I/O請求等相關的一些設定,相關數值不可低於安裝要求

vim /etc/sysctl.conf
fs.file-max = 6815744  
kernel.sem = 250 32000 100 128  
kernel.shmmni = 4096  
kernel.shmall = 1073741824  
kernel.shmmax = 4398046511104  
kernel.panic_on_oops = 1  
net.core.rmem_default = 262144  
net.core.rmem_max = 4194304  
net.core.wmem_default = 262144  
net.core.wmem_max = 1048576  
net.ipv4.conf.all.rp_filter = 2  
net.ipv4.conf.default.rp_filter = 2  
fs.aio-max-nr = 1048576  
net.ipv4.ip_local_port_range = 9000 65500

重新整理核心引數表

/sbin/sysctl -p

kernel.shmall:

  • 該引數控制可以使用的共享記憶體的總頁數。
  • Linux共享記憶體頁大小為4KB,共享記憶體段的大小都是共享記憶體頁大小的整數倍。
  • 一個共享記憶體段的最大大小是16G,那麼需要共享記憶體頁數是16GB/4KB=16777216KB /4KB=4194304(頁)
  • 也就是64Bit系統下16GB實體記憶體,設定kernel.shmall = 4194304才符合要求.

kernel.shmmax:

  • 是核心引數中最重要的引數之一,用於定義單個共享記憶體段的最大值。
  • 設定應該足夠大,設定的過低可能會導致需要建立多個共享記憶體段,這樣可能導致系統性能的下降。
  • 至於導致系統下降的主要原因為在例項啟動以及ServerProcess建立的時候,多個小的共享記憶體段可能會導致當時輕微的系統性能的降低,但是其他時候都不會有影響
  • (在啟動的時候需要去建立多個虛擬地址段,在程序建立的時候要讓程序對多個段進行“識別”,會有一些影響)
  • 官方建議值:
    • 32位linux系統:可取最大值為4GB(4294967296bytes)-1byte,
    • 即4294967295。建議值為多於記憶體的一半,所以如果是32為系統,一般可取值為4294967295。
    • 64位linux系統:可取的最大值為實體記憶體值-1byte,建議值為多於實體記憶體的一半
    • 例如,如果為12GB實體記憶體,可取1210241024*1024-1=12884901887。

kernel.shmmni:

該引數是共享記憶體段的最大數量。shmmni預設值4096,一般肯定是夠用了。

kernel.sem:

  • 以kernel.sem = 250 32000 100 128為例:
    • 250是引數semmsl的值,表示一個訊號量集合中能夠包含的訊號量最大數目。
    • 32000是引數semmns的值,表示系統內可允許的訊號量最大數目。
    • 100是引數semopm的值,表示單個semopm()呼叫在一個訊號量集合上可以執行的運算元量。
    • 128是引數semmni的值,表示系統訊號量集合總數。

net.ipv4.ip_local_port_range:

  • 表示應用程式可使用的IPv4埠範圍。

net.core.rmem_default:

  • 表示套接字接收緩衝區大小的預設值。

net.core.rmem_max:

表示套接字接收緩衝區大小的最大值。

net.core.wmem_default:

  • 表示套接字傳送緩衝區大小的預設值。

net.core.wmem_max:

  • 表示套接字傳送緩衝區大小的最大值。

3、修改核心限制引數

vim /etc/security/limits.d/20-nproc.conf 
# Default limit for number of user's processes to prevent  
# accidental fork bombs.  
# See rhbz #432903 for reasoning.  
  
*          soft    nproc     4096  
root       soft    nproc     unlimited  
oracle   soft   nofile    1024  
oracle   hard   nofile    65536  
oracle   soft   nproc    16384  
oracle   hard   nproc    16384  
oracle   soft   stack    10240  
oracle   hard   stack    32768  
oracle   hard   memlock    134217728  
oracle   soft   memlock    134217728

4、建立oracle帳號和組

  • oninstall -- 安裝和升級Oracle程式
  • dba --資料庫中的一切操作:
  • 啟動、關閉、修改資料庫、建立和刪除資料庫、切換日誌歸檔模式、備份與恢復資料庫
  • oper -- 啟動、關閉和修改資料庫,切換日誌歸檔模式、備份與恢復資料庫
  • asmdba -- 管理Oracle自動儲存管理(ASM)例項
  • asmoper -- 啟動和停止Oracle ASM例項
  • asmadmin -- 掛載和解除安裝磁碟組與管理其他儲存裝置
  • backupdba -- 12c新功能:啟動、關閉和執行所有備份與恢復
  • dgdba -- 12c新功能:管理Data Guard環境的相關操作
  • kmdba -- 12c新功能:加密管理的相關操作
groupadd -g 500 oinstall
groupadd -g 501 dba
useradd -u 500 -g oinstall -G dba oracle
passwd oracle

5、建立相關資料庫目錄

orapath=/oracle
mkdir ${orapath}
mkdir ${orapath}/app
mkdir -p ${orapath}/app/oracle/oradata
chmod -R 775 ${orapath}/app 
chown -R oracle:oinstall ${orapath}

6、修改oracle環境變數

vi /home/oracle/.bash_profile
......
# Oracle Settings 
export ORACLE_HOME=/oracle/app/oracle/product/11/db_1
export ORACLE_SID=liangdb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

7、解壓oracle二進位制包

(解壓的目錄預設名為database)

wget http://192.168.10.77/oracle/linux.x64_11gR2_database_1of2.zip
wget http://192.168.10.77/oracle/linux.x64_11gR2_database_2of2.zip
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
mv database /oracle
chown -R oracle:oinstall /oracle

8、修改配置檔案

vi /oracle/database/response/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY # 29行
ORACLE_HOSTNAME=ljforacle03 # 37行
UNIX_GROUP_NAME=ljforacle03 # 42行
INVENTORY_LOCATION=/oracle/app/oracle/oraInventory # 47行
ORACLE_HOME=/oracle/app/oracle/product/11/db_1 # 83行
ORACLE_BASE=/oracle/app/oracle # 88行
oracle.install.db.InstallEdition=EE # 99行
oracle.install.db.DBA_GROUP=dba # 142行
oracle.install.db.OPER_GROUP=oinstall # 147行
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 160行
oracle.install.db.config.starterdb.globalDBName=liangdb # 165行
oracle.install.db.config.starterdb.SID=liangdb # 170行
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false # 376行
DECLINE_SECURITY_UPDATES=true # 385行
# 設定安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)

9、缺少/etc/oraInst.loc檔案

  • 如果伺服器上已經有oraInst.loc檔案,那麼可以跳過該步驟
  • 在使用自動安裝方式時,建立oraInst.loc檔案的步驟僅需在第一次安裝Oracle程式時做
  • 如果使用OUI圖形介面安裝程式,那麼該安裝程式會自動建立oraInst.loc檔案
  • 在Linux伺服器上,oraInst.loc檔案通常位於/etc目錄中
  • oraInst.loc檔案包含有一下資訊:
    • Oracle清單目錄路徑:inventory_loc=/oracle/app/oracle/oraInventory
      • 包含有管理Oracle安裝和升級的檔案
      • 該目錄結構中含有inventory.xml檔案,該檔案含有伺服器上已安裝的各種Oracle版本記錄
    • 擁有安裝和升級Oracle軟體操作許可權的OS組的名稱:inst_group=oinstall
    • 該組擁有安裝和升級Oracle軟體的許可權
vim /etc/oraInst.loc
inventory_loc=/oracle/app/oracle/oraInventory
inst_group=oinstall

chown oracle:oinstall /etc/oraInst.loc
chmod 644 /etc/oraInst.loc

10、切換至oracle使用者,開始安裝oracle

cd /oracle/database
./runInstaller -force -silent -noconfig -ignorePrereq -responseFile /oracle/database/response/db_install.rsp 

Starting Oracle Universal Installer...
....

As a root user, execute the following script(s):
        1. /oracle/app/oracle/product/11/db_1/root.sh



Successfully Setup Software.

11、安裝完後,切換root使用者執行指令碼

[root@ljforacle03 ~]# sh /oracle/app/oracle/product/11/db_1/root.sh

12、靜默配置監聽

[oracle@ljforacle03 database]$ source /home/oracle/.bash_profile 
[oracle@ljforacle03 database]$ netca /silent /responseFile /oracle/database/response/netca.rsp

Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /oracle/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /oracle/app/oracle/product/11/db_1/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@ljforacle03 database]$

13、檢視監聽狀態

[oracle@ljforacle03 database]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-SEP-2019 11:08:49

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                05-SEP-2019 10:13:39
Uptime                    0 days 0 hr. 55 min. 10 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11/db_1/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/ljforacle02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ljforacle02)(PORT=1521)))
Services Summary...
Service "liangdb" has 1 instance(s).
  Instance "liangdb", status READY, has 1 handler(s) for this service...
Service "liangdbXDB" has 1 instance(s).
  Instance "liangdb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@ljforacle03 database]$

14、修改配置檔案

vi /oracle/database/response/dbca.rsp

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]
GDBNAME = "liangdb"
POLICYMANAGED = "false"
CREATESERVERPOOL = "false"
FORCE = "false"
SID = "liangdb"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "********"
SYSTEMPASSWORD = "********"
SYSMANPASSWORD = "********"
DBSNMPPASSWORD = "********"
DATAFILEJARLOCATION = {ORACLE_HOME}/assistants/dbca/templates/
DATAFILEDESTINATION = {ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
RECOVERYAREADESTINATION={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
STORAGETYPE=FS
CHARACTERSET = "ZHS16GBK"
REGISTERWITHDIRSERVICE= FALSE
LISTENERS = "LISTENER"
VARIABLES = DB_UNIQUE_NAME=liangdb,ORACLE_BASE=/oracle/app/oracle,PDB_NAME=,DB_NAME=liangdb,ORACLE_HOME=/oracle/app/oracle/product/11/db_1,SID=liangdb
MEMORYPERCENTAGE = "60"
DATABASETYPE = "MULTIPURPOSE"
AUTOMATICMEMORYMANAGEMENT = "FALSE" # 如果記憶體低於16G的設定為 flase
TOTALMEMORY = "12000"

15、靜默建庫命令

[oracle@ljforacle03 root]$ source /home/oracle/.bash_profile 
[oracle@ljforacle03 root]$ dbca -silent -responseFile /oracle/database/response/dbca.rsp
Cleaning up failed steps
5% complete
Copying database files
7% complete
9% complete
16% complete
23% complete
30% complete
41% complete
Creating and starting Oracle instance
43% complete
48% complete
53% complete
57% complete
58% complete
59% complete
62% complete
64% complete
Completing Database Creation
68% complete
71% complete
75% complete
85% complete
96% complete
100% complete
Look at the log file "/oracle/app/oracle/cfgtoollogs/dbca/liangdb/liangdb0.log" for further details.
[oracle@ljforacle03 root]$

16、檢查oracle程序狀態

ps -ef | grep ora_ | grep -v grep
 lsnrctl status  (lsnrctl是oracle命令)