PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL में Oracle डेटाबेस तक पहुँचने के तरीके

आज, संगठन विभिन्न डेटाबेस सिस्टम में सूचना (डेटा) संग्रहीत करते हैं। प्रत्येक डेटाबेस सिस्टम में अनुप्रयोगों का एक सेट होता है जो इसके विरुद्ध चलता है। यह डेटा एक फाइल सिस्टम पर सिर्फ बिट्स और बाइट्स है - और केवल एक डेटाबेस डेटा के बिट्स और बाइट्स को व्यावसायिक जानकारी में बदल सकता है। ऐसी जानकारी (डेटा) का एक डेटाबेस सिस्टम में एकीकरण और समेकन अक्सर मुश्किल होता है। क्योंकि एक डेटाबेस के विरुद्ध चलने वाले कई अनुप्रयोगों में एक समान अनुप्रयोग नहीं हो सकता है जो दूसरे के विरुद्ध चलता है। जानकारी को एक डेटाबेस सिस्टम में समेकित करने के लिए, हमें एक विषम डेटाबेस कनेक्शन की आवश्यकता होती है। इस पोस्ट में, मैं दिखाऊंगा कि आप विभिन्न तरीकों का उपयोग करके PostgreSQL को विषम डेटाबेस Oracle में से एक से कैसे जोड़ सकते हैं।

PostgreSQL में Oracle डेटाबेस से कनेक्शन बनाने के लिए नीचे कुछ तरीके दिए गए हैं।

  • ODBC ड्राइवर का उपयोग करना
  • विदेशी डेटा रैपर का उपयोग करना
  • Oracle कॉल इंटरफ़ेस (OCI) ड्राइवर का उपयोग करना
डेमो में प्रयुक्त सॉफ्टवेयर (डाउनलोड लिंक शामिल) - CentOS 7 64bit, PostgreSQL 9.5, EDB पोस्टग्रेज एडवांस्ड सर्वर 9.5, ODBC-Link 1.0.4, unixODBC-2.3.4, Oracle इंस्टेंट क्लाइंट 11.x ड्राइवर्स और Oracle_FDWODBC का उपयोग करना चालक

ओपन डाटाबेस कनेक्टिविटी (ओडीबीसी) डीबीएमएस का उपयोग करने के लिए एक मानक सॉफ्टवेयर एपीआई है। ओडीबीसी ड्राइवर/ओडीबीसी डेटा स्रोत (एपीआई) एक पुस्तकालय है जो अनुप्रयोगों को किसी भी डेटाबेस से कनेक्ट करने की अनुमति देता है जिसके लिए ओडीबीसी ड्राइवर उपलब्ध है। यह एक मध्यम परत है जो एप्लिकेशन के डेटा प्रश्नों को कमांड में अनुवाद करती है जिसे डीबीएमएस समझता है। इस पद्धति का उपयोग करने के लिए, एक ओपन सोर्स यूनिक्सोडबीसी और ओरेकल ओडीबीसी ड्राइवर (बेसिक/ओडीबीसी/डेवेल) पैकेज की आवश्यकता है। PostgreSQL में एक मॉड्यूल के साथ जो यूनिक्सोडबीसी और ओरेकल ओडीबीसी ड्राइवर का उपयोग करके बनाए गए डीएसएन से संचार कर सकता है। कुछ साल पहले साइबरटेक ने एक मॉड्यूल ओडीबीसी-लिंक जारी किया है, वर्तमान में यह अप्रचलित है, हालांकि, पोस्टग्रेएसक्यूएल के लिए किसी अन्य ओडीबीसी अनुपालन डेटाबेस से कनेक्ट करने के लिए इसमें एक डबलिंक-शैली कार्यान्वयन है। हम इस मॉड्यूल का उपयोग Oracle से बुनियादी कनेक्टिविटी के लिए कर सकते हैं। आइए देखते हैं।

यूनिक्सओडीबीसी स्थापित करें
tar -xvf unixODBC-2.3.4.tar.gz
cd unixODBC-2.3.4/
./configure --sysconfdir=/etc
make
make install

बाइनरी/लाइब्रेरी/कॉन्फ़िगरेशन फ़ाइलें स्थान:/usr/लोकल/बिन,/usr/लोकल/लिब,/आदि (odbc.ini,odbcinst.ini)

