[ Oracle - Sequence  ]


 


☞ 형식
 

1. 생성
CREATE SEQUENCE Sequence 이름
  [ 
INCREMENT BY n ]                   : 번호간의 간격 (기본 1)
  [ 
START WITH n ]                     : 첫번째 번호 (기본 1)
  [ { 
MAXVALUE n | NOMAXVALUE } ]      : 최대값 (기본 10^27)
  [ { 
MINVALUE n | NOMINVALUE } ]      : 최소값 (기본 1)
  [ { 
CYCLE | NOCYCLE
 } ]              : 최대값이나 최소값 이후 순환의 여부 (기본 NOCYCLE)
  [ { 
CACHE n | NOCACHE } ]            : 메모리에 유지할 값의 수 (기본 20)

2. 수정
ALTER SEQUENCE Sequence이름
  [ INCREMENT BY n ]
  [ { MAXVALUE n | NOMAXVALUE } ]
  [ { MINVALUE n | NOMINVALUE } ]
  [ { CYCLE | NOCYCLE } ]
  [ { CACHE n | NOCACHE } ]
※ 주의 1 : 수정 가능한 권한의 소유
          : MAX은 기존보다 크게 설정
          : START WITH 옵션은 변경 불가, 수정하려면 삭제 후 생성

3. 삭제
   DROP SEQUENCE Sequence이름 ;

 

 예제
 

SQL> INSERT INTO c_emp (id, name, salary)
     VALUES (c_emp_id.
NEXTVAL, '개나리', 1500 ); ※ NEXTVAL을 이용해서 다음 Seguence값을 입력

SQL> SELECT  c_emp_id.CURRVAL
     FROM  SYS.dual ;                            ※ 현재 Sequence에 대한 값 확인

   

 

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - Export  (0) 2017.01.21
Oracle - SQL*PLUS  (0) 2017.01.21
Oracle - Gateway 사용 하기  (0) 2017.01.21
Oracle - Export/Imprt  (0) 2017.01.21
Oracle - DB Scheduler_스케쥴러  (0) 2017.01.21
Posted by 농부지기
,

[ Oracle Gateway 사용 하기 ]

 

출처:http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=42&MAEULNO=17&no=20&page=1SQL Server 와 Oracle 을 통합 운영하는 데 SQL Server에서 Oracle과의 통합 운영은 연결된 서버나 Oracle 게시자 복제, Oracle 구독자 복제 등 다양한 형태를 제공합니다. 그렇지만 Oracle에서 제공하는 SQL Server로의 접근은 Oracle Gateway Service를 통해야만 가능합니다.

이러한 기능을 제공하고 있지만 워낙 비싼 라이센스를 지불해야 하므로 사실상의 효율성을 없지만 많은 분들이 궁금해 해서 다음과 같이 간략하게 Oracle Gateway Service For Microsoft SQL Server를 구성하는 방법에 대해서 설명합니다.

 

1) Transparent Gateway

Oracle은 이기종과의 연결 작업을 위해서 Gateway Service 기능을 제공합니다. Oracle9i 이전 버전에는 TG4MSQL이라는 이름으로 별도로 제공되던 제품이 Oracle9i 버전부터 제품 CD에 포함되어 있습니다. , 설치 및 사용을 위해서는 반드시 별도의 라이센스를 구매해야만 합니다.다음에서 Oracle Transparent Gateway For Microsoft SQL Server(이하 TG4MSQL)를 구성하고 TG4MSQL을 통해서 SQL Server와 통합된 쿼리를 사용하는 방법에 대해서 살펴봅니다.

TG4MSQL 구성은 원본 Oracle 인스턴스 및 TG4MSQL 인스턴스, 그리고 연결 대상 SQL Server로 구성되며 다음 다섯 단계로 진행하여 설치 및 구성을 완료합니다.

 

 Oracle Universal Installer를 통한 Transparent Gateway For Microsoft SQL Server 설치 및 설정

 SQL Server 및 원본 Oracle 인스턴스에서 각각 TG4MSQL용 계정 생성 및 권한 부여

 TG4MSQL 인스턴스 리스너 구성

