dblink란
같은 host상의 1)클라이언트db와 2)서버db를 별명(alias)을 통해 두 db간의 다리를 만들어주는 기술
oracle dblink로 할수 있는건
서로 다른 컴퓨터로 export , import 명령어를 사용해서 옮기지만 dblink를 걸어주면 명령어만으로 쉽게 서버간 데이터이동을 할수있다.
그리고 backup & recovery 할때도 엄청 요긴하게 쓰이는 기술이니 알아두면 나중에 발목잡힐 일이 없다.
처음 리눅스 os를 깔고 oracle을 설치하면 리스너라는(listener.ora)파일이 없을것이다.
oracle 11g 기준으로 경로는 /app/oracle/product/11g/bin/에 있다.
cd /app/oracle/product/11g/bin/ 들어가서
터미널에
[oracle@dbserver ~ bin]$ ./netca 라고 치면 설치가능하다.
만약에 한글이 깨져보인다면 설치취소를 누르고
export LACG=C 명령어를 터미널에 쳐주고 다시 netca를 실행시켜주자.
*netca를 이용하지 않아도 vi로 해당위치의 파일을 만들어주고 내용을 입력해줘도 가능하다.
vi /app/oracle/product/11g/network/admin/listener.ora
vi /app/oracle/product/11g/network/admin/tnsnames.ora 이런식으로 새파일을 만들어 입력가능함
/app/oracle/product/11/network/admin/listener.ora를 열어보면
------------------------------------------------------------------------------------------------
# listener.ora Network Configuration File: /app/oracle/product/11g/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = testdb)
(ORACLE_HOME = /app/oracle/product/11g)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
-------------------------------------------------------------------------------------------------
위에껀 기존부분이고 아래 listener2 부분을 기존내용 밑에 추가해주면 된다.(* 괄호주의)
-------------------------------------------------------------------------------------------------
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1522))
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = testdb2)
(ORACLE_HOME = /app/oracle/product/11g)
)
)
-------------------------------------------------------------------------------------------------
*참고로 HOST부분에 네임으로 적으려면 /etc/hosts에 아이피와 네임이 같이 적혀있어야한다.
vi를 열어서 살펴보자.
vi /etc/hosts
-------------------------------------------------------------------------------------------------
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.24.136 dbserver dbserver
-------------------------------------------------------------------------------------------------
빨간색부분의 아이피와 옆에 리눅스를 설치했던 네임을 적어주면 된다. 그리고 :wq! 종료
그리고 vi /app/oracle/product/11g/network/admin/tnsnames.ora를 열어보면
-------------------------------------------------------------------------------------------------
TESTDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.24.136)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testdb)
)
)
--------------------------------------------------------------------------------------------------
위의내용은 기존내용이고 이 부분아래서부터 밑의 clonedb를 추가해주자
--------------------------------------------------------------------------------------------------
clonedb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.24.136)(PORT = 1522)) -<포트번호는 listener와 동일한 포트로
)
(CONNECT_DATA =
(SERVICE_NAME = testdb2) -<clonedb의 네임적어주셔야 합니다.
)
)
--------------------------------------------------------------------------------------------------
*중요한 몇가지
1.listener와 tnsnames의 본 클라이언트db(testdb), 서버db(testdb2)의 port 같은 서버끼리 똑같아야 한다.
2.분명히 clonedb(testdb2)안만들고 listener와 tnsnames만 건드시는 분들 분명히 계십니다~
다른서버가 분명히 하나 더 있어야 가능한 기술이니까 숙지하세요~
3.이건 주관적인건데 listener의 host는 아이피로 통일하거나 네임으로 통일하거나 같아야합니다
tnsnames.ora도 마찬가지로 네임으로 통일할려면 통일하고 안할려면 둘다 아이피로 적어주세요.
모두 :wq! 저장하고 나와서 리스너 명령어로 stop,start,status등 실행되는지 전부 확인해볼수 있습니다.
[oracle@dbserver ~]$lsnrctl -<리스너 접속명령어 확인을 누르면
--------------------------------------------------------------------------------------------------
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 16-JUL-2014 14:38:53
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL>
--------------------------------------------------------------------------------------------------
접속되었고 몇가지 명령어를 나열해 보자면 보통은
status listener(testdb꺼) ,status listener2(clonedb testdb2꺼) 이 명령어는 현재 리스너의 현재상태를 출력해주는 명령어다
그외에 멈추는 명령어 stop listener , 다시 재동가하는 명령어 start lestener 요 3가지만 알아도 많이 배운상태다 이미.
내용이 길어지기 때문에 현제 clonedb의 testdb만 정상적으로 재가동되는 결과 출력물만 기재하겠다.
LISTENER> 에서 나갈려면 EXIT 명령어를 써주면 나갈수가 있다.
제대로 작동되는지 확인해볼려면
[oracle@dbserver ~]#tnsping clonedb(testdb2용임)
--------------------------------------------------------------------------------------------------
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 16-JUL-2014 14:44:35
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.24.136)(PORT = 1522))) (CONNECT_DATA = (SERVICE_NAME = testdb2)))
OK (10 msec)
-------------------------------------------------------------------------------------------------
위의 ok가 떨어졌으면 정상적으로 리스너가 작동한다는 뜻이다.
그리고 당연하겠지만 본 클라이언트(운영서버)에서 디비링크를 확인하려면 clonedb(복구서버testdb2)의 db가 켜져있어야한다.
exprot ORACLE_SID=testdb2 (클론서버로 접속)입력해주고 db를 키자. 그리고 다시 export ORACLE_SID=testdb로 실행경로를 바꿔준다.
이제 거의 tnsnames.ora와 listener.ora쪽은 건들일이 없고 본클라이언트 서버 들어가서 서로연결해줄 링크를 만들면 끝이다.
[oracle@dbserver ~]$sqlplus / as sysdba [oracle@dbserver ~]startup
명령어가 여러가지가 있는데 한번 살펴보자
<링크생성하기>
SQL>creata database link testdb02 /링크이름은 하고싶은걸로 하면된다. 2 connect to scott 3 identified by tiger /클론db와 연결할 계정과 암호 4 using 'testdb2'; /tnsnames.ora에 적어뒀던 걸로 하면된다. DATABASE LINK CREATE
이것으로 링크는 정상적으로 만들어졌고 실행해보자.
SQL> select * from scott.hwangyk@testdb02
해주면 결과가 출력이 된다. 성공적으로 링크가 됐다.
지금까지 만들었던 dblink를 조회해보는 명령어
SQL>SELECT * FROM ALL_DB_LINKS;
만들어놨던 DBLINK를 삭제하는 명령어
SQL>DROP DATABASE LINK 링크명
링크를 만들때 직접 만들수 있는 방법도 있다.
이래저래 안걸리면 직접넣기
SQL>CREATE DATABASE LINK 링크이름 2 CONNECT TO 아이디 IDENTIFIED BY 비번 3 USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=호스트명)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=SID)))';
'Oracle > Administoration' 카테고리의 다른 글
tablespace에 속한 table 조회(owner) (0) | 2015.01.15 |
---|---|
No archive mod에서 archive mode 변경하기 (0) | 2014.11.04 |
SGA size cannot be greater than maximum shared memory segment size (0) 에러 (0) | 2014.10.31 |
oracle dbca [ora-00119] invalid specification for system parameter local_listener 에러 (0) | 2014.10.31 |
오라클 사용자 권한생성 및 권한주기 (0) | 2014.10.31 |