欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > linux oracle 19c 静默安装

linux oracle 19c 静默安装

2025/4/24 22:41:11 来源:https://blog.csdn.net/dudadudadd/article/details/147272058  浏览:    关键词:linux oracle 19c 静默安装

oracle数据库有个比较很抓瞎的事情,不同的版本搭建的大致流程是一样的,但是在实操细节上会有不同,比如操作的脚本位置和配置项等等,这些会变,所以需要时常积累不同版本的文档

这里有一点要说明,之所以使用静默安装,除了它的安装成功率高之外,还有一个最根本的原因是图形化以及命令行非静默安装时需要你的服务器和系统支持11X图像协议,这个东西很麻烦!很麻烦!没有的话oracle不会报错,但是会自己终止按照进程,并提示你DISPLAY not set. Please set the DISPLAY and try again

本次安装的需要的环境如下

CentOS 7 X86 64位
LINUX.X64_193000_db_home.zip (19c的安装包下载好就叫这个名字)
配置好静态ip
关闭防火墙
关闭SELinux

下载链接:https://pan.baidu.com/s/1R3auWmGDfuNvvBGzgf1D8Q?pwd=vwwg 或者去官网下载

第一步:配置合适的yum源,一般用阿里源就行,随后安装需要的yum环境

yum install -y unzip 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 net-tools gcc gcc-c++ gcc-info gcc-locale gcc48 gcc48-info gcc48-locale gcc48-c++ libXp

第二步:准备oracle用户和组

groupadd oracle
groupadd dba
useradd -g oracle -G dba oraclepasswd oracle
设置密码

第三步:修改内核参数

vi /etc/sysctl.conf追加:
#系统异步I/O (AIO) 请求的最大数量
fs.aio-max-nr = 1048576
#整个linux系统全局最大可使用文件句柄数
fs.file-max = 6815744
#共享内存最大总页数,页(Page) 为单位,通常一页大小为 4KB
kernel.shmall = 2097152
#单个共享内存段的最大大小
#kernel.shmmax 一般设置成服务器内存的一半,单位为字节
kernel.shmmax = 1073741824
#共享内存段的最大数量
kernel.shmmni = 4096
#配置信号量参数(格式:SEMMSL SEMMNS SEMOPM SEMMNI)。防止数据库因信号量不足导致进程阻塞
#SEMMSL:每个信号量集合的最大信号量数(250)。
#SEMMNS:系统总信号量数(32000)。
#SEMOPM:单次操作可处理的信号量数(100)。
#SEMMNI:信号量集合的最大数量(128)。
kernel.sem = 250 32000 100 128
#本地TCP/UDP端口的可用范围
net.ipv4.ip_local_port_range = 9000 65500
#接收套接字缓冲区的默认和最大值(字节)
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
#发送套接字缓冲区的默认和最大值(字节)
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# 执行生效
sysctl -p

第四步:修改用户限制

vi /etc/security/limits.conf追加
#用户操作的线程数到达多少后给警告
oracle soft nproc 2047
#用户操作的线程数到达多少后不在允许新增线程
oracle hard nproc 16384
#下面两个是可操作的文件句柄个数限制
oracle soft nofile 1024
oracle hard nofile 65536
#栈空间软限制10M
oracle soft stack 10240
#下面两个是允许生成的核心转储文件大小,unlimited是不限制
#oracle soft core unlimited
#oracle hard core unlimited
#允许最多占用多少物理内存,单位:KB
oracle soft memlock 50000000
oracle hard memlock 50000000

第五步:修改用户登录认证

vi /etc/pam.d/login追加:
session required /lib64/security/pam_limits.so
session required pam_limits.so

系统环境变量中加入下面内容

