【磐维数据库】Oracle(透明网关)访问磐维数据库(PanWeiDB)
2024-10-23 14:34 狂澜与玉昆0950 阅读(412) 评论(0) 编辑 收藏 举报磐维数据库(PanWeiDB)是由中国移动基于中国本土开源数据库openGauss打造的自研数据库产品,主要面向ICT基础设施。它具有高性能、高可靠性、高安全性和高兼容性的特点,能够支持集中式、分布式、云原生、一体机等多种应用场景。目前,磐维数据库已在中国移动的多个省(区、市)公司及专业公司部署应用。未来,磐维数据库计划在云原生、Serverless、智能运维、生态兼容等方面持续做强深度自主研发,进一步打造面向全行业的数据管理解决方案。随着磐维数据库不断深入数据库国产化替换的深水区,越来越多的核心业务系统都在进行代码改造,准备上线磐维数据库。因历史原因,程序开发人员很热衷于使用database link从Oracle实例A访问其他Oracle实例(B、C、D...),从而完成数据的操作,但随着迁移到磐维数据库,异构数据库之间的数据交互就成了不容忽视的问题。
本文介绍了江西移动公司,是如何从Oracle数据库使用透明网关访问磐维数据库数据的。
无特别说明,都以oracle用户执行
测试环境信息
1 2 | Oracle 19C -- 192.168.11.151 PanWeiDB 3.0.0 -- 192.168.0.120 |
1、上传odbc驱动包到oracle服务器并解压
1 2 3 4 | cd /home/oracle mkdir pwodbc cd pwodbc tar xf PanWeiDB-V2.0-ODBC-2.0.3_B01.tar.gz |
2、配置odbc实例驱动
1 2 3 4 5 | cat<<+>/home/oracle/pwodbc/unixODBC-2.3.9/etc/odbcinst.ini [PWMPP] Driver64=/home/oracle/pwodbc/odbc/lib/psqlodbcw.so setup=/home/oracle/pwodbc/odbc/lib/psqlodbcw.so + |
3、配置odbc客户端连接磐维数据的信息
1 2 3 4 5 6 7 8 9 10 11 | cat <<+>/home/oracle/pwodbc/unixODBC-2.3.9/etc/odbc.ini [pwdb] Description=Test Driver=PWMPP Servername=192.168.0.120 Database =testdb Username=tpcc Password =tpcc@123 Port=17700 Sslmode=allow + |
4、配置Oracle和grid用户环境变量,以使用指定的odbc驱动
1 2 3 4 5 6 | cat <<+>>~/.bash_profile export LD_LIBRARY_PATH=/home/oracle/pwodbc/lib:/home/oracle/pwodbc/odbc/lib:/home/oracle/pwodbc/unixODBC-2.3.9/lib:$LD_LIBRARY_PATH export ODBCSYSINI=/home/oracle/pwodbc/unixODBC-2.3.9/etc export ODBCINI=/home/oracle/pwodbc/unixODBC-2.3.9/etc/odbc.ini + source ~/.bash_profile |
5、为驱动路径添加合适的权限,保证grid和oracle都有权限访问
1 | chmod 755 -R /home/oracle/pwodbc |
6、验证odbc驱动能正常访问PanWeiDB库,Oracle和grid用户都验证一下
1 2 3 | odbcinst -j odbcinst -q -d isql -v pwdb |
结果类似如下:
1 2 3 4 5 6 7 8 9 10 | [oracle@ora19c1 ~]$ isql -v pwdb + ---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | + ---------------------------------------+ SQL> |
7、Oracle 配置透明网关服务,这里以PanWeiDB为sid示例
配置oracle用户hs, 配置init<sid>.ora在 $ORACLE_HOME/hs/admin/init<sid>.ora
1 2 3 4 5 6 7 8 9 | cat <<+>$ORACLE_HOME/hs/admin/initpwdb.ora HS_FDS_CONNECT_INFO = pwdb HS_FDS_TRACE_LEVEL = 255 HS_FDS_SHAREABLE_NAME = /home/oracle/pwodbc/unixODBC-2.3.9/lib/libodbc.so HS_NLS_NCHAR = UCS2 HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8 set LD_LIBRARY_PATH=/home/oracle/pwodbc/lib:/home/oracle/pwodbc/odbc/lib:/home/oracle/pwodbc/unixODBC-2.3.9/lib set ODBCSYSINI = /home/oracle/pwodbc/unixODBC-2.3.9/etc + |
8、增加侦听
1 2 3 4 5 6 7 8 9 10 | grid: $ORACLE_HOME/network/admin/listener.ora 增加 SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=pwdb) (ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1) (PROGRAM=dg4odbc) (ENVS= "LD_LIBRARY_PATH=/home/oracle/pwodbc/lib:/home/oracle/pwodbc/odbc/lib:/home/oracle/pwodbc/unixODBC-2.3.9/lib" ) ) ) |
重新加载侦听
1 2 | lsnrctl reload lsnrctl status |
9、配置tns
oracle: $ORACLE_HOME/network/admin/tnsnames.ora 增加
1 2 3 4 5 6 7 | pwdb = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.151)(PORT=1521)) (CONNECT_DATA=(SID=pwdb)) (HS=OK) ) tnsping pwdb |
10、创建dblink验证
1 2 | create database link pg_link connect to "tpcc" identified by "tpcc@123" using 'pwdb' ; select * from "t1" @pg_link ; |
结果类似如下
1 2 3 4 5 | SQL> select * from "t1" @pg_link ; id ---------- 1 SQL> |
注意:
访问PanWeiDB的数据库表是需要在表名字上加上双引号(因为在oracle默认会转换为大写,而PanWeiDB默认小写,会造成访问不到表)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架