靜默安裝Oracle11g
阿新 • • 發佈:2020-09-22
系統配置
# 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軟體的許可權
- Oracle清單目錄路徑:inventory_loc=/oracle/app/oracle/oraInventory
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命令)