vi /etc/profile追加:
if [ $USER = "oracle" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fi
fi 生效环境变量
source /etc/profile

第六步:创建安装目录,把它赋予oracle,并切换oracle用户操作后续的步骤,这里要注意19c的安装路径,也就是ORACLE_HOME,就是安装包解压的那个路径,不要改变,所以这里建的啥,你后面就解压到哪里就行。在我之前的11g安装方法里,之所以我只动了响应文件而安装包放在另外一个地方也能安装,是因为使用命令忽略了检查信息,但是一般情况安装完之后,安装包解压路径下的东西一般没有人删除,除非是确定真的没有用了,释放资源才会删掉,而且放在一个统一的路径下,也方便好找需要的资源,当然如果你有释放资源的需求你可以去参考我发的11g安装怎么用的命令

mkdir -p /opt/oracleData/oracle19cmkdir /opt/oracleData/inventorychown -R oracle:oracle /opt/oracleDatachmod -R 775 /opt/oracleDatasu oracle

第七步:更改oracle用户的环境变量文件

vi .bash_profile追加:
ORACLE_BASE=/opt/oracleDataORACLE_HOME=$ORACLE_BASE/oracle19cORACLE_SID=orclLD_LIBRARY_PATH=$ORACLE_HOME/libPATH=$PATH:$ORACLE_HOME/binexport ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH
source .bash_profile

第八步:将19c的安装包上传到/opt/oracleData目录,并确保安装包的所有权是oracle用户,一定要确保所有权,在11g版本的时候只需要单独操作响应文件就行,但是19c整个包不在一起会出现问题

通过lrzsz 或者 scp都行,上传方式自己决定解压:
unzip LINUX.zip -d /opt/oracleData/oracle19c

第九步:19c的静默安装需要的文件在解压路径/install下,进入其中修改对应的配置文件

cd /opt/oracleData/oracle19c/install/responsevi db_install.rsp

按照你准备的路径和用户,更改如下内容

oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oracle
INVENTORY_LOCATION=/opt/oracleData/inventory
ORACLE_HOME=/opt/oracleData/oracle19c
ORACLE_BASE=/opt/oracleData
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.SID=orcl

第十步:回到解压目录下,运行静默安装

cd /opt/oracleData/oracle19c./runInstaller -silent -responseFile /opt/oracleData/oracle19c/install/response/db_install.rsp -ignorePrereq

出现如下输出则服务安装成功
在这里插入图片描述
第十一步:按照上面的提示,切换到root用户,执行上面的两个脚本
在这里插入图片描述
第十二步:同样使用静默方式,配置监听

在root用户下安装nc

yum install -y nc

切换回oracle用户,从新生效一下环境变量,因为前面配置的时候还没有安装,有些东西可能会加载不上

source .bash_profile

oracle19c的监听,有个很无奈的事情,就是初始化监听用到的响应文件,并没有直接在response目录下提供,而是在$ORACLE_HOME/network/install/netca_clt.rsp,而且文件中只有最基本的一些配置项,初始化后不会像11g那样自动启动,需要手动启监听

/opt/oracleData/oracle19c/bin/netca /silent /responseFile /opt/oracleData/oracle19c/network/install/netca_clt.rsp

上面的初始化完成之后,手动启动的命令在ORACLE_HOME/bin/lsnrctl

/opt/oracleData/oracle19c/bin/lsnrctl start LISTENER

然后就可以用nc工具查看到监听进程了

[oracle@node3 samples]$ netstat -tnulp | grep 1521
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
tcp6       0      0 :::1521                 :::*                    LISTEN      8408/tnslsnr 

第十三步:初始化数据库实例

和监听用的响应文件一样,19c并没有和11g那样在安装包中给你预留好初始化数据库实例用的响应文件,因此需要自己搞一个。注意从12c开始oracle引进了基于容器的多租户可插拔数据库(CBD),可以通俗的理解为在一个基础数据库架构(CBD)上运行多租户模式的容器数据库(PDB),我们个人自己使用不需要用这个,因为它的运维很复杂,个人使用也用不到,如果未来你要使用21以上的就必须考虑CDB的搭建方式了,因为可能会在未来仅支持容器化的数据库

自己在一个目录下建一个dbca.rsp文件,注意文件名别改,并写入如下内容

gdbName=orcl.test
sid=orcl
createAsContainerDatabase=false
templateName=General_Purpose.dbc
sysPassword=123456
systemPassword=123456
characterSet=AL32UTF8
totalmemory=1680

然后用这个响应文件去初始化数据库

/opt/oracleData/oracle19c/bin/dbca -silent  -createDatabase -responseFile /opt/oracleData/oracle19c/install/response/dbca.rsp

初始化进程结束后,查询一下已有的实例进程

[oracle@node3 response]$ ps -ef | grep ora_ | grep -v grep
oracle     7721      1  0 22:55 ?        00:00:00 ora_pmon_orcl
oracle     7723      1  0 22:55 ?        00:00:00 ora_clmn_orcl
oracle     7725      1  0 22:55 ?        00:00:00 ora_psp0_orcl
oracle     7728      1  0 22:55 ?        00:00:04 ora_vktm_orcl
oracle     7732      1  0 22:55 ?        00:00:00 ora_gen0_orcl
oracle     7734      1  0 22:55 ?        00:00:00 ora_mman_orcl
oracle     7738      1  0 22:55 ?        00:00:00 ora_gen1_orcl
oracle     7741      1  0 22:55 ?        00:00:00 ora_diag_orcl
oracle     7743      1  0 22:55 ?        00:00:00 ora_ofsd_orcl
oracle     7746      1  0 22:55 ?        00:00:00 ora_dbrm_orcl
oracle     7748      1  0 22:55 ?        00:00:00 ora_vkrm_orcl
oracle     7750      1  0 22:55 ?        00:00:00 ora_svcb_orcl
oracle     7752      1  0 22:55 ?        00:00:00 ora_pman_orcl
oracle     7754      1  0 22:55 ?        00:00:00 ora_dia0_orcl
oracle     7756      1  0 22:55 ?        00:00:00 ora_dbw0_orcl
oracle     7758      1  0 22:55 ?        00:00:00 ora_lgwr_orcl
oracle     7760      1  0 22:55 ?        00:00:00 ora_ckpt_orcl
oracle     7762      1  0 22:55 ?        00:00:00 ora_lg00_orcl
oracle     7764      1  0 22:55 ?        00:00:00 ora_smon_orcl
oracle     7766      1  0 22:55 ?        00:00:00 ora_lg01_orcl
oracle     7768      1  0 22:55 ?        00:00:00 ora_smco_orcl
oracle     7770      1  0 22:55 ?        00:00:00 ora_reco_orcl
oracle     7772      1  0 22:55 ?        00:00:00 ora_w000_orcl
oracle     7774      1  0 22:55 ?        00:00:00 ora_lreg_orcl
oracle     7776      1  0 22:55 ?        00:00:00 ora_w001_orcl
oracle     7778      1  0 22:55 ?        00:00:00 ora_pxmn_orcl
oracle     7782      1  0 22:55 ?        00:00:00 ora_mmon_orcl
oracle     7784      1  0 22:55 ?        00:00:00 ora_mmnl_orcl
oracle     7786      1  0 22:55 ?        00:00:00 ora_d000_orcl
oracle     7788      1  0 22:55 ?        00:00:00 ora_s000_orcl
oracle     7790      1  0 22:55 ?        00:00:00 ora_tmon_orcl
oracle     7796      1  0 22:55 ?        00:00:00 ora_m000_orcl
oracle     7798      1  0 22:55 ?        00:00:00 ora_m001_orcl
oracle     7804      1  0 22:55 ?        00:00:00 ora_tt00_orcl
oracle     7806      1  0 22:55 ?        00:00:00 ora_tt01_orcl
oracle     7808      1  0 22:55 ?        00:00:00 ora_tt02_orcl
oracle     7810      1  0 22:55 ?        00:00:00 ora_aqpc_orcl
oracle     7812      1  0 22:55 ?        00:00:00 ora_cjq0_orcl
oracle     7819      1  0 22:55 ?        00:00:00 ora_p000_orcl
oracle     7821      1  0 22:55 ?        00:00:00 ora_p001_orcl
oracle     7823      1  0 22:55 ?        00:00:00 ora_p002_orcl
oracle     7825      1  0 22:55 ?        00:00:00 ora_p003_orcl
oracle     7827      1  0 22:55 ?        00:00:00 ora_p004_orcl
oracle     7829      1  0 22:55 ?        00:00:00 ora_p005_orcl
oracle     7831      1  0 22:55 ?        00:00:00 ora_p006_orcl
oracle     7833      1  0 22:55 ?        00:00:00 ora_p007_orcl
oracle     7835      1  0 22:55 ?        00:00:00 ora_p008_orcl
oracle     7837      1  0 22:55 ?        00:00:00 ora_p009_orcl
oracle     7839      1  0 22:55 ?        00:00:00 ora_p00a_orcl
oracle     7841      1  0 22:55 ?        00:00:00 ora_p00b_orcl
oracle     8021      1  0 22:55 ?        00:00:00 ora_w002_orcl
oracle     8023      1  0 22:55 ?        00:00:00 ora_m002_orcl
oracle     8069      1  0 22:55 ?        00:00:00 ora_w003_orcl
oracle     8075      1  0 22:55 ?        00:00:00 ora_w004_orcl
oracle     8079      1  0 22:55 ?        00:00:00 ora_qm02_orcl
oracle     8083      1  0 22:55 ?        00:00:00 ora_q002_orcl
oracle     8085      1  0 22:55 ?        00:00:00 ora_q003_orcl
oracle     8127      1  0 22:56 ?        00:00:00 ora_m003_orcl

再检查一下监听状态

[oracle@node3 response]$ /opt/oracleData/oracle19c/bin/lsnrctl status

最后进入oracle,执行一条sql,正常输出结果,而不是提示oracle未初始化就搭建成功了

[oracle@node3 response]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Sat Apr 19 23:09:55 2025
Version 19.3.0.0.0Copyright (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.0SQL> select status from v$instance;STATUS
------------
OPENSQL> 

对于19c,在这里要重点说一下,实例化用到的响应文件能自己写是因为templateName=General_Purpose.dbc指定了一个oracle自带的模板,只需要指定其他必须修改的东西就行,比如密码和字符集。所以不要自己上手去直接写监听的响应文件,当然你可以尝试对比11g的,或者网上自己找找研究一下监听能改哪些东西

至于oracle启动和关闭,已经一些需要知道的基本常识,见我之前写的11g搭建文档-》oracle 11g 搭建文档

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词