④ 원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 tnsname.ora 파일 구성

⑤ 원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 데이터베이스 링크 구성

⑥ 원본 Oracle 인스턴스에서 데이터베이스 링크를 통한 연결 대상 SQL Server로 쿼리 수행

 

2) TG4MSQL 설치

다음과 같이 Oracle Universal Installer를 실행하고 사용 가능한 제품 구성 요소 선택 페이지에서 Oracle Transparent Gateway For Microsoft SQL Server를 선택하고 [다음] 버튼을 누릅니다.

 

 

 

이어 지는 설치 과정에서 다음과 같이 연결하고자 하는 SQL Server 이름과 데이터베이스 이름을 입력합니다.

 

 

 이 사항은 TG4MSQL을 설치 완료한 뒤 %ORACLE_HOME% tg4msql\admin 폴더의 initTG4MSQL.ora 초기 파라미터 파일에서 수정할 수 있습니다. 주의 사항은 명명된 인스턴스의 경우에는 TG4MSQL이 인식하지 못하므로 SQL Server Configuration Manager에서 서버의 별칭을 생성하여 접속해야 합니다.

 

3) TG4MSQL 인스턴스 리스너를 구성

 

설치가 완료되면 다음과 같은 내용을 추가하여 TG4MSQL 인스턴스 리스너를 구성합니다.

TG4MSQL 인스턴스 리스너에 다음과 같은 내용을 추가합니다.

 

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = tg4msql) <--지정한 SID

(ORACLE_HOME = G:\oracle\ora92)<-- 설치 시 지정한 홈 폴더

  (PROGRAM = tg4msql)

)

)

 

4) 원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 클라이언트 구성 설정

 

원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 tnsname.ora 파일을 다음과 같이  구성합니다.

 

 

TG4MSQL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = home1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = tg4msql)

    )

    (HS = OK) ß 이 부분 추가 확인

)

 

 


Net Manager를 사용하는 경우에는 서비스 이름으로 [TG4MSQL]을 지정하고 서비스 ID의 고급 버튼을 누른고 이기종 서비스 체크 박스를 선택합니다.

 

 

 

5) 원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 데이터베이스 링크 구성

 

원본 Oracle 인스턴스에서 TG4MSQL 인스턴스에 대한 다음과 같이 데이터베이스 링크를 생성합니다.

 

CREATE PUBLIC DATABASE LINK [LINK]

CONNECT TO [계정명] IDENTIFIED BY [패스워드]

USING '[GATEWAY 서비스명]'

 

 


이때 해당 계정은 Oracle 원본 인스턴스와 대상 SQL Server에 모두 존재해야 합니다.

 

6) TG4MSQL 구성 확인

다음과 같이 TG4MSQL을 통해서 Oracle 원본 인스턴스에서 SQL Server로 쿼리를 수행하여

TG4MSQL이 올바르게 구성되었음을 확인합니다.

 

SELECT  * FROM table_name@db_link_name ;

 

 

 


다음은 SQL Server 2005 Adventureworks.Person.AddressType 테이블에 테스트 쿼리를 수행한 결과입니다.

 

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - SQL*PLUS  (0) 2017.01.21
Oracle - Sequence  (0) 2017.01.21
Oracle - Export/Imprt  (0) 2017.01.21
Oracle - DB Scheduler_스케쥴러  (0) 2017.01.21
Oracle - DB Link  (0) 2017.01.21
Posted by 농부지기
,

