前言
日常开发、测试,及一些非核心生产环境,经常要安装Oracle数据库,目前很多还在采用Oracle 11g数据库软件。但采用图形安装,一是耗时,安装vnc,安装X软件等非常耗时,另外由于xmanger版权问题,很多公司也不方便使用,所以采用静默安装非常方便。本次整理一篇单机版静默安装指南,等有机会再详细整理一篇RAC静默安装文档。
一、环境准备
1.1 配置本地YUM源
因为该服务器无法连接外网,所以本次选择配置本地YUM源解决rpm包安装依赖问题。
上传Centos7镜像文件CentOS-7.9-x86_64-DVD-2009.iso至服务器/home/soft目录。
将iso镜像挂载至/mnt/ios目录
[root@192 soft]# mkdir /mnt/iso
[root@192 soft]# mount -o loop /home/soft/CentOS-7.9-x86_64-DVD-2009.iso /mnt/iso
[root@192 soft]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 313M 1.6G 17% /dev/shm
tmpfs 1.9G 49M 1.8G 3% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 44G 7.4G 37G 17% /
/dev/sda1 1014M 151M 864M 15% /boot
/dev/mapper/centos-home 22G 9.5G 12G 45% /home
tmpfs 375M 0 375M 0% /run/user/0
/dev/loop0 4.4G 4.4G 0 100% /mnt/iso
# 修改yum配置文件
[root@192 ~]# cd /etc/yum.repos.d
[root@192 yum.repos.d]# mkdir bak
[root@192 yum.repos.d]# mv *.repo ./bak
#新建local.repo文件
[root@192 yum.repos.d]# cat > /etc/yum.repos.d/local.repo <<EOF
[base]
name=CentOS
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
EOF
# 查看生成的local.repo文件
[root@192 yum.repos.d]# cat local.repo
[base]
name=CentOS
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
#清除yum 原有信息并载入新缓存
[root@192 ~]# yum clean all
[root@192 ~]# yum makecache
1.2 准备安装包
1.2.1 下载安装包
Oracle 11.2.0.4 x86_64系统安装包共7个zip文件,若只安装Oracle仅需前两个zip文件。
可从以下官网地址下载Oracle 11.2.0.4 x86_64位安装包。
Oracle 11.2.0.4 Linux x86-64 (American English)下载地址:
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_1of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_1of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_2of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_2of7.zip
1.2.2 上传安装包
将下载的Oracle 安装包上传至/home/soft目录,并解压。
[root@192 ~]# cd /home/soft
[root@192 ~]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@192 ~]# unzip p13390677_112040_Linux-x86-64_2of7.zip
[root@192 ~]# chmod -R 777 /home/soft
1.3 创建组和用户
# 创建安装Oracle数据库所需的用组和用户
[root@192 ~]# groupadd -g 600 oinstall
[root@192 ~]# groupadd -g 601 dba
[root@192 ~]# useradd -u 600 -g oinstall -G dba oracle
# 设置Oracle用户密码
[root@192 ~]# passwd oracle
1.4 创建目录及设置权限
# 创建数据库对应目录,并修改目录权限
[root@192 ~]# mkdir -p /u01/app/oracle/product/11.2.0/db_1
[root@192 ~]# mkdir /u01/app/oracle/oradata
[root@192 ~]# mkdir /u01/app/oracle/inventory
[root@192 ~]# mkdir /u01/app/oracle/fast_recovery_area
[root@192 ~]# chown -R oracle:oinstall /u01/app/oracle
[root@192 ~]# chmod -R 775 /u01/app/oracle
1.5 编辑用户环境变量
# 切换至Oracle用户
[root@192 ~]# su - oracle
# 编辑.bash_profile环境变量文件,添加如下内容
[oracle@192 ~]$ cat .bash_profile --内容如下
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
# export path
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
# 使环境变量生效
[oracle@192 ~]$ source .bash_profile
1.6 编辑资源限制
# 切换至root用户,编辑 /etc/security/limits.conf
[root@192 ~]# cat >> /home/oracle/123 <<EOF
oracle hard nproc 16384
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
* soft memlock 104857600
* hard memlock 104857600
EOF
1.7 修改内核参数
# 切换至root用户,编辑 /etc/sysctl.conf 文件
# 注意,修改shmall和shmmax建议参照如下设置
SHMALL参数:设置共享内存总页数。这个值太小有可能导致数据库启动报错。很多人调整系统内核参数的时候只关注SHMMAX参数,而忽略了SHMALL参数的设置。这个值推荐设置为物理内存大小除以分页大小。
# getconf PAGE_SIZE
对于32G、64G的内存,4K分页大小的系统而言,SHMALL的值应该设置为
select 32*1024*1024*1024/4096 from dual; == 8388608
select 64*1024*1024*1024/4096 from dual; == 16777216
SHMMAX参数:用于定义单个共享内存段的最大值。
64位linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。
内存为32G时,该值为 32*1024*1024*1024-1 = 34359738367
内存为64G时,该值为 64*1024*1024*1024-1 = 68719476735
内存为128G时,该值为 128*1024*1024*1024-1 = 137438953471
[root@192 ~]# cat >> /etc/sysctl.conf <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 956825
kernel.shmmax = 3919157657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
EOF
# 生效内核参数
[root@192 ~]# sysctl -p
1.8 编辑/etc/pam.d/login文件
# 切换至root用户操作
[root@192 ~]# cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
session required pam_limits.so
EOF
1.9 安装依赖包
# root用户使用本地yum源安装如下依赖包
[root@192 ~]# yum install -y gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static libstdc++ libstdc++-devel ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel glibc glibc-common glibc-devel
1.10 关闭防火墙
# root用户操作
[root@192 ~]# service iptables stop
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# systemctl disable firewalld
1.11 关闭selinux
# root用户操作
[root@192 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
[root@192 ~]# cat /etc/selinux/config
[root@192 ~]# setenforce 0
二、安装数据库软件
2.1 准备db_install.rsp响应文件
# 切换至Oracle用户操作
[root@192 ~]# su - oracle
[oracle@192 ~]$ cp -R /home/soft/database/response/ .
[oracle@192 ~]$ ll
total 0
drwxr-xr-x. 2 oracle oinstall 61 May 23 22:04 response
[oracle@192 ~]$ cd response/
# 编辑 db_install.rsp响应文件,主要修改以下内容
# 响应文件的格式版本,这里指定的版本为 "/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0"
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
# 安装选项,这里设置为 "INSTALL_DB_SWONLY",表示仅安装数据库软件,而不创建或配置数据库实例
oracle.install.option=INSTALL_DB_SWONLY
# Oracle数据库所在的主机名
ORACLE_HOSTNAME=xxx-db
# 用于安装和管理Oracle软件的Unix组名,这里设置为"oinstall"
UNIX_GROUP_NAME=oinstall
# Oracle Inventory(安装目录)的路径,这里设置为 "/u01/app/oraInventory"。
INVENTORY_LOCATION=/u01/app/oraInventory
# 选择的语言,这里设置为 "en,zh_CN",表示英文和简体中文
SELECTED_LANGUAGES=en,zh_CN
# Oracle软件的安装路径(数据库主目录)
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
# Oracle软件的基本路径
ORACLE_BASE=/u01/app/oracle
# 安装的Oracle数据库版本。这里设置为 "EE",表示企业版
oracle.install.db.InstallEdition=EE
# 是否选择了企业版选项,这里设置为"false",表示未选择任何企业版选项
oracle.install.db.EEOptionsSelection=false
# 用于数据库管理员(DBA) 组的名称,这里设置为 "dba"
oracle.install.db.DBA_GROUP=dba
# 用于操作员组的名称,这里设置为 "dba",与DBA组相同
oracle.install.db.OPER_GROUP=dba
# 是否拒绝安装安全更新,这里设置为 "true",表示拒绝安装安全更新
DECLINE_SECURITY_UPDATES=true
# 自动更新选项,这里设置为 "SKIP_UPDATES",表示跳过自动更新
oracle.installer.autoupdates.option=SKIP_UPDATES
2.2 运行runInstaller进行安装
[oracle@192 response]$ cd /home/soft/database/
[oracle@192 database]$ ./runInstaller -silent -noconfig -ignorePrereq -responseFile /home/oracle/response/db_install.rsp
# 以下是上述命令执行生成内容
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 43276 MB Passed
Checking swap space: must be greater than 150 MB. Actual 3967 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-05-23_10-51-54PM. Please wait ...[oracle@192 database]$
[oracle@192 database]$ [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
CAUSE: The Central Inventory is located in the Oracle base.
ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
You can find the log of this install session at:
/u01/app/oracle/inventory/logs/installActions2023-05-23_10-51-54PM.log
The installation of Oracle Database 11g was successful.
Please check '/u01/app/oracle/inventory/logs/silentInstall2023-05-23_10-51-54PM.log' for more details.
As a root user, execute the following script(s):
1. /u01/app/oracle/inventory/orainstRoot.sh
2. /u01/app/oracle/product/11.2.0/db_1/root.sh
# 此时会提示要使用root用户执行上述两个脚本
# 新打开一个会话,使用root用户执行
1) 首先执行/u01/app/oracle/inventory/orainstRoot.sh脚本
[root@192 db_1]# /u01/app/oracle/inventory/orainstRoot.sh
# 生成内容如下
Changing permissions of /u01/app/oracle/inventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oracle/inventory to oinstall.
The execution of the script is complete.
2)再次执行/u01/app/oracle/product/11.2.0/db_1/root.sh脚本
[root@192 db_1]# /u01/app/oracle/product/11.2.0/db_1/root.sh
# 生成内容如下
Check /u01/app/oracle/product/11.2.0/db_1/install/root_192.168.20.16_2023-05-23_22-59-10.log for the output of root script
# 以上两个脚本执行完毕后,返回前一个会话,按回车,结束安装,执行成功,结果如下。
Successfully Setup Software.
三、创建监听
3.1 使用netca.rsp响应文件创建监听
# 使用Oracle用户执行
[oracle@192 ~]$ netca /silent -responsefile /home/oracle/response/netca.rsp
# 上述命令执行后,生成内容如下
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /home/oracle/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
# 曾在一个测试环境执行时遇到如下报错
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /home/oracle/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
ProfileException: Could not save Profile: TNS-04415: File i/o error
caused by: java.io.FileNotFoundException: /usr/lib/oracle/19.16/client64/lib/network/admin/sqlnet.ora (Permission denied)
Profile configuration complete.
ListenerException: Could not save listener: TNS-04415: File i/o error
caused by: java.io.FileNotFoundException: /usr/lib/oracle/19.16/client64/lib/network/admin/listener.ora (Permission denied)
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/11.2.0/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
# 对于上述报错,将/usr/lib/下oracle目录进行了修改,修改为777,再执行命令就未再报错
四、创建数据库
4.1 准备dbca.rsp响应文件
# 使用Oracle用户执行,编辑dbca.rsp响应文件,主要修改如下内容
# 全局数据库名
GDBNAME = "orcl"
# 数据库实例名
SID = "orcl"
# SYS用户的密码
SYSPASSWORD = "oracle"
# SYSTEM用户的密码
SYSTEMPASSWORD = "oracle"
# SYSMAN用户(用于Enterprise Manager)的密码
SYSMANPASSWORD = "oracle"
# DBSNMP用户(用于SNMP管理)的密码
DBSNMPPASSWORD = "oracle"
# 数据文件存储路径
DATAFILEDESTINATION =/u01/app/oracle/oradata
# 恢复区域存储路径
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
# 数据库字符集
CHARACTERSET = "ZHS16GBK"
# 数据库实例使用的总内存大小(以MB为单位)
TOTALMEMORY = "3276"
4.2 创建数据库
# 使用Oracle用户,执行如下命令
[oracle@192 ~]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
# 上述命令执行后生成内容如下
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details
4.3 查看监听状态
[oracle@192 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-MAY-2023 02:18:01
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 23-MAY-2023 23:50:11
Uptime 0 days 2 hr. 27 min. 51 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/192/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.xxx.xxx)(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
4.4 查看实例状态
[oracle@192 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed May 24 02:19:04 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
OPEN
4.5 修改local_listener
[oracle@192 ~]$ sqlplus / as sysdba
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.xxx.xxx)(PORT=1521))';
SQL> alter system register;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




