1. 首页 > 软件安装教程 > 正文

Oracle安装-Oracle19c单机ASM安装配置 FOR RHEL/OEL9 Linux详细过程

1. 硬件环境要求

在安装Oracle 19c ASM之前,必须对服务器的硬件环境进行全面检查,确保满足最低要求。更多学习教程www.fgedu.net.cn

# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 62G 2.1G 58G 8.5M 1.8G 59G
Swap: 32G 0B 32G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 8.5M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 50G 15G 36G 30% /
/dev/sdb1 500G 20G 480G 4% /oracle
/dev/sdc1 200G 0 200G 0% /asm

# 检查CPU核心数
# nproc
32

# 检查系统架构
# uname -m
x86_64

生产环境建议:最小内存8GB(测试环境),生产环境建议32GB以上。SWAP分区:内存8-16GB时,SWAP等于内存大小;内存16-64GB时,SWAP为16GB;内存64GB以上时,SWAP为32GB。ASM磁盘建议使用独立的物理磁盘或SAN存储。

2. 操作系统准备

Oracle 19c支持Oracle Linux 9.2、Red Hat Enterprise Linux 9.2等操作系统。本文以Oracle Linux 9.2为例。学习交流加群风哥微信: itpux-com

# 检查操作系统版本
# cat /etc/oracle-release
Oracle Linux Server release 9.2

# 检查内核版本
# uname -r
5.14.0-284.11.1.el9_2.x86_64

# 检查SELinux状态
# getenforce
Disabled

# 关闭SELinux(如未关闭)
# vi /etc/selinux/config
SELINUX=disabled

# 检查防火墙状态
# systemctl status firewalld

# 关闭防火墙(生产环境建议开放特定端口而非完全关闭)
# systemctl stop firewalld
# systemctl disable firewalld

3. 依赖包安装

Oracle 19c需要安装一系列依赖包,使用dnf进行安装。

# 安装Oracle预安装包(推荐方式)
# dnf install -y oracle-database-preinstall-19c

# 如果无法使用预安装包,手动安装依赖
# dnf install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libxcb libXi make sysstat

# 安装额外依赖包
# dnf install -y smartmontools xclock xauth

# 安装ASM相关包
# dnf install -y oracleasm-support

风哥提示:使用oracle-database-preinstall-19c包可以自动完成大部分系统配置,包括用户创建、内核参数设置等,是生产环境推荐的方式。

4. 内核参数配置

内核参数对Oracle数据库的性能和稳定性至关重要,需要根据服务器硬件配置进行调整。学习交流加群风哥QQ113257174

# 编辑sysctl.conf文件
# vi /etc/sysctl.conf

# 添加以下内核参数
fs.file-max = 6815744
kernel.shmmax = 34359738368
kernel.shmall = 8388608
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
fs.aio-max-nr = 1048576
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# 使内核参数生效
# sysctl -p

# 验证参数设置
# sysctl -a | grep kernel.sem
kernel.sem = 250 32000 100 128

# sysctl -a | grep fs.file-max
fs.file-max = 6815744

# 配置用户资源限制
# vi /etc/security/limits.conf

# 添加以下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728

生产环境内核参数说明:kernel.shmmax设置为物理内存的一半或更大,用于单个共享内存段的最大大小;kernel.shmall设置为物理内存除以页面大小(通常为4096);kernel.sem依次为SEMMSL、SEMMNS、SEMOPM、SEMMNI;net.ipv4.ip_local_port_range设置可用端口范围,避免与Oracle端口冲突;vm.swappiness设置为10,减少使用swap。

5. 大内存页配置

大内存页(HugePages)可以减少页表项数量,提高内存访问效率,对Oracle数据库性能有显著提升。

# 检查当前大内存页配置
# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

# 检查透明大内存页状态
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

# 禁用透明大内存页
# vi /etc/default/grub

# 在GRUB_CMDLINE_LINUX中添加:transparent_hugepage=never
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap transparent_hugepage=never”

# 重新生成grub配置
# grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统使配置生效
# reboot

# 配置大内存页数量(假设SGA为40GB,每个大页2MB)
# vi /etc/sysctl.conf

# 添加大内存页配置
vm.nr_hugepages = 20480
vm.hugetlb_shm_group = 54321

# 使配置生效
# sysctl -p

# 验证大内存页配置
# grep HugePages /proc/meminfo
HugePages_Total: 20480
HugePages_Free: 20480
HugePages_Rsvd: 0
HugePages_Surp: 0

