Oracle PL/SQL에서 데이터베이스 링크를 사용하는 방법에 대한 질문이 있습니다. 현재 데이터베이스에 데이터베이스 링크 (Database2)가 만들어져 있고 두 번째 데이터베이스에 액세스하는 데 사용하고 있다고 가정 해 봅시다. 모든 작업이 성공적으로Oracle 데이터베이스가 롤을 부여/취소하는 링크
select *from [email protected];
Update [email protected]
set Comment = 'Hello world!'
where CustomerID = 123;
이 예를 들면 다음과 같습니다.
그러나 Database2의 사용자에게 역할을 부여하거나 역할을 취소하려고한다고 가정 해 봅시다. 내 데이터베이스 링크를 통해이 작업을 수행 할 수 있습니까? 그렇다면 구문은 무엇입니까?
내가 DATABASE2에서 PL/SQL 세션을 열 경우, 구문은 다음과 같습니다 내 데이터베이스 링크를 사용하여 내 원래 데이터베이스에서이 작업을 수행 할 수있는 방법이
REVOKE some_role FROM bsmith;
GRANT some_other_role TO rjones;
있습니까?
왜 데이터베이스 링크를 통해 DDL을 수행 할 것인가? 이는 일반적으로 허용되지 않으며 일반적으로 나쁜 아이디어입니다. Database2에서 원하는 DDL을 수행하고 데이터베이스 링크 사용자에게 해당 프로 시저에 대한 실행 권한을 부여하는 저장 프로 시저를 만들 수 있습니다. 또는 실제로 교부금을 수행하는 database2에서 실행하는 작업을 까다로워 질 수 있으며 꽤 복잡한 아키텍처입니다. –
프로덕션 데이터베이스에서 특정 레코드 및 사용 권한을 가져 와서 내 개발 또는 테스트 데이터베이스로 복사하는 저장 프로 시저를 작성하고 있습니다. 레코드를 복사해도 문제는 없지만 권한을 부여하는 것은 훨씬 까다로울 수 있습니다. – MrMike