출처 : http://blog.naver.com/cmsworld7/50006434348
http://www.rainnara.com/zero/zboard.php?id=study&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=33
링크드 서버 등록
--@Server='서버명 (IP 또는 호스트네임)'
--@srvproduct='오라클서버명'
--@provider='서비스공급자 (오라클 : MSDAORA)'
--@datasrc='TNS 명'
declare @sql varchar(1000)
set @sql = ' exec sp_addlinkedserver
@Server=''192.168.1.4'',
@srvproduct=''ORACLE2'',
@provider=''MSDAORA'',
@datasrc=''OCS'''
exec(@sql)
링크드 서버 login 매칭
exec sp_addlinkedsrvlogin
@rmtsrvname='192.168.1.4',
@useself=false,
@locallogin=null,
@rmtuser='system',
@rmtpassword='asdf123'
TNS (LISTENER) 설정
-- 시작 (프로그램)--> Oracle - OraHome92 --> Configuration and Migration Tools
--> Net Configuration Assistant
-- (리스너 구성)
-- 리스너구성 --> 추가 --> 리스너명 입력 --> TCP --> 표준포트번호(1521)사용
--> 다른 리스너를 구성하시겠습니까(아니오) --> 완료
-- (로컬네트 서비스 이름구성)
-- 로컬네트 서비스 이름구성 --> 추가 --> Oracle8i 이상 데이타베이스 또는 서비스
--> 서비스이름입력 (일반적으로 DB명)
-- TCP --> 호스트이름 또는 IP 입력(포트번호 기본) --> 접속테스트수행(로그인매칭) --> 완료
링크드 서버로의 쿼리
select * from openquery([192.168.1.4], 'select * from all_users')
select * from openquery(IRON, 'select * from dba_role_privs')
MS-SQL (tb_physician2) 에 테이블 복사 ---> ORACLE 4자처리 : 대소문자 구분주의 (속도저하)
insert into tb_physician2
select * from [192.168.1.4]..SYSTEM.TB_PHYSICIAN
ORACLE 에 MS-SQL 소속 테이블 복사
insert into [192.168.1.4]..SYSTEM.TB_PHYSICIAN
select * from tb_physician2
MS-SQL (tb_physician2) 에 테이블 복사 ---> openquery 이용
(속도향상됨 : where 절을 이용할 경우 더욱 향상됨)
insert into tb_physician2
select * from openquery([192.168.1.4], 'select * from tb_physician')
ORACLE - INSERT
insert openquery([192.168.1.4], 'select * from tb_physician')
values ('OG', '산부인과', 'OG03', '김수찬', '20040901', '29991231', 'Y')
ORACLE - UPDATE
update openquery(IRON, 'select drcd from tb_physician where drcd=''OG01'' ')
set drcd='OG02'
ORACLE - DELETE
delete openquery([192.168.1.4], 'select * from tb_physician')
------------------------------------------------------------------------------------------
LINKED SERVER로 이기종 연결 후 저장프로시저 생성오류가 날 경우
CREATE PROC 구문전에 아래 구문을 먼저 적는다.
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
CREATE PROC SP_XXX_XXXX
AS
......
......
......
위 구문이 없이 프로시저를 생성하려 하면 다음과 같은 에러메세지가 뜬다.
------------------------------------------------------------------------------------------
오류 7405: 유형이 다른 쿼리를 사용하려면 연결에 대해 ANSI_NULLS 및 ANSI_WARNINGS 옵션을
설정해야 합니다. 이렇게 하면 일관된 방식으로 쿼리를 사용할 수 있습니다. 이 옵션을 설정한 다음
쿼리를 다시 실행하십시오
-------------------------------------------------------------------------------------------
오라클과 MS-SQL 연결 또는 SQL-PLUS 에서 한글이 깨지는 경우
ORACLE 과 NT 서버의 Characterset 을 일치시킨다.
1. NT : regedit --> hkey_local_machine --> software --> oracle --> nls_lang 에서 확인
2. ORACLE : props$ 테이블의 필드를 확인 NLS 관련 세필드의 조합
- AMERICAN_AMERICA.US7ASCII 형식
- KOREAN_KOREA.KO16KSC5601 형식
3. 확인 되었으면 두 서버의 Characterset 을 일치시키면 됨
- NT 의 regedit 에서 찾기를 눌러 ORACLE 소속 NLS_LANG 문자열값을 바꿔준다.
- 다음찾기를 눌러 계속 바꿔준다 (총 3개)
[출처] MSSQL 링크드서버를 이용하여 오라클 데이타 이용 |작성자 필립박
'데이터베이스 > SQL Server' 카테고리의 다른 글
[SQL injection 해킹 보안] 웹관리자를 위한 응급처리법 (0) | 2008.04.28 |
---|---|
[MsSql] table schema 출력하는 procedure (0) | 2008.04.28 |
DB상의 모든 인덱스 정보를 보이는 저장프로시져 (0) | 2008.04.28 |
Bulk Insert 옵션에 따른 성능 비교 (0) | 2008.04.28 |
인덱스의 사용량 (0) | 2008.04.28 |