银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册

文章目录

  • [银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册](#银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册)
    • [一、前置环境准备(root 用户执行)](#一、前置环境准备(root 用户执行))
      • [1. 安装依赖包](#1. 安装依赖包)
      • [2. libnsl 软链接修复](#2. libnsl 软链接修复)
      • [3. 创建用户与组](#3. 创建用户与组)
      • [4. 创建目录结构](#4. 创建目录结构)
      • [5. devtoolset 软链接适配(解决编译工具链问题)](#5. devtoolset 软链接适配(解决编译工具链问题))
    • [二、oracle 用户环境变量配置](#二、oracle 用户环境变量配置)
      • [1. 编辑 .bash_profile](#1. 编辑 .bash_profile)
      • [2. 生效并验证](#2. 生效并验证)
    • [三、Oracle 软件静默安装(oracle 用户)](#三、Oracle 软件静默安装(oracle 用户))
    • 四、监听配置
      • [1. 修改 listener.ora(监听地址改为 0.0.0.0,允许外部访问)](#1. 修改 listener.ora(监听地址改为 0.0.0.0,允许外部访问))
      • [2. 静默创建监听](#2. 静默创建监听)
      • [3. 查看监听状态](#3. 查看监听状态)
      • [4. tnsnames.ora(可选,本地连接用)](#4. tnsnames.ora(可选,本地连接用))
    • [五、手工创建 Oracle 实例(麒麟环境 dbca 不可用)](#五、手工创建 Oracle 实例(麒麟环境 dbca 不可用))
      • [1. 创建初始化参数文件 initorcl.ora](#1. 创建初始化参数文件 initorcl.ora)
      • [2. 授权参数文件(root 用户执行)](#2. 授权参数文件(root 用户执行))
      • [3. 创建密码文件(oracle 用户)](#3. 创建密码文件(oracle 用户))
      • [4. sqlplus 启动实例到 nomount](#4. sqlplus 启动实例到 nomount)
      • [5. 执行建库语句](#5. 执行建库语句)
      • [6. 执行系统数据字典脚本(必跑,否则系统视图/包缺失)](#6. 执行系统数据字典脚本(必跑,否则系统视图/包缺失))
    • 六、数据库自启动配置(可选)
      • [1. 创建 systemd 服务](#1. 创建 systemd 服务)
      • [2. 启用服务](#2. 启用服务)
    • 七、常见问题与注意事项

银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册

适用环境 :银河麒麟 V10(ARM64 架构)+ Oracle 19c(LINUX.ARM64_1919000)

部署方式 :静默安装(runInstaller + netca),dbca 不可用,采用手工 CREATE DATABASE 方式建库


一、前置环境准备(root 用户执行)

1. 安装依赖包

bash 复制代码
dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-devel glibc-static ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libX11 libXau libxcb libXi libXtst make sysstat unixODBC unixODBC-devel libnsl

2. libnsl 软链接修复

bash 复制代码
ln -sf /lib64/libnsl.so.2 /lib64/libnsl.so.1

3. 创建用户与组

bash 复制代码
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo "Oracle@123456" | passwd --stdin oracle

4. 创建目录结构

bash 复制代码
mkdir -p /data/u01/app/oracle/product/19.0.0/db
mkdir -p /data/u01/oradata
mkdir -p /data/oracledata/ORCL/{datafile,onlinelog,tempfile}
chown -R oracle:oinstall /data/u01 /data/oracledata
chmod -R 775 /data/u01 /data/oracledata

5. devtoolset 软链接适配(解决编译工具链问题)

bash 复制代码
mkdir -p /opt/rh/devtoolset-8/root/usr/bin/
cd /opt/rh/devtoolset-8/root/usr/bin/
ln -s /usr/bin/ar ar
ln -s /usr/bin/as as

二、oracle 用户环境变量配置

1. 编辑 .bash_profile

bash 复制代码
su - oracle
vi ~/.bash_profile

写入以下内容:

bash 复制代码
# Oracle Env
export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/19.0.0/db
export ORACLE_SID=orcl
export ORA_INVENTORY=${ORACLE_BASE}/oraInventory
export ORACLE_HOSTNAME=$(hostname)

export PATH=${ORACLE_HOME}/bin:${ORACLE_HOME}/OPatch:$PATH
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/lib/stubs:$LD_LIBRARY_PATH

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

2. 生效并验证

bash 复制代码
source ~/.bash_profile
echo $ORACLE_HOME

三、Oracle 软件静默安装(oracle 用户)

bash 复制代码
su - oracle
cd $ORACLE_HOME
unzip -oq /tmp/LINUX.ARM64_1919000_db_home.zip

export CV_ASSUME_DISTID=OEL8.8
./runInstaller -ignorePrereq -waitforcompletion -silent \
    -responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
    oracle.install.option=INSTALL_DB_SWONLY \
    ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
    UNIX_GROUP_NAME=oinstall \
    INVENTORY_LOCATION=${ORA_INVENTORY} \
    SELECTED_LANGUAGES=en,en_US \
    ORACLE_HOME=${ORACLE_HOME} \
    ORACLE_BASE=${ORACLE_BASE} \
    oracle.install.db.InstallEdition=EE \
    oracle.install.db.OSDBA_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 \
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
    DECLINE_SECURITY_UPDATES=true

注意:安装完成后,切换回 root 用户执行 root.sh:

bash 复制代码
/data/u01/app/oracle/product/19.0.0/db/root.sh

四、监听配置

1. 修改 listener.ora(监听地址改为 0.0.0.0,允许外部访问)

bash 复制代码
vi $ORACLE_HOME/network/admin/listener.ora

参考配置:

ini 复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /data/u01/app/oracle/product/19.0.0/db)
    )
  )

2. 静默创建监听

bash 复制代码
netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp

3. 查看监听状态

bash 复制代码
lsnrctl status

4. tnsnames.ora(可选,本地连接用)

bash 复制代码
vi $ORACLE_HOME/network/admin/tnsnames.ora
ini 复制代码
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

五、手工创建 Oracle 实例(麒麟环境 dbca 不可用)

1. 创建初始化参数文件 initorcl.ora

bash 复制代码
vi $ORACLE_HOME/dbs/initorcl.ora

参数内容:

ini 复制代码
db_name=orcl
db_unique_name=orcl
instance_name=orcl
service_names=orcl
memory_target=2G
memory_max_target=4G
processes=300
sessions=335
control_files=(/data/oracledata/ORCL/control01.ctl, /data/oracledata/ORCL/control02.ctl)
audit_file_dest=/data/u01/app/oracle/admin/orcl/adump
diagnostic_dest=/data/u01/app/oracle
compatible=19.0.0
remote_login_passwordfile=EXCLUSIVE
undo_management=AUTO
undo_tablespace=UNDOTBS1
db_block_size=8192
open_cursors=300

2. 授权参数文件(root 用户执行)

bash 复制代码
chown -R oracle:oinstall /data/u01/app/oracle/product/19.0.0/db/dbs/initorcl.ora

3. 创建密码文件(oracle 用户)

bash 复制代码
orapwd file=$ORACLE_HOME/dbs/orapworcl password=Oracle_2026 entries=10 force=y

4. sqlplus 启动实例到 nomount

bash 复制代码
sqlplus / as sysdba
sql 复制代码
-- 使用我们创建的参数文件启动
startup nomount pfile='$ORACLE_HOME/dbs/initorcl.ora';

-- 验证实例状态(应该显示 STARTED)
select status from v$instance;

5. 执行建库语句

sql 复制代码
CREATE DATABASE orcl
USER SYS IDENTIFIED BY Oracle_2026
USER SYSTEM IDENTIFIED BY Oracle_2026
LOGFILE
GROUP 1 ('/data/oracledata/ORCL/onlinelog/redo01a.log') SIZE 200M BLOCKSIZE 512,
GROUP 2 ('/data/oracledata/ORCL/onlinelog/redo02a.log') SIZE 200M BLOCKSIZE 512,
GROUP 3 ('/data/oracledata/ORCL/onlinelog/redo03a.log') SIZE 200M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 8192
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/data/oracledata/ORCL/datafile/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SYSAUX DATAFILE '/data/oracledata/ORCL/datafile/sysaux01.dbf' SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TABLESPACE users
DATAFILE '/data/oracledata/ORCL/datafile/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/data/oracledata/ORCL/tempfile/temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE UNDOTBS1
DATAFILE '/data/oracledata/ORCL/datafile/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;

6. 执行系统数据字典脚本(必跑,否则系统视图/包缺失)

sql 复制代码
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql

执行完成后重启数据库:

sql 复制代码
shutdown immediate;
startup;
select status from v$instance;

六、数据库自启动配置(可选)

1. 创建 systemd 服务

bash 复制代码
vi /etc/systemd/system/oracle.service
ini 复制代码
[Unit]
Description=Oracle 19c Database
After=network.target

[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_BASE=/data/u01/app/oracle"
Environment="ORACLE_HOME=/data/u01/app/oracle/product/19.0.0/db"
Environment="ORACLE_SID=orcl"
ExecStart=/data/u01/app/oracle/product/19.0.0/db/bin/dbstart $ORACLE_HOME
ExecStop=/data/u01/app/oracle/product/19.0.0/db/bin/dbshut $ORACLE_HOME
Restart=no

[Install]
WantedBy=multi-user.target

2. 启用服务

bash 复制代码
systemctl daemon-reload
systemctl enable oracle
systemctl start oracle

七、常见问题与注意事项

  1. libnsl 缺失:麒麟系统通常只有 libnsl.so.2,需软链接为 .so.1 才能通过 Oracle 依赖检查。
  2. CV_ASSUME_DISTID 必须设置:麒麟系统不在 Oracle 官方支持列表,需伪装为 OEL8.8 跳过发行版校验。
  3. dbca 不可用:ARM64 麒麟环境下 dbca 图形/静默建库经常失败,手工 CREATE DATABASE 是可靠方案。
  4. 数据字典脚本必跑:手工建库后必须执行 catalog.sql / catproc.sql,否则查询数据字典会报 ORA-00942 等错误。
  5. 字符集选择:ZHS16GBK 支持中文,若需更大字符集范围可选 AL32UTF8(需在建库前决定,无法修改)。
  6. 监听 HOST 用 0.0.0.0:仅填本机 IP 会导致其他机器无法连接;注意同时放通防火墙 1521 端口。
相关推荐
飞浪纪元[FWC–FE]3 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
Ivanqhz3 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Tsuki_tl3 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
Gauss松鼠会3 小时前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
系统集成-鹰翔3 小时前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
西瓜拿铁好喝3 小时前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
代码派3 小时前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
Gauss松鼠会3 小时前
GaussDB 中 gsql 与 DBeaver(JDBC)客户端工具查询时间不一致:原因、排查与处理
运维·服务器·数据库·sql·gaussdb·经验总结
Elastic 中国社区官方博客3 小时前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina