RHEL8.9 静默安装Oracle19C

RHEL8.9 静默安装Oracle19C

甘肃圆角网络科技开发有限公司


说明(GUI):

1.实际业务场景中,Linux环境一般情况下是没有GUI的。没有GUI并不意味着没有安装图形界面。可能在部署Linux操作系统环境的时候安装了桌面环境,只是启动的时候设置了启动级别,使之启动的时候默认为无界面启动。只有之后可能要用到GUI的时候启动使用;

2.Linux具备GUI环境的便捷之处在于部分时候安装软件的时候便于操作,例如安装Oracle数据库的时候,如果具备GUI那么就和Windows安装类似,相对比较简单直接。但是这种模式安装的时候占用内存较多切不灵活。这里的灵活指的是(假设)如果同时在N台具备GUI桌面环境的Linux上面安装N次Oracle的时候就相对比较麻烦,人为参与的程度较深,工作量较大并且较为繁琐。并且占用的资源相对较多;

3.是否具备图形界面和操作系统的安全度也会有关。图形界面例如Gnome,Kde等桌面环境可能会导致漏洞致使服务器安全度相对降低。同时具备GUI的Linux环境占用资源相对较多。当然并不是说具备GUI的Linux是不好的,因为很多业务场景中的确还是需要GUI作为支撑的。所以说是否具备GUI得要看实际的业务场景后选择是否安装。

说明(静默模式):

1.静默模式并不是讲当你安装软件的时候所有的设置都是按照默认选项安装,就好比安装Windows中的某个软件的时候什么都不修改全部下一步直至完成。这个并不是所谓的静默安装。当然具体看个人如何理解,当然某种意义来讲这种模式也算是一种静默的安装方式;

2.静默模式是值当你安装软件的时候首先是人为参与的工作较少,其次是多用于批量工作的业务场景。例如安装某个软件的时候只需要点一下安装,之后基本什么都不用管由软件自行安装直至结束。

3.静默安装与传统下一步下一步点击安装最大的区别就是静默安装模式可以按照我们的需求自动化安装,并不是所有参数都是默认的,当然所有设置也可以全部默认。这一点需要区分开;

4.所以静默模式安装的好处在于它可以按照我们实际业务场景所需要的参数将软件批量自动化安装。也就是我们经常所说的"可定制化"程度较高;

5.只要是将修改好的相关文件拷贝到其他服务器,执行相关命令后就会按照这个文件写好的参数自动安装,这样的话就非常灵活及方便,而且批量安装的时候会更高效!


RHEL8.9安装Oracle19C(静默模式)
说明:

1.Oracle静默安装中,其实最不好理解的就是静默安装所需要配置的文件中的各项参数值。其实他们并没有那么难搞并且是非常简单的;

2.之所以觉得配置文件中的参数不知道如何设置,各种查阅资料后发现每个人参数都不太一样是因为Oracle安装的方式每个人都有各自的习惯,所以参数可能会不太一样;

3.之所以书写本片博客最主要的一个因素是作者看了B站讲解Oracle静默安装以及网上各位博主编写该类资料后让人非常厌烦!一般情况下查阅这个主题资料的大神们或者编写该类主题的博客们要么是开发者要么是软件维护及实施人员或者是感兴趣的相关人员。可是编写Oracle静默模式安装的博客们并没有本着"知识分享"的崇尚精神,将最主要的地方(例如)配置文件的各项参数为什么这么配置不讲重点!甚至好多该类文章查阅读需要收费,真的让人非常无奈!所以作者本着让各位有所需求的读者能够明白"原来是这么回事"的目标,编写这篇博客;

4.注意:本片博客最主要的目的不是安装Oracle,而是让读者们明白"Oracle静默模式安装原来是这么回事,原来这么简单!"其实各位有需求的伙伴们之所以不知道如何配置相关文件是因为没有在乎一些本质的东西,这些东西在图形界面安装Oracle的时候全部都有!所有参数配置在图形界面安装的时候也全部都有,只是没有注意到而已!好了,下面正式进入主题!

