본문 바로가기

Database/Oracle 실습 정리(KH)

Day-1. 간단한 설치 및 제거 그리고 정보

  1. 간단한 설치 및 제거 & 정보

 

-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-=-=-=-=-=-=

Oracle 10g (Express Edition ) License는 상업용 목적이나 교육기관용으로도 Free-pay 제품이다.

-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-=-=-=-=-=-=

 

★ 설치 디렉토리와 사용 Port No.

기본적으로 설치시 대상 폴더는 C:\oraclexe\ 이고, 'Oracle Database Listener'용 port No.는 1521을 사용한다. 또한 'Oracle Services for Microsoft Transaction Server'용 port No.는 2030 으로MS-SQL 과의 통신 Port를 의미한다. HTTP 리스너용 port는 8080 /* ISA에서 사용하는 PROXY PORT No와 충돌나므로 ISA에는 ORACLE을 설치하지 않는 것이 관례 */

 

  1. 설치된 ORACLE의 삭제

    오라클 서버를 제거하기 위해서는 Service 에서 위 ORACLE 관련 실행 중인 Process 를 중지시켜주고, REGEDIT를 실행하여 HKLM- > SOFTWARE -> oracle 을 삭제하여 준다.

    또한, HKLM->SYSTEM-> CurrentControlSet -> Service 와 …SYSTEM-> ControlSet001, ControlSet002 아래에 "Oracle…"항목들을 제거하여 준다.

(서비스에 잔재하는 정보들을 제거하는 것)

변경한 REGISTRY 값을 적용하기 위해 Rebooting 후, C:\ORACLEXE(기본값 폴더) 폴더도 제거하여 준다.

 

** [Standard/Enterprise] Version의 경우 C:\Program Files\Oracle… 폴더도 같이 제거하여 주어야 한다.

  1. 오라클 서버에 접속하는 방법

 

  1. ORA_DBA 그룹에 포함된 사용자로 접속하는 방법

 

ORACLE 설치 후, ORACLE 접속을 위해 생긴 Group

CMD에서 편리한 사용을 위해 설정된 PATH값 확인

/nolog : SQL Prompt ">"만 출력(로그인 없이)

 

/nolog : SQL Prompt ">"만 출력.

"show user" : 현 ORACLE 서버에 접속한 User 조회

 

  1. ORACLE DB 인증으로 접속하는 방법

 

    관리자가 사용자 계정을 생성

    SQL> create user seoyounghak identified by dba007$

    2 default tablespace users

    3 temporary tablespace temp;

 

SQL>conn dionysosjh /dba007$

 

  1. Listener & Tnsnames

     

    C:\>tnsping <네트서비스명>

 

네트서비스명 : tnsnames,ora 파일을 편집해서 작성한다.

 

 

Listener 서비스의 작동 유무를 체크

C:\>lsnrctl [ statust | stop | start ]

 

<Listener 파일과 Tnsnames.ora 파일의 이해와 편집>

 

자신의 Listener 파일

Tnsnames.ora 파일에서 상대의 ip와 port no를 입력하여

Tnsping을 날려보고, 제대로 날라가면 된거~!

 

 

Tnsnames.ora

oh =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = XE)

)

)

 

 

Standard or Enterprise Edition의 설치시 전역데이터베이스명( SID Name & Domain Name )을 입력하란 메뉴를 확인할 수 있다.

 

이 때 생성 제약 규칙 : 반드시 첫 글자는 영문자로 시작 & 최대글자 수는 영문자 8글자

Ex) edudb.or.kr

 

#자신이 현재 접속한 오라클 서버의 전역데이터베이스명을 조회하는 방법

 

SQL> select * from global_name;

GLOBAL_NAME

--------------------------------------------------------------------------------

XE

 

로컬(A)

Remote(B)

Conn dionysosjh/dba007$

 
 

Conn ifaodifaid/sdijfod as sysdba

  

위와 같이 로컬과 리모트에서 이러한 과정을 거치게 되면, Remote에서는 (A)로 sysdba 권한으로 접속이 가능하다는 것을 확인할 수 있다. 이러한 이유는 두 A & B 의 "sysdba"의 PW가 같기 때문이다.

B가 A에 접속한 상태에서 shutdown immediate 를 실행하게 되면, A의 DB가 다운되면서 해당 접속이 끊어지게 된다. 이제 다시 A로 접속을 하게 되면, 휴지 계정이란 메시지가 출력되는데, 이를 다시 살리기 위해서는 "startup" 명령을 통해 다시 DB를 구동시킬 수 있다.

 

A와 B 시스템의 그룹(ORA_DBA)에 서로 같은 PW를 사용하는 계정이 존재하기 때문에 서로를 Authentication하는 데, 한번의 확인창도 나오지 않고, 바로 접속되는 것처럼 보이는 것이다.

 

