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
如果只是简单测试使用的数据库,一般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
Centos7安装Oracle 19c必须的依赖包安装:
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat ipmiutil net-tools nfs-utils python python-configshell python-rtslib python-six targetcli
rpm -qa bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat ipmiutil net-tools nfs-utils python python-configshell python-rtslib python-six targetcli |wc
总共33个包(我实际只安装了32个),其中这部分包非必须的依赖包,根据自己的实际情况也可以不安装
ipmiutil (for Intelligent Platform Management Interface)
net-tools (for Oracle RAC and Oracle Clusterware)
nfs-utils (for Oracle ACFS)
python (for Oracle ACFS Remote)
python-configshell (for Oracle ACFS Remote)
python-rtslib (for Oracle ACFS Remote)
python-six (for Oracle ACFS Remote)
targetcli (for Oracle ACFS Remote)
如果有缺少的包,单独处理
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat ipmiutil net-tools nfs-utils python python-configshell python-rtslib python-six targetcli
No package ipmiutil available
ipmiutil没有装上,我不依赖,直接忽略
不同的OS及OS版本、不同的Oracle版本,所需要的依赖包不同,详情可参考Oracle官网帮助文档(Oracle Database Documentation):
https://docs.oracle.com/en/database/oracle/oracle-database/index.html
选择对应的Oracle版本 -> 查看帮助信息:Install and Upgrade -> Linux Installation Guides
RAC参考:Grid Infrastructure Installation and Upgrade Guide for Linux
DB参考: Database Installation Guide for Linux
-> 4 Configuring Operating Systems for Oracle Database on Linux
-> Operating System Checklist for Oracle Database Installation on Linux
-> Operating System Requirements for x86-64 Linux Platforms
-> Supported Red Hat Enterprise Linux 7 Distributions for x86-64
参考:Table 4-4 x86-64 Red Hat Enterprise Linux 7 Minimum Operating System Requirements
注意:官方的描述依赖包 compat-libstdc++33 ,怀疑是描述笔误(多一个"-"的区别),实际要求的可能是 compat-libstdc++-33,我安装是直接安装compat-libstdc++-33
系统内核优化
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