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 유틸리티를 활용할 수 있음.
'IT > 인프라' 카테고리의 다른 글
DBA를 위한 Linux 쉘 스크립팅 입문(4) (0) | 2017.03.23 |
---|---|
DBA를 위한 Linux 쉘 스크립팅 입문(3) (0) | 2017.03.23 |
DBA를 위한 Linux 쉘 스크립팅 입문(1) (0) | 2017.03.23 |
시스코 데이터 센터 비젼과 전략 (0) | 2017.03.20 |
컴퓨팅 아키텍쳐의 동향과 시스코의 전략 (0) | 2017.03.20 |