生产环境建议:SGA为40GB,需要配置约20480个大页(每个大页2MB)。对于使用大内存页的系统,需要专门规划大内存页大小。更多学习教程公众号风哥教程itpux_com

6. NUMA配置

NUMA(Non-Uniform Memory Access)架构对Oracle数据库性能有重要影响,需要正确配置。

# 检查NUMA状态
# numactl –hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 size: 32768 MB
node 0 free: 31024 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 32768 MB
node 1 free: 32156 MB
node distances:
node 0 1
0: 10 21
1: 21 10

# 检查当前NUMA策略
# numactl –show
policy: default
preferred node: current

# 禁用NUMA(推荐在BIOS中禁用,或在GRUB中添加参数)
# vi /etc/default/grub

# 在GRUB_CMDLINE_LINUX中添加:numa=off
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap transparent_hugepage=never numa=off”

# 重新生成grub配置
# grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统
# reboot

# 验证NUMA已禁用
# dmesg | grep -i numa
No NUMA configuration found

风哥提示:对于Oracle数据库,建议禁用NUMA以避免内存访问的不一致性,特别是在多路服务器上。

7. TMPFS配置

TMPFS(临时文件系统)用于存储临时文件,对Oracle数据库的性能有一定影响。

# 检查当前TMPFS配置
# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 32G 0 32G 0% /dev/shm

# 检查当前挂载选项
# mount | grep tmpfs
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)

# 配置TMPFS大小(建议设置为物理内存的50%-75%)
# vi /etc/fstab

# 修改tmpfs行
tmpfs /dev/shm tmpfs defaults,size=48g 0 0

# 重新挂载TMPFS
# mount -o remount /dev/shm

# 验证配置
# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 48G 0 48G 0% /dev/shm

生产环境建议:TMPFS大小建议设置为物理内存的50%-75%,用于存储Oracle的临时文件和共享内存段。

8. 用户和组配置

Oracle数据库需要特定的用户和组来运行,需要提前创建并配置。

# 创建Oracle用户组
# groupadd -g 54321 oinstall
# groupadd -g 54322 dba
# groupadd -g 54323 oper
# groupadd -g 54324 asmadmin
# groupadd -g 54325 asmdba
# groupadd -g 54326 asmoper

# 创建Oracle用户
# useradd -u 54321 -g oinstall -G dba,oper,asmadmin,asmdba,asmoper oracle

# 设置Oracle用户密码
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 验证用户和组
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(asmadmin),54325(asmdba),54326(asmoper)

# 配置用户资源限制
# vi /etc/security/limits.conf

# 添加以下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728

9. 目录结构配置

按照OFA(Optimal Flexible Architecture)标准创建Oracle目录结构。

# 创建Oracle基础目录
# mkdir -p /oracle/app/oracle
# mkdir -p /oracle/app/oraInventory
# mkdir -p /oracle/app/oracle/product/19c/db_1
# mkdir -p /oracle/app/oracle/product/19c/grid_1
# mkdir -p /oracle/app/oracle/oradata
# mkdir -p /oracle/app/oracle/fast_recovery_area
# mkdir -p /oracle/app/oracle/admin/fgedudb
# mkdir -p /asm
# mkdir -p /backup

# 设置目录权限
# chown -R oracle:oinstall /oracle
# chown -R oracle:oinstall /oracle/app/oraInventory
# chown -R oracle:asmadmin /asm
# chmod -R 775 /oracle
# chmod -R 755 /backup

# 验证目录结构
# ls -la /oracle/app/oracle/
total 28
drwxr-xr-x 7 oracle oinstall 4096 Mar 29 10:00 .
drwxr-xr-x 3 oracle oinstall 4096 Mar 29 10:00 ..
drwxr-xr-x 3 oracle oinstall 4096 Mar 29 10:00 admin
drwxr-xr-x 3 oracle oinstall 4096 Mar 29 10:00 fast_recovery_area
drwxr-xr-x 3 oracle oinstall 4096 Mar 29 10:00 oradata
drwxr-xr-x 3 oracle oinstall 4096 Mar 29 10:00 product

风哥提示:OFA目录结构有助于数据库的管理和维护,建议严格按照标准创建。

10. 环境变量配置

配置Oracle用户的环境变量,包括ORACLE_HOME、PATH等。

# 切换到oracle用户
# su – oracle

# 编辑.bash_profile
$ vi ~/.bash_profile

# 添加以下环境变量
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19c/db_1
export ORACLE_SID=fgedudb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”
export TMP=/tmp
export TMPDIR=/tmp
export DISPLAY=:0.0

