본문 바로가기
[ DataBase ]/DB&Query

[Oracle] SYSOPER 와 SYSDBA 차이점

by 관이119 2012. 9. 12.
.. | 파이
http://blog.naver.com/mheejung/40003554844



No. 11160

SYSOPER AND SYSDBA
==================

 

1. Introduction

 

일반적으로 administration 권한을 가진 유저로 접속할 때에는 connect internal을 이용하여

접속한다. 그러나 이러한 권한을 가지며 접속하는 방법은 이외에도 sysdba나 sysoper로

접속하는 방법이 있다. 여기서는 상기 접속 방법의 차이점과 그 사용 방법을 알아본다.


2. Administrative Users

 

Oracle에서는 두개의 중요한 administration을 담당하는 특별한 privilege가 있는데 이를

SYSOPER, SYSDBA라고 한다. 이에 대한 각 권한은 다음과 같다.

SYSOPER : instance startup, mount , database open
instance shutdown, dismount , database close
alter database backup, archive log, and recover
sysoper 권한은 상기의 기본적인 권한을 수행할 수 있을 뿐

다른 유저 의 data를 볼 수 있는 권한은 없다.

SYSDBA : sysoper가 가지고 있는 권한을 모두 가지고 모든 system privilege

를 가지며 'create database'의 권한을 추가적으로 가진다.

즉, 이것은 connect internal을 했을 때의 권한과 결과적으로 같다고 하겠다.


3. Operating system authentification

 

만약 database instance에의 접속이 'local'이고 operating system으로부터 해당 os user가

SYSDBA나 SYSOPER access 권한을 가지고 있는 것을 확인할 수 있다면 다음과 같은 문장으로

password없이도 접속할 수 있다.

Svrmgrl (7.2이하에서는 sqldba lmode =y로 접속)
Connect / as SYSDBA
or Connect / as SYSOPER

unix system에서 oracle 실행 화일들은 compile 시 두 개의 group 이름을 가지는데 OSOPER와

OSDBA group이다. 하나는 SYSOPER privilege를 위한 것이고 다른 하나는 SYSDBA privilege를

위한 것이다. 이러한 내용은 software install 시 setting되게 된다. 'connect / as SYSOPER'로

oracle에 접속 시 oracle은 login unix user의 group이 'OSOPER' group인지 확인하며

'OSOPER' group에 속한다면SYSOPER 권한을 가지고 접속할 수 있는 것이다.

이러한 내용은 'connect / as SYSDBA'인 경우도 마찬가지이다.


4. OSDBA 와 OSOPER group

 

OSOPER와 OSDBA group은 install 시 선택되어지며 일반적으로 'dba' group이 default이다.

OSDBA와 OSOPER로 사용되는 실제 group 이름은 다음과 같이 확인할 수 있다.

cd $ORACLE_HOME/rdbms/lib
cat config.[cs] (config.c나 config.s인 것은 platform 별로 다르다.)

여기서 #define SS_DBA_GRP "group"이 OSDBA group을 결정하는 것이고
#define SS_OPER_GRP "group"이 OSOPER group을 결정하게 된다.

만약 OSDBA나 OSOPER group을 변경하고 싶다면 상기 내용 중에서 group 부분을원하는

새로운 group 이름으로 변경한 후 오라클 실행 화일들을 relink 작업을 해주어야 한다.


rm config.o
make -f oracle.mk config.o
make -f oracle.mk ioracle

oracle에서 OSDBA나 OSOPER group으로 사용되기 위해서는 다음과 같아야 한다.
orace 실행화일에 compile되어야 한다.
/etc/group 화일에 group으로 등록되어 있어야 한다.
'daemon' group이어서는 안된다.


5. SYSDBA나 SYSOPER로 접속 방법

 

unix system에서는 user가 하나 이상의 group에 속할 수 있다. 이 때 password를 주지 않고도

administrative user로 접속할 수 있는 조건은 다음과 같다.

- user가 속한 group이 OSDBA나 OSOPER group 중 어느 것에 속한다.
- 그 group은 /etc/group에 속하는 정상적인 group이다.
- 그 user의 primary group(os에서 *id* command를 쳤을 때의 group)은
daemon이어서는 안 된다.

일반적으로 root user로 접속해서 SYSDBA나 SYSOPER 권한을 가지고 작업하고 싶은 경우가

자주 있다. 그러나 일반적으로 root의 primary group은 OSOPER나 OSDBA group이 아닌

경우가 대부분이다. 이 때 다음 중 한가지 방법을 선택하면 root user 에서도 SYSDBA나

SYSOPER 권한을 가지고 작업해 줄 수 있다.

a. root user의 primary group을 OSDBA group으로 바꾼다.

b. 'newgrp' command를 이용한다.
$ newgrp dba
$ svrmgrl
SVRMGR> connect / as sysdba

c. 'newgrp' command가 없는 unix system에서는 'su' command를 이용한다.
su - oracle < !
# administrative privilege가 필요한 명령들
!


이상과 같이 해준다면 root user에서도 oracle에 administrative privilege를 가지고 작업할 수 있다.


Reference Documents
-------------------
<Note:50507.1>


[출처] Oracle OTN (http://otn.oracle.co.kr)

댓글