시스템 관리자와 DBA 사이에는 고전적인 역할의 구분이 이루어져 왔습니다. 하지만 실제 상황에서 이러한 구분이 항상 명확한 것은 아닙니다. 많은 IT 조직은 데이터베이스와 운영체제를 동시에 책임지는 직원들을 고용하기도 합니다. 또 오라클 데이터베이스 역시 운영체제의 리소스와 밀접한 연관성을 가지고 있으며, 주어진 환경과 긴밀한 통합을 이루도록 설계되어 있습니다.


또 많은 시스템 관리자와 DBA들은 자신들이 담당하는 업무를 자동화하기를 원하고 있습니다. 소프트웨어의 설치, 시스템 리소스의 모니터링, 시스템의 관리와 같은 반복적이고 오류 가능성이 높은 작업들은 자동화된 프로세스를 통해 처리하는 것이 훨씬 효율적입니다.


이러한 작업을 자동화하는 방법의 하나로 쉘 스크립팅을 활용할 수 있습니다. 시스템이 시작되고 셧다운 되는 과정에서 다양한 스크립트가 호출됩니다. 오라클 및 써드 파티 벤더가 제공하는 유틸리티들 역시 쉘 스크립트를 통해 호출됩니다. 쉘 스크립트는 쉽고 빠르게 개발할 수 있다는 장점 때문에 애플리케이션 프로토타입 개발을 위한 도구로 오랜 기간 활용되어 왔습니다. 시스템 관리자들은 쉘 스크립팅이 제공하는 기능들을 이용하여, 주어진 환경에 맞춤화된 솔루션을 개발하고 있습니다.


본 문서에서는, Linux 플랫폼에서 오라클 데이터베이스를 설치, 운영, 유지보수 하는데 필요한 기본적인 “bash” 쉘 스크립트를 소개합니다. 본 문서는 Linux 스크립트에 처음 입문하는 사용자, 또는 Linux를 처음 접하는 DBA를 대상으로 작성되었으므로, 경험이 많은 Linux 시스템 관리자들에게는 크게 도움이 되지 않을 수도 있음을 참고하시기 바랍니다.


쉘 스크립트란 무엇인가?

쉘 스크립트란 일련의 명령을 포함하는 텍스트 파일입니다. 사용자가 이 파일을 실행하면, 파일에 포함된 명령이 순서대로 실행되게 됩니다. 쉘(shell)이란 Linux 커널과의 커뮤니케이션을 위해 사용하는 커맨드라인 사용자 인터페이스를 지칭하는 용어로, C 쉘(csh), Korn 쉘(ksh), Bourne 쉘(sh), Bourne-Again 쉘(bash) 등이 널리 사용되고 있습니다. 쉘은 파일 또는 터미널로부터 입력된 라인을 읽어 해독 과정을 거친 후 커맨드를 실행하는 역할을 담당하며, 이러한 점에서 쉘 역시 커맨드의 일종으로 볼 수 있습니다. Bourne-Again (bash) 쉘은 위에서 언급된 쉘들의 기능을 대부분 포함하고 있으며, 본 문서에서도 bash 쉘을 이용하여 스크립트 작성 방법을 설명하게 될 것입니다.


스크립트 파일의 첫 번째 라인에는 스크립트를 실행할 때 어떤 쉘을 사용할 것인지 정의하게 됩니다. 그 예가 다음과 같습니다:


#!/bin/bash


쉘 스크립트를 사용하는 이유는 무엇인가?

DBA 경험이 어느 정도 있는 사용자라면 쉘 스크립팅이 갖는 가치에 대해 이미 잘 알고 있을 것입니다. 하지만 UNIX 시스템의 경험이 없는 사용자에게, 암호처럼 얽힌 쉘 커맨드는 무척 어지럽고 성가시게 보일 수도 있습니다. 또 한편으로, Oracle 10g가 데이터베이스 외부의 운영체제 레벨에서 데이터를 처리하기 위한 안정적인 플랫폼을 함께 제공하고 있기도 합니다.


하지만 쉘 스크립트를 사용해야 할 이유는 여러 곳에서 찾아볼 수 있습니다. 그 몇 가지 예가 아래와 같습니다:


 이미 구현된 스크립트를 관리해야 하는 경우.

 오라클 소프트웨어를 설치하기 전에 수행되는 시스템 셋업 작업을 자동화하고자 하는 경우: 예를 들어, OS의 초기 상태를 점검하고 소프트웨어 설치 이전에 필요한 조치사항을 리포트하는 스크립트를 작성할 수 있습니다. 또 오라클 데이터베이스에 필요한 OS 사용자/그룹을 생성하고 환경 변수를 설정해 줄 수도 있습니다.

 스크립트 대신 오라클 데이터베이스를 이용하여 스케줄 기반의 작업을 실행할 수도 있습니다. 하지만 데이터베이스가 “실행 중이지 않은” 상태에서 실행되어야 할 작업이 있을 수도 있습니다. 데이터베이스(또는 리스너, 데이터베이스 관련 프로세스 등)를 시작하거나 중단하는 스크립트를 작성할 수도 있습니다. 이러한 작업은 데이터베이스 내부적으로는 처리가 불가능한 것들입니다.


 데이터베이스의 상태를 모니터링하기 위한 메커니즘이 필요한 경우(예: 데이터베이스가 쿼리를 처리할 수 있는 상태인지 확인해야 하는 경우): 예를 들어 오라클과 직접적으로 연관되지 않은 프로세스와 리소스를 모니터링하는 스크립트를 작성하여 시스템의 상황을 보다 폭넓게 확인할 수 있습니다.


 백업의 자동화: Oracle Recovery Manager(RMAN)는 백업 스크립트의 개발을 위한 플랫폼 중립적인 유틸리티입니다. 쉘 스크립트에서 Oracle Recovery Manager를 호출하고 백업 및 복구 작업을 위해 활용할 수 있습니다.


 다양한 데이터베이스 제품을 동시에 지원해야 하는 환경: 여러 종류의 데이터베이스를 동시에 운영할 필요가 있을 수 있습니다. 단일 데이터베이스 제품으로 모든 요구사항을 만족하기 어려울 수도 있고, 특정 제품에 관련한 보안 관련 이슈가 제기될 수도 있습니다. 이러한 상황이라면, 특정 데이터베이스에 종속되지 않은 쉘 스크립팅을 활용하여 요구사항을 해결하는 것이 바람직할 것입니다.


쉘 스크립트의 적용이 바람직하지 않은 경우

오라클 데이터베이스에는 고전적인 RDBMS의 한계를 뛰어넘는 다양한 기능이 포함되어 있습니다. 다른 소프트웨어와 마찬가지로, 오라클 데이터베이스는 운영체제에서 제공되는 리소스를 사용합니다. 하지만 주변 환경을 인지하고 변경하는 능력은 다른 소프트웨어의 수준을 훨씬

블로그 이미지

swhwang

,