상세 컨텐츠

본문 제목

Oracle - 오라클 접속 및 구동

IT/DBMS

by TMI1 2025. 6. 26. 11:00

본문

 

--■■■ 오라클 접속 및 구동 ■■■--

실행창 호출(윈도우키+r) > [cmd] 입력 → 콘솔창 호출

(명령 프롬프트 상태에서...)

cls - 도스 명령 치면 앞단 내용 삭제됨.
※ 꼭!! 오류발생시 의사표현을 해서 실행되게끔 처리하고 넘어가야 함. 
sqlplus - 실행프로그램

-- 접속된 사용자 없이 단순히 SQL 프롬프트만 띄우도록 한 것
(sqlplus 뒤에 슬래시)

C:\>sqlplus/nolog 
--==>>
/*
SQL*Plus: Release 11.2.0.2.0 Production on 목 6월 26 09:28:50 2025

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

SQL>
*/

--※ [sqlplus]는 SQL을 수행하기 위해 ORACLE에서 제공하는 
-- 도구(툴, 유틸리티)이다.

--※  [C:\oraclexe\app\oracle\product\11.2.0\server\bin]경로에
-- 존재하는 [sqlplus.exe]
-- 오라클을 설치하는 과정에서 이미 이 경로가 환경변수 path 에
-- 등록되어 있으므로 해당 경로까지 찾아들어가지 않아도
-- [c:\sqlplus]와 같은 형식으로 명령어 사용이 가능한 상태인 것이다. 

SQL> dir
--==>> SP2-0042: unknown command "dir" - rest of line ignored.

SQL> cls
--==>> SP2-0042: unknown command "cls" - rest of line ignored.

SQL> ipconfig
--==>> SP2-0042: unknown command "ipconfig" - rest of line ignored.

--※ 이제는 일반적인 도스 명령어(윈도우 명령어)를 수행할 수 없다.
--   (사전에 약속된 명령 이외에는 수행할 수 있는 상태가 아니다.)

--○  현재 접속한 사용자 계정을 조회하는 구문  
SQL> show user
USER is ""

SQL> exit

C:\> 

as - 사장으로써, 얘의 위상으로 접속한다는 의미

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
*/

--○  현재 접속한 사용자 계정 조회 
SQL> show user
USER is "SYS"

--※  현재 우리는 sys 계정을 통해
--    오라클 최고 관리자 권한을 가진 상태에서
--    오라클 서버에 접속한 상태이다.

--○  오라클 서버 인스턴스 상태 조회(사용가능상태 여부 확인)
-- 전원의 on/off 여부 등 일반적으로 접속의 가능 여부를
-- 확인할 때 사용하는 명령    
--==>>
/*
SQL> select status from v$instance;

STATUS
------------------------
OPEN
*/ 
--> 오라클 서버가 정상적으로 구동중인(startup) 상태임을 의미.

--○  두번째로... 일반 사용자 계정인 [hr]로 연결을 시도

hr / lion | scott / tiger >> 관리자가 기본적으로 아이디,패스워드를 오픈해놓음.. 

C:\>sqlplus 계정/패스워드 = SQL> connect 계정/패스워드

오라클 권한의 묶음을 롤 이라고 함. 
sqlplus 계정/패스워드 as 운영자롤
sqlplus 계정/패스워드 as 관리자롤

밑에 애들은 관리자기 때문에 롤을 가지고 접속해야만 정상 실행 가능. 

SQL> connect hr/lion
/*
ERROR:
ORA-28000: the account is locked 


Warning: You are no longer connected to ORACLE.
*/
-->  일반 사용자 계정인 [hr]은 존재하지만 잠겨있는 상태이므로
-- 오라클 서버 접속이 불가능한 상태

--○ 접속된 사용자 계정 확인
SQL> show user
USER is "SYS"

db는 _ 형태로 네이밍이 많이 이루어짐. 
※※  db 명령문 작성시 from부터 작성하라고 할 것임. 

--○ 오라클 사용자 계정들의 상태 조회(확인)→ sys로 접속한 상태에서 ... 
SQL> set linesize 500
SQL> select username, account_status from dba_users;
/*
USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYS                                                          OPEN
SYSTEM                                                       OPEN
ANONYMOUS                                                    OPEN
APEX_PUBLIC_USER                                             LOCKED
FLOWS_FILES                                                  LOCKED
APEX_040000                                                  LOCKED
OUTLN                                                        EXPIRED & LOCKED
DIP                                                          EXPIRED & LOCKED
ORACLE_OCM                                                   EXPIRED & LOCKED
XS$NULL                                                      EXPIRED & LOCKED
MDSYS                                                        EXPIRED & LOCKED

USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
CTXSYS                                                       EXPIRED & LOCKED
DBSNMP                                                       EXPIRED & LOCKED
XDB                                                          EXPIRED & LOCKED
APPQOSSYS                                                    EXPIRED & LOCKED
HR                                                           EXPIRED & LOCKED

16 rows selected.
*/

