ORA-01918 사용자 SCOTT 이 가 존재하지 않습니다 - ORA-01918 sayongja SCOTT i ga jonjaehaji anhseubnida

오늘같은 삽질을 안하려면...

1. 처음 데이터베이스에 접속하려면 사용자명에 sys as sysdba 입력후 접속한다.

2. 혹시 db가 꺼져있으면 startup 한다.

3. user를 만들어야 하는데 오라클 12c부터는 대소문자 구분을 해야하므로 명령어를 넣는다.

4. 사용자만들고 권한을 준다.


오늘의 삽질 순서 기록...

ORA-01918 사용자 SCOTT 이 가 존재하지 않습니다 - ORA-01918 sayongja SCOTT i ga jonjaehaji anhseubnida

오류발생 --->  ORA-01034: ORACLE not available

* 참고한 블로그 : doracle.tistory.com/44

db가 꺼져있는 상태에서 다른 계정으로 들어가려고 할때 생기는 에러라고함. 따라해봄.

C:\Users\sangn>sqlplus /nolog

SQL*Plus: Release 12.2.0.1.0 Production on 목 10월 22 19:38:05 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

SQL> conn sys/ as sysdba
비밀번호 입력:
휴지 인스턴스에 접속되었습니다.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 1694498816 bytes
Fixed Size                  8919680 bytes
Variable Size            1325401472 bytes
Database Buffers          352321536 bytes
Redo Buffers                7856128 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> conn scott/tiger
ERROR:
ORA-01017: 사용자명/비밀번호가 부적합, 로그온할 수 없습니다.


경고: 이제는 ORACLE에 연결되어 있지 않습니다.

왜 나는 연결안되고 또 에러가 생기는가...

사용자명에 "sys"만 넣으면 안되고 "sys as sysdba"라고 해야한단다

C:\Users\sangn>sqlplus

SQL*Plus: Release 12.2.0.1.0 Production on 목 10월 22 19:43:05 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

사용자명 입력: sys as sysdba
비밀번호 입력:

다음에 접속됨:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

접속성공함.

테이블을 만들어보자.

SQL> create user c##scott identified by tiger;
create user c##scott identified by tiger
            *
1행에 오류:
ORA-01920: 사용자명 'C##SCOTT'(이)가 다른 사용자나 롤 이름과 상충됩니다

언제 만들어놓은 거야...


계정이 잠겨서 그런거란다... 잠금해제하자.

참고블로그 : byhou.tistory.com/420

SQL> ALTER USER c##scott ACCOUNT UNLOCK;

사용자가 변경되었습니다.

SQL> alter user scott identified by tiger;
alter user scott identified by tiger
           *
1행에 오류:
ORA-01918: 사용자 'SCOTT'(이)가 존재하지 않습니다


SQL> alter user c##scott identified by tiger;

사용자가 변경되었습니다.

SQL> grant dba to c##scott;

권한이 부여되었습니다.

SQL> select * from all_users;
USERNAME
--------------------------------------------------------------------------------
   USER_ID CREATED  COMMON OR INHERI
---------- -------- ------ -- ------
DEFAULT_COLLATION
--------------------------------------------------------------------------------
IMPLIC ALL_SH
------ ------
C##SCOTT
       106 20/10/22 YES    N  NO
USING_NLS_COMP
NO     NO

새로만든 아이디(scott)로 다시 접속해보자.

C:\Users\sangn>sqlplus

SQL*Plus: Release 12.2.0.1.0 Production on 목 10월 22 20:12:16 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

사용자명 입력: scott
비밀번호 입력:
ERROR:
ORA-01017: 사용자명/비밀번호가 부적합, 로그온할 수 없습니다.

또 에러가 난다.


참고 블로그 : m.blog.naver.com/PostView.nhn?blogId=harusaring&logNo=221489528223&proxyReferer=https:%2F%2Fwww.google.com%2F

에러발생 시 아래 경로에 있는 sqlnet.ora 파일에 해당 옵션을 추가해 주면 된다고 한다.

​

C:\app\oracle\product\12.2.0\dbhome_1\network\admin\sqlnet.ora

​

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

참고 블로그 : m.blog.naver.com/PostView.nhn?blogId=firstpcb&logNo=220319407686&proxyReferer=https:%2F%2Fwww.google.com%2F

대소문자 구분도 해주었다.

그래도 에러가 남


왜인지 모르지만 순서를 바꾸니까 접속이 된다.... why??

참고 블로그 : nirsa.tistory.com/5

1. sqlplus sysdba로 접속후 계정생성전에 아래의 명령어 사용

SQL> ALTER SESSION SET "_ORACLE_SCRIPT"=true;

 : 오라클이 12c로 넘어가면서 계정 생성을 할 때, 계정명 앞에 C##을 붙여줘야 공통 사용자 생성이 가능해짐에 따라, 계정 생성할때마다 C##을 붙여주기 귀찮으니 위의 명령어를 사용하는 것임.

2. 사용자 생성하기

SQL> create user scott[사용자명] identified by tiger[비밀번호];

3. 권한부여하기

SQL> grant connect, resource to scott;

4. 접속해보기

SQL*Plus: Release 12.2.0.1.0 Production on 목 10월 22 20:55:34 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

사용자명 입력: scott
비밀번호 입력:
마지막 성공한 로그인 시간: 목 10월 22 2020 20:48:37 +09:00

다음에 접속됨:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

4시간만에 접속성공......

오라클을 설치하면 기본적으로 제공되는 계정들이 있다. SCOTT, HR 등의 계정(스키마)가 대표적인데, 해당 계정들에는 연습용으로 SQL을 실습할 수 있도록 샘플 데이터도 입력 되어있다. 하지만, 이러한 계정들은 설치 직후에 기본적으로 잠겨있기 떄문에 관리자(SYS, SYSTEM) 권한으로 특정 계정의 'UNLOCK' 상태를 해제해야 된다.

01. 관리자 권한으로 접속

특정한 계정의 Lock, Unlock을 설정하기 위해서는 dba 권한이 필요하다. SYS 계정을 DBA권한으로 접속을 한다. SYS 계정에 따로 패쓰워드를 설정하지 않았다면, 오라클을 설치하면서 입력한 패쓰워드를 입력하면 된다.

Command: SQLPLUS SYS/(password) AS SYSDBA

ORA-01918 사용자 SCOTT 이 가 존재하지 않습니다 - ORA-01918 sayongja SCOTT i ga jonjaehaji anhseubnida

02. 계정 잠금 해제

아래의 명령어로 SCOTT 계정의 잠금을 풀어줄 수 있다. IDENTIFIED BY 절 뒤에 SCOTT 계정에 부여할 새로운 비밀번호를 설정하면 된다.

SQL> ALTER USER SCOTT IDENTIFIED BY tiger ACCOUNT UNLOCK;

SQL> GRANT CREATE SESSION TO SCOTT;

SQL> CONN SCOOT/(Password)

만약 아래와 같은 오류 메시지가 출력된다면 오라클 설치 과정에서 SCOTT 스키마를 아예 생성하지 않은 경우다. 이런 경우에는 SCOTT 계정을 새로 생성하고 연습용 스크립트를 다운로드 받아서 직접 데이터를 입력해야 된다.

ORA-01918 : user 'SCOTT' does not exist