# 使环境变量生效
$ source ~/.bash_profile

# 验证环境变量
$ echo $ORACLE_HOME
/oracle/app/oracle/product/19c/db_1

$ echo $ORACLE_SID
fgedudb

$ env | grep ORACLE
ORACLE_BASE=/oracle/app/oracle
ORACLE_HOME=/oracle/app/oracle/product/19c/db_1
ORACLE_SID=fgedudb

生产环境建议:环境变量配置完成后,建议重新登录验证所有变量是否正确设置。NLS_LANG设置为AL32UTF8以支持中文,NLS_DATE_FORMAT设置为标准日期格式便于日志分析。

11. ASM配置

配置Oracle ASM,用于存储数据库文件。

# 配置Oracle ASM
# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets (‘[]’). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [y]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

# 准备ASM磁盘
# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x12345678.

Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-419430399, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399):

Created a new partition 1 of type ‘Linux’ and of size 200 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# 创建ASM磁盘
# oracleasm createdisk DATA01 /dev/sdc1
Writing disk header: done
Instantiating disk: done

# 查看ASM磁盘
# oracleasm listdisks
DATA01

12. Oracle 19c安装

在完成所有准备工作后,开始安装Oracle 19c数据库软件。

# 解压Oracle 19c安装介质
$ cd /backup
$ unzip -q LINUX.X64_193000_db_home.zip -d /oracle/app/oracle/product/19c/db_1

# 应用RU补丁(19.7)
$ unzip -q /backup/LINUX.X64_197000_db_ojvm_home.zip
$ cd /oracle/app/oracle/product/19c/db_1
$ ./runInstaller -applyRU /backup/30783543/30869156 -applyOneOffs /backup/30783543/30805684,/backup/30783543/29585399

# 执行图形化安装
$ cd /oracle/app/oracle/product/19c/db_1
$ ./runInstaller

# 安装过程中的关键步骤:
1. 选择”Install database software only”
2. 选择”Single instance database installation”
3. 选择企业版
4. 设置Oracle基目录:/oracle/app/oracle
5. 设置软件位置:/oracle/app/oracle/product/19c/db_1
6. 选择”Use Oracle Automatic Storage Management”
7. 选择ASM磁盘组:DATA
8. 设置ASM密码
9. 检查先决条件,点击”下一步”
10. 点击”完成”开始安装
11. 安装完成后,运行root脚本

# 以root用户运行配置脚本
# /oracle/app/oraInventory/orainstRoot.sh
Changing permissions of /oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /oracle/app/oraInventory to oinstall.
The execution of the script is complete.

# /oracle/app/oracle/product/19c/db_1/root.sh
Check /oracle/app/oracle/product/19c/db_1/install/root_fgedudb01_202403291000.log for the output of root script

13. 数据库创建

安装完成后,使用DBCA工具创建数据库。

# 使用DBCA创建数据库
$ dbca

# 创建数据库的关键步骤:
1. 选择”创建数据库”
2. 选择”高级配置”
3. 数据库标识符:
– 全局数据库名:fgedudb
– 系统标识符(SID):fgedudb
4. 选择”使用Oracle Automatic Storage Management”
5. 选择ASM磁盘组:DATA
6. 配置管理选项:选择”使用Enterprise Manager”
7. 设置数据库密码
8. 选择”文件系统”
9. 指定数据库文件位置:+DATA
10. 指定快速恢复区:+DATA/FRA
11. 不启用自动维护任务
12. 配置内存参数:
– SGA:40GB
– PGA:8GB
13. 配置字符集:AL32UTF8
14. 配置示例方案
15. 点击”完成”开始创建

14. 安装后配置

安装完成后,需要进行一些必要的配置,包括开启归档、配置监听器等。

— 启动数据库
$ sqlplus / as sysdba

SQL> STARTUP

— 开启归档模式
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

— 配置归档日志位置
SQL> ALTER SYSTEM SET log_archive_dest_1=’LOCATION=+DATA/FRA’ SCOPE=SPFILE;

— 配置强制归档
SQL> ALTER SYSTEM SET log_archive_format=’fgedudb_%t_%s_%r.arc’ SCOPE=SPFILE;

— 检查归档模式
SQL> ARCHIVE LOG LIST
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +DATA/FRA
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2

— 配置监听器
$ netca

— 配置监听器的关键步骤:
1. 选择”监听程序配置”
2. 选择”添加”
3. 输入监听程序名称:LISTENER
4. 选择协议:TCP
5. 输入端口号:1521
6. 选择”不”
7. 点击”完成”

