Oracle10g DBLink를 통한 MySQL 액세스 예

6373 단어
1, 먼저 Oracle이 있는 컴퓨터에 MySQL의 클라이언트 엔드 소프트웨어를 설치하고 x8664 및 i386 버전은 MySQL 데이터베이스에 연결할 수 있도록 설치해야 합니다.Client 설치를 보려면 다음과 같이 하십시오.
 
  
rpm -qa |grep mysql
mysql-5.0.45-7.el5
mysql-5.0.45-7.el5

두 개의 기록을 얻었는데, 하나는 x86 이다.64의, 하나는 i386의.mysql 클라이언트 소프트웨어가 아직 설치되어 있지 않은 경우 다음을 설치해야 합니다.
 
  
yum install mysql
yum install mysql.i386

이 Oracle 컴퓨터에서 대상 호스트 MySQL 데이터베이스를 연결할 수 있는지 확인합니다.
 
  
mysql -h 192.168.1.1 -u root -p mysql

2, Oracle이 있는 컴퓨터에 MySQL ODBC 클라이언트가 설치되어 있는지 확인하고 x8664 버전과 i386 버전은 모두 설치해야 합니다.
 
  
rpm -qa |grep mysql-connect

mysql-connector-odbc가 설치되어 있지 않으면 다음 명령을 사용하여 다운로드하고 설치합니다.
mysql-connector-odbc를 다운로드합니다.
 
  
wget ftp://mirror.switch.ch/pool/3/mirror/centos/5.2/os/i386/CentO S/mysql-connector-odbc-3.51.12-2.2.i386.rpm

mysql-connector-odbc를 설치하려면:
 
  
rpm -ivh mysql-connector-odbc-3.51.12-2.2.i386.rpm

힌트를 얻다
 
  
libltdl.so.3 is needed by mysql-connector-odbc-3.51.12-2.2.i386 , libtool i386 , libtool-ltdl.i386:
yum list *.i386|grep libtool
yum install libtool-ltdl.i386

3, Oracle이 있는 컴퓨터에서/etc/odbc. 편집ini 파일, ODBC 작업 테스트
 
  
vi /etc/odbc.ini

#odbc.ini 내용은 다음과 같다.
 
  
[test]
Driver=/usr/lib64/libmyodbc3.so
Description=MySQL
Server=192.168.1.1(MySQL Server IP)
Port=3306
User= (MySQL Username)
UID= (MySQL Username)
Password= (MySQL PWD)
Database= (MySQL Database Name)
Option=3
Socket=

명령줄에서 다음 명령을 실행하면 MySQL Client 창에 순조롭게 로그인할 수 있습니다. 즉, ODBC 기능이 정상적임을 증명해야 합니다.
 
  
isql -v test
quit

4, hs 프로필 편집vi/ora10g/hs/admin/inittest.ora (파일 이름의 파란색 부분은odbc.ini의 파란색 이름입니다)
 
  
HS_FDS_CONNECT_INFO = test
HS_FDS_TRACE_LEVEL = on( , off)
HS_FDS_TRACE_FILE_NAME = test.trc
HS_FDS_SHAREABLE_NAME=/usr/lib/libmyodbc3.so
set ODBCINI=/etc/odbc.ini

5. Oracle이 위치한 컴퓨터의 Oracle listener 구성 파일을 편집하고 Oracle Listener를 에뮬레이션하여 향후 dblink 구축을 준비합니다.
vi/ora10g/network/admin/listener.ora는 다음과 같은 문을 추가합니다.
 
  
(SID_DESC =
   (SID_NAME = test)
   (ORACLE_HOME = /ora10g)
   (PROGRAM = hsodbc)
   (ENVS=LD_LIBRARY_PATH=/ora10g/lib32:/usr/lib64:/ora10g/lib)
)

listener.ora 파일의 컨텐트는 다음과 같습니다.
 
  
SID_LIST_LISTENER = (
     SID_LIST =
        (SID_DESC =
           (ORACLE_HOME = /ora10g)
           (PROGRAM = extproc)
           (GLOBAL_DBNAME=prod)
           (SID_NAME=prod)
         )
        (SID_DESC =
                  (SID_NAME = test)
                  (ORACLE_HOME = /ora10g)
                  (PROGRAM = hsodbc)
                  (ENVS=LD_LIBRARY_PATH=/ora10g/lib32:/usr/lib64:/ora10g/lib)
             )
)
LISTENER = (
     DESCRIPTION_LIST =
        (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) )
)

lsnrctl reload를 실행하여 Listener를 적용합니다.
 
  
su �C oracle
lsnrctl reload
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 09-FEB-2009 13:59:38 Copyright (c) 1991, 2007, Oracle.
All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
The command completed successfully
lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 12-FEB-2009 08:56:00

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                03-JAN-2009 03:47:39
Uptime                    40 days 5 hr. 8 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /ora10g/network/admin/listener.ora
Listener Log File         /ora10g/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "test" has 1 instance(s).
  Instance "test", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully


6, Oracle이 있는 컴퓨터의 tnsnames를 편집합니다.ora 파일로 dblink를 만들 수 있습니다.이 tnsnames 설정은 tnsping을 지원하지만, sqlplus 로그인은 지원하지 않습니다. dblink에만 사용됩니다.
 
  
vi /ora10g/network/admin/tnsnames.ora
test =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SID = test)
    )
      (HS = OK)
  )
 

7, Oracle Database에 dblink를 설정합니다.
 
  
create public database link MYSQL
connect to "mysql username" identified by "mysql pwd"
using '(DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP) (HOST = 127.0.0.1) (PORT =1521) )
              (CONNECT_DATA = (SID= test) )
              (HS=OK)
           )';

사용자 이름과 암호에 큰따옴표가 필요합니다. 그렇지 않으면 Oracle이 전송하는 것이 모두 대문자여서 MySQL에 로그인할 수 없습니다.
8, MySQL의 테이블 이름은 대소문자가 민감하기 때문에 SQL 조회를 할 때 테이블 이름을 더블 인덱스로 확대해야 한다
 
  
select * from "tablename"@test

좋은 웹페이지 즐겨찾기