安装:
为了让读者更好的理解静默模式安装,先让各位看一下RHEL8.9图形界面下是如何安装的Oracle19C的。这样做的目的是为了掌握之后配置文件参数的原理。(注意:图形界面每个人安装方式可能有差异,所以最后的参数配置填写也有差异。但是不影响最终的结果!)图片中的各项参数仔细查看。

所需要的附件都在附件中,读者可以作为参考
CSDN附件下载默认收费,如需以下三个文件请发邮件:2568685665@qq.com 或加本人QQ,必无偿奉献!

响应文件:db.rsp(图形界面安装时另存的文件)
响应文件:db_install.rsp (依据图形界面另存的响应文件修改后的文件)
响应文件:dbca.rsp (建库所需的响应文件)

1.第一步提示选择"创建和配置单个实例数据库还是仅设置软件",我们这里选择创建和配置单个实例数据库


2.第二步提示选择安装企业版还是桌面版,我们选择企业版安装

3.第三步提示指定所有者安装的所有Oracle软件和配置相关文件的存放路径。这个位置是安装所有者的Oracle基目录。

4.第四步提示指定元数据文件及用户组

5.第五步提示该数据是用作与一般用途还是数据仓库,我们选择一般用途。

6.第六步提示全局变量名,SID名称以及是否创建为容器数据库及容器数据库名。我们选择创建

7.第七步

7.1

第七步有三个页签,第一个页签是否自动内存管理,如果没有设置自动内存管理就是系统默认的2061MB,我们这里不选择自动内存管理

7.2

第七步有三个页签,第二个页签是数据库的字符集,我们就选择默认的AL32UTF8即可

7.3

第七步有三个页签,第三个页签是提示可以选择在启动数据库中安装示例模式。人力资源模式将安装在启动器数据库中。在SYSAUX 表空间在数据库中安装示例模式。我们这里不启动

8.第八步提示存储数据的方式,第一种是文件存储,第二种是自动管理。我们选择的文件存储

9.第九步提示是否EM管理,我们选择不注册

10.第十步提示是否启用恢复,我们勾选启用并且选择选择文件恢复模式

11.第十一步提示各个角色的账号是分开管理还是统一管理,这里我们为了方便就统一管理

12.第十二步其实就是指定各类权限组

13.第十三步其实就是脚本运行是root还是平常用户,这里我们什么都不做

14.第十四步截图丢失了,但是第十四步骤非常关键。第十四步也是最后的一个步骤,出来的界面就是所有之前设置的参数。这个截图作者从百度随便找了一个各位先凑活看看。这个截图的右下角有一个"保存响应文件",这个响应文件对应的就是各位不知道参数如何配置的db_install.rsp文件!他们是一模一样的!

现在各位读者明白我们一会要用到的db_install.rsp文件参数是如何填写对应参数了吧。其实图形化界面安装的时候,每一步中的参数只要设置正确后,最后一步中点击了"保存响应文件"后,这个文件就是对应的db_install.rsp文件,他们里面的内容是一模一样的!这就是在静默模式安装之前作者为什么要先讲解图形界面安装的作用!
Linux安装Oracle的时候,一般情况下都是先要增加好用户组及用后,然后创建位置后再安装。作者采用的全部是官方文档中路径。实际中路径可以按照个人需求设置。默认的各种用户组及路径设置完成后,采用图形界面安装的时候会自动检索到这些路径。这一点和Windows安装是有区别的。


*RHEL8.9使用静默模式安装Oracle19C
备注:安装前的各种准备这里就不做过多介绍,作者都是完全按照官方文档严格执行的。生产环境中可以按照实际需求修改即可。

1.建议使用Oracle支持的Linux发行版,详情参阅Oracle官网

2.修改shm大小,一般为系统内存的三分之二

