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

在鲲鹏服务器上安装运行Oracle 19c

1766
在鲲鹏服务器上安装运行Oracle 19c


准备工作





CentOS 8 (ARM64)并不是Oracle 19c ARM版认证的OS,但是这是在云上最容易获取的OS,经过测试发现,CentOS 8搭配Oracle Linux 8的一些软件包,是可以成功安装运行Oracle数据库的。


我们的实验是在华为云上进行的,创建一个ECS的过程就不赘述了,测试用虚拟机,选择2 vCPU,16GiB内存。OS镜像选择CentOS 8。



  • 确认CPU类型


根据公开的资料,Vendor ID是0x48,代表CPU是鲲鹏920。


  • 增加swap空间


因为Oracle 软件relink时,需要有swap空间,云服务器缺省是没有swap分区或swap文件的,需要手工添加。


# dd if=/dev/zero of=/swapfile bs=1M count=8192

# mkswap swapfile

# swapon swapfile


如果想重启以后自动挂载swap文件,需要在/etc/fstab里面增加一行:

/swapfile swap swap defaults 0 0


  • 增加Oracle Linux 8 yum源,安装Oracle DB需要的软件包


#cat ol.repo

[ol8_BaseOS]

name=ol8 latest BaseOS

baseurl=http://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/aarch64

gpgcheck=0

enabled=1


[ol8_AppStream]

name=ol8 latest AppStream

baseurl=http://yum.oracle.com/repo/OracleLinux/OL8/appstream/aarch64

gpgcheck=0

enabled=1


# yum install oracle-database-preinstall-19c.aarch64


这个rpm包会自动安装Oracle需要的软件包,同时会对ulimit,内核参数等进行配置,还会创建Oracle用户。你当然可以按照安装文档,一步一步手工配置,使用这个包,是比较简单的方式。


  • 设置编译工具


Oracle软件relink时,会到指定位置找ar和as工具,在CentOS 8上,虽然有这两个工具,但是位置不对,在Orace软件引用的位置创建符号链接:


# 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用户环境变量


在oracle用户的.bash_profile中添加:


ORACLE_SID=htdb1

export ORACLE_SID


ORACLE_UNQNAME=htdb

export ORACLE_UNQNAME


ORACLE_BASE=/u01/app/oracle

export ORACLE_BASE


ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1

export ORACLE_HOME


umask 022


PATH=$ORACLE_HOME/bin:$PATH

export PATH



安装Oracle软件





上传介质,并在$ORACLE_HOME解压缩:


# su – oracle

$ cd $ORACLE_HOME

$ unzip LINUX.ARM64_1919000_db_home.zip

$ ./runInstaller


我使用的是xshell,会直接将DISPLAY forward到PC端,如果用别的工具,需要设置DISPLAY环境变量。


我们使用图形界面安装,选择“set up software only”。


然后所有界面使用缺省值,最终检查时,应该只提示swap区不够大,可以忽略。


Relink Oracle软件后,根据提示运行root相关脚本,根据提示完成安装。


创建数据库





首先配置监听,使用Oracle用户:


$ netca


图形界面配置监听,所有页面都适用缺省值。配置完成启动监听:


$ lsnrctl start


因为dbca在鲲鹏平台上运行会hang住,日志报错:

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)

       at oracle.ops.verification.framework.util.Assert.assertWorkDir(Assert.java:839)

       at oracle.cluster.verification.ClusterVerification.<init>(ClusterVerification.java:508)

       at oracle.cluster.verification.ClusterVerification.getInstance(ClusterVerification.java:639)

       at oracle.assistants.common.base.driver.AssistantConfigDriver.initializeCVU(AssistantConfigDriver.java:327)

       at oracle.assistants.common.base.driver.AssistantConfigDriver.load(AssistantConfigDriver.java:195)

       at oracle.assistants.dbca.driver.DBConfigDriver.load(DBConfigDriver.java:183)

       at oracle.assistants.common.base.driver.AssistantApplication.run(AssistantApplication.java:188)

       at oracle.install.commons.util.Application.startup(Application.java:1131)

       at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181)

       at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198)

       at oracle.assistants.common.base.driver.AssistantApplication.startup(AssistantApplication.java:336)

       at oracle.assistants.dbca.driver.DBConfigurator.startup(DBConfigurator.java:378)

       at oracle.assistants.dbca.driver.DBConfigurator.main(DBConfigurator.java:513)

目前还没找到错误原因,所以我们只能手动创建数据库,手动创建数据库,最简单的方式就是在其他机器(x86的服务器或虚拟机),安装19c软件,使用dbca创建数据库,最后页面不选创建,而是将创建的过程存成脚本,然后将保存的脚本上传到ARM机器上,用脚本创建数据库。为了方便,最好两边的$ORACLE_BASE, $ORACLE_HOME设置一致。


过程就不赘述了。主要就是生成password文件,启动实例,创建数据库,运行catlog.sql, catproc.sql,这样数据库就创建成功了,如果还需要别的选件,需要创建相关的字典对象。我没有测试所有的选件,只测试了JVM,创建是没有问题的。


验证安装




  • 查看基本信息



  • CALIBRATE_IO 测试


初始化参数filesystem_options=‘SETALL’ 时,测试结果:

初始化参数filesystem_options=‘none’ 时,测试结果:

说句题外话,以前老有人问我,为啥超融合下Oracle测试的IO数据有时比物理机还高?其实就是都用缺省值测,filesystem_options=’none’ ,在虚拟化环境下,相当于全在内存中跑,iops和吞吐没法不高。


  • Swingbench测试

Swingbench测试碰到一个问题,dba需要将dbms_lock的执行权限授予soe用户。


SQL> grant all on dbms_lock to soe;


否则SOE.ORDERENTRY包会编译失败。


其他没有什么问题,用20并发,测了一晚上,数据库一直稳定运行。


- END -


文章转载自Oracle一体机用户组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论