Oracle - ORA-01031: insufficient privileges
오라클에서 특정 계정에 권한 부여를 해볼까요? ^^ 우선, 지난 글에 설명한 컨테이너 환경의 경우,
docker - OracleXE 컨테이너 실행
; https://www.sysnet.pe.kr/2/0/12191
sqlplus를 찾아 들어가,
# find / -name sqlplus
...[생략]...
/u01/app/oracle/product/11.2.0/xe/bin/sqlplus
/u01/app/oracle/product/11.2.0/xe/sqlplus
# cd /u01/app/oracle/product/11.2.0/xe/bin
# ./sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Wed Jul 12 04:21:10 2023
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
("
docker - OracleXE 컨테이너 실행" 글에서 예를 든 container는 system 계정에 oracle 비밀번호입니다.)
이렇게 로그인하고 권한 부여 명령을 내렸더니,
SQL> grant execute on SYS.DBMS_LOCK to hr;
*
ERROR at line 1:
ORA-01031: insufficient privileges
권한 부족이라고 오류가 발생하는군요. ^^;
01031. 00000 - "insufficient privileges"
*Cause: An attempt was made to perform a database operation without
the necessary privileges.
*Action: Ask your database administrator or designated security
administrator to grant you the necessary privileges
관리자한테 필요한 특권을 요청하라고 하는데... system 사용자에게 저런 메시지는 도움이 되지는 않습니다. ^^; 혹시나 다른 sys 권한으로 로그인을 해볼까요?
Enter user-name: sys
Enter password:
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
(sys도 system과 동일하게 oracle 비밀번호인데,) 다행히 이번에는 다소 다른 메시지가 나옵니다. 그리고 이 힌트를 기반으로 검색해,
How to Resolve ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
; https://logic.edchen.org/how-to-resolve-ora-28009-connection-as-sys-should-be-as-sysdba-or-sysoper/
답을 찾았군요. ^^ 그러니까, system 계정으로 로그인 후 명시적으로 sysdba로 연결하는 명령을 내려야 하는 것입니다.
SQL> conn sys/oracle@xe as sysdba
Connected.
이후, 권한 변경 명령어가 이렇게 잘 수행됩니다. ^^
SQL> grant execute on SYS.DBMS_LOCK to hr;
Grant succeeded.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]