Oracle ODBC ड्राइवर स्थापित करें

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

बाइनरी/लाइब्रेरी स्थान:/usr/lib/oracle/11.2/client64

ओडीबीसी-लिंक इंस्टॉल करें
tar -zxvf ODBC-Link-1.0.4.tar.gz
cd ODBC-Link-1.0.4
export PATH=/opt/PostgreSQL/9.5/bin:$PATH
which pg_config 
make USE_PGXS=1
make USE_PGXS=1 install

लाइब्रेरी और SQL फ़ाइलें स्थान:/opt/PostgreSQL/9.5/share/postgresql/contrib

संस्थापन $PGHOME/contrib निर्देशिका में एक ODBC-Link मॉड्यूल SQL फ़ाइल बनाएगा। SQL फ़ाइल लोड करें, जो इसमें आवश्यक कार्यों के साथ "odbclink" नाम से एक स्कीमा बनाएगी।

psql -p 5432 -d oratest -U postgres -f /opt/PostgreSQL/9.5/share/postgresql/contrib/odbclink.sql

इस बिंदु पर, हमने PostgreSQL के लिए यूनिक्सोडबीसी ड्राइवर, ओरेकल ओडीबीसी ड्राइवर और ओडीबीसी-लिंक मॉड्यूल स्थापित किया है। पहले चरण के रूप में, हमें Oracle ODBC का उपयोग करके एक DSN बनाने की आवश्यकता है।

/etc/odbcinst.ini फ़ाइल संपादित करें और ड्राइवर की परिभाषा पास करें

## Driver for Oracle
[MyOracle]
Description     =ODBC for oracle
Driver          =/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
UsageCount=1
FileUsage = 1
Driver Logging = 7

/etc/odbc.ini फ़ाइल संपादित करें और /etd/odbcinst.ini

में उल्लिखित ड्राइवर के साथ DSN बनाएं
## Host: pg.raghav-node1.com, PORT: 1521
## Oracle Instance Name: ORA11G, Username: mmruser, Password: mmruser
## ODBC Data source: Ora

[ओरा]
विवरण =myoracledb डेटाबेस
ड्राइवर =MyOracle
ट्रेस =हाँ
TraceFile =/tmp/odbc_oracle.log
डेटाबेस =//pg.raghav-node1 .com:1521/ORA11G
UserID =mmruser
पासवर्ड =mmruser
पोर्ट =1521

DSN बनाने के बाद, पर्यावरण चर सेट करके सभी Oracle और यूनिक्स ODBC ड्राइवर लाइब्रेरी लोड करें और OS कमांड लाइन टूल "dltest" और "iSQL" का उपयोग करके कनेक्टिविटी का परीक्षण करें

[[email protected] ~]# export ORACLE_HOME=/usr/lib/oracle/11.2/client64
[[email protected] ~]# export LD_LIBRARY_PATH=/usr/local/unixODBC-2.3.4/lib:/usr/lib/oracle/11.2/client64/lib
[[email protected] ~]# export ODBCINI=/etc/odbc.ini
[[email protected] ~]# export ODBCSYSINI=/etc/
[[email protected] ~]# export TWO_TASK=//pg.raghav-node1.com:1521/ORA11G
[[email protected] ~]# dltest /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
SUCCESS: Loaded /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
[[email protected] ~]# isql ora -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

अब, पुस्तकालयों को लोड करने के लिए पोस्टग्रेज उपयोगकर्ता के लिए समान पर्यावरण चर सेट करें और प्रभावी होने के लिए PostgreSQL क्लस्टर को पुनरारंभ करें। PostgreSQL से कनेक्ट करें और Oracle डेटाबेस से कनेक्ट करने के लिए odbclink फ़ंक्शन को कॉल करें।

