信创ARM_鲲鹏920安装Oracle19c的过程

信创ARM_鲲鹏920安装Oracle19c的过程


概要说明

五一加班被Oracled的 Oracle23ai刷爆了朋友圈.
自己也尝试了下容器部署 Oracle23ai的操作
但是发现 free 版本最多 自定义 12GB的数据,
再多就不干了.

所以我一直想能够找到一个 ee 版本的oracle23ai
结果找来找去依旧无法找到,
但是翻到了一个 Oracle的发布说明
ARM版本的Oracle19c 其实在2023年6月份发布了.

然后想着自己一直搞信创, 能不能在鲲鹏上面安装一下.
当然担心的是, 如果真有客户CTO这么干, 还的捯饬环境
不如先自己验证一把

结果发现安装过程曲曲折折, 耗费了三四个晚上熬夜自学才搞定.

主要是有坑, 坑还很深.

概要说明之坑

还好之前总结过 银河麒麟安装Oracle 所以相当顺利一些. 

第一步是修改 /etc/os-release 等信息
安装 preinstall
创建目录等操作
第二步 进行安装
但是发现一直报错,无法解决.
百度也没有解决办法, google上面也不符合我这个场景
最终发现是因为 ar 和 as 两个二进制, Oracle使用的是绝对路径
没办法, 进行一下 ln 才绕过.
mkdir -p /opt/rh/devtoolset-8/root/usr/bin/
ln -s /bin/ar /opt/rh/devtoolset-8/root/usr/bin/ar
ln -s /bin/as /opt/rh/devtoolset-8/root/usr/bin/as

第三步:
应用千辛万苦安装上了
结果dbca建库报错. 
百度无果.google无果 .本来计划在飞腾上面安装OEL进行验证
结果同事告知 飞腾2500 上面没法安装 OEL. 干!-_-!
继续搜搜,发现云和恩墨上面有一个很隐晦的说法
需要用dbca 导出建库SQL
然后我尝试了一晚上. 发现还似乎失败. 整整一晚上.

最终解决问题.
我想到最近一直进行冷备数据库的方式.
我认为Oracle应该也可以.
所以我又下载了 oracle19c 的x86的zip包
在银河麒麟v10sp3 x86 上面部署
路径和sid完全一样
然后创建数据库. 
将 data 和 pfile 复制到 arm 上面
启动. 验证可以启动起来. 

正文

过程脚本
其实可以写一个一键部署
但是感觉意义不大. 
安装的过程, 总结的过程都是学习的过程.

第一步 preinstall

https://yum.oracle.com/repo/OracleLinux/OL8/appstream/aarch64/getPackage/oracle-database-preinstall-19c-1.0-3.el8.aarch64.rpm

cat > /etc/redhat-release <<EOF
CentOS Linux release 8.0
EOF

cat > /etc/oracle-release <<EOF
CentOS Linux release 8.0
EOF

然后
yum install ksh* libaio* libnsl*  -y
rpm -ivh /oracle-database-preinstall-19c-1.0-3.el8.aarch64.rpm --nodeps --force


安装过程


创建目录

mkdir -p /u01/app/oracle/product/19/db_1
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/

mkdir -p /home/oracle/etc
chown -R oracle:oinstall /home/oracle/etc
chmod -R 775 /home/oracle/etc

mkdir -p /home/data
chown -R oracle:oinstall /home/data
chmod -R 775 /home/data

修改环境变量

cat >/etc/profile.d/oracle.sh <<EOF
export ORACLE_SID=ORA19C    #数据库database.rsp中的SID 
export ORACLE_BASE=/u01/app/oracle                   #BASE目录
export ORACLE_HOME=/u01/app/oracle/product/19/db_1   #oracle安装包的目录
export PATH=/u01/app/oracle/product/19/db_1/bin:/u01/app/oracle/product/19/db_1/OPatch:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

set -o vi
stty erase ^h

if [ -t 0 ]; then
   stty intr ^C
fi
umask 022
EOF

cat >/home/oracle/.bashrc <<EOF
export ORACLE_SID=ORA19C    #数据库database.rsp中的SID 
export ORACLE_BASE=/u01/app/oracle                   #BASE目录
export ORACLE_HOME=/u01/app/oracle/product/19/db_1   #oracle安装包的目录
export PATH=/u01/app/oracle/product/19/db_1/bin:/u01/app/oracle/product/19/db_1/OPatch:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
EOF

安装过程

scp /LINUX.ARM64_1919000_db_home.zip /u01/app/oracle/product/19/db_1/
cd /u01/app/oracle/product/19/db_1/
unzip LINUX.ARM64_1919000_db_home.zip

scp  /u01/app/oracle/product/19/db_1/install/response/db_install.rsp  /home/oracle/etc/
scp /u01/app/oracle/product/19/db_1/assistants/netca/netca.rsp  /home/oracle/etc/
scp /u01/app/oracle/product/19/db_1/assistants/dbca/dbca.rsp /home/oracle/etc/