[ Oracle - Export/Imprt ]

 

 1. Export

        1. DOS 실행

        2. C:\ora81\bin> exp   user_id/password@sid

        3. 파일 > 파일명   : 만 필요한대로 변경 함

        * 나머지는 모두 yes 로 하면 됨

        ------------------------------------------------------------------

        db export : exp userid=hrms/hrms1234 owner=hrms file=20050628.dmp

 

   2. Import

       db import :imp userid=hrms_py/hrms1234 file=20050628.dmp          fromuser=hrms touser=hrms_py

                        imp userid=hrms_py/hrms1234  file=/backup/20050218.dmp  fromuser=dump안의사용자  touser=import해서사용할사용자

 

   3. 별첨 문서

      1. OTN에서 제공하는 문서 - 

Export.Import.ppt

 

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - Sequence  (0) 2017.01.21
Oracle - Gateway 사용 하기  (0) 2017.01.21
Oracle - DB Scheduler_스케쥴러  (0) 2017.01.21
Oracle - DB Link  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Posted by 농부지기
,

 

[ Oracle - DB Scheduler_스케쥴러 ]

 

오라클 Scheduler

0. 왜 사용했을까?

 

WEB 프로젝트 수행 도중 LINK된 TABLE의 Data를 1분간격으로 가져와서 WEB Server 내 DB의

Summary Table에 Insert 또는 Update 처리를 하는프로그램이 필요하게 되었다.

 

먼저 PL/SQL로 프로시져를 작성하고 이를 호출하여 사용하는데 대개의 처리방식은 다음과 같다.

 

- C프로그램: OCI (로켓프로그램에 사용된다나 뭐라나.. 암튼 일반적으로는 거의 사용 안함?)

- C프로그램: Pro*C (가장 일반적으로 사용하는 방법)

- 자바: JDBC사용

- PL/SQL서버페이지

- 내장패키지 DBMS_JOB을 이용 (Oracle DB가 주기적 실행)

 

위 처리방법 중 DBMS_JOB을 알아본 결과 사용법도 쉽고 C프로그램 안해도 되고 성능도 좋은것 같아 사용하기로 결정!

 

1. DBMS_JOB 이란

 

DBMS_JOB이란 쉽게 말해 오라클에서 주기적으로 수행되는 Backup작업이나, 쿼리나 Stored Procedure등의

JOB들을을 시간단위나 일단위나 월단위 등 주기적인 예약 작업으로 등록하여 동작할 수 있도록 하는 스케쥴러라고

보시면 됩니다. UNIX에서 cron에 등록하여 사용하는 것과 유사한데 차이점은 cron job은 OS가 직접 관리하고

실행하지만 DBMS_JOB에 등록된 JOB은 오라클이 관리를 한다는 것입니다.

 

2.DBMS_JOB PACKAGE의 사용 방법과 예제

 

DBMS_JOB package를 이용하여 수행시킬 수 있는데, 이것을 위해서는 SNP background process start되어

있어야 합니다.

다음의 parameter를 init.ora file에 설정한 후 oracle을 startup하면 SNP process가 올라옵니다.

 

job_queue_processes = 1

-> 이 파라미터는 snp process를 몇 개 띄울지를 결정한다.

 

default=0

job_queue_interval = 60

-> 이 파라미터는 snp process가 깨어나는 간격을 초로 설정한다.

 

DBMS_JOB Package는 다음과 같은 procedure를 이용하여 사용한다.

 

DBMS_JOB.submit(job          out binary_integer,

                                 what         in  varchar2,

                                 next_date in  date         defalut   sysdate,

                                 interval     in  varchar2  default   'null',

                                 no_parse in  boolean   default   false )

 

-> dbms_job.submit  procedure는 job의 내용을 정의하고 oracle이 job을 수행할 수 있도록 한다.

    다음의 예제를 통하여 실제 사용법을 알아보자.

 

[ 예제 ] file jobcre.sql

 

begin