[[email protected] ~]#su - postgres
[[email protected] ~]$ export ORACLE_HOME=/usr/lib/oracle/11.2/client64
[[email protected] ~]$ export LD_LIBRARY_PATH=/usr/local/unixODBC-2.3.4/lib:/usr/lib/oracle/11.2/client64/lib
[[email protected] ~]$ export ODBCINI=/etc/odbc.ini
[[email protected] ~]$ export ODBCSYSINI=/etc/
[[email protected] ~]$ export TWO_TASK=//pg.raghav-node1.com:1521/ORA11G
[[email protected] ~]$ dltest /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
SUCCESS: Loaded /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
[[email protected] ~]$ /opt/PostgreSQL/9.5/bin/pg_ctl -D /opt/PostgreSQL/9.5/data/ stop -mf
[[email protected] ~]$ /opt/PostgreSQL/9.5/bin/pg_ctl -D /opt/PostgreSQL/9.5/data/ start
[[email protected] ~]$ psql
psql.bin (9.5.2)
Type "help" for help.

postgres=# चुनें odbclink.connect('DSN=Ora');
कनेक्ट करें
———
1
(1 row)

बिल्कुल सटीक…!!!। डेटा पुनर्प्राप्त करने और हेरफेर करने के लिए ODBC-Link README फ़ाइल देखें।

विदेशी DataWrappers का उपयोग करना

SQL मानक के लिए एक SQL/MED (बाहरी डेटा का SQL प्रबंधन) एक्सटेंशन डेटाबेस के बाहर संग्रहीत बाहरी डेटा को प्रबंधित करने की अनुमति देता है। SQL/MED दो घटक प्रदान करता है विदेशी डेटा रैपर और डेटालिंक। PostgreSQL ने केवल पढ़ने के लिए समर्थन के साथ 9.1 संस्करण में विदेशी डेटा रैपर (FDW) पेश किया और इस SQL ​​​​मानक के 9.3 संस्करण में समर्थन लिखें। आज, नवीनतम संस्करण में इसके चारों ओर कई विशेषताएं हैं और विभिन्न दूरस्थ SQL डेटाबेस तक पहुँचने के लिए FDW की कई किस्में उपलब्ध हैं।

Oracle_fdw Oracle डेटाबेस तक पहुँचने का एक आसान और कुशल तरीका प्रदान करता है। IMO, दूरस्थ डेटाबेस तक पहुँचने के लिए सबसे अच्छे तरीकों में से एक है। Oracle_FDW को PostgreSQL 9.5 के साथ संकलित करने के लिए, हमें Oracle इंस्टेंट क्लाइंट लाइब्रेरी और PATH में pg_config सेट करने की आवश्यकता है। हम ओडीबीसी-लिंक के लिए उपयोग की जाने वाली ओरेकल इंस्टेंट क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं। आइए देखें कि यह कैसे काम करता है।

सबसे पहले, OIC लाइब्रेरी और pg_config के साथ पर्यावरण चर सेट करें

export PATH=/opt/PostgreSQL/9.5/bin:$PATH
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib

oracle_fdw मॉड्यूल को अनज़िप करें और इसे PostgreSQL 9.5 के साथ संकलित करें

unzip oracle_fdw-1.4.0.zip
cd oracle_fdw-1.4.0/
make 
make install

अब 'पोस्टग्रेज' उपयोगकर्ता के रूप में स्विच करें और oracle_fdw एक्सटेंशन के लिए आवश्यक Oracle इंस्टेंट क्लाइंट लाइब्रेरी लोड करके क्लस्टर को पुनरारंभ करें और डेटाबेस के अंदर एक्सटेंशन बनाएं।

[[email protected] 9.5]$ export ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib
[[email protected] 9.5]$ export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
[[email protected] 9.5]$ /opt/PostgreSQL/9.5/bin/pg_ctl -D /opt/PostgreSQL/9.5/data/ stop -mf
[[email protected] 9.5]$ /opt/PostgreSQL/9.5/bin/pg_ctl -D /opt/PostgreSQL/9.5/data/ start
[[email protected] 9.5]$ psql
Password:
psql.bin (9.5.2)
Type "help" for help.

postgres=# एक्सटेंशन बनाएं oracle_fdw;
विस्तार बनाएं

अब आप Oracle डेटाबेस तक पहुँच सकते हैं।

postgres=# CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//pg.raghav-node1.com/ORA11G');
CREATE SERVER
postgres=# GRANT USAGE ON FOREIGN SERVER oradb TO postgres;
GRANT
postgres=# CREATE USER MAPPING FOR postgres SERVER oradb OPTIONS (user 'scott', password 'tiger');
CREATE USER MAPPING
postgres=#
postgres=# CREATE FOREIGN TABLE oratab (ecode integer,name char(30)) SERVER oradb OPTIONS(schema 'SCOTT',table 'EMP');
CREATE FOREIGN TABLE
postgres=# select * from oratab limit 3;
 ecode |              name