修改配置节

cat > /home/oracle/etc/db_install.rsp <<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY 
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_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
oracle.install.db.rootconfig.executeRootScript=
oracle.install.db.rootconfig.configMethod=
oracle.install.db.rootconfig.sudoPath=
oracle.install.db.rootconfig.sudoUserName=
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ORA19C
oracle.install.db.config.starterdb.SID=ORA19C
oracle.install.db.ConfigureAsContainerDB=
oracle.install.db.config.PDBName=
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=
oracle.install.db.config.starterdb.password.ALL=Testxxxxxxxx
oracle.install.db.config.starterdb.password.SYS=Testxxxxxxxx
oracle.install.db.config.starterdb.password.SYSTEM=Testxxxxxxxx
oracle.install.db.config.starterdb.password.DBSNMP=Testxxxxxxxx
oracle.install.db.config.starterdb.password.PDBADMIN=Testxxxxxxxx
oracle.install.db.config.starterdb.managementOption=
oracle.install.db.config.starterdb.omsHost=
oracle.install.db.config.starterdb.omsPort=
oracle.install.db.config.starterdb.emAdminUser=
oracle.install.db.config.starterdb.emAdminPassword=
oracle.install.db.config.starterdb.enableRecovery=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
EOF

chown oracle:oinstall /home/oracle/ -R
chown oracle:oinstall /u01/ -R
mkdir -p /opt/rh/devtoolset-8/root/usr/bin/
ln -s /bin/ar /opt/rh/devtoolset-8/root/usr/bin/ar
ln -s /bin/as /opt/rh/devtoolset-8/root/usr/bin/as
mkdir -p /oradata/ORA19C/audit
chown oracle:oinstall /oradata/ORA19C/audit -R
su - oracle
cd   /u01/app/oracle/product/19/db_1
rm -rf /u01/app/oraInventory/*
export CV_ASSUME_DISTID=RHEL7.6
mkdir -p /u01/temp
export TMP=/u01/temp
export TMPDIR=/u01/temp

./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq

exit  到 root用户执行如下命令
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19/db_1/root.sh


mkdir -p /u01/app/oracle/admin/orcl/adump
mkdir -p /u01/app/oracle/fast_recovery_area


创建数据库

mkdir -p /u01/app/oracle/data
cd /u01/app/oracle/data
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ora19c -sid ora19c -responseFile  /u01/app/oracle/data/dbca.log -characterSet ZHS16GBK -datafileDestination /u01/app/oracle/data  -memoryPercentage 30 -emConfiguration LOCAL 

蛋疼的事情发生了 鲲鹏上面的银河麒麟这一步操作
/u01/app/oracle/cfgtoollogs/dbca

报错为:

Exception in thread "main"
java.lang.UnsatisfiedLinkError: oracle.ops.mgmt.nativesystem.Native.getEnvironment(Ljava/lang/String;Loracle/ops/mgmt/nativesystem/NativeResult;)V
        at oracle.ops.mgmt.nativesystem.Native.getEnvironment(Native Method)
        at oracle.ops.mgmt.nativesystem.NativeSystem.getEnvironment(NativeSystem.java:399)
        at oracle.ops.mgmt.nativesystem.NativeSystem.getEnvironment(NativeSystem.java:315)
        at oracle.ops.verification.framework.util.VerificationUtil.getEnv(VerificationUtil.java:9202)
        at oracle.ops.verification.framework.util.VerificationUtil.isCVUTestEnv(VerificationUtil.java:13529)

这个就是一个深坑, 无法安装. 

dbca问题绕过

使用 x86 的机器完全一样的脚本建库. 
我这边建库之后的文件主要在
数据文件:
/u01/app/oracle/data
配置文件
/u01/app/oracle/product/19/db_1/dbs/initORA19C.ora

将这两个文件放到 鲲鹏ARM上面对应的目录上面. 
然后执行启动
sqlplus / as sysdba
startup pfile=/u01/app/oracle/product/19/db_1/dbs/initORA19C.ora

然后 使用 
create spfile from pfile 
搞定. 

一些资料

配置文件
/u01/app/oracle/product/19/db_1/dbs/initORA19C.ora
日志文件
/u01/app/oracle/diag/rdbms/ora19c/ORA19C/trace/alert_ORA19C.log

配置文件内容
cat > /u01/app/oracle/product/19/db_1/dbs/initORA19C.ora <<EOF
db_name='ora19c'
memory_target=8G
processes = 1500
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (/u01/app/oracle/data/ORA19C/control01.ctl, /u01/app/oracle/data/ORA19C/control02.ctl)
compatible ='19.0.0'
EOF

启动服务
sqlplus / as sysdba
startup
create spfile from pfile ; 

查看版本, 查看字符集
select * from v$version;
select userenv('language') from dual;

/u01/app/oracle/data/ORA19C/control01.ctl
/u01/app/oracle/data/ORA19C/control02.ctl
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章