ORA-00922: 누락된 또는 부적합한 옵션 오류는 설명 그대로, 명령어의 누락 또는 유효하지 않은 부적합 옵션을 지정하여 발생합니다. 예를 들면 CREATE USER 명령은 반드시 IDENTIFIED 절이 따라와야 합니다. 그리고 BY 절이 IDENTIFIED 절 이후의 명령 값을 이루게 됩니다. IDENTIFIED 절을 누락하거나 IDENTIFIED BY를 모두 누락하는 경우에 다음과 같은 오류가 발생할 수 있습니다. 예제는 CREATE USER로 진행하였으나 다른 명령어도 포함됩니다.
- 누락 => missing
- 부적합 => invalid
CREATE USER USERNAME BY PW;
ERROR at line 1:
ORA-00922: missing or invalid option
CREATE USER USERNAME PW;
ERROR at line 1:
ORA-00922: missing or invalid option
Oracle Rename User (ALTER USER RENAME)
오라클 데이터베이스는 ALTER 명령어로 사용자의 이름을 변경하는 명령어를 지원하지 않습니다. 혹시라도 해당 명령을 실행하려고 시도하는 경우에는 ORA-00922: missing or invalid option 오류가 발생합니다.
--ORA-00922: missing or invalid option
ALTER USER OLD_USER_NAME RENAME TO NEW_USER_NAME;
UPDATE USER NAME
유저 뷰를 임의로 수정하는 방법도 있기는 한데 권장하지 않는 방법입니다. 변경 이전의 사용자가 그대로 접속이 된다든지, 해당 뷰에만 업데이트된 사용자가 다른 참조 객체에는 반영이 안 되어 예상치 않은 오류가 발생할 수 있기 때문입니다.
--권장하지 않습니다.
UPDATE SYS.USER$ SET NAME = 'NEW_USER_NAME' WHERE NAME = 'OLD_USER_NAME';
CREATE USER
유저를 새로 생성하는 방향으로 권장합니다. 다음은 예시 명령어입니다. 유저 생성 이후 롤은 부여하지 않고 간단한 권한만 부여하는 예제입니다.
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CREATE SESSION TO USER_NAME;
GRANT CREATE TABLE TO USER_NAME;
GRANT UNLIMITED TABLESPACE TO USER_NAME;
ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME QUOTA UNLIMITED ON TABLESPACE_NAME;
--디폴트 테이블스페이스만
ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME;
--할당만
ALTER USER USER_NAME QUOTA UNLIMITED ON TABLESPACE_NAME;