Oracle DBLink
使用 Oracle DBLink 連結 Canner Enterprise 優勢
1. 在 Oracle Server 安裝 PostgreSQL ODBC Drivers
請使用以下指令進行安裝 PostgreSQL ODBC Drivers
yum install postgresql-odbc
2. 在 Oracle Server 編輯 odbc.ini
檔案並測試 DSN 連接性
在 /etc
目錄下建立 odbc.ini
檔案
vi /etc/odbc.ini
新增如下內容
[PG]
Description = PG
Driver = /usr/lib64/psqlodbc.so
ServerName = $server_name
Username = $username
Password = $password
Port = $port
Database = $database
[Default]
Driver = /usr/lib64/libodbcpsqlS.so
ServerName
: 使用 service domain 或 IP e.g. 192.168.0.12Username
: cannerPassword
: 資料來源使用者的密碼- 在 Canner Enterprise 中去建立使用在 PostgreSQL wire protocol 的 Personal Access Token,並以此做為密碼。關於 Personal Access Token 參考文件
Port
: Datasource 的 port e.g. 7432Database
: 資料庫名稱- 使用 Canner Enterprise Workspace 中的 SQL Name (e.g.
wire_protocol_test_84077
)。SQL Name 位置位於 Workspace 中,點擊 Share 按鈕並切換到 PostgreSQL Wire Protocol 頁面中。
- 使用 Canner Enterprise Workspace 中的 SQL Name (e.g.
完成之後,使用以下指令來驗證 DSN 對 Database 的連接性
isql -v pg
若成功連接後,我們將會看到以下結果
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
3. 建立 initPG.ora 檔案
在 $ORACLE_HOME/hs/admin
目錄下建立 initPG.ora
,並新增以下參數
cd $ORACLE_HOME/hs/admin
vi initPG.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 = PG
HS_FDS_TRACE_LEVEL = 4
HS_FDS_TRACE_FILE_NAME=/tmp/ora_hs_trace.log
HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so
HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P9
#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini
#
# Environment variables required for the non-Oracle system
#
4. 配置 tnsnames.ora & listener.ora 檔案
配置 tnsnames.ora
執行以下指令
vi $ORACLE_HOME/admin/ORCLCDB/tnsnames.ora
新增以下內容
PG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = $your_oracle_host)(PORT = 1521))
)
(CONNECT_DATA =
(SID = PG)
)
(HS = OK)
)
- HOST: 使用你的 Service Domain 或 IP e.g. 192.168.0.12
- 因為我們將 PostgreSQL 作為 remote data source,因此將
PG
設定為 SID
配置 listener.ora
在進行編輯之前,我們需要先停止 Oracle Listener,我們可以在 $ORACLE_HOME/bin
找到指令
lsnrctl stop
新增以下內容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = dg4odbc)
(SID_NAME = PG)
(ORACLE_HOME = $oracle_home)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = $host)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ORACLE_HOME
: 使用 home path e.g/u01/app/oracle/product/19.3.0/db_1
Host
: 使用 Service Domain 或 IP e.g. 192.168.0.12完成後,重新啟動 Oracle Listener
lsnrctl start
啟動後,我們可以看到以下的 Log
Services Summary...
Service "PG" has 1 instance(s).
Instance "PG", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
5. 建立 DB Link 並測試連接結果
建立 DB Link
執行以下指令
CREATE PUBLIC DATABASE LINK PG_DBLINK CONNECT TO $username IDENTIFIED BY $secret USING 'PG';
PG_DBLINK
: 可以取代或使用其他名稱$username
: canner$secret
: 使用前面步驟建立的 Personal Acess Token
驗證連接結果
使用以下指令,確認我們成功透過 Oracle DB Link 讀取 Canner Enterprise Workspace 上的資料
select * from "foo1"@PG_DBLINK;
以 Canner Workspace 上的 foo1
這張 table 為範例,此為資料內容
使用熟悉的 IDE,根據以上的指令建立 DB Link,並連接 Canner Enterprise 上 foo1
這張 table,驗證資料成功連接