当前位置: 首页 > ds >正文

linux oracle 19c 静默安装

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

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

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

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

第一步:配置合适的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

第六步:创建安装目录,把它赋予oracle,并切换oracle用户操作后续的步骤,这里要注意19c的安装路径,也就是ORACLE_HOME,只能是安装包解压的那个路径,无法改变,所以这里建的啥,你后面就解压到哪里就行

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用户启动的时候保险起见加载一下用户级别的环境变量,因为我本地测试环境搭建的时候就遇到了一个每次启动切换到oracle用户的时候没有oracle数据库的环境变量了,很奇怪,大家搭建的时候注意一下有没有这个问题

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

http://www.xdnf.cn/news/388.html

相关文章:

  • 5G 毫米波滤波器的最优选择是什么?
  • Java核心技术卷第三章
  • [特殊字符] Kotlin与C的类型别名终极对决:typealias vs typedef,如何让代码脱胎换骨?
  • linux之文件系统
  • JavaWeb 课堂笔记 —— 14 Mybatis
  • 在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件
  • PHP怎样判断浏览器类型和浏览器语言?
  • ESB —— 企业集成架构的基石:功能、架构与应用全解析
  • MOPSO实现无人机多目标路径规划(Matlab完整源码和数据)
  • Android 应用wifi direct连接通信实现
  • P3916 图的遍历
  • C语言学习之预处理指令
  • 【C++ Qt】信号和槽(内配思维导图 图文并茂 通俗易懂)
  • Java 动态代理教程(JDK 动态代理)(以RPC 过程为例)
  • 突破速率瓶颈:毫米波技术如何推动 5G 网络迈向极限?
  • Flink介绍——实时计算核心论文之Kafka论文总结
  • 用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事
  • 毕业论文超清pdf带标签导出
  • CANFD技术在新能源汽车通信网络中的应用与可靠性分析
  • 【文件操作与IO】详细解析文件操作与IO (二)
  • PFC 是什么?
  • GN ninja 工程化构建例程
  • 定时器复习DSP【2025/4/18】
  • 项目之在线OJ
  • 工作督导 | 具有边缘型人格障碍倾向的高危来访者,咨询师如何应对?
  • 2025年危化品安全员考试题库及答案
  • 物联网平台管理系统
  • Origin LabTalk
  • rLLM - 使LLM的强化学习民主化
  • 用于数学定理和逻辑推理的符号系统