2017-12-19 185 views
0

Oracle 12c 데이터베이스가 있습니다. C## user1에 sysdba를 부여하고 싶습니다. 다음은 사용자 테이블입니다. enter image description hereORA-65175 : 루트에 로컬로 SYSDBA 권한을 부여 할 수 없습니다.

이 명령을 실행하면 오류가 발생할 수 있습니다.

grant sysdba to c##user1 container=current 

Error report - 
SQL Error: ORA-65175: cannot grant SYSDBA privilege locally in the root 
65175. 00000 - "cannot grant SYSDBA privilege locally in the root" 
*Cause: An attempt was made to grant SYSDBA privilege locally in the root 
      of a multitenant container database (CDB). 
*Action: While connected to the root, SYSDBA privilege can only be granted 
      commonly. 

이 명령을 실행하면 C## user1의 2 명의 사용자를 확보 할 수 있습니다.

enter image description here

grant sysdba to c##user1 container=all 

어떻게 C의 ## user1의에 SYSDBA 권한을 부여 할 수 있습니다. 감사합니다. Pls 나를 도와주세요.

답변

2

컨테이너 또는 루트 수준에서 C## user1에 sysdba를 부여하려고합니까? 이것은 Container is logically separate from the rest of the CDB과 같이 12C 내에서 중요한 구별입니다. CON_ID 열은 각 사용자가있는 곳을 알려줍니다. Con_ID=0은 행이 전체 CDB와 관련이 있다는 것을 의미하는 반면 CON_ID=1은 해당 행이 루트와 관련이 있음을 의미합니다.

현재 두 개의 "C## user1"사용자가 있는데 하나는 모든 컨테이너에있는 공통 사용자 (CON_ID=0)이고 다른 하나는 루트에 고유 한 로컬 사용자입니다.

전체 CDB에 SYSDBA 권한이있는 "C## user1"사용자가 이미 있으므로 원하는 경우 루트에 연결하여 로컬 "C## user1"사용자를 삭제할 수 있습니다. 해당 루트에만 SYSDBA 권한이있는 로컬 사용자를 원하면 "C## user1"공용 사용자를 삭제 한 다음 루트에 연결하고 sysdba를 로컬 사용자에게 부여하는 것이 좋습니다.

내가 연결된 기사의 제목이 "Overview of the Multitenant Architecture"인데, 어느 쪽이든 결정을 내리기 전에 리뷰를 제공하는 것이 좋습니다.

+0

답변을 주셔서 감사합니다. C## user1 (conId = 1)을 사용하는 경우 ora01031 오류가 발생합니다. 불충분 한 priviledge sys.dbms_session .;;;; 그리고 C# user1 (conId = 0) 테이블이나 뷰를 찾을 수 없을 때. 어떻게 해결할 수 있습니까? –

+1

"C## user1 (conId = 1)"은 SYSDBA 권한이없는 로컬 사용자이므로 DBMS_SESSION과 같은 많은 시스템 수준 프로 시저를 호출 할 수 없습니다. 일반적인 "C## user1 (conId = 0)"사용자에게 연결하면 루트가 아닌 CDB의 컨테이너에 로그인하게됩니다. "ALTER SESSION SET CONTAINER = CDB $ ROOT"또는 root 이름이 무엇이든 문제가 발생할 때까지 루트에있는 테이블을 볼 수 없습니다. – solllodolllo