重庆思庄Oracle、Redhat认证学习论坛
标题:
Oracle 19c RAC使用dblink访问PG数据库
[打印本页]
作者:
郑全
时间:
2023-7-4 21:07
标题:
Oracle 19c RAC使用dblink访问PG数据库
Oracle 19c RAC使用dblink访问PG数据库
1.环境准备
Oracle 19.19 ORACLE LINUX 8.6
192.168.51.76 rac01
192.168.51.78 rac02
192.168.51.75 scanip
PG 14.8 ,ORACLE LINUX 8.6
192.168.51.90
2.安装postgresql的odbc驱动包
yum install
https://download.postgresql.org/ ... o-latest.noarch.rpm
yum download postgresql12-odbc postgresql12-libs
[root@dbserver ~]# ls -ltr postgresql14-*
-rw-r--r-- 1 root root 333440 Jul 4 18:35 postgresql14-odbc-13.02.0000-1PGDG.rhel8.x86_64.rpm
-rw-r--r-- 1 root root 285912 Jul 4 18:35 postgresql14-libs-14.8-2PGDG.rhel8.x86_64.rpm
[root@dbserver ~]#
# rpm -ivh postgresql14-odbc-13.02.0000-1PGDG.rhel8.x86_64.rpm
# rpm -ivh postgresql14-libs-14.8-2PGDG.rhel8.x86_64.rpm
[root@his01 ~]# rpm -ql postgresql14-odbc-13.02.0000-1PGDG.rhel8.x86_64
/usr/lib/.build-id
/usr/lib/.build-id/03
/usr/lib/.build-id/03/ec5015d070247074c77f8304f0cb6caffa180a
/usr/lib/.build-id/69
/usr/lib/.build-id/69/b84f5ade184436b63a24a0ec4b1031903808a7
/usr/pgsql-14/lib/psqlodbc.so
/usr/pgsql-14/lib/psqlodbca.so
/usr/pgsql-14/lib/psqlodbcw.so
/usr/share/doc/postgresql14-odbc
/usr/share/doc/postgresql14-odbc/readme.txt
/usr/share/licenses/postgresql14-odbc
/usr/share/licenses/postgresql14-odbc/license.txt
3.配置 /etc/odbc.ini
#[$DSN]定义数据源名称
[PG_LINK]
Description = PostgreSQL connection to his
Driver = /usr/pgsql-14/lib/psqlodbcw.so
Setup = /usr/pgsql-14/lib/psqlodbcw.so
#数据库名
Database = zlcost
#数据库所在的主机名或IP
Servername = 192.168.51.90
UserName = postgres
Password = postgres
#数据库端口
Port = 5432
SocketBufferSize = 4096
FetchBufferSize = 500
ReadOnly = Yes
RowVersioning = No
ShowSystemTables = No
#查询结果的字符编码
ConnSettings = set client_encoding to UTF8
4.验证配置:
[root@his01 ~]# export ODBCINI=/etc/odbc.ini
[root@his01 ~]# isql --v
unixODBC 2.3.7
[root@his01 ~]# isql PGCOST -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1;
+------------+
| ?column? |
+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL> select count(*) from "ygjc_record";
+---------------------+
| count |
+---------------------+
| 173243 |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL>
5.配置透明网关
在数据库的 $ORACLEHOME/hs/admin/下面创建initPGCOST.ora文件,这个文件名字中的PGCOST是上面自定义的名字,其中HSFDSCONNECTINFO=PG这个参数指向隐藏文件.odbc.ini中的ODBC定义数据源名称[PGLINK]。在ORACLE_HOME/hs/admin/下面创建initPGCOST.ora文件,这个文件名字中的PGCOST是上面自定义的名字
[oracle@his01 admin]$ cat $ORACLEHOME/hs/admin/initPGCOST.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = PGCOST
HS_FDS_TRACE_LEVEL = 16
HS_FDS_SHAREABLE_NAME = /usr/pgsql-14/lib/psqlodbcw.so
HS_NLS_NCHAR=UCS2
#HS_LANGUAGE=AMERICAN_AMERICA.zhs16gbk
HS_LANGUAGE=AMERICAN_AMERICA.zl32utf8
HS_KEEP_REMTE_COLUMN_SIZE=ALL
HS_FDS_DEFAULT_SCHEMA_NAME = public
#
# ODBC specific environment variables
#
set ODBCINI=/home/oracle/.odbc.ini
HS_WORKAROUNDS=0x02
#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>
[oracle@his01 admin]$
后续通过dblink连接PG的时候连接日志文件路径:$ORACLE_HOME/hs/log/,可以进行排错。
6.配置tnsnames.ora文件
vim $ORACLE_HOME/network/admin/tnsnames.ora
PGCOST =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP) (HOST=192.168.51.75) (PORT=1521)
)
(CONNECT_DATA=
(SID=PGCOST)
)
(HS=OK)
)
7.配置监听文件
vim $GRID_HOME/network/admin/listener.ora
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PGCOST)
(ORACLE_HOME=/u01/app/oracle/product/19.19.0/db_1)
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH="/usr/pgsql-14/lib:/u01/app/oracle/product/19.19.0/db_1/lib")
)
)
lsnrctl reload
lsnrctl status
lsnrctl start
8.创建DBLINK和测试
SQL> conn / as sysdba
Connected.
SQL> create public database link tocostpg connect to "postgres" identified by "postgres" using 'pgcost';
Database link created.
SQL> conn zq/zq@bhis
Connected.
SQL> select count(*) from "ygjc_record"@tocostpg b ;
COUNT(*)
----------
173329
SQL>
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2