Centos7靜默安裝Oracle19c
官方安裝包下載路徑(需要登錄Oracle賬號):
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c
可選擇windows/Linux平臺對應的安裝包,有ZIP和RPM兩種方式的安裝包,我選擇Linux x86-64、ZIP包下載:
https://download.oracle.com/otn/linux/oracle19c/190000/LINUX.X64_193000_db_home.zip
下載版本爲:Oracle 19.3.0.0.0
準備工作
拷貝安裝包 LINUX.X64_193000_db_home.zip 到 /opt 目錄下。
從Oracle 18c開始,Oracle就提供了鏡像形式的Oracle軟件,在安裝數據庫軟件時,需要把壓縮文件解壓到 $ORACLE_HOME 路徑下,然後在此目錄下運行 ./runInstaller 註冊數據庫軟件。
單實例和集羣都可以通過這種方式部署。
關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
關閉selinux
vim /etc/selinux/config
修改
SELINUX=disabled
立即生效修改:
setenforce 0
getenforce查看是否生效
檢查硬件
RAM:>2G。官方要求內存大於2G
/tmp目錄:至少1G
SWAP:
1G<RAM<=2G:內存*1.5
2G<RAM<=16G:等於內存
RAM>16G:16G
如果只是簡單測試使用的數據庫,一般SWAP 4G也夠用了
磁盤要求:至少20G以上。安裝包大概2.9G,解壓後大概6.5G ,數據庫軟件安裝完成後有7G ,創建完數據庫後有 10G
檢查條件是否滿足:
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
df -h /tmp
free -h
uname -m
df -h /dev/shm
創建SWAP(如果SWAP已滿足,則可以跳過該步驟)
1. 創建swap文件, 指定swap文件的大小, 先指定區塊大小:bs, 再指定區塊數量count, 則swap文件的大小是: count*bs
在root用戶下執行如下命令(創建8G的swap):
dd if=/dev/zero of=/myswapfile bs=1M count=8192
2. 指定作爲交換區的文件:
mkswap /myswapfile
3. 激活交換區文件:
swapon /myswapfile
4. 設置開機時啓用swap, 在/etc/fstab末尾添加如下內容:
/myswapfile swap swap defaults 0 0
5. 確認swap已經被使用,另外在/目錄可以看到文件swapfile
swapon -s
如果要關閉swap,可執行命令:
swapoff /myswapfile
修改系統版本,繞過安裝時的系統檢查
vim /etc/centos-release
將原來的內容: CentOS Linux release 7.6.1810 (Core)
將內容改爲:redhat-7
如果設置了hostname則添加主機名和IP保證hostname能ping通,沒有設置hostname則跳過
vim /etc/hosts
192.168.1.100 hostname
安裝Oracle19c可能需要的Centos操作系統的基礎RPM包:
安裝41個RPM包:
yum install -y bc binutils compat-libcap1 compat-libstdc++ dtrace-modules dtrace-modules-headers dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libdtrace-ctf-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python python-configshell python-rtslib python-six smartmontools sysstat
targetcli unixODBC
查詢41個RPM包:
rpm -qa bc binutils compat-libcap1 compat-libstdc++ dtrace-modules dtrace-modules-headers dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libdtrace-ctf-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python python-configshell python-rtslib python-six smartmontools sysstat
targetcli unixODBC
Centos7 yum安裝提示缺少下面包:
yum源中移除了下面這些包,單獨找網站( 或直接baidu)下載rpm後通過 rpm -Uvh 安裝
No package compat-libstdc++ available.
No package dtrace-modules available.
No package dtrace-modules-headers available.
No package dtrace-modules-provider-headers available.
No package dtrace-utils available.
No package libdtrace-ctf-devel available.
https://centos.pkgs.org/7/centos-x86_64/ 中找到了 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
手動下載:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
rpm安裝:
rpm -Uvh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
其他的包我沒有找到,先不着了,先忽略這些包安裝試試看。
另外其他可能需要的包:我也先不安裝了。
yum install -y xorg-x11-xauth tigervnc-server zip unzip smartmontools lrzsz readline readline-devel
系統內核優化
vim /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
#設置最大打開文件數
fs.file-max = 6815744
fs.aio-max-nr = 1048576
#共享內存的頁數,Linux共享內存頁大小爲4KB,8G內存按照官方設置爲內存的1/2,我物理內存8G,設置爲6G:6*1024*1024*1024/4K=(kernel.shmmax/4k)=1572864
kernel.shmall = 1572864
#最大共享內存,官方文檔建議是內存的1/2,我物理內存8G,設置爲6G:6*1024*1024*1024 = 6442450944
kernel.shmmax = 6442450944
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#tcp參數設置
#可使用的IPv4端口範圍(TCP/UDP協議允許使用的本地端口號)
net.ipv4.ip_local_port_range = 9000 65500
#默認&最大的TCP數據接收窗口大小(字節)
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
#默認&最大的TCP數據發送窗口大小(字節)
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
使內核參數立即生效,執行
sysctl -p #或者 sysctl --system
修改oracle用戶限制,提高軟件運行性能,在/etc/security/limits.conf文件末尾添加配置項:
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# End of file
開始安裝數據庫
創建 oracle 目錄,授權,cd到oracle安裝包路徑下,解壓oracle到 $ORACLE_HOME 目錄下,然後執行 runInstaller 安裝
【注意】從18c開始,安裝包必須解壓到 $ORACLE_HOME 路徑下進行安裝!
創建Oracle相關用戶和組
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper #oper組非必須,也可以不創建
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54330 racdba
創建oracle用戶
useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
設置Oracle用戶的密碼
passwd oracle
創建grid用戶(非必要,我就不創建grid用戶了)
# /usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba grid
創建目錄
mkdir -p /opt/oracle
mkdir -p /opt/oraInventory
mkdir -p /opt/database
mkdir -p /opt/oracle/product/19.3.0
mkdir -p /opt/oracle/oradata
mkdir -p /opt/oracle/flash_recovery_area
mkdir -p /opt/oracle/product/19.3.0/db_1 #從18c開始,安裝包必須解壓到 $ORACLE_HOME 路徑下進行安裝
chown -R oracle:oinstall /opt/oracle
chown -R oracle:oinstall /opt/oracle/oradata
chown -R oracle:oinstall /opt/oraInventory
chown -R oracle:oinstall /opt/database
chmod -R 775 /opt/oracle
配置Oracle用戶的環境變量
# su - oracle
$ vim .bash_profile
末尾添加環境變量配置內容如下:
umask 022
#oracle數據庫安裝目錄
export ORACLE_BASE=/opt/oracle
#oracle數據庫路徑
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1
#oracle啓動數據庫實例名
export ORACLE_SID=orcl
#xterm窗口模式安裝
export ORACLE_TERM=xterm
#配置時間格式
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS"
#添加系統環境變量
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
#添加系統環境變量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#防止安裝過程出現亂碼
#export LANG=en_US.gbk
export LANG=en_US.UTF-8
#設置Oracle客戶端字符集,必須與Oracle安裝時設置的字符集保持一致,
#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.UTF8
注意:如果創建了grid用戶,則相應的也要修改其環境變量。我這裏就不添加了。
生效環境變量:
重新登錄或者執行source 立即生效
$ source /home/oracle/.bash_profile
檢查環境變量是否生效:
$ echo $ORACLE_HOME
切換到oracle用戶解壓安裝zip包
# su - oracle
$ cd /opt/
$ unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
修改響應文件 db_install.rsp
統一複製響應文件到/home/oracle/下面,然後再授權和修改響應文件
Oracle 11/12解壓後response目錄,下面包含 dbca.rsp (用來創建數據庫的), db_install.rsp (用來安裝Oracle軟件),netca.rsp(用來創建監聽器) 三個文件
Oracle 19c解壓後response目錄下,只包含 db_install.rsp (用來安裝Oracle軟件),dbca.rsp 在 $ORACLE_HOME/assistants/dbca/dbca.rsp
[oracle@localhost db_1]$ find ./ -name dbca.rsp
./assistants/dbca/dbca.rsp
$ cp -r $ORACLE_HOME/install/response /home/oracle
$ vim /home/oracle/response/db_install.rsp #修改設置下列參數
oracle.install.option=INSTALL_DB_SWONLY
#ORACLE_HOSTNAME=localhost #如果修改過hostname則需要設置正確,否則可以不設置
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/oraInventory
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/19.3.0/db_1
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=true
oracle.install.db.rootconfig.configMethod=ROOT
# 如果 oracle.install.option 配置爲 INSTALL_DB_AND_CONFIG 則需配置以下參數
# 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.memoryLimit=6144
# oracle.install.db.config.starterdb.password.ALL=oracle
【注意】如果服務器設置了 hostname,則 ORACLE_HOSTNAME 需要設置一致。需要進行 vi /etc/hosts 修改,設置 hostname 相關的修改
以 oracle 用戶開始靜默安裝數據庫
$ $ORACLE_HOME/runInstaller -silent -ignorePrereq -responseFile /home/oracle/response/db_install.rsp
【注意】安裝過程中會提示輸入root用戶密碼以執行腳本
安裝會提示安裝的日誌文件,可以通過日誌文件查看靜默安裝的進展和信息
You can find the log of this install session at:
/tmp/InstallActions2020-06-21_08-52-09PM/installActions2020-06-21_08-52-09PM.log
安裝成功,提示信息如下:
Successfully Setup Software with warning(s).
Moved the install session logs to:
/opt/oraInventory/logs/InstallActions2020-06-21_08-52-09PM
$ cd /opt/oraInventory/logs/InstallActions2020-06-21_08-52-09PM
$ ls -l
total 12484
-rw-r--r--. 1 oracle oinstall 0 Jun 21 20:53 installActions2020-06-21_08-52-09PM.err
-rw-r--r--. 1 oracle oinstall 10702318 Jun 21 20:53 installActions2020-06-21_08-52-09PM.log
-rw-r--r--. 1 oracle oinstall 2006256 Jun 21 20:53 installActions2020-06-21_08-52-09PM.out
-rw-r--r--. 1 oracle oinstall 129 Jun 21 20:53 installerPatchActions_2020-06-21_08-52-09PM.log
-rw-r--r--. 1 oracle oinstall 0 Jun 21 20:53 oraInstall2020-06-21_08-52-09PM.err
-rw-r--r--. 1 oracle oinstall 131 Jun 21 20:53 oraInstall2020-06-21_08-52-09PM.out
-rw-r--r--. 1 oracle oinstall 63379 Jun 21 20:53 time2020-06-21_08-52-09PM.log
安裝完畢後,啓動監聽
# su - oracle
$ lsnrctl start
#查看默認監聽端口1521的監聽狀態
$ netstat -an |grep 1521
tcp6 0 0 :::1521 :::* LISTEN
創建數據庫
靜默方式使用dbca.rsp來創建數據庫
$ cp $ORACLE_HOME/assistants/dbca/dbca.rsp /home/oracle/response/
vim /home/oracle/response/dbca.rsp
設置以下參數(注意:Oracle11g安裝時字符串參數帶引號輸入,但Oracle 19c需要刪除引號,否則會報錯,變量設置路徑是也不支持$ORACLE_BASE的寫法)
gdbName=orcl
sid=orcl
sysPassword=1q2w3e
systemPassword=1q2w3e
dbsnmpPassword=1q2w3e
#datafileDestination 爲所有數據文件的目標位置,如果不設置默認爲 $ORACLE_BASE/oradata
datafileDestination=/opt/oracle/oradata
#recoveryAreaDestination 爲恢復區位置,如果不設置默認爲 $ORACLE_BASE/flash_recovery_area
recoveryAreaDestination=/opt/oracle/flash_recovery_area
characterSet=AL32UTF8
# totalMemory 爲6553MB,物理內存8G*80%,我設置爲6G = 6144 ,注意:如果設置超過 kernel.shmmax 建庫時會報錯
totalMemory=6144
databaseType=OLTP
#Oracle自帶的默認建庫模板 General_Purpose.dbc,文件位於 $Oracle_HOME/assistants/dbca/templates/General_Purpose.dbc,這裏設置等同於 dbca 加參數 -templateName General_Purpose.dbc
templateName=General_Purpose.dbc
使用dbca.rsp靜默建庫(注意:#responseFile必須使用絕對路徑)
$ dbca -silent -createDatabase -responseFile /home/oracle/response/dbca.rsp
注意:
如果建庫時提示 SYS 和 SYSTEM 密碼太短,直接忽略該告警
如果安裝如果報錯:
[DBT-11207] Specified SGA size is greater than the shmmax on the system. The database creation might fail with "ORA-27125 - Unable to create shared memory segment error".
ACTION: Specify SGA size lesser than or equal to the shmmax on the system.
共享內存段錯誤,一般可以通過調整 /etc/sysctl.conf 中的最大共享內存 kernel.shmmax 和 kernel.shmmni 然後 sysctl -p 使參數生效後再重新建庫即可。
檢查可能是因爲系統優化參數設置錯誤導致。kernel.shmall 和 kernel.shmmax 沒有設置正確。
shmall 是全部允許使用的共享內存大小,單位頁數(每頁4k)
shmmax 是單個段允許使用的大小,單位字節數
#共享內存的頁數,Linux共享內存頁大小爲4KB,8G內存按照官方設置爲內存的1/2:8GB*50%/4KB=8*50%*1024*1024*1024/4KB=1048576
kernel.shmall = 1048576
#最大共享內存,官方文檔建議是內存的1/2,例如:8G內存則設置爲:8*50%*1024*1024*1024 = 4294967296
kernel.shmmax = 4294967296
檢查 /home/oracle/response/dbca.rsp 配置的 totalMemory 是否超過 kernel.shmmax
修改後執行生效
$ sysctl -p
靜默刪除數據庫
$ dbca -silent -deleteDatabase -sourceDB orcl
然後再重新靜默建庫
安裝成功(建庫大概分鐘級別):
...
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/orcl.
Database Information:
Global Database Name:orcl
System Identifier(SID):orcl
Look at the log file "/opt/oracle/cfgtoollogs/dbca/orcl/orcl2.log" for further details.
[oracle@localhost response]$
建庫完成後,本次沒有提示root身份執行root.sh腳本。還是按照以往的安裝經驗,root身份執行一下root.sh腳本:
# /opt/oracle/product/19.3.0/db_1/root.sh
建庫完畢後,查看監聽器狀態和端口
[oracle@localhost response]$ su - oracle
[oracle@localhost response]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-JUN-2020 23:32:52
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 21-JUN-2020 21:00:27
Uptime 0 days 2 hr. 32 min. 25 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@localhost response]$
[oracle@localhost response]$ netstat -an |grep 1521
tcp6 0 0 :::1521 :::* LISTEN
tcp6 0 0 ::1:1521 ::1:51071 ESTABLISHED
tcp6 0 0 ::1:1521 ::1:51107 TIME_WAIT
tcp6 0 0 ::1:1521 ::1:51105 TIME_WAIT
tcp6 0 0 ::1:51071 ::1:1521 ESTABLISHED
[oracle@localhost response]$
登錄查看實例狀態:
[oracle@localhost response]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 21 23:35:07 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select status from v$instance;
STATUS
------------------------------------
OPEN
接下來需要創用戶、表空間和授權遠程訪問等操作。參考圖形化安裝的創建用戶、表空間、授權等操作即可:
https://blog.csdn.net/sunny05296/article/details/56840775