수정이나 변경 발생- update /구조적인 변경- alter
--○  계정 잠금 / 해제 → 현재 sys계정을 연결된 상태... 
SQL> alter user hr account unlock;
--==>> User altered.

--○ 다시 오라클 사용자 계정들의 상태 확인(조회)
SQL> select username, account_status from dba_users;
==-->>
/*
USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYS                                                          OPEN
SYSTEM                                                       OPEN
ANONYMOUS                                                    OPEN
HR                                                           EXPIRED
APEX_PUBLIC_USER                                             LOCKED
FLOWS_FILES                                                  LOCKED
APEX_040000                                                  LOCKED
OUTLN                                                        EXPIRED & LOCKED
DIP                                                          EXPIRED & LOCKED
ORACLE_OCM                                                   EXPIRED & LOCKED
XS$NULL                                                      EXPIRED & LOCKED

USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
MDSYS                                                        EXPIRED & LOCKED
CTXSYS                                                       EXPIRED & LOCKED
DBSNMP                                                       EXPIRED & LOCKED
XDB                                                          EXPIRED & LOCKED
APPQOSSYS                                                    EXPIRED & LOCKED

16 rows selected.
*/
--> 다시 조회한 결과 hr 계정의 상태는 EXPIRED 이며,
-- 잠금은 해제한 상황이지만 패스워드에 대한 유효기간이 만료된 상황으로
-- 이를 재설정해야 한다.

--○ 계정 정보 변경(패스워드 설정 변경)  sys로 접속되어 있는 상태...
SQL> alter user hr identified by lion;
==-->>User altered.

--○ 다시 오라클 사용자 계정들의 상태 확인(조회)
SQL> select username, account_status from dba_users;
--==>>
/*
USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYS                                                          OPEN
SYSTEM                                                       OPEN
ANONYMOUS                                                    OPEN
HR                                                           OPEN
APEX_PUBLIC_USER                                             LOCKED
FLOWS_FILES                                                  LOCKED
APEX_040000                                                  LOCKED
OUTLN                                                        EXPIRED & LOCKED
DIP                                                          EXPIRED & LOCKED
ORACLE_OCM                                                   EXPIRED & LOCKED
XS$NULL                                                      EXPIRED & LOCKED

USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
MDSYS                                                        EXPIRED & LOCKED
CTXSYS                                                       EXPIRED & LOCKED
DBSNMP                                                       EXPIRED & LOCKED
XDB                                                          EXPIRED & LOCKED
APPQOSSYS                                                    EXPIRED & LOCKED

16 rows selected.
*/

--○  계정 잠금 해제 및 유효기간 만료 상태 해제 후
-- 다시 hr 계정으로 오라클 접속 시도
SQL> conn hr/lion
--==>> Connected.

--○ 접속된 사용자 계정 확인
SQL> show user
USER is "HR"

--○ 현재 오라클 서버의 사용자 계정 상태에 대한 조회
SQL> select username, account_status from dba_users;
--==>>
/*
select username, account_status from dba_users
                                     *
ERROR at line 1:
ORA-00942: table or view does not exist
*/
--> [hr]이라는 일반 사용자 계정을 통해서는
-- [dba_users]에 대한 조회가 불가능한 상황임을 확인 
-- 회원이 일반 회원의 정보를 보면 안되므로 오류나는 것임. 

오라클의 주연은 테이블! 테팔 서랍광고.. 예시
테이블 스페이스(사물함 전체 구조)안에 
각각의 테이블(사물함)이 있고 그 안에 컬럼(파일철)들이 있다. 

회원 = 테이블명
이름, 전화번호, 주소 등 = 컬럼명

--○ host 명령어
SQL> dir
--==>> SP2-0042: unknown command "dir" - rest of line ignored.

SQL> cls
--==>> SP2-0042: unknown command "cls" - rest of line ignored.

SQL> ipconfig
--==>> SP2-0042: unknown command "ipconfig" - rest of line ignored.
-- 도스 명령 체계로 전환하거나
--  라인 단위에서 도스 명령어 입력이 가능하다.
-- 예를 들어 host cls, host dir, host ipconfig 등...
-- 유닉스 계열에서는 [host] 명령 뿐 아니라 [!] 도 사용이 가능하다. host=!
-- 하지만, 윈도우 계열에서는 [host]명령어만 사용이 가능하다.
-- host 상태에서 빠져나갈 때는 [exit] 명령을 입력한다.