bash 复制代码
# 查看shm大小和系统内存
[ttzo@Database ~]$ df -h
[ttzo@Database ~]$ free -h
bash 复制代码
# 打开fstab文件,修改shm大小,如下图中增加
# tmpfs                   /dev/shm                tmpfs   defaults,size=6144M       0 0
[root@Database ttzo]# vi /etc/fstab
bash 复制代码
# 查看是否增加成功
[ttzo@Database ~]$ cat /etc/fstab | grep shm
bash 复制代码
# 加载shm设置后并挂载,最后查看shm的大小是否修改成功
[root@Database ttzo]# systemctl daemon-reload
[root@Database ttzo]# mount -o remount /dev/shm
[root@Database ttzo]# df -h

3.安装所有所需组件

bash 复制代码
# Oracle支持不同的Linux发行版中所需的组件是不同的,这里严格按照官方文档执行
[root@Database ttzo]# dnf install  bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXau libXi libXtst libgcc libnsl librdmacm libstdc++ libstdc++-devel libxcb libibverbs make policycoreutils policycoreutils-python-utils smartmontools sysstat unixODBC gcc-c++

4.设置时间钟

bash 复制代码
# 先执行 cat /sys/devices/system/clocksource/clocksource0/current_clocksource查看是否为tsc,如果是的话这里就不需要修改了。否则建议修改!
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
echo "tsc">/sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
GRUB_CMDLINE_LINUX="rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never clocksource=tsc" 

5.配置内核参数和资源限制

bash 复制代码
# 严格按照官方文档执行,生产环境中按照实际需求修改大小
# 将以下内容添加到sysctl.conf最后
'
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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
'

[root@Database ttzo]# vi /etc/sysctl.conf
bash 复制代码
# 加载并查看,这里最好重启一下服务器
[root@Database ttzo]# sysctl --system
/sbin/sysctl -a

6.Oracle 软件安装用户的资源限制

bash 复制代码
# 严格按照官方文档执行,生产环境中按照实际需求修改大小
# 先备份后修改,增加以下内容
'
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
'
[root@Database ttzo]# cp /etc/security/limits.conf /etc/security/limits.conf.bak
[root@Database ttzo]# vi /etc/security/limits.conf

7.权限组,用户,产品目录清单增加

bash 复制代码
# 查看本机是否有过安装,如果没有安装过Oracle,则提示文件不存在
[root@Database ttzo]# more /etc/oraInst.loc
bash 复制代码
# 创建用户组和用户oracle,并添加到相关组中
[root@Database ttzo]# /usr/sbin/groupadd -g 54321 oinstall
[root@Database ttzo]# /usr/sbin/groupadd -g 54327 asmdba
[root@Database ttzo]# /usr/sbin/groupadd -g 54328 asmoper
[root@Database ttzo]# /usr/sbin/groupadd -g 54322 dba
[root@Database ttzo]# groupadd -g 54323 oper
[root@Database ttzo]# /usr/sbin/groupadd -g 54324 backupdba
[root@Database ttzo]# /usr/sbin/groupadd -g 54325 dgdba
[root@Database ttzo]# /usr/sbin/groupadd -g 54326 kmdba
[root@Database ttzo]# /usr/sbin/groupadd -g 54330 racdba
[root@Database ttzo]# /usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
[root@Database ttzo]# /usr/sbin/usermod -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
bash 复制代码
# 修改创建的新用户oracle的密码
[root@Database ttzo]# passwd oracle

8.创建目录并修改目录权限

bash 复制代码
[root@Database ttzo]# mkdir -p /u01/app/oracle
[root@Database ttzo]# mkdir -p /u01/app/oraInventory
[root@Database ttzo]# chown -R oracle:oinstall /u01/app/oracle
[root@Database ttzo]# chown -R oracle:oinstall /u01/app/oraInventory
[root@Database ttzo]# chmod -R 775 /u01/app

9.使用新创建的用户oracle创建相关目录

bash 复制代码
# 切换到用户oracle中执行一下命令
[root@Database ttzo]# su oracle
[oracle@Database ttzo]$ mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1