dbms_job.submit(:jobno,      -- job 의 번호

                            'insert into scott.testdate values(1, sysdate);',    

                                            -- job의 내용 : ' '으로 감싸준다.

                                            -- procedure를 실행하는 경우 ' username.procedure_name;' 만 쓰면 된다.

                            sysdate,   -- job이 실행될 시간

                            'sysdate + 5/24/60' ,

                                            -- job이 실행되는 간격 , 위의 경우는 5분마다 실행하도록 했다.

                                            -- ' '으로 감싸준다.

                            FALSE );

end;

/

 

$ sqlplus scott/tiger

 

SQL> variable jobno number;

SQL> @jobcre

SQL> print jobno -- job 번호 확인 : 여기서는 166번

SQL> exec dbms_job.run(166);

SQL> commit;

 

지금부터 interval에 따라 job이 실행된다.

 

스케쥴러 가능내역 확인 테이블

 

SQL> col what format a20

SQL> select what, job, next_date, next_sec, failures, broken

           from user_jobs;

 

그 외에

 

SQL> exec dbms_job.run(jobno);

- job의 강제 실행, job이 16번 fail되어 broken된 경우는

위의 명령어로 강제로 run을 시켜서 실행되면 다시 interval마다

실행된다.

 

 SQL> exec dbms_job.broken(jobno, TRUE);

- job을 disable시킴

 

 SQL> exec dbms_job.remove(jobno);

- job의 삭제

 

 snapshot과 job과의 관계

======================

snapshot 도 job 으로 등록되어 돌아갑니다.

즉, select job, what from dba_jobs; 를 조회하면,

what 부분에 snapshot 이 정의되어 있습니다.

 

따라서, snapshot 에 대한 disable 방법 등은 job 과 같습니다.

 

interval 시간 지정 예제

======================

1. 10분에 한번씩 실행하는 경우

    sysdate + 1/24/6 또는 sysdate + 1/144

    -> 1/24 (1시간-60분) / 6 : 10분 단위

    1/144 : 24*6 으로 나누어도 같은 의미가 된다.

 

2. 1분에 한번으로 지정하는 경우

    sysdate + 1/24/60 또는 sysdate + 1/1440

 

3. 매일 새벽 2시로 지정하는 경우

    trunc(sysdate) + 1 + 2/24 -> 다음날 새벽 2시를 지정함.

 

4. 매일 밤 11시로 지정하는 경우

    trunc(sysdate) + 23/24 -> 오늘 밤 11시를 지정했음.

 

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - Gateway 사용 하기  (0) 2017.01.21
Oracle - Export/Imprt  (0) 2017.01.21
Oracle - DB Link  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Posted by 농부지기
,

[ Oracle - DB Link ]

 



CREATE PUBLIC DATABASE LINK "Link명"
CONNECT TO DB이용자ID
IDENTIFIED BY "DB이용자비밀번호"
USING '(DESCRIPTION = 
                 (ADDRESS_LIST =
                        (ADDRES = (PROTOCAL = TCP)<HOST = 원격DB IP)(PORT = 1521))
                 )
                 (CONNECT_DATA = 
                       (SERVICE_NAME = 원격DB SID)
                 )
             )';

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - Export/Imprt  (0) 2017.01.21
Oracle - DB Scheduler_스케쥴러  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Oracle - DataLink_예제1  (0) 2017.01.21
Posted by 농부지기
,

[ Oracle - DATABASE LINK 사용 방법 ]

 

Database Link(데이터베이스 링크)
먼저 디비 링크를 사용하기 위해서는 v$parameter 에 global_names=false로 되어 있어야 합니다.. 
init.ora를 고치던지.아님 alter system set global_names=false;로 해 줘야 합니다. 
그리고 grant create database link to scott; 로 해당 유저한테 권한을 부여 합니다. 
그리고 tnsnames.ora파일을 수정해 해당 연결하고자 하는 database의 알리아스를 만들어 주면 됩니다. 

우선 고려되어야 사항은 ORACLE INSTANCE가 두 개 이상이고 각기 다른 PLATFORM에서 운용된다는 가정하에서 각각의 HOST NAME과 ORACLE_SID는 다르고 NLS_CHARACTER_SET은 동일하게 되어 있어야 합니다.

