728x90
ORA-01031 오류 해결 방법은?
Troubleshoot Oracle XE SYSDBA Login on Windows VDI
ORA-01031 오류 해결: "insufficient privileges"
ORA-01031은 권한 부족 오류입니다. 사용자가 특정 작업을 수행할 필요한 권한이 없을 때 발생합니다. VDI 환경에서 sqlplus / as sysdba로 접속하거나 특정 SQL을 실행할 때 자주 발생합니다.
1. 즉시 확인: 오류 발생 맥락 파악
시나리오 A: sqlplus / as sysdba 실행 시
cmd
sqlplus / as sysdba
오류 메시지:
ERROR: ORA-01031: insufficient privileges
원인: Windows OS 인증 실패 (ORA_DBA 그룹 미소속, sqlnet.ora 설정)
시나리오 B: 일반 사용자로 특정 SQL 실행 시
sql
CREATE TABLE test_table (id NUMBER);
오류 메시지:
ORA-01031: insufficient privileges
원인: CREATE TABLE 권한 없음
2. 시나리오 A 해결: OS 인증 실패 (VDI 환경)
해결 방법 1: sqlnet.ora에서 OS 인증 비활성화
파일 경로:
cmd
C:\app\<사용자>\product\21c\network\admin\sqlnet.ora
수정 전:
ini
SQLNET.AUTHENTICATION_SERVICES = (NTS)
수정 후:
ini
SQLNET.AUTHENTICATION_SERVICES = (NONE)
변경 후:
cmd
:: 리스너 재시작
lsnrctl stop
lsnrctl start
:: 이제 비밀번호로 접속
sqlplus sys/YourPassword@XE as sysdba
해결 방법 2: VDI 사용자를 ORA_DBA 그룹에 추가 (관리자 권한 필요)
단계별 작업:
-
컴퓨터 관리 실행:cmd
compmgmt.msc -
로컬 사용자 및 그룹 → 그룹 → ORA_DBA 더블클릭
-
추가 → 고급 → 검색 → VDI 로그인 계정 선택
-
확인 → 적용
즉시 적용: VDI에서 로그아웃 후 재로그인 필요
검증:
cmd
:: VDI 사용자가 ORA_DBA 그룹에 속하는지 확인
net localgroup ORA_DBA
해결 방법 3: 비밀번호 파일 확인
Oracle XE는 기본적으로 비밀번호 파일을 사용합니다. 파일이 손상되었거나 없을 수 있습니다.
파일 경로:
cmd
C:\app\<사용자>\product\21c\database\PWDxe.ora
파일이 없거나 손상된 경우:
cmd
:: 비밀번호 파일 재생성 (관리자 권한)
orapwd file=C:\app\<사용자>\product\21c\database\PWDxe.ora password=YourPassword entries=10
3. 시나리오 B 해결: 일반 사용자 권한 부여
3-A. 권한 확인
sql
-- 현재 사용자의 권한 확인
SELECT * FROM session_privs;
-- 현재 사용자의 롤 확인
SELECT * FROM session_roles;
3-B. 필요한 권한 부여 (SYSDBA로 실행)
sql
-- CONNECT 및 RESOURCE 롤 부여 (기본 개발자 권한)
GRANT CONNECT, RESOURCE TO 사용자명;
-- 특정 권한 부여
GRANT CREATE TABLE TO 사용자명;
GRANT CREATE VIEW TO 사용자명;
GRANT CREATE PROCEDURE TO 사용자명;
-- 모든 테이블에 대한 SELECT 권한 부여
GRANT SELECT ANY TABLE TO 사용자명;
-- 롤을 부여하고 기본 롤로 설정
ALTER USER 사용자명 DEFAULT ROLE CONNECT, RESOURCE;
3-C. SYSDBA 권한 부여 (최고 관리자)
sql
-- 사용자에게 SYSDBA 권한 부여 (Windows에서만 유효)
GRANT SYSDBA TO 사용자명;
-- 비밀번호 파일에 등록 확인
SELECT * FROM v$pwfile_users;
4. 데이터베이스 상태 확인 (추가 검사)
데이터베이스가 MOUNT 상태가 아닌 OPEN 상태인지 확인:
sql
Copy
-- 데이터베이스 상태 확인 (SYSDBA로 접속)
SELECT status FROM v$instance;
-- 만약 MOUNT 상태라면 OPEN으로 변경
ALTER DATABASE OPEN;
5. VDI 환경 특수 대응
시나리오 1: 도메인 정책으로 인해 ORA_DBA 그룹 수정 불가
-
해결: sqlnet.ora에서 SQLNET.AUTHENTICATION_SERVICES = (NONE) 설정
-
대신: 비밀번호 인증만 사용 (sqlplus sys/password@XE as sysdba)
시나리오 2: Non-persistent VDI에서 권한 유실
-
해결: 권한 부여 SQL을 시작 스크립트에 포함
-
백업: C:\OracleXE_Grant.sql 파일 생성 및 실행
sql
Copy
-- 권한 부여 스크립트 예시
GRANT CONNECT, RESOURCE TO VDI_USER;
GRANT CREATE TABLE TO VDI_USER;
6. 자주 발생하는 VDI 환경 오류 조합
조합: ORA-12638 → ORA-01031
cmd
Copy
:: 1단계: sqlnet.ora에서 NTS에서 NONE으로 변경
:: 2단계: ORA_DBA 그룹에 사용자 추가
:: 3단계: net stop/start OracleServiceXE
:: 4단계: sqlplus sys/YourPassword@XE as sysdba
조합: ORA-01031 → ORA-28547
cmd
:: 1단계: listener.ora에 정적 등록 추가 (SID_LIST_LISTENER)
:: 2단계: sqlnet.ora에서 NTS에서 NONE으로 변경
:: 3단계: lsnrctl stop/start
:: 4단계: ALTER SYSTEM REGISTER;
최종 해결 체크리스트
-
[ ] sqlnet.ora에서 SQLNET.AUTHENTICATION_SERVICES = (NONE) 설정
-
[ ] VDI 사용자가 ORA_DBA 로컬 그룹에 속하는지 확인
-
[ ] 비밀번호 파일 PWDxe.ora가 존재하는지 확인
-
[ ] 필요한 권한을 GRANT 문으로 부여
-
[ ] 데이터베이스가 OPEN 상태인지 확인
-
[ ] Oracle 서비스가 LocalSystem 계정으로 실행되는지 확인
결론
VDI 환경에서 ORA-01031 해결의 핵심:
-
OS 인증 비활성화 (sqlnet.ora 수정)
-
필요한 권한 부여 (GRANT 문 실행)
-
비밀번호 인증 사용 (sqlplus sys/password@XE as sysdba)
특히 VDI에서는 도메인 정책으로 OS 인증이 차단될 수 있으므로, 비밀번호 인증 방식을 기본으로 사용하는 것이 가장 안전합니다.
728x90
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| Apache Kafka (0) | 2025.11.11 |
|---|---|
| 엑셀 | 날짜를 요일로 표시하는 2가지 방법 | 사용자 지정 (0) | 2025.11.11 |
| ORA-1228547 오류 해결 방법은? (0) | 2025.11.10 |
| ORA-12638 오류 해결: "Credential retrieval failed" (0) | 2025.11.10 |
| DBeaver Oracle XE 연결 오류 "소켓에서 읽을 데이터가 없습니다" (0) | 2025.11.08 |