programing

다른 사용자가 소유한 데이터베이스 링크 생성을 위한 Oracle 구문

starjava 2023. 10. 19. 21:49
반응형

다른 사용자가 소유한 데이터베이스 링크 생성을 위한 Oracle 구문

db 링크를 만드는 일반적인 구문은 다음과 같습니다.

create database link remote_db_link 
connect to remote_user 
identified by remote_password 
using 'remote_db'

하지만 저는 제 DB 링크가 생성된 후 다른 계정으로 소유하고 싶습니다.이것을 할 방법이 방법이 있습니까?

다음은 작동하지 않습니다.

create database link anotheruser.remote_db_link 
connect to remote_user 
identified by remote_password 
using 'remote_db'

구문에서 다른 스키마에 데이터베이스 링크를 만들 수 없다는 점에서 Sathya가 맞습니다.하지만..

해결 방법

다른 사용자의 스키마에 데이터베이스 링크를 만들 수 있습니다.anotheruser가지다CREATE DATABASE LINK권한 및 연결되어 있는 사용자를 has로 지정합니다.CREATE ANY PROCEDURE특권.

제가 사용하는 해결 방법은 다음과 같습니다.

create procedure 다른 사용자 "tmp_doit_200906121431"시작한다.즉시 실행.데이터베이스 링크 remote_db_link 생성remote_user에 연결remote_password로 식별됨''remote_db'' 사용;끝;/시작한다.다른 사용자 "tmp_doit_200906121431";끝;/삭제 절차다른 사용자 "tmp_doit_200906121431"/

긴장 풀어요.먼저, 절차를 작성합니다.anotherusers의 스키마; 이 프로시저는CREATE DATABASE LINK내가 출마하고 싶다는 진술.

절차가 실행되면 절차의 소유자로서 실행되어 다음과 같이CREATE DATABASE LINK문장은 다음에 의해 실행됩니다.anotheruser.

절차 이름은 중요하지 않지만 기존 개체 이름과 충돌하지 않도록 해야 합니다.소문자(큰따옴표로 프로시저 이름을 포함)를 사용하고, "tmp"를 사용하여 이 개체를 "임시"로 표시하며, 현재 yyyymmddhh24miss를 프로시저 이름의 일부로 사용합니다.(저는 보통 DBA의 쿼리를 실행합니다.)일치하는 object_name이(가) 존재하지 않는지 확인하는 OBjects.)

이는 "일회성" 유형의 관리 기능의 경우 실행 가능한 해결책입니다.다른 사용자의 암호 저장, 암호 변경, 사용자로 연결, 저장된 다른 사용자의 암호를 다시 설정하는 방법보다 이 방법을 선호합니다.)

DBLinks에 대한 제한 - 다른 사용자의 스키마에 데이터베이스 링크를 만들 수 없으며, 스키마 이름으로 dblink의 수식을 지정할 수 없습니다.

SYS 사용자는 SYS의 모든 db 링크를 볼 수 있습니다.DBA_DB_LINKs 보기.해당 보기는 link$와 user$ 테이블을 사용합니다.평소와 같이 새로운 dblink를 생성할 수 있으며 link$ 테이블에 표시됩니다.그런 다음 소유자를 변경합니다(user$에서 id 사용). commit.다 했어요.

언급URL : https://stackoverflow.com/questions/988230/oracle-syntax-for-creating-database-link-owned-by-another-user

반응형