Redhat7.9安装部署Oracle 19C

在Redhat7.9系统中可以通过RPM的方式安装Oracle 19C,但是这种方式安装的数据库默认是容器数据库。我需要安装非容器数据库,且需要安装在/data目录下(组RAID的分区挂载在/data目录)。

系统信息:Redhat7.9+4G内存+60G的硬盘

1.系统检查与依赖安装

bash 复制代码
###检查系统版本
cat /etc/redhat-release

###安装依赖包(可跳过)
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

###下载并安装Oracle预安装包(会自动创建用户和配置内核参数)
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

2.创建专用目录结构

bash 复制代码
# 创建/data目录结构(替代默认的/u01)
mkdir -p /data/oracle  #创建xxx/oracle,正常是/u01/oracle,以此类推
mkdir -p /data/oracle/oradata  #创建xxx/oracle/oradata 
mkdir -p /data/oracle/fast_recovery_area  #创建xxx/oracle/fast_recovery_area
mkdir -p /data/oracle/admin/ORCL19C/adump  #创建xxx/oracle/admin/ORCL19C/adump

# 设置所有权(Oracle预安装包已创建oracle用户和oinstall组)
chown -R oracle:oinstall /data/oracle  #xxx/oracle
chmod -R 775 /data/oracle

# 创建产品清单目录   #创建xxx/oracle/oraInventory
mkdir -p /data/oracle/oraInventory
chown oracle:oinstall /data/oracle/oraInventory

3.配置Oracle用户环境变量

bash 复制代码
su - oracle   #切到oracle配置环境变量

# 编辑环境变量
cat >> ~/.bash_profile << 'EOF'
# Oracle 19c Environment
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=ORCL19C   
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
EOF

source ~/.bash_profile  # 使环境变量生效
exit  # 返回root用户

4.安装Oracle 19c数据库软件

bash 复制代码
# 下载RPM预安装包
wget https://download.oracle.com/otn/linux/oracle19c/190000/oracle-database-ee-19c-1.0-1.x86_64.rpm?AuthParam=1766817578_807d48575aacb66c351e06db04a89f88

或者到Oracle官网下载Oracle 19C的RPM包,再上传到服务器

bash 复制代码
# 安装Oracle 19c企业版RPM包
yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm

# 验证安装
rpm -qa | grep oracle-database-ee-19c

5.创建数据库

正常情况下,数据库软件安装后运行/etc/init.d/oracledb_ORCLCDB-19c configure,再根据提示设置密码就可以创建容器数据库。由于我需要安装非容器数据库,且要把数据库安装在/data目录下,所以需要手动创建数据库

bash 复制代码
# 执行以下命令,部分参数按需修改
su - oracle << 'EOF'
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

dbca -silent -createDatabase \
 -templateName General_Purpose.dbc \
 -gdbname ORCL19C \
 -sid ORCL19C \
 -characterSet AL32UTF8 \
 -sysPassword Hbjkj@#123 \     #设置sys密码
 -systemPassword Hbjkj@#123 \  #设置system密码
 -dbsnmpPassword Hbjkj@#123 \  #设置snmp密码
 -createAsContainerDatabase false \
 -databaseType MULTIPURPOSE \
 -automaticMemoryManagement false \
 -totalMemory 2048 \
 -initParams sga_target=1500M,sga_max_size=1500M,pga_aggregate_target=500M,memory_target=0,processes=100,db_create_file_dest='/data/oracle/oradata' \
 -storageType FS \
 -datafileDestination /data/oracle/oradata \
 -redoLogFileSize 100 \
 -recoveryAreaDestination /data/oracle/fast_recovery_area \
 -recoveryAreaSize 4096 \
 -emConfiguration NONE \
 -ignorePreReqs
EOF

6.成功创建数据库

这里由于我的系统可分配的内存比较小,所以安装完后会有警告,但不影响使用。正常完美安装后如下图:

7.配置监听

bash 复制代码
su - oracle << 'EOF'
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