C:\>sqlplus
 SQL>host
  C:\>
   C:\>exit 
    SQL>exit
     C:\>exit>> cmd 종료 

윈도우 관리자 계정을 오라클에 관리자권한으로 함께 부여된  sist170권한을 제거하는 방법 
내컴퓨터-shift+마오-관리-컴퓨터 관리(로컬)-로컬 사용자 및 그룹-그룹-ora_dba에서 sist170 제거

--※  Administrator(윈도우 관리자 계정)가 ORA_DBA 그룹(오라클 관리자 계정 그룹)에 포함되어 있을 경우
-- 취약한 보안 정책으로 인해 실무에서는 정말 특별한 경우가 아니고서는
-- 반드시 제외시키고 사용해야 한다.
-- → ORA_DBA 그룹에서 윈도우 관리자 계정 제거~!!!

--  운영체제 ver.Pro
-- 컴퓨터 관리> 로컬 사용자 및 그룹

-- 운영체제 ver.Pro 이외
-- 윈도우키+r(실행창 호출) → lusrmgr.msc / control userpasswords2

--※ 제거 이후 sys 의 계정 및 패스워드가 일치하지 않으면
--  오라클 서버에 접속할 수 없는 상태가 된다.

--○ hr 사용자 계정에 sysdba 권한(롤) 부여하기 → sys 가... 
c:\>sqlplus sys/java006$ as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 목 6월 26 12:16:28 2025

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


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> show user
--==>>USER is "SYS"

SQL> grant sysdba to hr;
--==>> Grant succeeded.

--○  확인 → hr 로 접속 → [as sysdba]로 연결 
SQL> conn hr/lion as sysdba
--==>>Connected.

SQL> show user
--==>>USER is "SYS"

--○  sysdba 권한을 부여받기 이전까지는 불가능했던
-- 현재 오라클 서버 사용자 계정의 상태 정보 조회 
-- (sysdba 권한을 부여받은 hr 계정인 상태로...)
SQL> select username, account_status from dba_users;
--==>>
/*
USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
SYS                                                          OPEN
SYSTEM                                                       OPEN
ANONYMOUS                                                    OPEN
HR                                                           OPEN
APEX_PUBLIC_USER                                             LOCKED
FLOWS_FILES                                                  LOCKED
APEX_040000                                                  LOCKED
OUTLN                                                        EXPIRED & LOCKED
DIP                                                          EXPIRED & LOCKED
ORACLE_OCM                                                   EXPIRED & LOCKED
XS$NULL                                                      EXPIRED & LOCKED

USERNAME                                                     ACCOUNT_STATUS
------------------------------------------------------------ ----------------------------------------------------------------
MDSYS                                                        EXPIRED & LOCKED
CTXSYS                                                       EXPIRED & LOCKED
DBSNMP                                                       EXPIRED & LOCKED
XDB                                                          EXPIRED & LOCKED
APPQOSSYS                                                    EXPIRED & LOCKED

16 rows selected.
*/

--○ hr 사용자 계정에 부여한 sysdba 권한 박탈 → sys 가...
SQL> revoke sysdba from hr;
--==>> Revoke succeeded.

SQL> disconnect = disconn 같은 명령어
SQL> disconnect  
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

select username, account_status from dba_users; << 표준화 된 정식 구문은 ; 붙여줘야 함. 
; 안 붙여도 되는 구문은 sqlplus 유틸리티에서 제공하는 구문임. 

--○ 권한 박탈 후 hr 계정을 통해 sysdba 권한으로 오라클 접근 시도 
SQL> conn hr/lion as sysdba
--==>>
/*
ERROR:
ORA-01031: insufficient privileges
*/

-- 접속종료
SQL> disconnect
SQL> disconn

--○ 일반 사용자 계정 hr로 다시 연결
SQL> conn hr/lion
--==>>Connected.
SQL> show user
--==>>USER is "HR"

--○ ※ 오라클 구동 / 중지 
startup / shutdown [immediate] 

immediate -- 빨리 꺼지게 하는 명령

--○ 일반 사용자 계정 hr로 오라클 서버 중지명령 시도
SQL> shutdown
--==>> ORA-01031: insufficient privileges(→ 권한 불충분 에러)
-- 즉, 일반 사용자 계정으로는 오라클 서버의 구동을 중지시킬 수 없다.
SQL> shutdown immediate
--==>> ORA-01031: insufficient privileges
-- 즉, 일반 사용자 계정어로는 오라클 서버의 구동을 중지시킬 수 없다.