— 启动监听器
$ lsnrctl start

— 检查监听器状态
$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 – Production on 29-MAR-2024 10:00:00

Copyright (c) 1991, 2023, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fgedudb01)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 – Production
Start Date 29-MAR-2024 10:00:00
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/app/oracle/product/19c/db_1/network/admin/listener.ora
Listener Log File /oracle/app/oracle/diag/tnslsnr/fgedudb01/listener/alert/log.xml

Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fgedudb01)(PORT=1521)))

Services Summary…
Service “fgedudb” has 1 instance(s).
Instance “fgedudb”, status READY, has 1 handler(s) for this service…
Service “fgedudbXDB” has 1 instance(s).
Instance “fgedudb”, status READY, has 1 handler(s) for this service…

— 配置TNS
$ vi $ORACLE_HOME/network/admin/tnsnames.ora

FGEDUDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)

— 测试连接
$ sqlplus system/Oracle123@fgedudb

SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 29 10:00:00 2024
Version 19.7.0.0.0

Copyright (c) 1982, 2023, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.7.0.0.0

SQL>

15. 安装验证

验证Oracle 19c数据库是否安装成功。

— 检查数据库版本
SQL> SELECT * FROM v$version;

BANNER
——————————————————————————–
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.7.0.0.0

PL/SQL Release 19.0.0.0.0 – Production
CORE 19.0.0.0 Production
TNS for Linux: Version 19.0.0.0.0 – Production
NLSRTL Version 19.0.0.0.0 – Production

— 检查数据库状态
SQL> SELECT status FROM v$instance;
STATUS
————
OPEN

— 检查数据文件状态
SQL> SELECT name, status FROM v$datafile;

NAME STATUS
————————————————– ——–
+DATA/fgedudb/system01.dbf SYSTEM
+DATA/fgedudb/sysaux01.dbf ONLINE
+DATA/fgedudb/undotbs01.dbf ONLINE
+DATA/fgedudb/users01.dbf ONLINE

— 检查表空间状态
SQL> SELECT tablespace_name, status FROM dba_tablespaces;

TABLESPACE_NAME STATUS
—————————— ——–
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE

— 检查ASM磁盘组
SQL> SELECT name, total_mb, free_mb FROM v$asm_diskgroup;

NAME TOTAL_MB FREE_MB
———- ———- ———-
DATA 204800 102400

— 检查ASM磁盘
SQL> SELECT name, path, total_mb FROM v$asm_disk;

NAME PATH TOTAL_MB
——– ————- ———-
DATA01 ORCL:DATA01 204800

— 检查归档日志
SQL> SELECT name, sequence#, first_change# FROM v$archived_log ORDER BY sequence#;

NAME SEQUENCE# FIRST_CHANGE#
—————————————— ———- ————–
+DATA/FRA/fgedudb_1_1_123456789.arc 1 123456789
+DATA/FRA/fgedudb_1_2_123456789.arc 2 123456790

生产环境建议:安装后建议进行全面的测试,包括功能测试、性能测试、安全测试等,确保数据库能够正常运行。from:www.itpux.com

16. 生产环境建议

以下是Oracle 19c单机ASM安装的生产环境建议。

1. 内存配置:
– SGA大小建议设置为物理内存的40%-60%
– PGA大小建议设置为物理内存的10%-20%
– 使用大内存页(HugePages)提高性能
– 配置适当的SGA_TARGET和PGA_AGGREGATE_TARGET

2. ASM配置:
– 使用独立的物理磁盘或SAN存储
– 配置多个ASM磁盘组
– 使用ASM镜像提高可用性
– 定期检查ASM磁盘状态

3. 网络配置:
– 配置监听器使用专用端口
– 使用TNS别名简化连接
– 配置连接池提高性能
– 开启SQL*Net加密提高安全性

4. 安全配置:
– 定期修改数据库密码
– 限制SYSDBA权限
– 开启审计功能
– 定期应用安全补丁

5. 维护计划:
– 定期收集统计信息
– 定期重建索引
– 定期清理归档日志
– 定期检查表空间使用情况
– 定期进行数据库备份

6. 监控配置:
– 配置Enterprise Manager进行监控
– 设置告警阈值
– 监控数据库性能指标
– 定期检查AWR报告

风哥提示:Oracle 19c是一个成熟稳定的数据库版本,适合生产环境使用。建议定期应用补丁,保持数据库的安全性和稳定性。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息