10.拷贝Oracle19C安装包,解压

bash 复制代码
# 传输oracle安装包的时候,可以使用scp命令,也可以使用Xftp这样的工具
# win10及win11版本默认具备scp和ssh功能


bash 复制代码
# 安装zip
[root@Database dbhome_1]# dnf install zip
bash 复制代码
# 进入到oracle用户创建的目录中,将上传完成后的安装包进行解压
[oracle@Database ~]$ cd /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@Database dbhome_1]$ unzip -q /home/oracle/Temp/LINUX.X64_193000_db_home.zip

11.修改hosts文件,否则之后的监听可能会启动失败或者可能会导致客户端工具连接不到Oracle服务
注意:计算机名中最好不要有特殊符号,作者之前的计算名是RHEL8.9,导致安装到百分之五十九准备建库的时候出现报错。最终修改计算机名后正常了。

bash 复制代码
[root@Database dbhome_1]# hostname
[root@Database dbhome_1]# ip addr
[oracle@Database dbhome_1]$ vim /etc/hosts


12.关键文件位置
这三个文件中,第一个文件中的参数决定了软件安装时的各种参数,就是上述中图形界面安装的时候每个界面中选择的参数!

软件:/u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
监听:/u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
建库:/u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp

13.修改db_install.rsp文件参数

bash 复制代码
# 修改前一定要先备份
[oracle@Database response]$ cp db_install.rsp db_install.rsp.bak

修改db_install.rsp文件。以下给读者放记账已经修改好的部分图示
至于如何修改,为什么要修改成这样,读者打开自己的配置文件就可以发现,配置文件中所有需要填写的参数就是图形界面安装的时候选择的各项参数。
作者是按照上述图形界面另存的db.rsp文件原封不动的修改了db_install.rsp文件。读者如果想要对照图形界面查看db.rsp文件以及作者修改好的db_install.rsp文件请看该博客附件!
需要注意的是,如果响应文件中各个用户的密码没有设置的话,是不允许的安装的。所以响应文件中的密码得要写上
不管是什么原因导致的安装前预警不让安装,如果重新安装的话都得要先提前删除/u01/app/oraInventory/目录中的文件及文件夹,否则安装的提示这个目录非空,导致无法静默安装!


14.静默安装

bash 复制代码
# 临时修改RHEL系统版本
# Oracle19C安装的时候提示环境检测问题是因为Oracle配置文件中写的支持的RHEL8.0版本,作者是RHEL8.9的版本
export CV_ASSUME_DISTID=RHEL8.0
bash 复制代码
# 安装
[oracle@Database dbhome_1]$ ./runInstaller -silent -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
bash 复制代码
# 以root执行静默安装完成后的提示语句
[root@Database oraInventory]# sh /u01/app/oraInventory/orainstRoot.sh
[root@Database oraInventory]# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

15.配置环境变量

bash 复制代码
# 将以下内容添加到profile最末尾
'
export  ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1	
export  PATH=$PATH:/u01/app/oracle/product/19.3.0/dbhome_1/bin
export  ORACLE_SID=orcl
'
[root@Database oraInventory]# vim /etc/profile
# 使root用户变量生效
[root@Database oraInventory]# source /etc/profile
# 使oracle用户变量生效
[oracle@Database dbhome_1]$ source /etc/profile

16.监听配置

bash 复制代码
# 查看监听状态
[oracle@Database dbhome_1]$ lsnrctl status
bash 复制代码
# 以上监听状态反应结果是监听没有启动,尝试启动监听
[oracle@Database dbhome_1]$ lsnrctl start
bash 复制代码
# 再次查看监听服务状态
[oracle@Database dbhome_1]$ lsnrctl status

注意:以上结果就说明静默安装是成功的,监听也是正常的。但是执行到这里只是说明静默安装是完全成功的,我们下面需要做的就是创建新的监听。因为现在的监听只是启动成功了,但是没有listener.ora文件,这个是监听的文件!创建监听之前必须先停止现有的监听,否则会出现错误!