SQL> show user
--==>>USER is "SYS"

SQL> shutdown
--==>>
/*
Database closed.
Database dismounted.
ORACLE instance shut down.
*/

--○ 오라클 구동 중지 이후 일반 사용자 hr로 오라클 서버 접속 시도 
SQL> conn hr/lion
--==>>
/*
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Process ID: 0
Session ID: 0 Serial number: 0

Warning: You are no longer connected to ORACLE.
*/

SQL> startup
--==>>
/*
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2260048 bytes
Variable Size             616563632 bytes
Database Buffers          444596224 bytes
Redo Buffers                5517312 bytes
Database mounted.
Database opened.
*/

-- ※ 오라클 서버를 구동하는 명령
SQL> startup

-- ※ 오라클 서버를 중지하는 명령
SQL> shutdonw [immediate]

-- ※  오라클 서버를 구동 및 중지하는 명령은
-- [as sysdba] 또는 [as sysoper]로 연결했을 때만 가능하다. (sysoper = 관리자)

--○ hr 일반 사용자 계정에 [sysoper] 권한 부여하기 → sys 가...
SQL> show user
USER is "SYS"

SQL> grant sysoper to hr;
--==>> Grant succeeded.

--○ 확인 →  hr 계정으로 접속 → sysoper 권한으로 ... 
SQL> conn hr/lion as sysoper
--==>> Connected.

SQL> show user
--==>> USER is "PUBLIC"
--> 운영자의 권한으로 접속된 상황임을 확인

--○ sysoper 의 권한을 가진 hr 계정으로 오라클 서버 중지 명령 시도
--==>>
/*
SQL> shutdown
Database closed.
Database dismounted.
*/

--○ sysoper 의 권한을 가진 hr 계정으로 오라클 서버 구동 명령 시도 
--==>>
SQL> startup
/*
ORACLE instance started.
Database mounted.
Database opened.
*/

--○  sysoper 의 권한을 가진 hr 계정으로 
-- 오라클 서버의 사용자 계정 상태 조회 
SQL> select username, account_status from dba_user;
--==>>
/*
select username, account_status from dba_user
                                     *
ERROR at line 1:
ORA-00942: table or view does not exist
*/

-- ■■■ 오라클 서버 연결 모드 3가지 방법 ■■■--

--  1. as sysdba
-->  as sysdba 연결하면 오라클 서버의 관리자로 연결되는 것이다.
--  user 명은 sys 로 확인된다.
--  오라클 서버 관리자로 연결되는 것이기 때문에
--  오라큰 서버에서 제공하는 모든 기능을 전부 활용할 수 있다.
--  오라클 서버가 startup 또는 suhtdown 되어도 연결이 가능하다.
--  → 기본적인 연결은 [conn 계정/패스워드 as sysdba] 형태로 연결하게 된다.
--  → 일반적인 연결은 [conn 계정 as sysdba] 형태로 연결하게 된다.  

--  2. as sysoper
-->  as sysoper 로 연결하면 오라클 서버의 운영자로 연결되는 것이다.
--  user 명은 PUBLIC 으로 확인된다.
--  사용자 계정 정보 테이블에 접근하는 것은 불가능하다.
--  오라클 서버의 구동 및 중지 명령 수행이 가능하다.
--  오라클 서버가 startup 또는 suhtdown 되어도 연결이 가능하다.
--  → 기본적인 연결은 [conn 계정/패스워드 as sysoper] 형태로 연결하게 된다.
--  → 일반적인 연결은 [conn 계정 as sysoper] 형태로 연결하게 된다.

--  3. normal
-->  오라클 서버에 존재하는 일반 사용자로 연결되는 것이다.
--  오라클 서버가 구동중인 상태에서만 연결이 가능하고
--  오라클 서버가 구동 중지 상태일 경우 연결이 불가능하다.
--  관리자가 부여해준 권한(또는 롤)을 통해서만 사용이 가능하다.
--  → 기본적인 연결은 [conn 계정/패스워드] 형태로 연결하게 된다.
--  → 일반적인 연결은 [conn 계정] 형태로 연결하게 된다.















'IT > DBMS' 카테고리의 다른 글

Oracle - 기초실습  (0) 2025.06.30
Oracle - 기초실습  (0) 2025.06.27
Oracle - TABLESPACE 생성, 계정 및 권한부여  (3) 2025.06.26
Oracle - 오라클 설치, 제거  (1) 2025.06.26
Oracle 기초 - 데이터베이스  (0) 2025.06.26

관련글 더보기

댓글 영역