SQL과 오라클의 고정 뷰(fixed view)를 이용하면 데이터베이스 내부로부터 시스템 전체를 조망하는 것이 가능합니다. 이에 반해, 쉘 스크립트는 데이터베이스 외부에서 바라본 시스템 뷰를 제공합니다. 쉘 스크립팅이 만병통치약이 될 수 없는 이유가 여기에 있습니다.


먼저, 운영체제 환경의 대부분을 데이터베이스 내부에서 모니터링하거나 변경하는 것이 가능하다는 사실을 인지할 필요가 있습니다. 오라클의 고정 뷰(fixed view, v$ 접두어를 가진 뷰)를 이용하면 서버(v$instance) 또는 데이터베이스가 실행중인 플랫폼(v$database)의 정보를 확인할 수 있습니다. 데이터베이스에 관련된 파일의 위치 및 속성도 같은 방법으로 확인이 가능합니다. 

데이터파일(v$datafile, dba_data_files), temp 파일(v$tempfile, dba_temp_files), 리두 로그(v$logfile), 아카이브 로그(v$archived_log), 컨트롤 파일(v$controlfile) 등의 위치와 기타 속성을 데이터베이스로부터 직접 쿼리할 수도 있습니다. 

Flash Recovery Area($recovery_file_dest)에 대한 정보, 또는 init.ora 매개변수(db_recovery_file_dest, db_recovery_file_dest_size), 프로세스(v$process), 메모리(v$sga, v$sgastat) 등에 관련한 정보 역시 쉽게 확인이 가능합니다. 그 밖에도 다양한 PL/SQL 패키지가 제공되며, 하부 OS에 대한 액세스를 지원하는 Java/C 데이터베이스 오브젝트의 개발이 가능합니다.

데이터베이스 액세스가 빈번하게 요구되는 작업이라면, 스크립팅이 최선의 대안이 되기 어려울 것입니다. 뒷부분에서 설명하겠지만, SQL*Plus를 이용하여 스크립트에서 데이터베이스에 액세스하는 것이 가능합니다. 하지만 다른 언어를 이용하여 문제를 해결하는 것이 더 쉬울 가능성이 높습니다.

아래 표는 데이터베이스 내부로부터 접근 가능한 정보의 목록을 요약하고 있습니다:

서버/OS 정보

서버 정보의 확인

쿼리

설명

인스턴스가 실행

select host_name

bash에서 같은 정보를 얻기

중인 서버의 이름

from v$instance;

위해 사용할 수 있는 명령이 아래와 같음:

hostname

or

uname –n

운영 체제 플랫폼

select platform_name from v$database –-(10g)

아래 명령을 사용하여 같은 정보를 확인할 수 있음 uname –s

파일 정보

오라클 파일의 위치

쿼리

설명

컨트롤 파일

select name from v$controlfile;

데이터베이스 컨트롤 파일의 위치. init.ora 파일의 control_files 매개변수에도 같은 정보가 정의되어 있음.

데이터파일

select file_name from Dba_data_files;

데이터베이스 데이터파일의 위치

Temp 파일

select file_name from Dba_temp_files;

데이터베이스 임시 파일의 위치

로그 파일

select member from v$logfile;

리두 로그의 위치

아카이브 로그

select name from v$archived_log

아카이브 리두 로그의 위치. init.ora 파일의 log_archive_dest_n 매개변수에도 같은 정보가 정의되어 있음.

데이터베이스가 아카이브 모드로 설정되지 않은 경우에는 쿼리 결과가 반환되지 않음.

Flash recovery area

select name from v$recovery_file_dest

Oracle 10g에서 Flash Recovery Area를 위해 사용하는 디렉토리의 위치. init.ora 파일의 db_recovery_file_dest 매개변수에도 같은 정보가 정의되어 있음.

기타 매개변수에 정의된 파일 시스템 접근 위치

select * from v$parameter

where value like '%/%'

or

value like '%/%';

쿼리 결과는 오라클 데이터베이스 버전에 따라 크게 달라질 수 있음. 반환되는 매개변수 값이 아래와 같음:

spfile standby_archive_dest utl_file_dir background_dump_dest user_dump_dest core_dump_dest audit_file_dest dg_broker_config_file1 dg_broker_config_file2

파일시스템 관련 경로 정보 표시

select directory_path from dba_directories

표준 데이터베이스 기능으로 포함되지 않은 파일에 액세스하기 위해 Oracle UTL_FILE_DIR 매개변수와 DIRECTORY 데이터베이스 오브젝트를 사용할 수 있음.

프로세스 정보

프로세서/프로세스

쿼리

설명

세션 프로세스

select p.spid, s.username, s.program

from v$process p, v$session s

where p.addr=s.paddr order by 2, 3, 1

spid와 ps –ef 실행 결과를 조합하여, 특정 프로세스의 OS 정보와 데이터베이스 정보를 비교할 수 있음.

parallelism 관련 프로세스

select slave_name, status from v$PQ_SLAVE

Parallelism을 이용하여 로드, 쿼리, 오브젝트 생성, 복구, 복제 등의 데이터베이스 작업 성능을 개선할 수 있음. parallel_threads_per_cpu 매개변수는 인스턴스의 디폴트 “degree of parallelism”을 정의하는데 사용됨.

메모리 정보

메모리

쿼리

설명

Program Global Area

select * from V$PGASTAT

pga_aggregate_target 매개변수는 서버 연결을 위해 사용되는 메모리 사이즈의 설정을 위해 사용됨.

vmstat, top 등의 Linux 유틸리티를 사용하여 메모리 사용 현황을 모니터할 수 있음.

System Global Area

select * from v$sga

SGA_MAX_SIZE, SGA_TARGET 매개변수는Oracle Database 10g의 다이내믹 메모리 할당 기능을 설정하는 용도로 사용됨. 또 다른 매개변수를 이용하면 특정 목적을 위해 메모리를 수동으로 할당할 수 있음.

메모리 할당 내역을 모니터하기 위해 다양한 Linux 유틸리티를 활용할 수 있음.



블로그 이미지

swhwang

,