暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Install Oracle 19C on arm(Neoverse N1) and configure Read Only Oracle Homes

原创 ByteHouse 2025-01-21
184

至少我测试的目前是有问题的在 ARM 上运行 Oracle 19C。

1.基本配置

数据库软件:
Oracle database 19.19
操作系统:
Oracle Linux 8.6
服务器硬件:
飞腾 S2500

2.安装 oracle Linux 9.2

2.1. 关闭防火墙、selinux

关闭防火墙

[root@seven ~]# systemctl stop firewalld
[root@seven ~]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@seven ~]#

关闭selinux

[root@seven ~]# getenforce 
Enforcing
[root@seven ~]# setenforce 0
[root@seven ~]# getenforce 
Permissive
[root@seven ~]#
[root@seven ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.2. 修改主机名

nmcl g hostname seven

1.3. 配置/etc/hosts文件

cat >> /etc/hosts <<EOF

193.169.100.114 seven
EOF

3.安装 oracle

3.2.查看Oracle用户和用户组

建用户组:

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmadmin
groupadd -g 54328 asmdba
groupadd -g 54329 asmoper

添加grid用户

useradd -u 54322 -g oinstall --groups dba,asmadmin,asmdba,asmoper grid

修改 Oracle 用户组:

useradd  -G dba,oper,asmdba,asmoper,oinstall,backupdba,dgdba,kmdba oracle

查看Oracle用户

[root@seven ~]# id oracle
uid=54323(oracle) gid=54330(oracle) groups=54330(oracle),54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54328(asmdba),54329(asmoper)
[root@seven ~]# 

3.2.编辑"/etc/sysctl.conf"

cat >> /etc/sysctl.conf <<EOF
# oracle-database-server-19C-preinstall setting for fs.file-max is 6815744
fs.file-max = 6815744

# oracle-database-server-19C-preinstall setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128

# oracle-database-server-19C-preinstall setting for kernel.shmmni is 4096
kernel.shmmni = 4096

# oracle-database-server-19C-preinstall setting for kernel.shmall is 1073741824 on x86_64
kernel.shmall = 4294967296

# oracle-database-server-19C-preinstall setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104

# oracle-database-server-19C-preinstall setting for kernel.panic_on_oops is 1 per Orabug 19212317
kernel.panic_on_oops = 1

# oracle-database-server-19C-preinstall setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144

# oracle-database-server-19C-preinstall setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304

# oracle-database-server-19C-preinstall setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144

# oracle-database-server-19C-preinstall setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576

# oracle-database-server-19C-preinstall setting for net.ipv4.conf.all.rp_filter is 2
net.ipv4.conf.all.rp_filter = 2

# oracle-database-server-19C-preinstall setting for net.ipv4.conf.default.rp_filter is 2
net.ipv4.conf.default.rp_filter = 2

# oracle-database-server-19C-preinstall setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576

# oracle-database-server-19C-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500

EOF

3.3.配置内核参数

cat >> /etc/security/limits.d/oracle-database-server-19C-preinstall.conf <<EOF

# oracle-database-server-19C-preinstall setting for nofile soft limit is 1024
oracle soft nofile 1024

# oracle-database-server-19C-preinstall setting for nofile hard limit is 65536
oracle hard nofile 65536

# oracle-database-server-19C-preinstall setting for nproc soft limit is 16384
# refer orabug15971421 for more info.
oracle soft nproc 16384

# oracle-database-server-19C-preinstall setting for nproc hard limit is 16384
oracle hard nproc 16384

# oracle-database-server-19C-preinstall setting for stack soft limit is 10240KB
oracle soft stack 10240

# oracle-database-server-19C-preinstall setting for stack hard limit is 32768KB
oracle hard stack 32768

# oracle-database-server-19C-preinstall setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
oracle hard memlock 134217728

# oracle-database-server-19C-preinstall setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
oracle soft memlock 134217728

# grid-home-preinstall-19C setting for nofile soft limit is 1024
grid soft nofile 1024

# grid-home-preinstall-19C setting for nofile hard limit is 65536
grid hard nofile 65536

# grid-home-preinstall-19C setting for nproc soft limit is 16384 
# refer orabug15971421 for more info.
grid soft nproc 16384

# grid-home-preinstall-19C setting for nproc hard limit is 16384
grid hard nproc 16384

# grid-home-preinstall-19C setting for stack soft limit is 10240KB
grid soft stack 10240

# grid-home-preinstall-19C setting for stack hard limit is 32768KB
grid hard stack 32768

# grid-home-preinstall-19C setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
grid hard memlock 134217728

# grid-home-preinstall-19C setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
grid soft memlock 134217728

EOF

3.4.编辑 /etc/profile

cat >> /etc/profile <<EOF
# Setting the appropriate ulimits for oracle and grid user
if [ $USER = "oracle" ]; then
     if [ $SHELL = "/bin/ksh" ]; then
        ulimit -u 16384
        ulimit -n 65536
     else
        ulimit -u 16384 -n 65536
     fi
fi

if [ $USER = "grid" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
         ulimit -u 16384
         ulimit -n 65536
      else
         ulimit -u 16384 -n 65536
      fi
fi

EOF

3.5.创建用户文件夹

mkdir -pv /u01/app/grid/
mkdir -pv /u01/app/19.0.0/grid
mkdir -p /u01/app/oraInventory
mkdir -pv /u01/app/oracle/product/19.0.0/dbhome_1/

chown -R oracle:oinstall /u01/app/oracle/
chown -R grid:oinstall /u01/app/19.0.0/grid
chown -R grid:oinstall /u01/app/grid/
chown grid:oinstall /u01/app/oraInventory/
chmod -R 755 /u01/app/oraInventory/

3.6.编辑oracle用户编辑变量 .bash_profile

cat >> /home/oracle/.bash_profile <<EOF
ORACLE_SID=bigdata;export ORACLE_SID
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1;export ORACLE_HOME
ORACLE_TERM=xterm;export ORACLE_TERM

PATH=/usr/sbin:$PATH;export PATH
PATH=$ORACLE_HOME/bin:$PATH;export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;export CLASSPATH
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
ORA_NLS11=$ORACLE_HOME/nls/data;export ORACLE_NLS11
THREADS_FLAG=native;export THREADS_FLAG
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
EOF

3.7.插入式认证模块配置:

使用 root 用户修改以下文件/etc/pam.d/login,增加如下内容:

cat >> /etc/pam.d/login <<EOF
session    required     pam_limits.so
EOF

Note:limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。

安装数据库软件

http://dbaselife.com/project-1/doc-2068/

















4.如何启用只读Oracle Home目录?

**在启用只读 Oracle Home 目录之前,Oracle Home不应创建任何数据库或 Listener **

文件路径

目录 Read/Write Oracle Home 文件路径 只读 Oracle Home 文件路径
ORACLE_HOME /u01/app/oracle/product/19.0.0/dbhome_1 /u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE /u01/app/oracle /u01/app/oracle
ORACLE_BASE_HOME ORACLE_HOME(或者)
/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE/homes/HOME_NAME(或者)
/u01/app/oracle/homes/OraDB18Home1
ORACLE_BASE_CONFIG ORACLE_HOME (或者)
/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE (或者)
/u01/app/oracle

使用 roohctl

[oracle@seven ~]$ roohctl -help
Usage:  roohctl [<flag>] [<command> <option>]
Following are the possible flags: 
	-help 

Following are the possible commands: 
	-enable Enable Read-only Oracle Home
		[-nodeList List of nodes in a cluster environment]


[oracle@seven ~]$

运行roohctl脚本以启用只读 Oracle HOME

[oracle@seven ~]$ roohctl -enable
Enabling Read-Only Oracle home.
Update orabasetab file to enable Read-Only Oracle home.
Orabasetab file has been updated successfully.
Create bootstrap directories for Read-Only Oracle home.
Bootstrap directories have been created successfully.
Bootstrap files have been processed successfully.
Read-Only Oracle home has been enabled successfully.
Check the log file /u01/app/oracle/cfgtoollogs/roohctl/roohctl-230703AM104357.log for more details.
[oracle@seven ~]$ 

查看 Oracle Base Homes

[oracle@seven ~]$ orabasehome 
/u01/app/oracle/homes/OraDB19Home1
[oracle@seven ~]$ 

查看 Oracle Base Config

[oracle@seven ~]$ orabaseconfig 
/u01/app/oracle
[oracle@seven ~]$ 

如果orabasehome命令的输出与 $ORACLE_HOME 相同,则Oracle Home目录处于读/写模式。
如果输出显示路径 $ORACLE_BASE/homes/OraDB19Home1,则表示您的Oracle Home目录处于只读模式。

orabasetab
orabasetab ⽂件位于 $ORACLE_HOME/install/orabasetab 中。要确定 ORACLE_HOME 是否为只读,请检查 orabasetab ⽂件是否存在。 orabasetab ⽂件还定义了 Oracle 主⽬录的ORACLE_BASE 和 HOME_NAME。 HOME_NAME 是 ORACLE_HOME 的内部名称。

[oracle@seven ~]$ cd /u01/app/oracle/product/19.0.0/dbhome_1/install/
[oracle@seven install]$ cat orabasetab 
#orabasetab file is used to track Oracle Home associated with Oracle Base
/u01/app/oracle/product/19.0.0/dbhome_1:/u01/app/oracle:OraDB19Home1:Y:
[oracle@seven install]$ 

查看文件目录,使用 只读Oracle Home 会创建 /u01/app/oracle/dbs, /u01/app/oracle/homes 两个目录

[oracle@seven dbs]$ ls -l /u01/app/oracle/
total 0
drwxr-x---.  4 oracle oracle    33 Jul  3 10:53 cfgtoollogs
drwxrwxr-x.  2 oracle oracle     6 Jul  3 10:11 checkpoints
drwxr-x---.  2 oracle oracle     6 Jul  3 10:43 dbs
drwxrwxr-x. 23 oracle oracle   280 Jul  3 10:11 diag
drwxr-x---.  3 oracle oracle    26 Jul  3 10:43 homes
drwxr-xr-x.  3 oracle oinstall  20 Jul  3 09:52 product
[oracle@seven dbs]$ ls -l  /u01/app/oracle/product/19.0.0/dbhome_1/dbs/
total 4
-rw-r--r--. 1 oracle oinstall 3079 May 14  2015 init.ora
[oracle@seven dbs]$ 
[oracle@seven oracle]$ tree dbs
dbs

0 directories, 0 files
[oracle@seven oracle]$ tree homes
homes
└── OraDB19Home1
    ├── assistants
    │   └── dbca
    │       └── templates
    ├── dbs
    ├── install
    ├── network
    │   ├── admin
    │   ├── log
    │   └── trace
    └── rdbms
        ├── audit
        └── log

13 directories, 0 files
[oracle@seven oracle]$ tree homes/

netca 创建监听

[oracle@seven oracle]$ tree dbs/
dbs/
└── orapwbigseven

0 directories, 1 file
[oracle@seven oracle]$ tree homes/
homes/
└── OraDB19Home1
    ├── assistants
    │   └── dbca
    │       └── templates
    ├── dbs
    │   └── core_50287
    ├── install
    ├── network
    │   ├── admin
    │   │   ├── listener23070311AM0937.bak
    │   │   ├── listener.ora
    │   │   ├── sqlnet23070311AM0937.bak
    │   │   └── sqlnet.ora
    │   ├── log
    │   └── trace
    └── rdbms
        ├── audit
        └── log
            ├── bigseven_ora_49257.trc
            ├── bigseven_ora_49347.trc
            ├── bigseven_ora_50256.trc
            ├── bigseven_ora_50287.trc
            └── bigseven_ora_50306.trc

14 directories, 9 files
[oracle@seven oracle]$ 





执行创建过程中报错:

Parsing command line arguments:
    Parameter "silent" = true
    Parameter "local" = true
    Parameter "inscomp" = server
    Parameter "insprtcl" = TCP
    Parameter "orahome" = /u01/app/oracle/product/19.0.0/dbhome_1
    Parameter "instype" = custom
    Parameter "listener" = listener
    Parameter "lisport" = 1521
    Parameter "cfg" = local
    Parameter "responsefile" = /u01/app/oracle/product/19.0.0/dbhome_1/network/install/netca_typ.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Listener configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener start failed.
Profile configuration complete.
Check the trace file for details: /u01/app/oracle/cfgtoollogs/netca/trace_OraDB19Home1-23070311AM2808.log
Oracle Net Services configuration failed.  The exit code is 1

监听服务无法启动

[oracle@seven ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-JUL-2023 11:49:33

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=seven)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 2: No such file or directory
[oracle@seven ~]$ lsnrctl strt

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-JUL-2023 11:49:35

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

NL-00853: undefined command "strt".  Try "help"
[oracle@seven ~]$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-JUL-2023 11:49:37

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

Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...

TNS-12547: TNS:lost contact
 TNS-12560: TNS:protocol adapter error
  TNS-00517: Lost contact
   Linux Error: 32: Broken pipe
[oracle@seven ~]$ 

监听服务无法启动,数据库创建失败,经过与Oracle支持沟通与分析去确认为arm cpu构架问题。
在Oracle官方文档中对于Oracle database 19.19 on arm的硬件需求又这样一个描述:
Oracle Database 19c Linux for ARM (aarch64) requires a CPU capable of Neoverse N1. Oracle recommends using a server with an Ampere Altra or Ampere Altra Max CPU.

Server Hardware Checklist for Oracle Database Installation:
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/server-hardware-checklist-for-oracle-database-installation.html#GUID-D311E770-9444-45D0-A122-6491D1B66B8A

Neoverse N1:
https://www.arm.com/zh-TW/products/silicon-ip-cpu/neoverse/neoverse-n1

ampere 公司的cpu产品:
https://amperecomputing.com/zh-CN/briefs/ampere-altra-family-product-brief

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论