리눅스용 Oracle8 관리자 참고서 (Administrator's Reference for LINUX)
Release 8.0.5

A66585-01

Library

Product

Contents

Index

Prev Next

2
Administering Oracle8 on Linux

Customizing the initsid.ora File

이 문서에서는 Oracle8 배포판과 함께 제공되는 기본적인 initsid.ora file에 관하여 설명하고자 한다. Oracle Installer는 이 파일을 $ORACLE_BASE/admin/db_name/pfile directory 디렉토리 내에 생성한다. 여러분들은 Oracle8 설치를 customize하기 위하여 이것을 수정할 수 있다.

일부 initsid.ora 인자 설정은 어떠한 크기의 설치에도 공통적인 것들이다. 이들 인자 설정은 크기가 다를 경우 다른 값들을 요구한다. 세가지 경우를 예측할 수 있다: 크기가 작은경우, 중간인 경우, 그리고 큰 경우. initsid.ora 샘플 파일에서, 설치 크기에 따른 인자값들의 설정을 보여주고 있다. 여러분들의 설정에 맞지 않는 줄에는 줄의 첫칸에 number sign (#)을 넣어 주어서 주석 처리하면 된다.

Table 2-1 suggests the approximate SGA sizes corresponding to the three scenarios provided for in the initsid.ora file.

Table 2-1 Block and SGA Sizes for Sample initsid.ora File
Installation/Database Size  
Block Size   Small   Medium   Large  

2 KB

 

4500 KB

 

6800 KB

 

17000 KB

 

4 KB

 

5500 KB

 

8800 KB

 

21000 KB

 

Sample initsid.ora File

이 파일은 오라클 회사에서 RDBMS 설치를 customizing화를 지원하기 위하여 제공된다. 다른 설치 모델의 크기가 다를 경우 다른 값을 가지는 것도 있고, 일부 인자들은 설정이 공통적이다. 세가지 경우가 제공된다: SMALL, MEDIUM 그리고 LARGE. 설치크기에 따라 조절해야 하는 인자들은 세가지 설정을 해 두었다. 설치의 크기에 따라 각각을 코멘트 처리하도록 하라.


# DEFAULT를 여러분들의 데이터베이스 이름으로 대치하라.
db_name=DEFAULT

db_files = 80                                                         # SMALL  
# db_files = 400                                                      # MEDIUM 
# db_files = 1000                                                     # LARGE  

db_file_multiblock_read_count = 8                                     # SMALL  
# db_file_multiblock_read_count = 16                                  # MEDIUM 
# db_file_multiblock_read_count = 32                                  # LARGE  

db_block_buffers = 100                                                 # SMALL  
# db_block_buffers = 550                                              # MEDIUM 
# db_block_buffers = 3200                                             # LARGE  

shared_pool_size = 3500000                                            # SMALL
# shared_pool_size = 5000000                                          # MEDIUM
# shared_pool_size = 9000000                                          # LARGE

log_checkpoint_interval = 10000

processes = 50                                                        # SMALL  
# processes = 100                                                     # MEDIUM 
# processes = 200                                                     # LARGE  

parallel_max_servers = 5                                              # SMALL
# parallel_max_servers = 4 x (number of CPUs)                         # MEDIUM
# parallel_max_servers = 4 x (number of CPUs)                         # LARGE

log_buffer = 8192                                                     # SMALL
# log_buffer = 32768                                                  # MEDIUM
# log_buffer = 163840                                                 # LARGE

sequence_cache_entries = 10                                           # SMALL  
# sequence_cache_entries = 30                                         # MEDIUM 
# sequence_cache_entries = 100                                        # LARGE  

sequence_cache_hash_buckets = 10                                      # SMALL  
# sequence_cache_hash_buckets = 23                                    # MEDIUM 
# sequence_cache_hash_buckets = 89                                    # LARGE  

# audit_trail = true            # if you want auditing
# timed_statistics = true       # if you want timed statistics
max_dump_file_size = 10240      # limit trace file size to 5 Meg each

# 다음 행의 주석처리를 해제하면, 만약 ALTER DATABASE ARCHIVELOG를
# 이용하여 archive 기능을 설정해 두었을 경우 automatic archiving이 가능하도록 해준다.
# log_archive_start = true      
# log_archive_dest = disk$rdbms:[oracle.archive]
# log_archive_format = "T%TS%S.ARC"

# 만약 개별적인 rollback segment를 가능하게 하려면, 다음 행을 
# 각각의 인스턴스에 있는 init.ora 파일에 추가하라:
# rollback_segments = (name1, name2)   

# 만약 public rollback segments를 이용하면, 각각의 인스턴스에
# 얼마나 많은 rollback segments를 정의해 줄 것인지 다음 공식을 이용하여 계산한다.
#   # of rollback segments = transactions / transactions_per_rollback_segment
# 이번 예제에서 각각의 인스턴스는 40/10 = 4를 가진다:
# transactions = 40 
# transactions_per_rollback_segment = 10 

# Global Naming -- db가 접속하는 dblink가 같은 이름을 가지도록 해 준다.
global_names = TRUE

# 다음 행의 주석 처리를 해제하면, 데이터베이스가 생성될 때 global database 이름으로 저장되게 한다. 
# db_name 파라메터의 suffix (dot로 분리된)를 제공한다.
# 만약 여러분들의 사이트가 e-mail을 위한 인터넷 도메인 이름을 이용한다면,
# 여러분들의 e-mail 주소에서 '@' 뒷부분이 이들 인자의 값을 위해 좋은 후보가 될 수 있다.

# db_domain = us.acme.com 	# global database name is db_name.db_domain

#_db_block_cache_protect = true                       # memory protect buffers
#event = "10210 trace name context forever, level 2" # data block checking
#event = "10211 trace name context forever, level 2" # index block checking
#event = "10235 trace name context forever, level 1" # memory heap checking
#event = "10049 trace name context forever, level 2" # memory protect cursors

# 병렬 서버 인자 (multi-instance) 설정
#ifile = ora_system:initps.ora

# 기본적으로 두개의 control file을 정의한다.
control_files = (ora_control1, ora_control2)

# 만약 여러분들이 서버 동작을 추적하기 위하여 Oracle Trace 제품을
# 가동시키려면 다음행의 주석처리를 해제하라.
# 이것은 Oracle Enterprise Manager console에서 서버 스케쥴링을 볼수 있겠끔 한다.
# 마찬가지로, 만약 oracle_trace_collection_name 인자가 null이 아니라면,
# 모든 session은 명명되어진 collection으로 기록된다. 

# oracle_trace_enable = TRUE

Setting the Environment

Displaying and Setting Environment Variables

환경변수 값을 화면에 출력하기 위해서는, echo 명령어를 이용하라. 예를 들면, ORACLE_SID의 값을 출력하려면, 다음과 같이 입력하라:

$ echo $ORACLE_SID

Setting and Exporting the Value of a Variable in a Current Session

Bourne 또는 Korn shell에서는 다음과 같이 입력하라:

$ ORACLE_SID=test
$ export ORACLE_SID

C shell에서는 다음과 같이 입력하라:

% setenv ORACLE_SID test

여기서 test 는 변수 ORACLE_SID의 값이다.

공통환경의 설정 (Setting a Common Environment)

Oracle8은 DBA가 모든 사용자에 대한 공통환경 설정을 허용한다. 공통환경 설정은 시스템 관리자나 데이터베이스 관리자로 하여금 실제적인 오라클 서버 시스템의 수정을 용이하게 해 준다.

The oraenv Command File

oraenv (C shell에서는 coraenv) 명령어 파일은 설치동안에 생성된다. 이것은 오라클 환경변수를 포함하고 제공한다:

예를 들면, 데이터베이스를 /usr/oracle 에서 /usr1/oracle로 이동한다고 하자. 공통 환경설정 루틴이 없는 경우, 사용자 시작 파일을 개별적으로 갱신시켜야 한다. oraenv를 이용하는 경우, 각각의 사용자 profile내에서 oraenv 명령어 파일을 호출하도록 하고 관리자는 그 파일만을 변경함으로써 모든 수정은 완료될 수 있다.

Local bin Directory

오라클 소프트웨어 홈디렉토리와 분리하여 oraenv (또는 coraenv) 와 dbhome을 local bin directory에 두어라. 그리고 이들 파일들이 모든 사용자로 부터 접근 가능한지 확인하라. 그리고 oraenv (coraenv)가 여러분들이 ORACLE_HOME를 다른 디렉토리로 변경한 경우에도 계속 동작하는지 확인해야 한다.

Moving Between Databases

하나의 데이터베이스나 인스턴스로 부터 다른 것으로 바꾸려고 한다면, oraenv routine을 호출하고 원하는 데이터베이스의 sid를 묻는 질문에 답하도록 하라. 항상 oraenv 명령어 파일의 완전한 경로명을 주어야 한다. 예를 들면:

$ . /usr/local/bin/oraenv
ORACLE_SID= [default]? sid

Database Examples

다음 예제에서, 여러분들의 local bin directory는 /usr/local/bin로 가정하고, 여러분들의 제품 데이터베이스는 PROD라고 가정한다. 만약 여러분들이 시작시에 ORACLE_SID를 묻는 것을 좋아하지 않는다면, ORAENV_ASK 환경변수를 no로 설정해 두라.

아래 예제에서 oraenv를 실행한 후에 ORAENV_ASK는 기본값인 Yes로 설정해 둔것이다. 이것은 다음번 oraenv가 실행된 후에 다른 ORACLE_SID를 묻도록 하기 위한 것이다.

Single Instance

Bourne 또는 Korn shell에서는, .profile file에서 다음 줄을 추가하던지 대치시키도록 하라:

. local_bin_directory/oraenv

다음 행들로:

PATH=${PATH}:/usr/local/bin
ORACLE_SID=PROD
export PATH ORACLE_SID
ORAENV_ASK=NO
. oraenv
ORAENV_ASK=

C shell에서는, .cshrc file에 다음 행들을 추가하던지 대치하도록 하라:

source local_bin_directory/coraenv

다음행들로:

setenv PATH ${PATH}:/usr/local/bin
setenv ORACLE_SID PROD
set ORAENV_ASK = NO
source /usr/local/bin/coraenv
unset ORAENV_ASK

Multiple Instances

다중 인스턴스 환경인 경우, 시작시에 sid를 정의하라.

Bourne 또는 Korn shell에서는:

PATH=${PATH}:/usr/local/bin
ORACLE_SID=PROD
export PATH ORACLE_SID
SIDLIST= `awk -F: '/^[^#]/ {printf "%s ", $1}' /etc/oratab\Q
echo "SIDS on this machine are $SIDLIST"
ORAENV_ASK=
oraenv

C shell에서는:

setenv PATH ${PATH}:/usr/local/bin
setenv ORACLE_SID PROD
set sidlist = `awk -F: '/^[^#]/ {printf "%s ", $1}' /etc/oratab\Q
echo "SIDS on this machine are $sidlist"
unset ORAENV_ASK
source /usr/local/bin/coraenv

Oracle8을 위한 환경변수들

리눅스 환경에서 어떤 변수들은 오라클 시스템을 설치하기 전에 설정되어 있어야만 한다.

참조:

Oracle8 설치 가이드 (Oracle8 Installation Guide).

 

리눅스에서 오라클 환경변수들

Table 2-2는 Oracle8 변수의 문법과 예제를 보여주고 있다.

Table 2-2 리눅스에서 Oracle8 환경변수들
변수들   세부사항   정의  

EPC_DISABLED

 

Function

 

오라클 추적을 비활성화(Disables) 시킨다

 

 

Syntax

 

true 또는 false

 

 

Example

 

true

 

NLS_LANG

 

Function

 

출력을 위해 사용할 언어와 문자세트를 명시한다. 값의 범위는 리눅스를 위한 Oracle8 설치가이드 를 참조하기 바란다.

 

Syntax

 

language_territory.characterset

 

Example

 

french_france.we8dec

 

ORA_NLS33

 

Function

 

언어와 문자셋트를 저장한 디렉토리 포인트.

 

다음으로 설정하라.

 

$ORACLE_HOME/ocommon/nls/admin/data

 

ORACLE_BASE

 

Function

 

OFA 호환 데이터베이스 오라클 디렉토리 구조의 기본 디렉토리를 명시

 

Syntax

 

directory_path

 

Example

 

/mount_point/app/oracle

 

ORACLE_HELP

 

Function

 

Help 파일이 위치한 디렉토리를 명시

 

Syntax

 

directory_path

 

Example

 

$ORACLE_HOME/help/admin/resource

 

ORACLE_HOME

 

Function

 

오라클 소프트웨어 배포본이 위치한 디렉토리를 명시

 

Syntax

 

directory_path

 

Example

 

/mount_point/app/oracle/product/release_number

 

ORACLE_PATH

 

Function

 

SQL*Plus와 같은 오라클 응용 프로그램에 의해 사용되는 파일들을 찾기 위한 경로명을 명시한다. 만약 명시되지 않는다면, 응용 프로그램은 현재 디렉토리로 부터 읽어 들이고 쓰기를 한다.

 

Syntax

 

Colon으로 분리된 디렉토리의 나열 directory:directory:directory

 

Example

 

/u01/oracle/adhoc/sqlplus:.
주의: Period는 현재 작업 디렉토리를 찾기 경로에 추가한다.

 

ORACLE_SID

 

Function

 

오라클 시스템 확인자(identifier)를 명시한다.

 

Syntax

 

숫자와 글자의 문자열은 반드시 문자로 문자(letter)로 시작해야 한다. 좀더 자세한 정보를 원한다면, 리눅스를 위한 Oracle8 설치가이드를 참조하기 바란다.

 

Example

 

SAL1

 

ORACLE_TERM

 

Function

 

터미널 형태를 명시한다. 오라클 제품과 설치자가 적절한 Toolkit II (.res) resource file을 이용할 수 있도록 하기 위해 이용된다. 만약 설정되지 않으면, 운영체계의 TERM 값을 이용한다.

 

Syntax

 

string of characters

 

Range of Values

 

이 변수의 값은 Toolkit II resource directory에 있는 유효한 리소스 파일에 해당하는 tk2c${ORACLE_TERM}.res와 같은 패턴으로 적혀야 한다. 유효한 값을 보려면 리눅스를 위한 Oracle8 설치 가이드 를 보기 바란다.

 

Example

 

vt100

 

ORACLE_TERMINAL

 

Function

 

Toolkit II (.res) resource files을 찾기위한 추가적인 디렉토리를 명시한다.

 

Syntax

 

directory_name

 

Example

 

$ORACLE_HOME/guicommon/tk21/admin/terminal

 

ORACLE_TRACE

 

Function

 

설치하는 동안 Bourne shell script의 추적을 가능하게 한다. 만약 T로 설정되면, 많은 Oracle shell scripts가 set-x flag를 켜두고 실행된다.

 

Range of Values

 

T 또는 다른 값.

 

ORAENV_ASK

 

Function

 

(c)oraenv가 ORACLE_SID 또는 ORACLE_HOME을 물을 것인지 아닌지를 결정한다. 만약 NO로 설정하면, 는 질문을 하지 않는다. 그리고 다른 값으로 설정되면 질문을 한다.

 

Syntax

 

string

 

Range of Values

 

NO 또는 다른 값.

 

TNS_ADMIN

 

Function

 

오라클 Net8 설정파일을 포함한 디렉토리를 설정해 준다.

 

Syntax

 

directory_path

 

Range of Values

 

디렉토리 명; 좀더 자세한 정보는, 리눅스를 위한 Oracle8 설치가이드를 참조하기 바란다.

 

Example

 

$ORACLE_HOME/network/admin

 

TWO_TASK

 

Function

 

tnsnames.ora file에 정의되어 있는, 기본적인 오라클 Net8 접속 문자열 기술자 alias (Oracle Net8 connect string descriptor alias)를 설정한다.

 

Syntax

 

이용가능한 네트워크 알리아스

 

Range of Values

 

tnsnames.ora file에 기술되어 있는 유효한 오라클 Net8 알리아스.

 

Example

 

PRODDB_TCP

 


Note:

환경변수는 오라클 서버 프로세스들의 이름과 동일한 이름으로 정의되어서는 안된다. 예를 들면: arch, pmon 그리고 dbwr 등을 이용해서는 안된다.

 

ORACLE_HOME과 ORACLE_SID를 위한 약자

Oracle8 Server files 과 programs에서, 물음표(?)는 ORACLE_HOME의 값을 나타낸다. 예를 들면, 다음 SQL 문장에서 Oracle8은 물음표를 ORACLE_HOME의 완전한 경로명으로 확장 시켜 준다:

alter tablespace TEMP add datafile '?/dbs/dbs2.ora' size 2M

@ 기호는 $ORACLE_SID를 표현한다. 예를 들면, 인스턴스에 포함되는 파일을 가르키려면, 다음과 같이 입력하라:

alter tablespace tablespace_name add datafile 'dbsfile@.ora'

Oracle8에서 이용되는 리눅스 환경변수들

Table 2-3은 Oracle8에서 사용되는 리눅스 환경변수를 위한 예제와 문법을 제공한다.

Table 2-3 LINUX Environment Variables Used with Oracle8
Variable   Detail   Definition  

ADA_PATH

 

Function

 

Ada 컴파일러를 포함한 디렉토리를 명시한다.

 

DISPLAY

 

Function

 

X를 기반으로 한 툴에서 이용한다. 입출력을 위해 이용될 화면 출력 장치를 명시한다. 자세한 것은 판매처의 X Windows 문서를 참조하라.

 

Syntax

 

hostname:display
Hostname은 화면출력 장치를 위한 네트워크 확인자이다; display는 숫자를 적어준다. 거의 항상 0이다.

 

Example

 

135.287.222.12:0
bambi:0

 

HOME

 

Function

 

사용자의 홈 디렉토리를 표시.

 

LANG 또는 LANGUAGE

 

Function

 

운영체계에서 메시지나 또는 다른 출력을 의해 사용될 언어와 문자 세트를 명시한다. 운영체계 문서를 참조하고, 리눅스를 위한 Oracle8 설치 가이드를 참조하라.

 

LDOPTS

 

Function

 

일부 플랫폼에서 이용할 기본적인 linker options을 명시한다. 보다 자세한 것은 ld의 man page를 참조하기 바란다.

 

LPDEST

 

Function

 

System V-based system에서 사용자의 기본적인 프린트를 명시한다.

 

Syntax

 

printer_name

 

Example

 

docqms

 

LDPATH

 

Function

 

공유 객체 라이브러리를 발견하는데 이용할 기본 디렉토리를 설정. 보다 자세한것은 ld에 대한 man pages를 참조하라.

 

LD_LIBRARY_PATH

 

Function

 

일부 플랫폼에서 공유 객체 라이브러리를 실행시간(runtime)에 공유라이브러리 적재기(Loader)에 (ld.so) 의해 이용된다. 보다 자세한 것은 ld.so에 대한 man pages를 참조하라.

 

Syntax

 

Colon으로 분리된 디렉토리의 나열 directory:directory:directory

 

Example

 

/usr/dt/lib:$ORACLE_HOME/lib

 

PATH

 

Function

 

실행가능한 프로그램들을 찾기 위해 shell에 의해 이용된다; $ORACLE_HOME/bin를 포함하도록 해야 한다.

 

 

Syntax

 

Colon으로 분리된 디렉토리의 나열 directory:directory:directory

 

 

Example

 

/bin:/usr/bin:/usr/local/bin:
/usr/bin/X11:$ORACLE_HOME/bin:$HOME/bin:.
Note: Period는 찾기 경로에 현재 작업 디렉토리를 추가한다.

 

PRINTER

 

Function

 

리눅스 시스템을 위한 사용자의 기본 프린터를 선택한다.

 

 

Syntax

 

printer_name

 

 

Example

 

docqms

 

SHELL

 

Function

 

호스트 명령어를 실행하는 동안 사용할 명령어 번역기 (command interpreter)를 명시한다.

 

 

Syntax

 

shell pathname

 

 

Range of Values

 

/bin/sh 또는 /bin/csh 또는 /bin/ksh 또는 리눅스에 의해 제공되는 다른 명령어 번역기

 

 

Example

 

/bin/sh

 

TERM

 

Function

 

Oracle Toolkit II 문자 모드 툴에서 터미널 타입을 결정하기 위해 사용된다; 다른 리눅스 툴에서 같은 목적으로 이용되기도 한다.

 

 

Example

 

vt100

 

TMPDIR

 

Function

 

임시 디스크 파일을 저장하기 위한 기본 디렉토리를 명시한다; 만약 설정되어 있다면, 임시 파일을 생성하는 툴들은 이 디렉토리를 이용한다.

 

 

Syntax

 

directory_path

 

 

Example

 

/u02/oracle/tmp

 

XENVIRONMENT

 

Function

 

X Window 리소스 정의를 포함하고 있는 파일을 명시한다. 보다 자세한 정보는 여러분들의 X Window 문서를 참조하기 바란다.

 

System 시간 설정

TZ 변수는 여러분들의 time zone을 설정한다. 여러분들의 운영체계가 이 환경변수를 사용하려면 리눅스 문서를 참고하도록 하라.

이것은 사용자로 하여금 daylight saving time 변화 또는 다른 시간대에 따른 시계를 맞출수 있도록 해준다. 맞춰진 시간은 date명령어에 의해 출력되는 time-stamp 파일에서 이용된다. 그리고 현재의 SYSDATE를 이용하여 얻을 수 있다.


WARNING:

사용자는 그들이 개인적으로 TZ 값을 변경하는 것은 좋지 않은 일이다. GMT+24와 같은 다른 TZ 값을 이용한다면, transaction시 기록되는 날짜가 달라진다. 이것은 Oracle Financila과 같은 SYSDATE를 이용하는 오라클 응용 프로그램에 영향을 미친다. 이러한 문제를 피할려면 date column을 가지는 테이블 대신에 sequence number를 이용하라.

 

Oracle8 Server 메모리 이용 측정하기

Oracle8 Server를 시작하기 전에, 가상메모리 요구량은 다음 공식을 이용하여 예측할 수 있다:

<size of the oracle executable text>
+ <size of the SGA>
+ n * ( <size of tool executables private data section>
+ <size of oracle executables uninitialized data section>
+ <8192 bytes for the stack>
+ <2048 bytes for the processes user area>)

여기서 n = number of background processes.

각각의 Oracle back-end 접속에 대하여, 가상메모리 요구량을 얻기 위하여 다음 공식을 이용하라:

<size of oracle executable data section>
+ <size of oracle executables uninitialized data section>
+ <8192 bytes for the stack>
+ <2048 bytes for processes user area>
+ <cursor area needed for the application>

실행가능한 text size, 개인적인 data section size 그리고 초기화되지 않은 data section siz (또는 bss)를 측정하기 위하여 size 명령어를 이용하라. Program text는 몇번 실행되던지간에, 오직 한번만 셀수 있다. 왜냐하면 모든 오라클 실행 텍스트는 항상 공유되기 때문이다.

데이터베이스가 기동되고 사용자가 접속할 때 이용되는 오라클의 물리적 메모리를 계산하기 위하여, ps 명령어를 이용한다. 모든 frontend, server 그리고 background oracle process를 조사하도록 하라. 각각에 대하여 상주메모리를 위해 "real size of process" columns을 추가한다. 그러고 나서 오라클 실행가능한 text size와 시스템에서 실행중인 오라클 툴 실행 프로그램을 그 컬럼의 subtotal에 더하여 준다. 몇번 실행이 되었던지간에 실행 프로그램의 크기는 오직 한번만 계산한다는 것을 명심해야 한다.

See Also:

ps 명령어에서 이용가능한 옵션들은 리눅스 man pages를 참조하기 바란다.

 

Calculating Cluster Size and Index Size

Calculating Cluster Size

Oracle8 Administrator's Guide의 부록 A (Appendix A)에 있는 공식을 이용하여 클러스트 사이즈를 구하려면 Table 2-4에 있는 가이드라인을 이용하라.

Table 2-4 Cluster Size Values
Type   Size  

Fixed header size

 

68 bytes

 

Variable transaction header

 

24*INITRANS value for the table

 

Row directory

 

4 bytes per row of a clustered table

 
.

Calculating Index Size

Oracle8 Administrator's Guide의 부록 A에 있는 공식을 이용하여 index에 요구되는 크기를 구하려면 Table 2-5를 이용하라.

Table 2-5 Index Size Values
Type   Size  

Fixed header size

 

113 bytes

 

Variable transaction header

 

24*INITRANS value for the index

 

Entry header

 

5 bytes

 

Server Resource Limits

LINUX는 자원의 한계를 그 부모 프로세스로 부터 상속받는다 (운영체계 문서의 getrlimit(2)를 참조하라). 이 한계는 사용자 프로세스를 위해 실행되는 Oracle8 Server shadow process에도 적용된다. 그러나 만약 이들 한계가 너무 낮게 설정되어 있을 경우 Oracle8 Server 시스템이 영향을 받을 수 있다. 이것은 여러분들의 LINUX 시스템 관리자와 상의하도록 하라.

Oracle dba 사용자 계정에 할당된 Disk quota가 Oracle8 시스템의 운용에 방해를 해서는 안된다. Oracle8 데이터베이스 관리자와 리눅스 시스템 관리자가 서로 디스크 쿼터를 설정하기 전에 만나서 의논하도록 하라.

Initialization Parameters

초기화 인자는 Oracle8 Server instance의 initsid.ora file에서 수정할 수 있다.

See Also:

Oracle8 Administrator's Guide.

 

Default Initialization Parameter Values

Table 2-6에는 리눅스에서 초기화 인자의 기본값이 나열되어 있다. 만약 여러분들이 initsid.ora file을 수정하지 않는다면 모든 Oracle8 Server instance는 이들 값을 기본값으로 여기게 된다. 오라클 회사는 여러분들의 initsid.ora file에는 기본적인 초기화 값들과 다른 인자들만 포함할 것을 권장한다.

시스템상에서 이들 인자의 기본값을 보려면, Server Manager를 이용해서 SHOW PARAMETERS라는 SQL 문장을 이용하라.

See Also:

Oracle8 Server Reference.

 

Table 2-6 Default Initialization Parameters
Parameter   Default Value  

BACKGROUND_DUMP_DEST

 

$ORACLE_BASE/admin/sid/bdump

 

BITMAP_MERGE_AREA_SIZE

 

1048576

 

COMMIT_POINT_STRENGTH

 

1

 

CONTROL_FILES

 

$ORACLE_HOME/dbs/ctrl@.dbf
(where @ represents ORACLE_SID)

 

CREATE_BITMAP_AREA_SIZE

 

8388608

 

DB_BLOCK_BUFFERS

 

200

 

DB_BLOCK_SIZE

 

2048

 

DB_FILES

 

80 (maximum of 2000000)

 

DB_FILE_DIRECT_IO_COUNT

 

64 (maximum of 1048576)

 

DB_FILE_MULTIBLOCK_READ_COUNT

 

8 (range of 1-128, but should not exceed one quarter of DB_BLOCK_BUFFERS)

 

DISTRIBUTED_TRANSACTIONS

 

16

 

HASH_AREA_SIZE

 

0

 

HASH_MULTIBLOCK_IO_COUNT

 

1

 

LOCK_SGA

 

FALSE

 

LOCK_SGA_AREAS

 

0

 

LOG_ARCHIVE_BUFFER_SIZE

 

64

 

LOG_ARCHIVE_BUFFERS

 

4 (maximum of 128)

 

LOG_ARCHIVE_DEST

 

$ORACLE_HOME/dbs/arch/

 

LOG_ARCHIVE_FORMAT

 

"%t_%s.dbf"

 

LOG_BUFFER

 

8192

 

LOG_CHECKPOINT_INTERVAL

 

10000

 

LOG_SMALL_ENTRY_MAX_SIZE

 

80

 

MTS_MAX_DISPATCHERS

 

5

 

MTS_MAX_SERVERS

 

20

 

MTS_SERVERS

 

0

 

MTS_LISTENER_ADDRESS

 

ADDRESS=address (See Chapter 6)

 

NLS_LANGUAGE

 

AMERICAN

 

NLS_TERRITORY

 

AMERICA

 

OBJECT_CACHE_MAX_SIZE_PERCENT

 

10

 

OBJECT_CACHE_OPTIMAL_SIZE

 

102400

 

OPEN_CURSORS

 

50

 

OS_AUTHENT_PREFIX

 

ops$

 

PROCESSES

 

50

 

SHARED_POOL_SIZE

 

3500000

 

SORT_AREA_SIZE

 

65536

 

SORT_READ_FAC

 

5

 

SORT_SPACEMAP_SIZE

 

512

 

USER_DUMP_DEST

 

$ORACLE_BASE/admin/sid/udump

 

System Global Area 조절하기

System Global Area (SGA)는 공유메모리 내에 존재하는 오라클의 구조이다. 이곳에는 자료구조, lock 그리고 data buffer가 존재한다. 전체 SGA를 주소로 지정하기 위해서는 각각의 oracle process에 대하여 충분한 공유메모리를 이용가능하도록 지정해야만 한다.

Size limits of the SGA

단일 공유메모리 영역의 최대 크기는 리눅스의 인자 SHMMAX에 의해서 결정된다. SGA가 2048KB인 경우 각각 512KB인 공유메모리 영역을 4개 이용하게 된다.

만약 SGA의 크기가 주어진 공유메모리 세그먼트의 크기(SHMMAX)를 넘어갈 경우, Oracle8은 요구된 SGA 크기를 맞추어 주기 위하여 좀더 연속적인 세그컨트를 할당하려고 노력하게 된다. SHMSEG는 프로세스에 의해 붙을 수 있는 세그먼트 수의 최대치를 말한다. 세그먼트를 연속적인 주소공간으로 추가하기 위하여, SHMMAX는 시스템에서의 한계값까지 최대값으로 설정되어야 한다.


Note:

Intimate Shared Memory (ISM)는 SHMMAX가 데이터베이스 SGA 크기보다 적을 때 문제가 된다.

 

다음 init.ora 인자는 SGA의 크기를 조절한다:

이들 인자들을 설정할 때는 주의를 기울여야 한다. 값이 너무 높게 잡히면 호스트의 물리적 메모리가 공유메모리로 너무 많이 할당되어 수행능력이 떨어지게 된다. 가이드라인으로서 모든 인스턴스의 SGA 크기는 총 물리적 메모리 (RAM)의 1/3을 넘지 않도록 한다.

Calculating the Size of the SGA

인스턴스의 SGA의 대략적인 크기는 다음 공식을 이용하여 계산할 수 있다:

(DB_BLOCK_BUFFERS \xb0 DB_BLOCK_SIZE)
+ SORT_AREA_SIZE
+ SHARED_POOL_SIZE
+ 1MB

실행중인 데이터베이스의 SGA의 크기를 출력하려면, Server manager의 show sga 명령어를 이용하라. 이 명령어는 SGA의 크기를 bytes 단위로 보여 준다.

Relocating the SGA

SGA가 있는 주소는, SGA에 있는 데이터베이스 버퍼나 사용자 응용 프로그램의 data 영역에서 cursor와 같은, 이용가능한 가상메모리 주소공간에 영향을 미친다.

  1. 추가되는 공유 메모리 세그면트를 위하여, 유효한 가상주소 범위를 정해야 한다. 그래야만 tstshm에서 "Lowest shared memory address"와 "Highest shared memory address" 행에서 유효한 범위를 출력한다.
    $ tstshm
    


    Note:

    시스템 Intimate Shared Memory (ISM)을 이용할 경우 tstshm을 사용하면 이상을 경험하게 된다.

     

  2. 공유 메모리 세그먼트가 추가될 때 유효한 가상 주소공간의 경계를 알기 위하여 tstshm의 출력 중 "Segment boundaries"를 점검하라.
  3. 여러분들의 SGA 의 크기를 결정하라. SGA 크기는 여러분들이 데이터베이스 시스템을 시작 할때 Total System Global Area 라는 제목이 나가고 나서 화면에 표시된다.
  4. $ORACLE_HOME/rdbms/lib directory로 이동하고 나서, ksms.s 파일을 생성하기 위하여 genksms을 실행하라:
    $ cd $ORACLE_HOME/rdbms/lib
    $ $ORACLE_HOME/bin/genksms -b sgabeg > ksms.s

    여기서 sgabeg는 SGA의 시작주소 (기본값은 0x80000000) 이다. 그리고 step 2에서 결정된 범위내에 들어 있어야 한다.

  5. 현재 존재하는 오라클 데이터베이스를 종료하라.
  6. $ORACLE_HOME/rdbms/lib directory에 있는 oracle 실행 파일을 다시 만들어 주어라:
    $ make -f ins_rdbms.mk ksms.o
    $ make -f ins_rdbms.mk ioracle

    Using ioracle:

    • 예전의 실행 파일들을 백업해 두라(oracle0)
    • 새로운 oracle실행 파일에 적절한 권한을 주어라.
    • 새로운 실행 파일들을 $ORACLE_HOME/bin directory로 옮겨라.

    결과적으로 새로운 오라클 커널이 SGA의 sgabeg에 명시된 주소로 적재된다.

genksms -b

genksms -b utility는 고정된 SGA의 시작점을 조절하는데 사용된다.

Managing Special Accounts and Groups

DBA는 오라클 서버에 의해 요구되는 특수한 계정과 친밀해 져 있어야 한다. 그리고 이들 계정이 적절한 group에 포함되어 있는지 확인해야 한다. 다음 장에서는 이들 특수한 사용자 계정에 관해 설명하고자 한다. 리눅스 계정은 Table 2-7에 설명되어 있으며, 오라클 서버 계정은 Table 2-8에 설명되어 있다.

Table 2-7 LINUX Accounts

oracle

 

oracle software 소유자는 Oracle8 software를 소유하고 있는 소유자를 뜻한다. 이 유지보수 계정은 CREATE, STARTUO, SHUTDIWN 그리고 데이터베이스에 대하여 INTERNAL로 CONNECT하기 위하여 DBA의 권한을 필요로 한다.oracle software 소유자는 superuser가 되어서는 절대로 안된다.

 

root

 

root 사용자는 리눅스에서 최대의 권한을 가지는 (superuser 권한이라고 불리는) 특수한 리눅스 계정이다. 이 계정은 리눅스 커널을 ㅅ러정하고, 네트워킹 소프트웨어를 설치하고 설정하고 그리고 다른 사용자와 그룹을 생성하는 데 이용된다.

 
Table 2-8 Oracle Server Accounts

SYS

 

이것을 설치하는 동안 자동적으로 생성되는 DBA 권한을 가지는 표준 Oracle8 계정이다. SYS 계정은 자료 디렉토리를 위한 모든 기본적인 테이블을 소유하게 된다. 이 계정은 DBA에 의해 사용된다.

 

SYSTEM

 

이 계정도 역시 설치동안에 자동적으로 생성되는 DBA 권한을 가진 표준 Oracle8 계정이다. 추가적인 테이블이나 뷰들이 SYSTEM user에 의해서 생성된다. DBA들은 데이터베이스를 관리하고 유지하기 위하여 SYSTEM으로 로그인해야 한다.

 

.

Table 2-9 Special Group Accounts

dba group

 

oracle software 소유자는 dba group을 요구하는 유일한 계정이다. 여러분들은 dba group에 root user를 추가하던지 또는 다른 리눅스 사용자를 추가할 수도 있다. 이 그룹의 일원들은 특수한 권한과 기능을 가진 Server Manager를 접근할 수 있다. INTERNAL 로 접근을 하던지 또는 Server Manager의 다른 관리 기능으로 접근하려면 암호를 입력해야 한다. 기본적인 group ID는 dba이다.

 

oper group

 

이것은 여러분들이 옵션으로 생성할 수 있는 LINUX 그룹이다. 그룹의 일원들은 데이터베이스 OPERATOR 권한을 가진다. OPERATOR 권한은 dba 권한의 일부이다.

 

root group

 

오직 root user 만이 root group의 멤버가 될 수 있다.

 

Managing Security

Oracle8 uses several features of the LINUX operating system to provide a secure environment for users. These features include file ownership, group accounts, and the ability of a program to change its user ID upon execution.

Oracle8의 two-task 구조는 작업(그리고 주소공간)을 사용자 프로그램과 oracle program으로 나눔으로써 Oracle8의 보안을 향상시킬 수 있다. 모든 데이터베이스접근은 shadow proces와 oracle program상에서 특별한 인증을 통해 이루어 진다.

Groups and Security

Oracle8 데이터베이스에서 강력한 보안을 필요로 한다면, 운영체계 수준에서 사용자 그룹을 생성하라. Group은 리눅스의 /etc/group 파일에 의해 조절된다. 오라클 프로그램은 보안 목적상 두가지 종류로 나누어 져 있다: 모두(리눅스 용어로 other)에 의해 실행 될 수 있는 것들, 그리고 DBA에 의해서만 실행 될 수 있는 것들. 보안에 대한 권장 접근법은 다음과 같다:

비록 여러분들이 데이터베이스 관리자 그룹 이름으로 어떠한 것을 할당할 수도 있지만 기본 그룹 이름은 dba이다. 그리고 이 문서에서 기본적으로 사용하게 될 것이다. 만약 여러분들이 group 이름을 바꾼다면 오라클 Installer는 설치하는 동안 커널을 자동적으로 재연결 시키게 될것이다. 만약 여러분들이 같은 ORACLE_HOME을 가지는 여러개의 데이터베이스를 가지고 있다면 (오라클 회사에서는 이러한 설정은 강력하게 하지 않도록 권장하지만), 같은 데이터베이스 관리자 그룹을 가져야만 한다. 이러한 제한점은 일반적인 사용자를 위한 그룹이름(oracle group으로 알려져 있는)에는 적용되지 않는다.


WARNING:

비록 oracle software 소유자와 root 사용자가 dba group에 포함되지만, oracle software 소유자는 root group의 멤버는 아니다. root user만이 유일한 root group의 멤버이다.

 

Security for Oracle Server Utilities

Oracle8 실행파일들을 인증되지 않은 곳에서 사용하는 것을 막는다. 여러분들이 사용할 방법은 여러분들이 single-task utility를 사용하는 가 하는 환경에 달려 있다. 다음은 Oracle8 실행 파일들을 보호하는 방법들을 제안한 것이다:

Security for Server Manager Commands

만약 여러분들이 SQL*Plus를 가지고 있지 않다면, 여러분들은 SQL query를 하기 위하여 Server Manager를 이용할 수 있다. 다음 시스템 권한의 문장들은 oracle software 소유자 그리고 dba group의 사용자를 제외하고는 어느 누구도 접근할 수 있어서는 안된다. 그들에게는 특별한 운영시스템의 권한이 주어져 있다.

Security for Database Files

Oracle8을 설치하는데 사용되는 사용자 ID는 데이터베이스 파일들을 소유한다. 기본적인 사용자 ID는 oracle software 소유자이다. 이들 파일들의 인증을 permission 0600으로 설정하라: 소유자에게만 read/write (rw) 권한을 주고, group이나 다른 사용자들에게는 쓰기 권한을 주지 않아야 한다.

oracle software 소유자는 데이터베이스 파일을 포함하고 있는 디렉토리를 소유해야 한다. 보안을 보완하기 위하여 group 과 다른 사용자들에게 읽기 허용을 폐지시켜야 한다.

보호된 데이터베이스 파일로 접근하기 위하여, oracle program은 반드시 set user ID (setuid) bit를 설정해 두어야 한다. 이 bit를 설정하기 위하여 다음과 같이 입력한다:

$ chmod 6751 $ORACLE_HOME/bin/oracle

이것은 oracle program에 대하여 인증을 설정하는 것이다:

-rwsr-s--x 1 oracle dba  443578 Mar 10 23:03 oracle

Setting the User ID

Oracle Installer는 자동적으로 user ID를 설정한다. 실행 field에 있는 s는 여러분들이 oracle program을 실행 할때, 그것을 기동시킨 실제 사용자가 누구인든지 간에 유효사용자 ID가 oracle이 된다는 것을 의미한다.

Network Security

Using Passwords on the Network

네트워크 상에서 원격 사용자들은 그들의 password를 명확히 또는 암호화된 문으로 입력해야 한다. 여러분들이 암호화되지 않은 텍스트로 입력할 때 패스워드가 인증되지 않은 사용자에 의해 가로채어 질 수 있다. 이 때문에 보안 문제가 발생할 수 있다. Oracle Net8은 암호화된 password를 지원한다.

DBA Privileges Over the Network

DBA 권한을 네트워크상에서 조절하기 위하여 다음중 한가지를 선택하라:

Automatic (ops$) Logins

Oracle8은 네트워크를 통한 자동 로그인을 지원한다. (운영체계 인증 로그인)

LINUX는 dollar 기호($)를 환경변수의 시작으로 여긴다. 그러므로 여러분들이 스크립트에서나 명령어에서 운영체계 인증 (ops$) login 을 시도하면, 먼저 $ 기호를 backslash (\)로 escape 시켜야 한다. 예를 들면 사용자 ID scott는 원격지 로그인때 ops\$scott 로 명시해 주어야 한다.

root user ID로는 자동 로그인이 허용되지 않는다.


Note:

PC, Apple MacIntosh, 그리고 OS/2 사용자의 자동 로그인은 안전하지 못하다. 누구나 그들 사용자 ID의 오라클 설정 파일을 편집하고 고칠 수 있다. 보안 목적으로 만약 사용자가 이들 시스템이 네트워크상에서 접속하려고 한다면, 오라클 회사는 listener.ora file상에서 강력하게 못하도록 해 둘것을 권장한다.

 

Enabling Automatic Logins for Oracle Net8

자동적이고 그리고 원격지 DBA 로그인은 Oracle Net8에 의해서 조절되지 않는다. 그들은 Oracle8 서버에 의해서 initsid.ora file에 있는 인자들을 이용하여 설정할 수 있다. 비록 자동 logins이 지원되지만, 기본적으로는 비활성화 되어 있다. 이들을 활성화 시키기 위해서는 REMOTE_OS_AUTHENT 초기화 인자의 값을 true로 설정해 두고, 데이터베이스를 시작하라.

oracle이 이들 로그인을 조절하기 때문에, Oracle Net8 listener를 root에 대하여 setuid를 설정하고서 실행할 필요가 없다.

See Also:

Oracle Net8의 설정은 Chapter 6에 기술되어 있다.

 

Oracle Net8을 이용한 자동 로그인을 실행하려면 /etc/passwd file에 daemon이라고 불리는 사용자를 만들어야 한다. daemon 사용자는 어떤 로컬 데이터베이스에도 ops$ 계정을 가져서는 안된다. 또한 DBA 그룹을 가져서도 안된다. 즉, 외부 사용자가 여러분들의 로컬 데이터베이스로 침입할 수 있는 ops$daemon 계정이 아니어야 한다.

DBA Group ID Keywords

Table 2-10은 원격지 로그인을 조절하고 가능하게 하기 위한 /var/opt/oracle/listener.ora file에 사용되는 keyword에 대해 기술 하고 있다.

Table 2-10 Keywords Used to Control Remote Logins

DBA_GROUP

 

listener에 의해 서비스 되고 있는 모든 인스턴스 에서 공통적인 이름이라면 이 keyword를 이용하라.

 

DBA_GROUP_sid

 

listener가 하나 이상의 $ORACLE_HOME에서 서비스를 하고 있고, group ID가 서로 다르다면 각각의 ORACLE_SID 에 대하여 이 keyword를 이용하라.

 

OPS_DOLLAR_LOGIN_ALLOWED
OPS_DOLLAR_LOGIN_DENIED

 

원격지 login을 조절하기 위해서 이 keyword를 이용하라. OPS_DOLLAR_LOGIN_DENIED가 기본값이다.

 

REMOTE_DBA_OPS_ALLOWED
REMOTE_DBA_OPS_DENIED

 

원격지 DBA 접근을 조절하려면 이 keyword를 이용하라. REMOTE_DBA_OPS_DENIED가 기본값이다.

 

만약 데이터베이스로 접근하기 위한 DBA group ID가 기본값 (dba)이 아니라면, 그 이름을 명시해야 한다.

원격지 로그인과 원격지 DBA 접속을 위한 인자 값을 네트워크상의 데이터베이스의 ORACLE_SIDs 에 대하여 개별적으로 설정을 하던지, 또는 모든 sid에 대하여 한꺼번에 할 수도 있다. 예를 들면, 다음 문장들 중 하나를 이용하면 된다:

PARAMETER=ALL_SIDS
PARAMETER=sid1[, sidn...]

sid에 대하여 어떤 권한이 할당되어 있는지 확인하려면, 다음과 같이 입력하라:

$ lsnrctl status

Checking Order

시스템은 원격지 로그인 인자들을 다음 순서대로 점검한다:

  1. 접근을 거부하는 파라메트들
  2. 접근을 허용하는 파라메트들
  3. 기본값 (접근 거부)

이들 권한은 오라클 Net8 listener에 의해 분기되는 shadow process의 사용자 ID와 group ID를 조절하여 구현하고 있다. 예를 들면:

Security and Remote Passwords

여러분들은 personal computer와 같은 원격지 머신으로 부터, 운영체계의 계정없이도 데이터베이스로 접근하고 관리할 수 있다. 사용자 인증은 오라클의 orapwd utility에 의해 생성되고 관리되는 Oracle8 password file을 이용하여 한다. 사용자 계정을 지원하는 운영체계상에서는 시스템의 password 파일을 이용한 인증을 할 수 있다.

로컬 password file은 $ORACLE_HOME/dbs directory에 있으며, 단인 데이터베이스를 위한 username과 password 정보를 포함하고 있다. 만약 컴퓨터상에 여러개의 $ORACLE_HOME directories가 있다면, 각각 분리된 password 파일을 가질 것이다.

Running orapwd

orapwd utility는 $ORACLE_HOME/bin 에 있으며, oracle software 소유자에 의해 실행 가능하다. 다음과 같이 입력하여 orapwd를 실행하라:

$ orapwd file=$ORACLE_HOME/dbs/orapwsid password=password entries=max_users

이 문법은 Table 2-11에 기술되어 있다:

Table 2-11 Syntax for Executing orapwd

file

 

은 password 정보가 쓰여지는 파일의 이름이다. 파일의 이름은 반드시 orapwsid, 여야 하고, 여러분들은 완전한 경로명을 명시해 주어야 한다. 그 내용은 암호화되며, 사용자는 읽을 수 없도록 되어 있다. 이 인자는 강제적이다.

 

password

 

는 여러분들이 INTERNAL과 SYS를 위해 선택한 초기 password이다. 여러분들은 이들 password를 데이터베이스를 생성한 후 ALTER USER 구문을 이용하여 바꿀 수 있다. 이 인자 역시 강제적이다.

 

entries

 

은 이 데이터베이스에 대하여 SYSDBA 또는 SYSOPER로서 접근할 수 있는 최대수이다. 이 인자는 여러분들이 password 파일을 EXCLUSIVE로 설정할 때만 강제적이 된다.

 


Note:

사용자의 최대수를 증가 시킨다든지 할때에는 새로운 password 파일을 생성해 주어야만 한다. 그러므로 max_users 는 여러분들이 예상하는 최대 수 보다 좀더 높게 잡아 주는 것이 좋다.

 

orapwd Example

$ orapwd file=/u01/app/oracle/product/8.0.5/dbs/orapwV805 \
password=manager entries=30

See Also:

Oracle8 Server Administrator's Guide.

 

Shared Password File for Multiple Databases

기본적인 password file인 /dbs/orapwd는 초기화 인자인 REMOTE_LOGIN_ PASSWORDFILE이 여러개의 데이터베이스를 위해서 SHARED로 설정되어 있을 때 사용된다. 다중 데이터베이스에서 sid에 특이적인 password 파일은 없다.

Access to a Database from a Remote PC

Oracle8 password file이 있을 때, 네트워크의 PC users는 이 데이터베이스에 대하여 INTERNAL로 접근할 수 있다. 권한을 가지지 않은 사용자는 데이터베이스를 사용하는 오라클 응용 프로그램을 실행함으로서 접속할 수 있다. 데이터베이스에 대해 DBA 기능을 원하는 권한을 가진 사용자는, dba user password를 추가하여 그들의 PC로 부터 적절한 Server Manager 명령어를 실행할 수 있다. 예를 들면:

SVRMGR> connect internal/dba_password

OPERATOR로서 접속할려면, OPERATOR password와 함께 같은 명령어를 사용한다.

Remote Authentication

Table 2-12에서 보여주는 다음 initsid.ora parameter 들은 보안성이 없는 프로토콜을 이용하여 원격지로 부터 접속할 경우의 행동들을 조절한다.

Table 2-12 Parameters For Controlling Remote Connections

REMOTE_OS_AUTHENT

 

ops$ 접속을 가능 또는 불가능하게 조절한다.

 

OS_AUTHENT_PREFIX

 

ops$ accounts에 의해 사용된다.

 

REMOTE_OS_ROLES

 

원격지 접속을 통해 role을 가능 또는 불가능하게 만든다.

 


Note:

만약 REMOTE_OS_AUTHENT가 true로 설정되어 있다면, 원격지 컴퓨터에서 dba group의 일원인 사용자가 INTERNAL로 password 없이 접속 가능하다.

 

User-Visible Effects of the Shutdown Mechanism

서버가 shutdown 중인 인스턴스로 접속한 클라이언트는 뒤이어 SQL을 사용할 경우 다음중 하나의 에러메시지를 받게 된다.

ORA-03113: end-of-file on communication channel
ORA-12571: TNS:packet writer failure

Administering Login Home Directories

그들을 참조하는 프로그램을 수정하지 않고, 로그인 홈디렉토리를 이동하던지 추가 하고자 할 경우 다음과 같이 해야 한다:

중앙 참조파일을 제외하고 경로명을 기록할 필요가 없다. 왜냐하면 사용자의 홈디렉토리는 다음과 방법 중 하나로서 유추할 수 있기 때문이다:

유사하게, group memberships은 /etc/group로 부터 계산할 수 있다. 다음 장에 있는 sample grpx script를 참조하라.


Note:

로컬에서 일반적인 목적의 유틸리티들은 /var/opt/bin directory에 저장된다.

 

Sample lhd Script

#!/bin/sh
#
# lhd - print login home directory name for a given user
#
# SYNTAX
# lhd [login]
#
prog=`basename $0`
if [ $# -eq 0 ] ; then
    login=`whoami`

elif [ $# -eq 1 ] ; then
    login=$1
else
    echo "Usage: $prog login" >&2

    exit 2
fi
awk -F: '$1==login {print $6}' login=$login /etc/passwd

Sample grpx Script

#!/bin/sh
# grpx - print the list of users belonging to a given group
#
prog=`basename $0`
if [ $# -ne 1 ] ; then
    echo "Usage: $prog group" >&2
    exit 2
fi
g=$1
# calculate group id of g
gid=`awk -F: '$1==g {print $3}' g=$g /etc/group`
# list users whose default group id is gid
u1=`awk -F: '$4==gid {print $1}' gid=$gid /etc/passwd`
# list users who are recorded members of g
u2=`awk -F: '$1==g {gsub(/,/," "); print $4}' g=$g /etc/group`
# remove duplicates from the union of the two lists
echo $u1 $u2 | tr " " "\012" | sort | uniq | tr "\012" " "
echo


Example 2-1 Using lhd and grpx Scripts

이 예제는 관리자가 어떻게 .profile 이라는 골격 파일을 그룹의 멤버들에게 전파시키는 지 하는 방법을 보여준다. 먀ㄴ약 clerk group의 membership list가 바뀌더라도 코드 자체를 바꿀 필요는 없다.

$ for u in `grpx clerk` ; do
> cp /etc/skel/.profile `lhd $u`
> done

Building and Running Demonstrations

Loading PL/SQL Demonstrations

PL/SQL은 여러분들이 올려 볼수 있는 많은 수의 예제를 포함하고 있다. 데모와 메시지 파일들이 rdbms directory에 저장되어 있다. Oracle8 Server를 open 시키고 마운트 하는 작업을 실행하라:

  1. Server Manager를 실행 시키고, user/password scott/tiger로 접속하라:
    $ cd $ORACLE_HOME/plsql/demo
    $ svrmgrl
    SVRMGR > connect scott/tiger
  2. 데모를 올려 보기 위해서, Server Manager로 부터 exampbld.sql을 실행하라:
    SVRMGR > @exampbld


    Note:

    어떤 오라클 계정에서라도 충분한 permission을 가지고 데모를 만들어라. 데모를 여러분들이 만든 그 계정에서 실행하라.

     

Running PL/SQL Demonstrations

Table 2-13에는 커널 데모를 나열하고 있다.

Table 2-13 Kernel Demonstrations
 

examp1.sql

 

examp5.sql

 

examp11.sql

 

sample1.sql

 

examp2.sql

 

examp6.sql

 

examp12.sql

 

sample2.sql

 

examp3.sql

 

examp7.sql

 

examp13.sql

 

sample3.sql

 

examp4.sql

 

examp8.sql

 

examp14.sql

 

sample4.sql

 

extproc.sql

 

 

 

 

Table 2-14에는 precompiler 데모를 나열하고 있다.

Table 2-14 Precompiler Demonstrations
 

examp9.pc

 

examp10.pc

 

sample5.pc

 

sample6.pc

 

커널 PL/SQL demonstrations을 실행하기 위해서는, 데모를 생성한 것과 같은 계정을 이용하여, 커널로 접속하기 위하여 SQL*Plus를 실행해야 한다. "at" sign (@)을 쳐서 데모를 시작하던지 또는 데모 이름 앞에 start라는 단어를 쳐넣어서 시작해야 한다. 예를 들면, examp1 demonstration을 시작하기 위하여 다음과 같이 입력한다:

$ sqlplus scott/tiger
SQLPLUS > @examp1

Precompiler PL/SQL demonstrations을 시작하기 위하여 다음과 같이 입력하라:

$ cd $ORACLE_HOME/plsql/demo
$ make  -f demo_plsql.mk demos

만약 여러분들이 하나의 데모를 만들길 원한다면, make command에서 그 인자로서 만들고자 하는 데모 이름을 인자로 입력해 주어라. 예를 들면 examp9.pc 실행 파일을 만들길 원한다면, 다음과 같이 입력하라:

$ make  -f demo_plsql.mk examp9

현재 shell에서 examp9 demonstration을 실행하려 한다면, 다음과 같이 입력하라:

$ examp9

extproc demo를 실행하려 한다면, 여러분들은 먼저 다음 라인을 파일 tnsnames.ora에 추가해 주어야 한다:

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=plsff))(CONNECT_DATA=(SID=extproc)))


그러고 나서 listener.ora 파일에 다음 행을 추가한다:

SC=(SID_NAME=extproc)(ORACLE_HOME=/vobs/oracle)(PROGRAM=extproc))

그러고 나서 현재 shell에서 다음과 같이 입력하라:

SVRMGR> connect scott/tiger
Connected.
SVRMGR> connect system/manager
Connected.
SVRMGR> grant create library to scott;
Statement processed.
SVRMGR> connect scott/tiger
Connected.
SVRMGR> create library demolib as
'$ORACLE_HOME/plsql/demo/extproc.so';
Statement processed.

그러고 나서 마지막으로, 실행이 되는지를 테스트하라:

SVRMGR> connect scott/tiger
Connected.
SVRMGR> @extproc

SQL*Loader Demonstrations

SQL*Loader demonstrations은 다음을 요구한다:

데모를 만들고 실행하기 위해서 다음과 같이 한다:

  1. Server Manager (line mode)에서 데이터베이스로 user/password scott/tiger를 이용하여 접속한다.
  2. 여러분들이 실행하길 원하는 데모에 해당하는 ulcasen.sql 을 실행하라.
  3. scott/tiger 사용자로서, 명령행에서 데모를 실행시킨다:
    $ sqlldr scott/tiger ulcasen

scott/tiger 사용자로서, 다음 순서로 SQL*Loader demonstrations을 실행 시킨다:

Administering SQL*Loader

Oracle8 Server는 SQL*Loader 기능을 포함하고 있다. 데모와 메시지 파일들은 rdbms directory 내에 있다.

File Processing Option

SQL*Loader release 1.1 조절 파일은 옵션 문자열을 처리하는 다음 추가 파일들을 포함한다. 기본적으로 인자 없이 str를 사용한다.

[ "str" | "fix n" | "var n" ]
str

(기본 값) 기록의 stream을 명시한다. 각각은 newline 문자로 끝나며, 한번에 한 레코드씩 읽힌다.

fix

파일이 고정길이 레코드를 가지고 있음을 가르킨다. 각각은 n bytes 길이를 가지며, 여기서 n은 정수 값이다.

var

은 파일이 가변길이 레코드를 가지고 있음을 가르킨다. 각각은 n bytes 길이를 가질수 있으며, 여기서 n은 각 레코드의 처음 5글자에 명시된 정수값이다.

만약 파일 처리 옵션이 선택되지 않는다면, 정보는 기본적으로 레코드의 스트림으로 처리된다(str). 여러분들은 fix mode가 기본적인 str mode 보다 더빠르다는 것을 느끼게 될 것이다. 왜냐하면 레코드의 종료를 찾을 필요 없기 때문이다.

Newlines in Fixed Length Records

고정길이 레코드를 포함한 파일을 읽기 위하여 fix 옵션을 사용할 때, 여기서 각각의 레코드는 newline 문자로 종료되며, SQL *Loader에게 레코드의 길이를 알릴때에는 newline의 길이를 포함시킨다.

예를 들면, 다음 파일을 읽으려면:

AAA newline
BBB newline
CCC newline

뒤에 붙는 newline 문자를 포함하여 fix 3 대신에 fix 4로 명시 해 줘야 한다.

마약 여러분들이 파일에서 마지막 레코드가 newline 문자를 가진 고정길이의 레코드로 종료하지 않는다면, 다른 레코드도 newline 문자로 종료할 수 없다. 유사하게, 만약 여러분들이 마지막 record를 newline으로 종료한다면 모든 레코드를 newline으로 종료할 수 있다.


WARNING:

일부 텍스트 편집기는, vi와 같은, 파일의 마지막 레코드를 자동으로 newline 문자로 종료시킨다. 이것은 만약 파일의 다른 레코드가 newline 문자로 종료 하지 않을 경우 불일치성을 야기 할수 있다.

 

Removing Newlines

고정길이 레코드에서 newline 문자를 없애고자 한다면 그들을 올리는 것 보다는 control 파일에서 position(x:y) function을 이용한다. 이렇게 하기 위해서는 여러분들의 control file에 다음과 같이 입려하여 준다:

load data
infile xyz.dat "fix 4"
into table abc
( dept position(01:03) char )

이것이 종료되면, newline은 각각의 고정길이 record 에서 네번째 위치에 있기 때문에 없어지게 된다.

Oracle Security Server

See Also:

Oracle Security Server의 정보를 보길 원한다면, Oracle Security Server Guide를 보도록 하라.

 

Oracle8 Server SQL Reference

CREATE CONTROLFILE Parameters

데이터베이스를 위한 control file의 크기를 결정하려면 Table 2-15에 있는 인자들 값을 이용하라.

Table 2-15 Determining the Size of Control Files
Parameter   Default Value   Maximum Value  
MAXDATAFILES   30   65534  
MAXINSTANCES   1   63  
MAXLOGFILES   16   255  
MAXLOGMEMBERS   2   5  
MAXLOGHISTORY   100   65534  





Prev

Next
Oracle
Copyright © 1998 Oracle Corporation.

All Rights Reserved.

Library

Product

Contents

Index