만에 하나 ORA_DBA 그룹에 존재하는 "Administrator"이 A와 B 사이에 PW가 같을 수 있으므로 이를 방지하기 위해 ORA_DBA에서 "Administrator"를 삭제하여 주거나, ORACLE을 생성할 시에 만든 "SYS"나 "SYSTEM" 계정에 PW를 통한 접속을 허용하도록 설정을 변경하여 준다.

-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-

  1. ord 인증을 통한 SYSDBA, SYSOPER로 접속하는 방법

 

위의 문제점들로 인해 ORA_DBA 그룹에서 ADMINISTRATOR 그룹을 삭제하게 되면,

 

이제

SQL> conn /as sysdba

ERROR:

ORA-01031: insufficient privileges

 

이와 같이 접속이 되지 않게 된다. 그러므로 이제 PASSWORD 인증을 통해 관리자계정으로 접속하는 방법을 살펴보면

SQL> conn sys/dba007$ as sysdba

연결되었습니다.

SQL> show user

USER은 "SYS"입니다

 

위와 같고 SYSTEM 계정을 위와 같이 접속해보면

SQL> conn system/dba007$ as sysdba

ERROR:

ORA-01031: insufficient privileges

 

 

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

 

위와 같이 접속이 이루어지지 않는 것을 확인할 수 있다. 즉 sys 계정만이 사용자가 관리자계정으로 접근이 가능하다는 것을 확인할 수 있다.

 

SQL> select *

2 from v$pwfile_users;

 

USERNAME SYSDBA SYSOPER

SYS TRUE TRUE

위 명령어를 통해 " /as sysdba" 로 접속이 가능한 사람이 sys 계정 밖에 없는 것을 확인할 수 있다.

 

이를 다시 확인하기 위해 사용자가 임의로 생성한 계정을 as sysdba로 접속해보면,

SQL> conn dionysosjh/dba007$

연결되었습니다.

SQL> show user

USER은 "DIONYSOSJH"입니다

SQL> conn dionysosjh/dba007$ as sysdba

ERROR:

ORA-01031: insufficient privileges

 

 

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

위와 같이 접속이 되지 않는 것을 확인할 수 있다.

 

이제 사용자가 생성한 계정도 sysdba로 접속이 가능하게 하기 위해서는 아래의 상단 BOX와 같이 "Grant " 명령어로 dionysosjh에게 sysdba의 권한을 할당하여 준다.

SQL> conn sys/dba007$ as sysdba

연결되었습니다.

SQL> grant sysdba to dionysosjh;

 

권한이 부여되었습니다.

SQL> select *

2 from v$pwfile_users;

 

USERNAME SYSDBA SYSOPER

------------------------------------------------------------

SYS TRUE TRUE

DIONYSOSJH TRUE FALSE

 

SQL> conn dionysosjh/dba007$

연결되었습니다.

SQL> show user

USER은 "DIONYSOSJH"입니다

SQL> conn dionysosjh/dba007$ as sysdba

연결되었습니다.

SQL> show user

USER은 "SYS"입니다

 

이제 할당해주었던 SYSDBA 권한을 해제하기 위해서는

SQL> revoke sysdba from dionysosjh;

위와 같은 명령어 옵션으로 설정한다.

SQL> revoke sysdba from dionysosjh;

 

권한이 취소되었습니다.

 

SQL> conn dionysosjh/dba007$ as sysdba

ERROR:

ORA-01031: insufficient privileges

 

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

위와 같이 이제 dionysosjh 계정으로는 접속이 되지 않는 것을 확인할 수 있다.

 

  1. Password File

기본적으로

C:\oraclexe\app\oracle\product\10.2.0\server\database에 존재하며

 

PWD[SID_NAME].ora파일을 살펴보면,

 

위에서 쳤던 명령어 중 v$pwfile_users의 파일 내용이 위 그림과 같이 암호화(Encryption)혹은 Binary Type으로 저장된 PW정보를 확인할 수 있다.

 

이제 이 파일이 손상(삭제)되었을 때, 문제점과 복구법을 살펴보면, 문제점은 이제 sysdba로 접속이 되지 않는다는 것이다. 이에 대한 해결법은 %ORA_HOME%BIN\ 으로 이동하여 orapwd.exe 프로그램을 실행하여 PW 파일을 생성한다.

 

SQL> host orapwd file=C:\oraclexe\app\oracle\product\10.2.0\server\database\PWDXE.ora password=dba007$1 entries=5

Password= 새롭게 sysdba에게 할당할 PW

Entries = sysdba의 권한을 사용할 수 있는 사용자 계정의 숫자

 

이제 위의 입력이 완료된 후에 다시 접속을 시도해보면

SQL> conn sys/dba007$1 as sysdba

연결되었습니다.

잘 접속이 되는 것을 확인할 수 있다.

'Database > Oracle 실습 정리(KH)' 카테고리의 다른 글

DB에 우편번호 넣기  (0) 2010.08.11
Day-2. 간단한 Query 날리기  (0) 2009.05.29