만약 같은 MACHINE에서 INSTANCE의 ORACLE_SID가 같다면 TNS ERROR가 발생할 것이다. 
또한 미래를 위해 다른 MACHINE이라 할지라도 ORACLE_SID는 규칙에 의해 다르게 가져가는 것이 좋습니다.
그리고, NLS_CHARACTER_SET이 동일하게 되어 있지 않으면 DATA 입/출력 시 한글 데이타가 ?????로 나타날 것입니다.

그럼 환경 점검이 끝났으니 ORACLE7에서 ORACLE V6(ORACLE7의 경우도 비슷)에 있는 TABLE의 DATA를 db link를 이용하여 SELECT하거나 VIEW를 작성하여 보겠습니다.

HOST NAME    :      HP7    ->    SUN7       
ORACLE_SID   :      ORA7   -     ORATEST  이라 할 때

   1)  HP7 에서 SUN7로 DBLINK생성하기.

       scott/tiger 로 Login

       SQL> create public database link HP7TOSUN7
            connect to scott identified by tiger 
            using 'ORATEST';
       로 하면 된다.

       이때 V2인 경우의 ORATEST는 $ORACLE_HOME/network/admin directory의
       tnsnames.ora file 내에 지정된 service name이다.
       tnsnames.ora의 service name이 잘 setting 되어 있는지 확인하는 방법
       : SQL*Plus scott/tiger@service name했을 때, SQL*Plus에 log-in되어야
       합니다.

   2> SUN7 에 있는 TABLE의 select 및 view(view는 필요에 따라 생성) 작성, 
      HP에서 작업
     
       SQL> select * from emp[at]HP7TOSUN7;

       SQL> create view emp_view as select * from emp[at]HP7TOSUN7  a
                 where a.deptno = 10;
                     
   3> HP7 에서 SYNONYM을 생성하여 사용하는 경우 

       SQL> create synonym emp for emp[at]HP7TOSUN7;
       SQL> select * from emp;

로 한다면 간단히 분산 DB의 환경에서 사용 할 수 있습니다.

select 를 제외한 DML(insert,update,delete) 를 하려면,sqlplus log-in 시에 다음과 같은 option 이 display 되어야 합니다.

   SQL*Plus: Release 3.3.3.0.0 - Production on Mon Jan 19 14:18:47 1998
   Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.

   Connected to:
   Oracle7 Server Release 7.3.3.4.0 with the 64-bit option - Production
   Release With the distributed, ......
   ------------------------------------

   remote 작업의 예

   select * from table_name[at]HP7TOSUN7;
   insert into table_name[at]HP7TOSUN7;
   delete table_name[at]HP7TOSUN7;

   (단 SERVER TO SERVER로 NETWORK 환경이 구축되어 있어야 하고, 
   listener 가 반드시 떠 있어야 합니다.)

SQL>   create public database link link_test
  2    connect to scott identified by tiger
  3    using 'haksan21'; -- service name

데이타베이스 링크가 생성되었습니다.

SQL>  select * from all_db_links;

OWNER      DB_LINK              USERNAME   HOST       CREATED
---------- -------------------- ---------- ---------- --------
PUBLIC     HSA.WORLD            HSA        haksan21   99/03/12
PUBLIC     HSE.WORLD            HSE        haksan21   99/03/30
PUBLIC     HSR.WORLD            HSR        haksan21   99/03/23
PUBLIC     LINK_TEST.WORLD      SCOTT      haksan21   99/05/07

SQL> drop public database link link_test;

데이타베이스 링크가 삭제되었습니다.

SQL> select * from all_db_links;

