文章目录
- [银河麒麟 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
七、常见问题与注意事项
- libnsl 缺失:麒麟系统通常只有 libnsl.so.2,需软链接为 .so.1 才能通过 Oracle 依赖检查。
- CV_ASSUME_DISTID 必须设置:麒麟系统不在 Oracle 官方支持列表,需伪装为 OEL8.8 跳过发行版校验。
- dbca 不可用:ARM64 麒麟环境下 dbca 图形/静默建库经常失败,手工 CREATE DATABASE 是可靠方案。
- 数据字典脚本必跑:手工建库后必须执行 catalog.sql / catproc.sql,否则查询数据字典会报 ORA-00942 等错误。
- 字符集选择:ZHS16GBK 支持中文,若需更大字符集范围可选 AL32UTF8(需在建库前决定,无法修改)。
- 监听 HOST 用 0.0.0.0:仅填本机 IP 会导致其他机器无法连接;注意同时放通防火墙 1521 端口。