Mac De Oracle Heterogeneous! #56 Tweet
前回からのつづき。Generic Connectivity経由でMySQL4.0.25、MySQL4.1.13a及び、PostgreSQL7.4.9の文字型にアクセス。(準備)
まず、Windows XP上で踏み台にするOracle10g にMySQL4.0.25、MySQL4.1.13a及び、PostgreSQL7.4.9の各表をアクセスするためのシノニムを作成する。(この例では、プライベートシノニム)
Generic Connectivity用のデータベースリンクを介してアクセスする各表をシノニムとして定義し、
そのシノニムへMacOSX上のOracle10gからOracleの分散データベース機能を利用してアクセスする。この方法で、現時点ではGeneric Connectivityが実装されていないMacOSX上のOracle10gから異機種データベースをアクセスする。
尚、Generic Connectivity経由で、MySQL4.1.13aへ発行する count()関数は正しい結果を得られないためrownum疑似列をmax()関数で取得するという方法で代用している。
SQL> create synonym char_test_postgresql749_mac for "char_test"@postgresql749_mac;
シノニムが作成されました。
SQL> create synonym char_test_mysql4025_mac for "char_test"@mysql4025_mac;
シノニムが作成されました。
SQL> create synonym varchar_test_mysql4025_mac for "varchar_test"@mysql4025_mac;
シノニムが作成されました。
SQL> create synonym char_test_mysql4113a_mac_sv for "char_test"@mysql4113a_mac_sv;
シノニムが作成されました。
SQL> create synonym varchar_test_mysql4113a_mac_sv for "varchar_test"@mysql4113a_mac_sv;
シノニムが作成されました。
SQL> select synonym_name,table_name,substr(db_link,1,20) as db_link from user_synonyms;
SYNONYM_NAME TABLE_NAME DB_LINK
------------------------------ -------------------- --------------------
EMP_MYSQL4025_MAC emp MYSQL4025_MAC
INNO_EMP_MYSQL4025_MAC inno_emp MYSQL4025_MAC
EMP_MYSQL4026_WIN emp MYSQL4026_WIN
EMP_MYSQL4113A_MAC_SV emp MYSQL4113A_MAC_SV
EMP_POSTGRESQL749_MAC emp POSTGRESQL749_MAC
ORACLE_EMP_MYSQL4026_WIN oracle_emp MYSQL4026_WIN
DATE_TEST_MYSQL4026_WIN date_test MYSQL4026_WIN
DATE_TEST_MYSQL4113A_MAC_SV date_test MYSQL4113A_MAC_SV
DATE_TEST_POSTGRESQL749_MAC date_test POSTGRESQL749_MAC
NUM_TEST_POSTGRESQL749_MAC num_test POSTGRESQL749_MAC
NUM_TEST_MYSQL4113A_MAC_SV num_test MYSQL4113A_MAC_SV
NUM_TEST_MYSQL4025_MAC num_test MYSQL4025_MAC
CHAR_TEST_POSTGRESQL749_MAC char_test POSTGRESQL749_MAC
CHAR_TEST_MYSQL4025_MAC char_test MYSQL4025_MAC
VARCHAR_TEST_MYSQL4025_MAC varchar_test MYSQL4025_MAC
CHAR_TEST_MYSQL4113A_MAC_SV char_test MYSQL4113A_MAC_SV
VARCHAR_TEST_MYSQL4113A_MAC_SV varchar_test MYSQL4113A_MAC_SV
17行が選択されました。
SQL>
SQL> select count(*) from char_test_postgresql749_mac;
COUNT(*)
----------
35
SQL> select count(*) from char_test_mysql4025_mac;
COUNT(*)
----------
11
SQL> select count(*) from varchar_test_mysql4025_mac;
COUNT(*)
----------
34
SQL> select count(*) from char_test_mysql4113a_mac_sv;
COUNT(*)
----------
12593
SQL> select count(*) from varchar_test_mysql4113a_mac_sv;
COUNT(*)
----------
13363
SQL> select max(rownum) from char_test_mysql4113a_mac_sv;
MAX(ROWNUM)
-----------
11
SQL> select max(rownum) from varchar_test_mysql4113a_mac_sv;
MAX(ROWNUM)
-----------
34
SQL>
Windows上で、Generic Connectivityの接続を確認できたので、MacOSXのOracle10gから、WindowsのOracle10g経由で各データベースへの接続を確認する。
Generic Connectivity経由でアクセスする経路は以下の通り。
尚、Generic Connectivity経由で、MySQL4.1.13aへ発行する count()関数は正しい結果を得られないためrownum疑似列をmax()関数で取得するという方法で代用している。
SYS> conn corydoras
パスワードを入力してください:
接続されました。
CORYDORAS>
CORYDORAS>
CORYDORAS>
CORYDORAS> select db_link from user_db_links;
DB_LINK
--------------------------------------------------------------------------------
ORACLE10G_WIN
CORYDORAS> select synonym_name from user_synonyms;
レコードが選択されませんでした。
CORYDORAS> select count(*) from char_test_postgresql749_mac@oracle10g_win;
COUNT(*)
----------
35
CORYDORAS> select count(*) from char_test_mysql4025_mac@oracle10g_win;
COUNT(*)
----------
11
CORYDORAS> select count(*) from varchar_test_mysql4025_mac@oracle10g_win;
COUNT(*)
----------
34
CORYDORAS> select count(*) from char_test_mysql4113a_mac_sv@oracle10g_win;
COUNT(*)
----------
12593
CORYDORAS> select max(rownum) from char_test_mysql4113a_mac_sv@oracle10g_win;
MAX(ROWNUM)
-----------
11
CORYDORAS> select count(*) from varchar_test_mysql4113a_mac_sv@oracle10g_win;
COUNT(*)
----------
13363
CORYDORAS> select max(rownum) from varchar_test_mysql4113a_mac_sv@oracle10g_win;
MAX(ROWNUM)
-----------
34
CORYDORAS>
Generic Connectivity経由の接続を確認することができた。
次回、Generic Connectivity経由でPostgreSQLの文字型にアクセス 一回目につづく。
| 固定リンク | 0
コメント