OWNER      DB_LINK              USERNAME   HOST       CREATED
---------- -------------------- ---------- ---------- --------
PUBLIC     HSA.WORLD            HSA        haksan21   99/03/12
PUBLIC     HSE.WORLD            HSE        haksan21   99/03/30
PUBLIC     HSR.WORLD            HSR        haksan21   99/03/23

** export, import 작업을 수행할 경우 (또는 동일한 환경으로 새로운 유저를 만들경우) ??

Synonym 처음
* 목적 : 다른 사용자가 소유한 테이블을 쉽게 사용하기 위해
         OBject 이름을 짧게 하기 위해

* SYNONYM의 정보를 가진 Data Dictionary
  USER_SYNONYMS
  ALL_SYNONYMS

* 예문
  create synonym tmp00 for fsr.tmp00;

* 삭제 : drop synonym synonym_name

*** db link의 사용

    다른 기계의 데이타베이스를 사용하고자 할 때 이용
    
    create public database link link_name
    connect to user_name identified by password
    using 'db_alias_name';
    
    확인 : all_db_links
    
    사용 : select * from user_name.table_name[at]link_name;
    synonym : create synonym synonym_name for user_name.table_name[at]link_name;

 

Posted by 농부지기
,

[ Oracle - DATABASE LINK 사용 방법 ]

 

먼저 한글 data간의 전달을 위해 두 db간의 character set이 같아야 합니다.

character set을 확인하는 방법은

 

sqlplus system/manager

select * from v$nls_parameters;

하여 보면 nls_characterset에 대한 값이 나옵니다.

 

     

    예를 위해 다음과 같은 환경을 가정하겠습니다.

           

                      HOST NAME : HP7 - SUN7

               

                      ORACLE_SID : ORA7 - ORATEST

           

    이라 할 때

 

    1) HP7 에서 SUN7로 DB LINK 생성하기.

 

            scott/tiger 로 Login

 

        SQL*NET V1의 경우

            SQL> create public database link HP7TOSUN6

                                connect to scott identified by tiger

                                using 't:SUN7:ORATEST';

 

        (rdbms 7.3 이상은 SQL*NET v2 를 사용하십시오)

 

 

        SQL*NET V2의 경우

            SQL> create public database link HP7TOSUN7

                      connect to scott identified by tiger

                      using 'ORATEST';

 

            로 하면 된다.

 

            이 때 V2인 경우의 ORATEST는 $ORACLE_HOME/network/admin/ directory의

            tnsnames.ora file 내에 지정된 service name이다.

            tnsnames.ora의 service name이 잘 setting 되어 있는지 확인하는 방법

            : SQL*Plus scott/tiger@service name했을 때, SQL*Plus에 log-in되어야

            합니다.

           

 

    2> SUN7 에 있는 TABLE의 select 및 view(view는 필요에 따라 생성) 작성,

          HP에서 작업

         

            SQL> select * from emp@HP7TOSUN7;

 

            SQL> create view emp_view as select *

                      from emp@HP7TOSUN7 a

                      where a.deptno = 10;

                                         

    3> HP7 에서 SYNONYM을 생성하여 사용하는 경우

 

                  SQL> create synonym emp for emp@HP7TOSUN7;

                  SQL> select * from emp;

 

      로 한다면 간단히 분산 DB의 환경에서 사용할 수 있습니다.

 

    select를 제외한 DML(insert, update, delete)을 하려면,

    sql*plus log-in 시에 다음과 같은 option이 display 되어야 합니다.

 

    SQL*Plus: Release 3.3.3.0.0 - Production on Mon Jan 19 14:18:47 1998

    Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.

 

    Connected to:

    Oracle7 Server Release 7.3.3.4.0 with the 64-bit option - Production

    Release With the distributed, ......

    ------------------------------------

 

    remote 작업의 예

 

    select * from table_name@HP7TOSUN7;

    insert into table_name@HP7TOSUN7;

    delete table_name@HP7TOSUN7;

    ...

 

    (단 SERVER TO SERVER로 NETWORK 환경이 구축되어 있어야 하고,

    listener 가 반드시 떠 있어야 합니다.)

 

 