# 创建监听器配置
cat > $ORACLE_HOME/network/admin/listener.ora << 'LISTENER_EOF'
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.3)(PORT = 1521))  # 改为系统的IP
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL19C)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
      (SID_NAME = ORCL19C)
    )
  )
LISTENER_EOF

# 启动监听器
lsnrctl start
EOF

8.查看监听状态

bash 复制代码
su - oracle -c "source ~/.bash_profile && lsnrctl status"

9.测试连接

bash 复制代码
# 关闭防火墙,生产环境开放端口
systemctl stop firewalld
setenforce 0

我这里使用dbeaver测试连接数据库。打开软件,新建数据库连接,填写数据库信息后,点击测试连接,出现已连接后,表示数据库可以正常连接使用

10.设置开机自启

创建systemd文件
bash 复制代码
cat > /etc/systemd/system/oracle.service << 'EOF'
[Unit]
Description=Oracle 19c Database and Listener
After=network.target

[Service]
Type=simple
User=oracle
Group=oinstall

# 启动脚本
ExecStart=/bin/bash -c "ORACLE_HOME=/opt/oracle/product/19c/dbhome_1; ORACLE_SID=ORCL19C; PATH=\$ORACLE_HOME/bin:/usr/local/bin:/usr/bin:/bin; export PATH; \$ORACLE_HOME/bin/dbstart \$ORACLE_HOME; if ! \$ORACLE_HOME/bin/lsnrctl status >/dev/null 2>&1; then \$ORACLE_HOME/bin/lsnrctl start; fi; while true; do /bin/sleep 3600; done"

# 停止脚本
ExecStop=/bin/bash -c "ORACLE_HOME=/opt/oracle/product/19c/dbhome_1; ORACLE_SID=ORCL19C; PATH=\$ORACLE_HOME/bin:/usr/local/bin:/usr/bin:/bin; export PATH; \$ORACLE_HOME/bin/lsnrctl stop 2>/dev/null || true; \$ORACLE_HOME/bin/dbshut \$ORACLE_HOME 2>/dev/null || true"

TimeoutStartSec=300
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF
创建检查状态文件
bash 复制代码
cat > /usr/local/bin/oracle-status << 'EOF'
#!/bin/bash
echo "=== Oracle真实状态 ==="
echo "systemd服务: $(systemctl is-active oracle 2>/dev/null || echo 'unknown')"

if ps -ef | grep -q tnslsnr; then
    echo "监听器: 运行中"
else
    echo "监听器: 停止"
fi

if ps -ef | grep -q "ora_pmon_ORCL19C"; then
    echo "数据库: 运行中"
else
    echo "数据库: 停止"
fi
EOF
bash 复制代码
# 设置权限
chmod +x /usr/local/bin/oracle-status
启用并测试systemd服务
bash 复制代码
# 重新加载systemd配置
systemctl daemon-reload

# 启用Oracle服务自启动
systemctl enable oracle

# 启动服务
systemctl start oracle

# 检查状态
systemctl status oracle
oracle-status

至此,Oracle 19C安装成功

相关推荐
TDengine (老段)2 小时前
TDengine 企业用户建表规模有多大?
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
byzh_rc3 小时前
[算法设计与分析-从入门到入土] 复杂算法
数据库·人工智能·算法·机器学习·支持向量机
白露与泡影3 小时前
详细描述一条 SQL 语句在 MySQL 中的执行过程。
数据库·sql·mysql
qq_316837753 小时前
mysql mybatisPlus 存储经纬度
数据库·mysql
杀死那个蝈坦3 小时前
短链接生成-基于布隆过滤器和唯一索引
java·数据库·微服务·oracle·rocketmq
3824278273 小时前
使用 webdriver-manager配置geckodriver
java·开发语言·数据库·爬虫·python
惜分飞4 小时前
Oracle Recovery Tools 使用说明
数据库·oracle·oracle恢复·替代bbed·oracle恢复工具
如旧呀4 小时前
爬虫小知识
数据库·爬虫·mysql
培根芝士4 小时前
解决DBeaver对PostgresSQL备份数据库时报错
数据库