-------+--------------------------------
  7369 | SMITH
  7499 | ALLEN
  7521 | WARD
(3 rows)


ओरेकल कॉल इंटरफेस (ओसीआई) ड्राइवरों का उपयोग करना

Oracle कॉल इंटरफ़ेस (OCI) एक टाइप-2 ड्राइवर है जो Oracle साइट पर स्वतंत्र रूप से उपलब्ध है जो क्लाइंट को Oracle डेटाबेस से कनेक्ट करने की अनुमति देता है। EDB पोस्टग्रेज एडवांस्ड सर्वर (जिसे EPAS भी कहा जाता है) एक मालिकाना उत्पाद में अंतर्निहित OCI-आधारित डेटाबेस लिंक मॉड्यूल है जिसे dblink_ora कहा जाता है, जो Oracle OCI ड्राइवरों का उपयोग करके Oracle डेटाबेस से जुड़ता है। dblink_ora मॉड्यूल का उपयोग करने के लिए आपको बस इतना करना है, EPAS (इंस्टॉलेशन को कवर नहीं करना) स्थापित करें और EPAS को बताएं कि यह Oracle OCI ड्राइवर लाइब्रेरी कहां ढूंढ सकता है। हम LD_LIBRARY_PATH पर्यावरण चर में इसके पुस्तकालयों के स्थान को निर्दिष्ट करके और EPAS क्लस्टर को फिर से शुरू करने के लिए उसी Oracle इंस्टेंट क्लाइंट का उपयोग कर सकते हैं।

सबसे पहले, "एंटरप्राइज़डीबी" उपयोगकर्ता के रूप में स्विच करें, पुस्तकालयों को लोड करें और क्लस्टर को पुनरारंभ करें। बस इतना ही, हम Oracle डेटाबेस तक पहुँचने के लिए अच्छे हैं।

[[email protected] ~]$ export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
[[email protected] bin]$ /opt/PostgresPlus/9.5AS/bin/pg_ctl -D /opt/PostgresPlus/9.5AS/data/ restart
[[email protected] bin]$ psql
psql.bin (9.5.0.5)
Type "help" for help.

edb=# चुनें dblink_ora_connect('oraconn','localhost','edbora','edbuser','edbuser',1521);
dblink_ora_connect
——————
ठीक है
(1 पंक्ति)

नोट:EPAS Oracle इंस्टेंट क्लाइंट लाइब्रेरी "libclntsh.so" का उपयोग करके Oracle डेटाबेस से जुड़ता है। अगर आपको Oracle क्लाइंट लाइब्रेरी लोकेशन में लाइब्रेरी नहीं मिलती है तो libclntsh.so के साथ प्रतीकात्मक लिंक बनाएं, जो libclntsh.so.version.number की ओर इशारा करता है। दस्तावेज़ीकरण देखें।

उदाहरण में, dblink_ora_connect उपयोगकर्ता द्वारा निर्दिष्ट कनेक्शन जानकारी के साथ Oracle डेटाबेस से एक कनेक्शन स्थापित करता है। बाद में लिंक नाम (मेरे मामले में 'oraconn') का उपयोग करके हम dblink_ora* फ़ंक्शन का उपयोग करके सेलेक्ट, INSERT, DELETE, UPDATE और COPY जैसे ऑपरेशन कर सकते हैं। सभी फ़ंक्शन जिन्हें आप यहां EnterpriseDB दस्तावेज़ से संदर्भित कर सकते हैं।

यदि आप माइग्रेशन प्रोजेक्ट पर काम कर रहे हैं तो उपरोक्त सभी तरीके बहुत काम आएंगे। आशा है कि यह मददगार है। धन्यवाद


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL फ़ंक्शन के तर्क के रूप में तालिका

  2. Pgbackrest डेल्टा को पुनर्स्थापित करें और पुनर्स्थापित करें

  3. PostgreSQL अक्षांश देशांतर क्वेरी

  4. PostgreSQL पर संकेत

  5. PostgreSQL में दो तिथियों के बीच अंतराल कैसे खोजें