동일한 서버의 스키마에 대한 링크 인 데이터베이스 링크를 만들어야합니다. 이것에 사용할 특별한 키워드가 있습니까? (로컬 또는 로컬 호스트와 같음)원격 및 로컬이 동일한 서버 인 데이터베이스 링크를 만드는 방법
서버의 이름이 tnsnames에 있으며 내 문제의 일부일 수 있습니다.
계속하려면 데이터베이스 링크가 필요한 스크립트와 관련된 복잡한 상황이 있습니다.
동일한 서버의 스키마에 대한 링크 인 데이터베이스 링크를 만들어야합니다. 이것에 사용할 특별한 키워드가 있습니까? (로컬 또는 로컬 호스트와 같음)원격 및 로컬이 동일한 서버 인 데이터베이스 링크를 만드는 방법
서버의 이름이 tnsnames에 있으며 내 문제의 일부일 수 있습니다.
계속하려면 데이터베이스 링크가 필요한 스크립트와 관련된 복잡한 상황이 있습니다.
DB 링크 메커니즘은 TNS를 거치므로 로컬 데이터베이스의 TNS 항목을 정의하고 링크에서 사용하십시오.
YourDBAlias =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yourHOST)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = YourDB)
)
)
이 항목은 또한 데이터베이스 서버의 TNSNAMES.ORA 파일에 존재해야합니다 :
클라이언트 TNSNAMES.ORA 파일과 같이 보입니다 항목을 포함해야합니다. 이 트릭 (당신은 TNS의 이름을 사용하는 가정)을해야
CREATE [PUBLIC] DATABASE LINK yourLinkName
CONNECT TO theSchema IDENTIFIED BY thePW
USING 'YourDBAlias';
:
다음으로 데이터베이스 링크를 생성합니다. 당신이 당신의 TNS 이름의 SQL *에서, 데이터베이스에 대해 무엇인지 확실하지 게다가 당신이 명령을 실행할 수있는 경우
또한 :
show parameter service_names
이렇게하면 이름 (들) 있음을 보여줍니다 데이터베이스 그것은 그것의 청취자로 등록됩니다. TNSNAMES.ORA 파일에서 해당 항목을 찾을 수 있어야합니다.
TNSNAMES.ORA를 수정할 수없는 경우 Easy Connect syntax을 DB 링크에도 사용할 수 있습니다. 청취자 가정 가 기본 포트에, 다음 SQL은 conneection 문자열을
선택 utl_inaddr.get_host_address을 얻을 것이다 || ': 1521 /'|| SYS_CONTEXT ('USERENV', 'INSTANCE_NAME')를 이중
에서"동일한 서버의 스키마"가 동일한 데이터베이스의 스키마를 의미하는 경우 문제가 발생할 수 있습니다. (예를 들어, 스크립트가 외부 데이터베이스로 스키마 외부의 모든 것을 처리하여 후속 SQL 조작을 병합하는 경우).
오라클은 루프백 링크를 다소 다르게 취급하며 링크에 데이터베이스 글로벌 이름을 사용하는 경우 ORA-02082 오류 ("루프백 데이터베이스 링크에는 연결 한정자가 있어야 함")가 표시 될 수 있습니다. 이 오류가 발생하면 "loopback"과 같이 링크 이름을 다르게 지정해야하지만 global_names 데이터베이스 매개 변수도 false로 설정해야합니다. 그렇지 않으면 "ORA-02085 : 데이터베이스 링크 someName이 someOtherName에 연결"을 받게됩니다.
+1 똑똑한 해결책! – DCookie