通過DB2聯邦訪問Oracle

來源:互聯網
上載者:User

通過DB2聯邦訪問Oracle

1.查看OS和DB的版本
OS版本:
C:\Users\Administrator>ver
Microsoft Windows [版本 6.1.7601]
Oracle版本:
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
DB2版本:
C:\Users\Administrator>db2level
DB21085I  執行個體 "DB2" 使用 "32" 位和 DB2 代碼發行版 "SQL09076",層級標識為
"08070107"。
參考標記為 "DB2 v9.7.600.413"、"s120516" 和 "IP23322",修訂包為 "6"。
產品使用 DB2 副本名 "DB2COPY1" 安裝在 "C:\PROGRA~2\IBM\SQLLIB" 中。
2.配置DB2安裝目錄下的sqllib/cfg/db2dj.ini檔案,增加如下ORACLE環境變數:
ORACLE_HOME=D:\app\Administrator\product\11.2.0\dbhome_1
ORACLE_BASE=E:\app\Administrator
ORA_NLS33=D:\app\Administrator\product\11.2.0\dbhome_1\nls\data
TNS_ADMIN=D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
NLS_LANG=american_CHINA.ZHS16GBK

    3.修改 DBM參數FEDERATED為YES支援聯邦
C:\>db2 update dbm cfg using FEDERATED YES
DB20000I  UPDATE DATABASE MANAGER CONFIGURATION 命令成功完成。
SQL1362W  未動態更改為立即修改而提交的一個或多個參數。直到下次啟動應用程式或發出
TERMINATE 命令之後,客戶機更改才會生效。直到下一條 DB2START
命令之後,伺服器更改才會生效。
C:\>db2 terminate
DB20000I  TERMINATE 命令成功完成。
4.建立測試DB,我就不建了
5.註冊oracle封裝器
C:\>db2 disconnect all
DB20000I  SQL DISCONNECT 命令成功完成。

C:\>db2stop
SQL1064N  DB2STOP 處理成功。

C:\>db2admin stop
SQL4407W  已成功停止“DB2 管理伺服器”。

C:\>db2admin start
SQL4406W  已成功啟動 DB2 管理伺服器。

C:\>db2start

SQL1063N  DB2START 處理成功。

C:\>db2 create wrapper net8 
DB20000I  SQL 命令成功完成。

或者如下建立也是可以的。
C:\>db2 create wrapper net8 LIBRARY 'C:\Program Files (x86)\IBM\SQLLIB\BIN\db2net8.dll'
DB20000I  SQL 命令成功完成。
DB2官方文檔有明確說明,聯邦訪問oracle必須使用net8,因為有對應的db2net8.dll檔案支援,db2drda.ddl也是如此。
官方解釋如下:
Register the NET8 wrapper on a federated server to access Oracle data sources. NET8 is the predefined name for the wrapper that you can use to access Oracle data sources.
6.為oracle資料來源註冊伺服器定義
C:\>db2 create server f_oracle type oracle version 11.2.0.3 wrapper net8 options(node 'orcl')
DB21034E  該命令被當作 SQL 陳述式來處理,因為它是無效的“命令列處理器”命令。在
SQL 處理期間,它返回:
SQL0103N  數字文字 "11.2.0.3" 無效。  SQLSTATE=42604

C:\>db2 create server f_oracle type oracle version 11.2.0 wrapper net8 options(node 'orcl')
DB20000I  SQL 命令成功完成。
7.為oracle資料來源建立使用者映射:
C:\>db2 create user mapping for db2admin Server f_oracle options(remote_authid 'lyn',remote_password 'lyn')
DB20000I  SQL 命令成功完成。
8.建立使用者暱稱並測試
C:\>db2 create nickname nk_orcl for f_oracle.sys.all_users
DB20000I  SQL 命令成功完成。
C:\>db2 select count(*) from nk_orcl

1
-----------
        31

  1 條記錄已選擇。
C:\>db2 select count(*) from sys.all_users

COUNT(*)
------------------------
  +3.10000000000000E+001

  1 條記錄已選擇。

疑問:是不是每訪問Oracle使用者lyn下的一個表就得建立一個nickname?

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.