前言
随着国产操作系统的逐步发展壮大,银河麒麟SERVER版操作系统也应用越来越多,它能够安装很多国产软件,比如达梦8数据库,但是由于内核的差异无法直接安装Oracle数据库,导致DM8数据库部分功能无法在银河麒麟操作系统上实现。
达梦8数据库中有一个外部链接的功能,叫DBLINK,该功能除了可以实时从达梦到达梦的数据库外,还可以配置Oracle到达梦的异构连接方式。
为此我研究了一下银河麒麟安装Oracle19c和达梦8,并配置了到另外一台centos7上的Oracle19c数据库。再对达梦8通过DBLINK来访问和操作Oracle19c上的数据。
一、准备工作
1、硬件规划:
服务器 | 配置 | 说明 |
Centos7虚拟机 | 2C/8G/300G | 安装Oracle19c数据库 |
Kylin10虚拟机 | 2C/8G/300G | 安装Oracle19c和达梦8数据库 |
2、软件规划:
名称 | 软件版本 |
Centos7镜像 | CentOS-7-x86_64-DVD-1511.iso |
Kylin10镜像 | Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso |
Oracle数据库 | LINUX.X64_193000_db_home.zip |
DM8数据库 | dm8_20211021_x86_kylin10_64_ent_8.1.2.70_pack5.iso |
客户端软件 | dbeaver + oracle-jdbc |
3、网络规划:
服务器 | IP |
Centos7/oracle | 192.168.197.130 |
KylinV10/DM8 | 192.168.197.129 |
4、文件路径规划:
数据库 | 主路径 |
Oracle19c | /data/app/oracle |
DM8 | /opt/dmdbms |
5、操作思路:
默认情况下银河麒麟操作系统是不支持Oracle19c的安装,会报2个错误:1、安装时会提示操作系统内核版本不符合安装要求无法安装。2、就算强制修改Oracle19c和操作系统的内核配置文件号,跳过此错误后会续因为lib文件版本不一致会导致Oracle19c安装文件编译失败。
2021年时我在银河麒麟SP1上安装过Oracle19c,采用的方法是在一台redhat7服务器上编译安装好oracle19c后,将整个文件夹压缩拷贝到银河麒麟SP1上,再重新配置NETCA和DBCA,最后即可正常安装Oracle19c数据库并进行了好几个星期的TPCC压测。
本次计划将centos7上安装好Oracle19c后,拷贝至银河麒麟SP2后进行相关的测试。
二、操作步骤
1.Centos7配置
- 安装操作系统;略过。
- 配置操作系统参数,包括:本地yum、关闭防火墙、关闭selinux、配置syctl和limits.conf等。略过。
- 新建Oracle用户和Oinstall组,并安装Oracle19c数据库,设置其环境变量。略过。数据库安装完成,如下图:
数据库启动成功,如下图:
监听启动成功,如下图:
19c引入了PDB模式,默认情况下PDB数据库的用户名是要带一个$符号,而且改变了11g以前的密码加密方式,所以最好将19c的密码加密方式改成11g的模式。本次数据库安装目录为/data/app/oracle,所以通过如下方式修改:
vi /data/app/oracle/network/admin/sqlnet.ora
增加 SQLNET.ALLOWED_LOGON_VERSION=8。
如下图:
重启数据库:
进入pdb数据库,创建用户,并赋权
$sqlplus / as sysdba
SQL> show pdbs;
SQL> alter pluggable database ORCLPDB open;
SQL> alter session set container=ORCLPDB;
SQL> create user testora identified by testora;
SQL> grant dba to testora;
通过DBeaver来连接Oracle数据库,此软件为JAVA开发,采用的是JDBC的连接方式,第一次连接时需要配置JDBC驱动,如果联网的话该软件可以自动更新JDBC驱动。如果有其他ORACLE客户端也可以使用。连接成功:
在Oracle数据库中准备好相应的测试数据,
CREATE TABLE TESTORA.TEST_A1 (
ID INT
, NAME VARCHAR2(100)
);
INSERT INTO TESTORA.TEST_A1 VALUES (1,'hanzi');
INSERT INTO TESTORA.TEST_A1 VALUES (2,'汉字');
INSERT INTO TESTORA.TEST_A1 VALUES (3,'汉zi');
COMMIT;
如下图:
压缩Oracle的整个目录:
tar -zcvf oracle19c.tar.gz /data/app/oracle
自此Centos7服务器安装配置工作完成。
2.银河麒麟配置
- 安装操作系统;略过。
- 配置操作系统参数,包括:本地yum、关闭防火墙、关闭selinux、配置syctl和limits.conf等。略过。
- 新建dmdba用户和dinstall组,并安装dm8数据库和实例,设置其环境变量。略过。
- 利用root更新Oracle需要的包。
yum install -y compat-libcap1
yum install -y gcc-c++.x86_64
yum install -y ksh
yum install -y libaio-devel.x86_64
5.创建与centos7服务器上相同的Oracle文件夹:
接着拷贝和解压缩Oracle文件
在dmdba用户下配置Oracle的环境变量:
第一次启动DBCA和sqlplus失败。我在银河麒麟SP1版本时没有出现此错误,到SP2版本的时候差异太多,需要一点一点的趟错误。
看错误提示是缺少libnsl,银河麒麟SP2中无此包,下载centos8的libnsl文件安装,提示缺少glibc,而实际上我们已经安装了glibc程序,可能SP2的glibc版本太高,我采用了强制安装。如下图:
安装好该包后,DBCA、NETCA、sqlplus和lsnrctl正常启动。
但是此处还有一个大坑:在DBCA工具中数据库无法正常安装和初始化。进Oracle的bin目录下,进行relink扫描,提示缺少 libpthread_nonshared.a 。从centos7服务器上的拷贝一个过来。
scp root@192.168.197.130:/usr/lib64/libpthread_nonshared* /usr/lib64
接着relink,显示一切正常。但是DBCA还是无法创建数据库,不折腾了,可能是glibc版本太高、缺少某个文件夹或者权限的问题。本次实验只要保障sqlplus正常即可。
在银河麒麟SP2的服务器上dmdba用户下利用sqlplus访问Centos7服务器上数据库成功:
sqlplus testora/testora@192.168.197.130:1521/ORCLPDB
6.接着要在DM8数据库服务器上安装DBLINK异构数据库插件,
利用root用户将dblink11g.tar.gz文件拷贝至DM8数据库的/usr/lib64下,并解压:
tar -zxvf dblink*.tar.gz
接着利用root运行:
cd /usr/lib64
./run.sh
7、通过DM8自带的manager工具,连接上数据库服务器,新建外部链接,测试成功:
8、访问Oracle上的表成功:
9、往Oracle数据库中插入一条测试记录,成功。
10、在Oracle端显示数据已经插入成功:
总结
以上就是今天要讲的内容,至此银河麒麟SP2上配置DM8数据库的DBLINK访问Oracle19c功能安装测试完成。另外:银河麒麟SP2上安装的sqlplus工具正常。
也带来了新的问题:银河SP1通过解压缩的方式来启动DBCA安装实例的方法在银河麒麟SP2上行不通,推测可能是银河麒麟SP2升级了glibc组件的问题导致,该组件又是操作系统的核心组件。