bash 复制代码
# 停止监听服务
[oracle@Database dbhome_1]$ lsnrctl stop
bash 复制代码
# 创建监听
[oracle@Database admin]$ netca -silent -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp

注意:执行上面命令后,监听文件就会出来,这是因为我们在db_install.rsp配置文件中已经设置了全局变量名和SID的缘故。如果配置文件中没有写也是可以的,那么这里就会创建新的监听。但是可能会存在端口不是默认的1521的情况。
我们可以看到下图中,listener.ora文件内容是正确的

bash 复制代码
[root@Database admin]# less /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora


修改监听文件,否则之后客户端很有可能会访问不了服务器Oracle数据库

bash 复制代码
# 向listener.ora监听文件新增以下内容
'
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)    
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )
'
[root@Database admin]# vim /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora


17.创建数据库

创建数据库需要修改的响应文件是dbca.rsp。该文件作为本博客附件已上传,可以参考使用

bash 复制代码
# 修改响应文件,修改前备份文件
[oracle@Database admin]$ cd /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/
[oracle@Database dbca]$ cp dbca.rsp dbca.rsp.bak
bash 复制代码
# 使用响应文件创建数据库
[oracle@Database dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
bash 复制代码
# 数据库创建成功后,重新启动监听服务
[oracle@Database dbca]$ lsnrctl stop
[oracle@Database dbca]$ lsnrctl start

18.连接数据库前各项检查及准备工作

bash 复制代码
# 登录数据库后查看数据库状态
# 如果数据库状态不是open,则输入startup尝试启动即可
[oracle@Database dbca]$ sqlplus / as sysdba
bash 复制代码
# 解锁system账户并重置密码
SQL> alter user system account unlock;

数据库解锁system用户的时候,发现出现乱码,所以现在需要修改相关字符集

bash 复制代码
# 查看服务器字符集
[root@Database ttzo]# echo $LANG 
bash 复制代码
# 查看数据库字符集
SQL> select userenv('language') from dual;
bash 复制代码
# 修改数据库字符集与服务器保持一致
SQL>SHUTDOWN IMMEDIATE;	#步骤1
SQL> STARTUP MOUNT;	#步骤2
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;	#步骤3
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;	#步骤4
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;	#步骤5
SQL>ALTER DATABASE OPEN;	#步骤6
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;	#步骤7
SQL>SHUTDOWN IMMEDIATE;	#步骤8
SQL>STARTUP;	#步骤9
bash 复制代码
# 重新查看字符集
SQL> select userenv('language') from dual;

以上修改完成后,如果仍旧是乱码,则可以按以下方式解决:

bash 复制代码
# oracle用户执行,这个方法是临时生效的
[oracle@Database dbca]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
bash 复制代码
# 如果想要永久有效,打开oracle home目录下的.bash_profile文件,未尾加入以下内容即可:
[oracle@Database dbca]$ su - oracle
[oracle@Database dbca]$ vim .bash_profile
bash 复制代码
# 向.bash_profile文件最后添加
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
bash 复制代码
# 使之立即生效
[oracle@Database dbca]$ source ~/.bashrc
bash 复制代码
# 重置system用户密码
SQL> alter user system identified by oracle_3301;
bash 复制代码
# 尝试切换登录(必须要确成功)
SQL> conn system/oracle_3301;
Connected.
SQL> 
bash 复制代码
# 开放Oracle数据库端口
[root@Database admin]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
[root@Database admin]# firewall-cmd --reload
[root@Database admin]# firewall-cmd --zone=public --query-port=1521/tcp


检查服务器端口是否可以测通

端口测通后,可以使用客户端登录,不管是sqlplus命令还是图形界面客户端,只要能登录成功就说明Oracle数据库访问没有任何问题,建议随便执行一次脚本看输出结果是否正常

使用相关工具连接

相关推荐
watermelonoops1 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
云和数据.ChenGuang1 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb