使用Oracle_FDW實現(xiàn)Postgres連接Oracle
Oracle_fdw的編譯依賴系統(tǒng)中需要有pg_config和Oracle的環(huán)境,需要安裝oracle客戶端。
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip unzip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip |
export ORACLE_HOME=/opt/oracle/instantclient export OCI_LIB_DIR=$ORACLE_HOME export OCI_INC_DIR=$ORACLE_HOME/sdk/include export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH |
unzip oracle_fdw-2.0.0.zip cd oracle_fdw-2.0.0 Make Make install --檢查確認沒有依賴未解決 ldd oracle_fdw.so |
postgres=# create extension oracle_fdw ; postgres=# des List of foreign servers Name | Owner | Foreign-data wrapper -------+----------+---------------------- oradb | postgres | oracle_fdw |
postgres=# CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver //192.168.217.120:1521/posdb); |
postgres=# CREATE USER MAPPING FOR postgres SERVER oradb OPTIONS (user wen, password wen123); |
postgres=# CREATE FOREIGN TABLE "vol_audit_nbr_sum_qs" ( id int, uuid character(32), name character(32), Minfo text) SERVER oradb OPTIONS (table vol_audit_nbr_sum_qs); |
測試結果:
1、使用postgres連接oracle查詢2G的表,4520萬行數(shù)據(jù),全表掃描耗時9分鐘23秒。
select * from vol_audit_nbr_sum_qs; Time: 563775.627 ms (09:23.776) |
2、建表時加入prefetch10240 參數(shù)后耗時5分22秒。
select * from vol_audit_nbr_sum_qs; Time: 322470.280 ms (05:22.470) |
使用Postgres_FDW實現(xiàn)Postgresql連接Postgresql
Postgres_FDW為postgresql自帶拓展可以直接創(chuàng)建。支持遠程select和DML,和本地表操作一樣。
postgres=# create extension postgres_fdw; |
postgres=# create server f_postgres foreign data wrapper postgres_fdw options (host 192.168.86.95,port 5433,dbname db_demo); |
postgres=# create user mapping if not exists for postgres server f_postgres options (user wen,password wen123); |
postgres=# CREATE FOREIGN TABLE "vol_audit_nbr_sum_qs" ( id int, uuid character(32), name character(32), Minfo text) SERVER f_postgres OPTIONS (table_name vol_audit_nbr_sum_qs); |
測試結果:
1、使用postgres連接postgres查詢2G的表,4520萬行數(shù)據(jù),全表掃描耗時12分鐘59秒。
select * from vol_audit_nbr_sum_qs; Time: 779932.685 ms (12:59.933) |
2、建表時加入fetch_size10240 參數(shù)后耗時3分58秒。
select * from vol_audit_nbr_sum_qs; Time: 238503.016 ms (03:58.503) |
--需要安裝unixODBC 和 postgresql_odbc yum install -y unixODBC.x86_64 yum install -y postgresql-odbc.x86_64 |
2、配置/etc/odbc.ini
[postgresql] Description = PostgresSQLODBC Driver = PostgreSQL Database = testdb Servername = 192.168.12.123 UserName = test Password = test123 Port = 5432 ReadOnly = 0 ConnSettings = set client_encoding to UTF8 |
連接成功: [root@localoracle ~]# isql postgresql +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ |
在/home/oracle下創(chuàng)建隱藏文件.odbc.ini
[PG_LINK] Description = PostgreSQL connection to SallyDB Driver = /usr/lib64/psqlodbc.so Setup = /usr/lib64/libodbcpsqlS.so Database = testdb Servername = 192.168.12.123 UserName = test Password = test123 Port = 5432 Protocol = 12.2 ReadOnly = No RowVersioning = No ShowSystemTables = No ConnSettings = set client_encoding to UTF8 |
4、配置透明網(wǎng)關
在$ORACLE_HOME/network/admin/下面創(chuàng)建initPG_LINK.ora文件,這個文件名字中的PG_LINK是上面自定義的名字
HS_FDS_CONNECT_INFO = PG_LINK HS_FDS_TRACE_LEVEL = 255 HS_FDS_SHAREABLE_NAME=/usr/lib64/psqlodbc.so HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK set ODBCINI=/home/oracle/.odbc.ini |
PG_LINK = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.217.120)(PORT=1521)) (CONNECT_DATA=(SID=PG_LINK)) (HS=OK) ) |
SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=PG_LINK) (ORACLE_HOME=/u01/app/oracle/product/12.2/db_1) (ENV="LD_LIBRARY_PATH=/usr/lib64/:/u01/app/oracle/product/12.2/db_1/bin/") (PROGRAM=dg4odbc) ) ) |
7、創(chuàng)建DBLINK
create database link to_pglink connect to "test" identified by "test123" using PG_LINK; |
訪問postgre的數(shù)據(jù)庫表是需要表名字小寫并加上雙引號
select count(*) from "vol_audit_nbr_sum_qs"@to_pglink; |
測試結果:
使用oracle連接postgres查詢2G的表,4520萬行數(shù)據(jù),全表掃描耗時10分鐘37秒。
SQL> set timing on SQL> set autot trace SQL> select "billing_cycle_id" from "vol_audit_nbr_sum_qs"@to_pglink; 45201535 rows selected. Elapsed: 00:10:37.14 |
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130182.html
摘要:而在分布式系統(tǒng)中,分表分庫也是常用的一種解決此類瓶頸的手段。支持數(shù)據(jù)的多片自動路由與聚合,支持等常用的聚合函數(shù)支持跨庫分頁。支持通過全局表,關系的分片策略,實現(xiàn)了高效的多表查詢。支持多租戶方案。 前言 對于業(yè)務量越來越大的時候,單表數(shù)據(jù)超過幾千萬,甚至上億時,一張表里面查詢真的會很費時。而在分布式系統(tǒng)中,分表分庫也是常用的一種解決此類瓶頸的手段。今天就選用springboot+myca...
摘要:個人博客地址方案項目背景在現(xiàn)在題庫架構下,針對新購買的多道數(shù)據(jù)進行整合,不影響現(xiàn)有功能。數(shù)據(jù)切分盡量通過數(shù)據(jù)冗余或表分組來降低跨庫的可能。 個人博客地址 https://www.texixi.com/2019/0... 方案 項目背景 在現(xiàn)在題庫架構下,針對新購買的1300W多道數(shù)據(jù)進行整合,不影響現(xiàn)有功能。由于數(shù)據(jù)量偏多,需要進行數(shù)據(jù)的切分 目標場景 兼容舊的功能 對1300多W...
摘要:摘要第九屆中國數(shù)據(jù)庫技術大會,阿里云數(shù)據(jù)庫產(chǎn)品專家蕭少聰帶來以阿里云如何打破遷移上云的壁壘為題的演講。于是,阿里云給出了上面的解決方案。 摘要: 2018第九屆中國數(shù)據(jù)庫技術大會,阿里云數(shù)據(jù)庫產(chǎn)品專家蕭少聰帶來以阿里云如何打破Oracle遷移上云的壁壘為題的演講。Oracle是指數(shù)據(jù)庫管理系統(tǒng),面對Oracle遷移上云的壁壘,阿里云如何能夠打破它呢?本文提出了Oracle 到云數(shù)據(jù)庫P...
摘要:移動易后臺實現(xiàn)外部數(shù)據(jù)庫連接要實現(xiàn)外置數(shù)據(jù)庫,即上層開發(fā)人員不關心下層數(shù)據(jù)庫的實現(xiàn),在項目中需要針對不同數(shù)據(jù)庫修改文件以及在項目中添加依賴包。本文主要介紹移動易后臺如何實現(xiàn)同不同數(shù)據(jù)源的連接,數(shù)據(jù)源包括,。 1、移動易后臺實現(xiàn)外部數(shù)據(jù)庫連接 要實現(xiàn)外置數(shù)據(jù)庫,即上層開發(fā)人員不關心下層數(shù)據(jù)庫的實現(xiàn),在Spring boot項目 中需要針對不同數(shù)據(jù)庫修改application.proper...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20