Posted by 농부지기
,

[ Oracle - DataLink_예제1 ]

 

1.예제

 

initXXXX.ora 에서  global_names = false   // false 로 설정되어 있지 않으면 연결되지 않는다... 설정후 오라클을 다시 올린다...

 

create public database link choi_link

connect to sepsDb identified by seps02

using 'seps'

 

 

select * from tb_lca_allo_mst@choi_link

 

 

설명....

choi_link : link할 이름

sepsDb : trans.ora 에서 설정해주 이름

seps02 : password

seps   : id

 

참고 사이트 : http://www.koug.net/

 

Posted by 농부지기
,

[ Oracle - DB Link 생성 방법 및 SYNONYM 생성 방법 ]

 


☞ 정의 : 2개의 USER간에 Table을 select/insert/update/delete를 할 수 있도록 Oracle에서 재공하는 Object이다.

1. 작업 환경 (예)
 

1. DB User 2개 필요
    A. 첫 번째 db user    id - [EHR],    pass - [PAY]
    B. 두 번재 db user    id - [MIG],     pass - [RET]

2. EHR  user에서 MIG user 에 있는 table을 사용하고 싶다.

3. EHR  user에 [DBA 권한] 또는 [LINK를 생성]할 수 있는 권한이 존재 해야 된다.
    [DBA 권한 부여 방법]
        a. SYS나, SYSTEM 으로  Login 한다.
        b. GRANT  DBA TO  EHR ;
    [ 또는 ]
             grant create database link to EHR; 
    [ 또는 ]
              EHR User에 권한을 부여하지 않고, DBA권한이 있는 User로 접속후 해야 된다.

4. 문자 character 가 서로 동일 해야 된다.
    [문자 Character 동일 방법 검사]
        a. select * from v$nls_parameters; 
            하면  nls_characterset  에 대한 값을 확인 한다.
        b.  EHR, MIG 각 USER 별로 확인 한다.


2. DB Link 생성 및 Synonym 생성

 

1. DB Link 생성
    ;    
    A. EHR  User  또는 DBA 권한이 있는 User 로 Login 한다.
    B. EHR  User에서  MIG 의 Table을 사용하도록 DB Link를 생성한다.
    C. create public database link ehr_TO_mig
        connect to MIG identified by RET 
        using 'EHR';

2. DB Link를 이용해서 상대방 테이블 접속하기
    A. 사용형식 : SELECT * FROM   상대방table_name@db_Link_name;
    B. 사용  예  : SELECT * FROM   T_payment@ehr_TO_mig;.

3. Synonym 생성하기
    A. 형식   :  CREATE SYNONYM  ehr_user가_사용할_table_name
                                                   FOR 상대방table_name@db_link_name;
    B. 생성예 : CREATE SYNONYM T_payment@ehr_TO_mig FOR T_payment@ehr_TO_mig;
    C. Synonym은 모든 table에 각각 한 개씩 만들어야 사용할 수 있다.


3. 사용 예제

 

1. DB Link를 생성 후 사용방법
    A. SELECT * FROM   T_payment@ehr_TO_mig;.`

2. Synonym 생성 후 사용방법
    A. SELECT * FROM   T_payment;


4. DB Link 삭제 및 Synonym 삭제

 

1. DB Link 삭제
    A.  

2. Synonym 삭제
    A.  사용형식 : DROP SYNONYM  synonym_table_name;
    B.  사용  예  : DROP SYNONYM  T_payment ;


 

'(DB) Oracle > Object & Utility' 카테고리의 다른 글

Oracle - DB Scheduler_스케쥴러  (0) 2017.01.21
Oracle - DB Link  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Oracle - DATABASE LINK 사용 방법  (0) 2017.01.21
Oracle - DataLink_예제1  (0) 2017.01.21
Posted by 농부지기
,