본문 바로가기

Projects/Server

RHEL4 복제품인 CentOS4와 오라클 10g설치

Fedora Core4 보다 RHEL4 복제품인 CentOS4를 설치하길 권합니다.

(CentOS4는 RHEL4 AS 클론이지만, 법적으로 아무런 제약이 없습니다.)

http://mirrors.kernel.org/centos/4.3/isos/i386/CentOS-4.3-i386-bin1of4.iso

http://mirrors.kernel.org/centos/4.3/isos/i386/CentOS-4.3-i386-bin2of4.iso

http://mirrors.kernel.org/centos/4.3/isos/i386/CentOS-4.3-i386-bin31of4.iso

http://mirrors.kernel.org/centos/4.3/isos/i386/CentOS-4.3-i386-bin41of4.iso

아래의 글은 오라클 10g 설치를 위한 OS(RHEL4) 설치 과정과 오라클 설치 내용입니다.

원문은 아래 링크입니다.

http://www.oracle.com/technology/global/kr/pub/articles/smiley_10gdb_install.html#rhel4

************************************************************************

Oracle Database 10g 는 RHEL 4 (Advanced Server / Enterprise Server)의 Base Release를 공식적으로 지원합니다. (RHEL4의 무료 평가판을 다운로드 하실 수 있습니다.) 업데이트 CD를 가지고 있는 경우, Base Release의 부트 CD 대신 업데이트 버전의 부트 CD를 이용하여 설치 과정에서 업데이트를 자동 적용할 수 있습니다. 오라클은 Red Hat을 통해 제공되는 모든 업데이트를 지원합니다.

Linux 운영체제의 설치 과정에서 업데이트를 가장 쉽고 빠르게 적용하는 방법은, 업데이트 CD를 사용하여 설치 작업을 수행하는 것입니다. Linux가 이미 설치되어 있고 업데이트 CD를 가지고 있지 않다면, Red Hat Network에서 다운로드하여 적용할 수도 있습니다.
이 문서는 Linux를 처음부터 설치하는 과정을 설명하고 있으므로, 업데이트 CD를 사용하는 것으로 합니다.

  1. 첫 번째 CD를 사용하여 서버를 부팅합니다.
    • CD로부터의 부팅을 위해 BIOS 설정을 변경해야 할 수도 있습니다.
  2. 부트 스크린이 나타나고 스크린 하단에 boot:프롬프트가 표시됩니다.
    • 그래픽 UI를 이용한 설치를 계속하기 위해 Enter를 입력합니다 (그 밖의 다른 설치 방법 및 옵션에 대해서는Red Hat Installation Guide를 참고하십시오.)
    • 인스톨러가 하드웨어를 검색하고, 잠깐 동안 Red Hat 스플래쉬 스크린을 표시한 뒤, 스크린 프롬프트를 표시합니다.
  3. Language Selection
    • 디폴트 설정을 사용합니다.
  4. Keyboard Configuration
    • 디폴트 설정을 사용합니다.
  5. Welcome Screen
    • Next를 클릭합니다.
  6. Disk Partitioning Setup
    • 디스크 파티셔닝에 대한 상세한 설명은 이 가이드의 주제 범위에서 벗어나므로, 여기에서는 사용자가 디스크 파티셔닝 방법에 대해 숙지하고 있는 것으로 가정합니다.

      (WARNING: 디스크 파티셔닝 과정에서의 실수로 인해 하드 디스크의 모든 내용이 삭제될 수 있음을 각별히 주의하시기 바랍니다. 진행 방법을 정확히 이해하지 못한 경우 작업을 중단하고 다른 정보를 참고하시기 바랍니다. 그렇지 않은 경우 데이타를 모두 잃어 버릴 수 있습니다!)

      이 가이드에서는 아래와 같은 파티셔닝 구성을 사용합니다. (ext3 파일시스템 사용):

      첫 번째 컨트롤러 (/dev/sda)의 9GB 디스크에는 Linux 및 오라클 소프트웨어가 저장되며, 다음과 같이 파티션이 설정됩니다:
      - 100MB /boot 파티션
      -1,500MB swap 파티션?이 파티션의 용량은 최소 RAM 사이즈의 두 배, 최대 2 GB를 넘지 않도록 설정합니다. (32 bit 시스템은 2 GB 이상의 스왑 파일을 지원하지 않습니다.) 2 GB이상의 스왑 공간이 필요한 경우에는 스왑 파티션을 여러 개 생성합니다.
      -7,150MB root 파티션?이 파티션은 /usr, /tmp, /var, /opt, /home 등의 모든 데이타를 저장하는데 사용합니다. 여기에서는 설치 과정에 대한 이해가 쉽도록 매우 단순한 구성을 사용하였습니다. 보다 안정적인 환경을 구현하려면 디렉토리들을 별도의 파일시스템에 구분하여 생성해야 할 것입니다.

  7. Boot Loader Configuration
    • 디폴트 설정을 사용합니다.
  8. Network Configuration
    • 일반적으로 서버에는 정적 IP 주소를 설정하는 것이 권장됩니다. Edit를 클릭합니다 .
    • 팝업 윈도우가 표시됩니다. Configure using DHCP 박스의 체크를 해제하고, 서버의 IP Address와 Netmask를 입력합니다. Activate on boot가 체크되어 있는지 확인한 후 OK를 클릭합니다 .
    • Hostname 박스에서 manually를 선택하고 호스트네임을 입력합니다.
    • Miscellaneous Settings 박스에서 기타 네트워크 설정값을 입력합니다.
  9. Firewall Configuration
    • 본 문서에서는 방화벽이 사용되지 않는 것으로 가정합니다. No firewall을 선택합니다.
  10. Additional Language Support
    • 디폴트 설정을 사용합니다.
  11. Time Zone Selection
    • 현 위치에 해당하는 시간대 설정을 선택합니다. 서버 환경에서는 시스템 시간을 UTC에 맞추도록 설정하는 것이 일반적으로
      권장됩니다.
      여기에서는 System clock uses UTC를 클릭하기로 합니다.
  12. Set Root Password
    • root 계정의 패스워드를 입력하고, 확인을 위해 재입력합니다.
  13. Package Installation Defaults
    • Customize software packages to be installed를 선택합니다.
  14. Package Group Selection
    • 아래의 패키지 셋만을 선택하고, 다른 것들은 선택하지 않도록 합니다.
    • Desktop
      • X Window System
      • Gnome
      • UI의 선택에 관련하여 RHES2.1 섹션의 설명을 참고하시기 바랍니다.
    • Applications
      • Editors
      • Graphical Internet
    • Servers
      • 이 그룹 내에서는 아무 것도 선택하지 않습니다.
    • Development
      • Development Tools
    • System
      • Administration Tools
    • Red Hat Enterprise Linux
      • 이 그룹 내에서는 아무 것도 선택하지 않습니다.
    • Next를 클릭하여 다음 단계로 진행합니다.
  15. Installing Packages
    • 소프트웨어가 하드 디스크에 복사되고 설치가 진행됩니다. 프롬프트가 뜨는 경우 디스크를 교체해 줍니다.
  16. Congratulations
    • 시스템에서 설치 CD를 꺼내고 Reboot를 클릭합니다 .
  17. 17. 시스템이 자동적으로 리부팅 되고 다시 welcome 스크린이 뜹니다.
    • Next를 클릭합니다.
  18. License Agreement
    • License Agreement를 숙지한 후, 조건에 동의하는 경우 Yes, I agree to the License Agreement를 선택하고 Next를 클릭합니다.
  19. Date and Time
    • 날짜와 시간을 설정합니다.
    • NTP 서버를 사용하려는 경우(권장), Enable Network Time Protocol을 선택하고 NTP 서버의 이름을 입력합니다.
  20. Display
    • 변경할 필요가 없다면 디폴트를 선택합니다.
  21. Red Hat Login
    • Red Hat Network 로그인/패스워드를 입력하거나 새로운 계정을 생성합니다.
  22. System User
    • 시스템에 로그인하기 위한 계정을 생성합니다.
    • 오라클 관련 계정은 아직 생성하지 않습니다. 오라클 계정의 생성에 대해서는 뒷부분에서 다룹니다.
  23. Additional CDs
    • Next를 클릭합니다.
  24. Finish Setup
    • Next를 클릭합니다.
  25. 그래픽 로그인 스크린이 표시됩니다.
  26. 축하합니다! 이것으로 RHEL4 소프트웨어의 설치가 완료되었습니다.

설치 결과의 검증

위에서 설명된 모든 과정을 완료했다면, Oracle Database 10g 에 필요한 모든 패키지와 업데이트가 적용된 상태입니다.
설치 결과의 검증을 위해 아래 작업을 수행합니다.

커널 버전 요구사항: 2.6.9-5.EL (RHEL4의 Base Release에 포함된 커널 버전입니다. 이 버전 또는 업데이트를 통해 제공되는 다른 모든 버전은 Oracle Database 10g 와 연동합니다.)

아래 명령을 수행하여 커널 버전을 점검합니다:

uname -rEx:# uname -r2.6.9-5.ELsmp
기타 패키지의 버전은 아래와 동일하거나 그 이후의 버전이어야 합니다:
  • gcc-3.4.3-9.EL4
  • make-3.80-5
  • binutils- 2.15.92.0.2-10.EL4
  • openmotif-2.1.30-11
  • setarch-1.6-1
  • compat-db-4.1.25-9
시스템에 설치된 패키지의 버전을 확인하기 위해, root 계정에서 아래와 같이 명령을 입력합니다:
rpm -q gcc make binutils openmotif setarch compat-dbEx:  # rpm -q gcc make binutils openmotif setarch compat-dbgcc-3.4.3-9.EL4make-3.80-5binutils-2.15.92.0.2-10.EL4setarch-1.6-1compat-db-4.1.25-9

제 II 부: 오라클 환경을 위한 Linux 설정

Linux 소프트웨어의 설치가 완료되었다면, 다음에는 오라클 환경의 설정 작업을 수행할 차례입니다.
이 섹션에서는 Oracle Database 10g 를 위해 Linux를 설정하는 과정을 설명합니다.

시스템 요구사항의 검증

시스템이 Oracle Database 10g 의 최소 요구사항을 만족하는지 확인하기 위해, root 계정으로 로그인하고 아래 명령을 수행합니다. 메모리와 swap 공간을 확인하기 위해서 아래와 같이 실행합니다:

grep MemTotal /proc/meminfogrep SwapTotal /proc/meminfoEx:# grep MemTotal /proc/meminfoMemTotal:       512236 kB# grep SwapTotal /proc/meminfoSwapTotal:     1574360 kB

최소 메모리 요구사양은 512MB, swap 공간의 최소 요구사항은 1GB입니다. swap 공간은 2GB 이하 메모리를 장착한 시스템의 경우 메모리 용량의 2배로, 2GB를 넘는 메모리를 장착한 시스템의 경우 메모리 용량의 1~2배 사이의 용량으로 설정되어야 합니다.

또 Oracle Database 10g 소프트웨어를 위해 2.5 GB의 공간이 필요하며, 이와 별도로 데이타베이스를 위해 1.2 GB의 추가 공간이 요구됩니다. /tmp 디렉토리에는 최소한 400 MB의 여유 공간이 있어야 합니다. 디스크 여유 공간을 확인하기 위해, 아래와 같이 명령을 수행합니다:

df -hEx:# df -hFilesystem        Size  Used Avail Use% Mounted on/dev/sda3         6.8G  1.3G  5.2G  20% //dev/sda1         99M   17M   77M  18% /boot

위의 예에서는 /tmp 디렉토리가 별도 파일시스템에 구현되어 있지 않고, root 파일시스템에 포함되어 있습니다. 디스크 여유공간이 5.2 GB이므로, 설치에 필요한 공간(2.5 + 1.2 + 0.4 = 4.1GB)은 충분합니다.

오라클 그룹 및 사용자 계정 생성

다음으로, Oracle Database 10g 소프트웨어의 설치 및 관리에 사용할 Linux 그룹 및 사용자 계정을 생성합니다. 사용자 계정은 ‘oracle’, 그룹은 ‘oinstall’과 ‘dba'로 명명합니다. root 계정으로 아래 명령을 실행합니다:

/usr/sbin/groupadd oinstall/usr/sbin/groupadd dba/usr/sbin/useradd -m -g oinstall -G dba oracleid oracleEx:# /usr/sbin/groupadd oinstall# /usr/sbin/groupadd dba# /usr/sbin/useradd -m -g oinstall -G dba oracle# id oracleuid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)

오라클 계정의 패스워드를 설정합니다:

passwd oracleEx:# passwd oracleChanging password for user oracle.New password:Retype new password:passwd: all authentication tokens updated successfully.

디렉토리의 생성

이제 Oracle 10g 소프트웨어와 데이타베이스 파일을 저장할 디렉토리를 생성할 차례입니다. 본 문서는 Optimal Flexible Architecture (OFA)의 디렉토리 명명법을 준수하고 있습니다. OSF 표준에 대한 자세한 정보는 Oracle Database 10g Installation Guide for UNIX SystemsAppendix D 를 참고하시기 바랍니다 .

모든 디렉토리는 root 파일 시스템에 생성하는 것으로 가정합니다. 이것은 일반적으로 권장되는 구성은 아니지만, 예제를 단순화함으로써 이해를 돕기 위해 설정한 것입니다. 일반적으로 오라클 디렉토리는 별도의 파일 시스템에 생성하는 것이 권장됩니다.

root 계정에서 아래 명령을 실행합니다t:

mkdir -p /u01/app/oraclemkdir -p /u02/oradatachown -R oracle:oinstall /u01/app/oracle /u02/oradatachmod -R 775 /u01/app/oracle /u02/oradataEx:# mkdir -p /u01/app/oracle# mkdir -p /u02/oradata# chown -R oracle:oinstall /u01/app/oracle /u02/oradata# chmod -R 775 /u01/app/oracle /u02/oradata

Linux 커널 매개변수의 설정

다른 UNIX 시스템과 달리, Linux 운영체제에서는 시스템이 실행 중인 상태에서 대부분의 커널 매개변수를 수정할 수 있습니다.
커널 매개변수를 변경한 뒤에 시스템을 리부팅할 필요도 없습니다. Oracle Database 10g 가 요구하는 커널 매개변수 설정이 아래와 같습니다. 아래 설정된 수치는 최소값을 의미하며, 시스템이 아래 명시된 것보다 높은 수치로 설정되어 있는 경우에는 변경하지 마시기 바랍니다.

kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000

본 문서의 설명대로 Linux 운영체제를 설치한 경우라면 커널 매개변수가 디폴트 값으로 설정되어 있으므로, root로 로그인한 후
아래 명령을 복사하여 붙여 넣는 방법으로 실행할 수 있습니다.

cat >> /etc/sysctl.conf <> /etc/sysctl.conf < kernel.shmall = 2097152> kernel.shmmax = 2147483648> kernel.shmmni = 4096> kernel.sem = 250 32000 100 128> fs.file-max = 65536> net.ipv4.ip_local_port_range = 1024 65000> EOF# /sbin/sysctl -pnet.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1kernel.sysrq = 0kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000

설정을 확인하기 위해 아래 명령을 실행합니다:

/sbin/sysctl -a | grep shm/sbin/sysctl -a | grep sem/sbin/sysctl -a | grep file-max/sbin/sysctl -a | grep ip_local_port_rangeEx:# /sbin/sysctl -a | grep shmkernel.shmmni = 4096kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shm-use-bigpages = 0# /sbin/sysctl -a | grep semkernel.sem = 250        32000   100     128# /sbin/sysctl -a | grep file-maxfs.file-max = 65536# /sbin/sysctl -a | grep ip_local_port_rangenet.ipv4.ip_local_port_range = 1024     65000

시스템의 매개변수가 위에 명시된 값보다 낮게 설정된 경우, /etc/sysctl.conf의 매개변수를 추가하거나 수정해야 합니다.
작업이 완료되면, 아래 명령을 실행하여 변경된 설정을 반영시킵니다:

/sbin/sysctl -p

Novell SUSE Linux 운영체제의 경우 아래 명령을 사용합니다:

				   /sbin/chkconfig boot.sysctl on

oracle 사용자 계정의 Shell Limit 설정

오라클은 Linux 계정 별로 실행되는 프로세스와 열린 파일의 수를 제한하는 것을 권장합니다. 이를 위해, root 계정에서 아래 명령을
복사하여 붙여 넣는 방법으로 실행합니다:

cat >> /etc/security/limits.conf <> /etc/pam.d/login <

RHEL 2.1 / 3의 경우, 아래 명령을 사용합니다:

cat >> /etc/profile <> /etc/csh.login <

SLES8의 경우, 아래 명령을 사용합니다:

cat >> /etc/profile.local <> /etc/csh.login.local <

버그를 피하자! (Novell SUSE Linux에만 해당)

SLES8 및 SLES9 운영체제에는 /etc/services에 예약된 포트 설정으로 인해 Oracle Enterprise Manager 10g 의 설치가 실패하는 버그가 존재합니다. OEM DBConsole은 포트 1830을 필요로 하며, SUSE 환경에는 이 포트가 이미 /etc/services에 예약되어 있습니다. 이 버그에 대한 문서는 MetaLink(bug# 3513603)에서 확인하실 수 있습니다.

설치 과정에서의 문제를 예방하기 위해, Oracle Database 10g 소프트웨어를 설치하기 전에 root로 로그인하여 /etc/services 파일의 포트 1830~1849 부분을 코멘트 처리합니다. (변경 내용이 확실히 반영되도록 하기 위해 서버를 리부팅하는 것이 바람직합니다.)

oracle 계정을 위한 환경변수

오라클 제품을 사용하기 위해서 몇 가지 환경변수의 설정이 필요합니다. 데이타베이스 서버에서 설정해야 하는 환경변수가 아래와 같습니다:

ORACLE_BASE
ORACLE_HOME
ORACLE_SID
PATH

하나의 서버에 여러 가지의 오라클 제품 또는 데이타베이스를 운영하는 경우에는, ORACLE_HOME, ORACLE_SID, PATH 변수를 변경해야 합니다. ORACLE_BASE 변수는 변경되어서는 안되며, 변경이 필요한 경우 로그인 프로파일에서 설정해야 합니다. 오라클은 환경변수의 설정을 위한 유틸리티(oraenv)를 제공하고 있습니다.

ORACLE_BASE 변수를 로그인 프로파일에 추가하기 위해, oracle 계정으로 로그인한 뒤 (bash 또는 ksh을 사용하는 경우) bash_profile 또는 .profile 파일에 아래 라인을 추가합니다:

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

또는 (csh을 사용하는 경우) .login 파일에 아래 라인을 추가합니다:

setenv ORACLE_BASE /u01/app/oracle

변경 내역은 oracle 계정으로 다시 로그인하는 시점에 반영됩니다. 현재 세션의 변경 내역을 활성화하려면, 커맨드 라인에서 명령을
실행하면 됩니다.


제 III 부: 오라클의 설치

Oracle Database 10g는 OTN에서 다운로드할 수 있습니다. 오라클은 개발 및 테스트용 라이센스를 무료로 제공합니다. 하지만 기술지원은 제공되지 않으며, 운영 환경에서의 사용은 허용되지 않습니다. 상세한 라이센스 조건은 OTN에서 확인하실 수 있습니다.

먼저 Oracle Database 10g 소프트웨어의 배포본을 서버에 직접 다운로드하는 방법을 설명합니다.

로그인 UI를 통해 oracle 계정으로 로그인합니다.

Oracle Database 10g 배포본을 저장할 디렉토리를 생성합니다:

mkdir 10g _db

OTN으로부터 Oracle Database 10g 를 다운로드하기 위해, 브라우저에서 다음 URL을 입력합니다. (Mozilla를 통해서도 다운로드 가능합니다.) http://www.oracle.com/technology/software/products/database/oracle10g /htdocs/linuxsoft.html. Eligibility Export Restrictions 페이지를 작성하고 OTN License Agreement를 숙지합니다. 조건에 동의하는 경우, I Accept를 클릭합니다.

ship.db.cpio.gz 링크를 클릭하고, 위에서 생성한 디렉토리(10g _db)에 파일을 저장합니다. OTN에 로그인하지 않은 경우에는,
로그인이 필요하다는 프롬프트가 뜨게 됩니다.

파일의 압축을 풉니다:

cd 10g _dbgunzip ship.db.cpio.gzcpio -idmv < ship.db.cpio

소프트웨어의 설치

오라클 계정을 사용하여 로그인 합니다.

database name(ORACLE_SID)을 입력합니다. 일반적으로 5 문자 이하의 이름이 사용되며, 여기에서는 demo1이라는 이름을 사용하기로 합니다.

환경변수를 설정합니다:

  • Bourne and Korn shells
    ORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_SID=demo1; export ORACLE_SID
    RHEL4 / SLES9의 경우:
    LD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
  • C shell
    setenv ORACLE_BASE /u01/app/oraclesetenv ORACLE_SID demo1
    RHEL4 / SLES9의 경우:
    setenv LD_ASSUME_KERNEL 2.4.19
RHEL4 관련 주의 사항: Oracle Universal Installer는 설치 전에 운영체제의 버전을 점검하고 지원 가능 여부를 검증합니다.
Oracle Database 10g 10.1.0.3의 Installer는 RHEL4가 지원 가능한 버전임을 인식하지 못합니다. 이 경우, runInstaller를 실행하기 전에
아래 작업을 수행해야 합니다.
cp /etc/redhat-release /etc/redhat-release.origcat > /etc/redhat-release << EOFRed Hat Enterprise Linux AS release 3 (Taroon)EOF
Oracle Database 10g 소프트웨어의 압축을 푼 디렉토리로 이동합니다.
Ex:$ cd $HOME/10g _db

Disk1 디렉토리로 이동합니다.

Ex:$ cd Disk1

Oracle Universal Installer를 시작합니다.

$ ./runInstaller

  1. Welcome
    • Next를 클릭합니다.
  2. Specify Inventory Directory and Credentials
    • 이 가이드의 설명을 그대로 따라 했다면, 디폴트 설정을 사용해도 무방합니다. 그렇지 않은 경우, 올바른 inventory directory를 입력합니다.
    • operating system group name으로 oinstall을 입력합니다.
  3. Oracle을 서버에 처음 설치한 경우라면, orainstRoot.sh 스크립트를 root 계정에서 실행해야 한다는 팝업 창이 표시됩니다.
    root로 로그인한 뒤, 팝업 창에 명시된 디렉토리로 이동하여 스크립트를 실행합니다.
  4. Specify File Locations
    • 이 가이드의 설명을 그대로 따라 했다면, 디폴트 설정을 사용해도 무방합니다.
      그렇지 않은 경우, Source 경로와 Destination 경로가 올바르게 설정되었는지 확인합니다.
  5. Select Installation Type
    • 디폴트 설정(Enterprise Edition)을 그대로 사용합니다.
  6. Product-specific Prerequisite Checks
    • 이 가이드의 설명을 그대로 따라 했다면, 점검 작업에서 아무런 문제가 발생되지 않을 것입니다. 점검 작업이 실패한 경우,
      다음 단계로 진행하기 전에 문제의 원인을 확인합니다. (RHEL4 운영체제에서 binutils, gcc, openmotif에 대한 점검작업이 실패한 경우에는 경고 메시지를 무시하고 다음 단계로 진행합니다. SLES9에서 openmotif에 대한 점검작업이 실패한 경우에는 경고 메시지를 무시하고 다음 단계로 진행합니다.)
  7. Select Database Configuration
    • 디폴트 설정(Create a starter database, General Purpose)을 그대로 사용합니다.
  8. Specify Database Configuration Options
    • 데이타베이스의 Global Database Name을 입력합니다. ORACLE_SID와 서버의 domain name을 연결하여 명명해야 합니다. (예를 들어 ORACLE_SID가 demo1이고 domain name이 orademo.org라면, Global Database Name은 demo1.orademo.org가 됩니다.)
    • Global Database Name를 입력하면, SID는 자동으로 입력됩니다.
    • 디폴트 Database Character Set을 그대로 사용합니다.
    • Create database with sample schemas을 선택합니다.
  9. Select Database Management Option
    • Use Database Control for Database Management을 사용합니다.
  10. Specify Database File Storage Option
    • File System을 선택하고, 데이타베이스가 사용할 경로를 입력합니다 (예: /u02/oradata)
  11. Specify Backup and Recovery Options
    • Do not enable Automated backups를 선택합니다.
  12. Specify Database Schema Passwords
    • Use the same password for all the accounts를 선택합니다.
    • 패스워드를 반복 입력합니다.
  13. Summary
    • 설치되는 제품에 대한 요약이 제공됩니다.
    • Install을 클릭합니다.
  14. Install
    • 오라클 소프트웨어의 설치가 진행되는 과정에 여러 단계의 스크린이 표시됩니다.
    • 설치 과정의 마지막 단계에서 팝업 창을 통해 설정 정보가 표시됩니다. Enterprise Manager URL을 확인한 후 OK를 클릭하여 창을 닫습니다.
    • "Setup Privileges" 팝업 창을 통해 root 계정으로 configuration script를 실행해야 한다는 메시지가 표시됩니다.
      root로 로그인하여 팝업 창에 명시된 디렉토리로 이동한 뒤 root.sh 스크립트를 실행합니다. 스크립트에서 local bin directory의 위치를 묻는 프롬프트가 뜨면, 디폴트 값을 승인하고 Enter를 누릅니다. 스크립트의 실행이 완료되면 Setup Privileges 창으로 돌아가 OK를 클릭합니다 (아래 그림 참조.)
  15. End of Installation
    • 요약 화면에 표시된 URL을 확인하고 Exit를 클릭합니다.
  16. 축하합니다! 이것으로 Oracle 10g 데이타베이스의 설치가 완료되었습니다.


제 IV 부: 스토리지의 설정

제 3부에서 생성한 데이타베이스는 하나의 파일시스템(/u02/oradata)만을 사용합니다. 하지만 오라클 데이타베이스의 실제 스토리지 설정에는 여러 가지 방법이 가능합니다.

제 4부에서는 데이타베이스의 디스크 스토리지를 설정하는 방법에 대해 설명합니다. 특히 파일시스템을 추가하는 구성과 Automatic Storage Management (ASM)을 중점적으로 설명하게 될 것입니다. 로우 디바이스(raw device)를 사용한 구성과 Oracle Cluster File System (OCFS)에 대한 설명은 향후 작성될 Oracle Real Application Clusters 가이드 문서에 포함될 예정입니다.

파일시스템

파일시스템은 오라클 데이타베이스의 데이타 파일, 리두 로그, 컨트롤 파일을 저장하는 가장 일반적인 방법으로 활용됩니다.
파일시스템은 구현이 쉽고 써드 파티 소프트웨어를 이용한 관리가 불필요하다는 장점을 제공합니다.

대부분의 경우, 파일시스템은 Linux 운영체제의 최초 설치과정에서 생성됩니다. 하지만 설치가 완료된 이후에 새로운 파일시스템을
생성해야 하는 상황(예: 새로운 디스크 드라이브를 설치하는 경우)이 종종 발생하기도 합니다.

이 섹션에서는 새로운 파일 시스템을 생성하고, 오라클 데이타베이스에서 이를 활용하는 방법을 설명합니다. (별도로 명시되지 않는 한, 모든 명령은 root 계정으로 실행하는 것으로 가정합니다.)

디스크 파티셔닝

파일 시스템을 생성하려면 빈 디스크 파티션이 필요합니다. 이미 빈 디스크 파티션이 구성되어 있다면, 아래 과정을 생략해도 무방합니다.

아래 내용은 Linux 파일시스템을 위한 새로운 파티션을 생성하는 방법을 설명하고 있습니다. (주의: 디스크 파티셔닝 과정에서의 실수로 인해 하드 디스크의 모든 데이타가 삭제될 수도 있습니다.)

아래 예제에서는 /dev/sdb(파티션이 구성되지 않은 빈 SCSI 디스크)를 사용하여 전체 디스크(36 GB)를 하나의 파티션으로 설정합니다.

Ex:# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent won't be recoverable.The number of cylinders for this disk is set to 4427.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): pDisk /dev/sdb: 255 heads, 63 sectors, 4427 cylindersUnits = cylinders of 16065 * 512 bytes   Device Boot    Start       End    Blocks   Id  SystemCommand (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-4427, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):Using default value 4427Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.

생성된 파티션을 확인합니다:

Ex:# fdisk /dev/sdb The number of cylinders for this disk is set to 4427.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): pDisk /dev/sdb: 255 heads, 63 sectors, 4427 cylindersUnits = cylinders of 16065 * 512 bytes   Device Boot    Start       End    Blocks   Id  System/dev/sdb1             1      4427  35559846   83  LinuxCommand (m for help): q

파일시스템의 생성

ext3를 사용하여 새로운 파일시스템을 생성합니다. 다른 파일시스템도 정상적으로 동작하지만, ext3의 경우 시스템 크래시가 발생했을 때 가장 빠른 복구가 가능하다는 장점이 있습니다.

Ex:# mke2fs -j /dev/sdb1mke2fs 1.26 (3-Feb-2002)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)4447744 inodes, 8889961 blocks444498 blocks (5.00%) reserved for the super userFirst data block=0272 block groups32768 blocks per group, 32768 fragments per group16352 inodes per groupSuperblock backups stored on blocks:        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,        2654208, 4096000, 7962624Writing inode tables: doneCreating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 23 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.

마운트 포인트의 생성

파일 시스템에는 마운트 포인트(mount point)가 필요합니다. 마운트 포인트란 파일시스템을 시스템의 디렉토리 트리에 “연결(attach)”하는데 사용되는 빈 디렉토리를 의미합니다. 마운트 포인트는 Oracle Flexible Architecture (OFA) 표준에 따라 명명되어야 합니다.
OFA 표준에 대한 자세한 설명은 Oracle 10g Database Installation GuideAppendix D를 참고하시기 바랍니다 .

이미 1 부에서 “/u01”, “/u02”를 디렉토리 명으로 사용했으므로, 여기에서는 “/u03”을 사용하기로 합니다.

Ex:# mkdir /u03

새로운 파일시스템을 /etc/fstab에 추가

시스템이 부팅될 때 파일시스템이 자동으로 마운트 되도록 하려면, /etc/fstab 파일에 파일시스템과 마운트 포인트에 대한 설정 항목을
추가해야 합니다. 텍스트 편집기를 사용하여 /etc/fstab 파일에 아래와 같이 라인을 추가합니다.

/dev/sdb1         /u03           ext3    defaults       1 1

파일시스템의 마운트

마운트된 파일시스템은 사용이 가능합니다. 파일시스템이 마운트 되기 전에는 파일의 저장이 불가능합니다. 아래 명령을 사용하여
파일시스템을 마운트하고, 사용가능 여부를 확인합니다.

mount /u03df -h /u03Ex:# mount /u03# df -h /u03Filesystem            Size  Used Avail Use% Mounted on/dev/sdb1             33G   33M  31G   1%   /u03

Oracle 디렉토리의 생성 및 권한 설정

이제 오라클 파일을 저장할 디렉토리를 생성할 차례입니다. 디렉토리 명은 OFA 표준 명명법을 따르며, ORACLE_SID=demo1의 설정을
사용합니다.

mkdir -p /u03/oradata/demo1chown -R oracle:oinstall /u03/oradatachmod -R 775 /u03/oradata

파일시스템에 테이블스페이스 생성

이제 파일시스템을 사용할 준비가 완료되었습니다. 다음으로 파일시스템에 데이타베이스 오브젝트를 저장할 테이블스페이스를 생성합니다. SYSTEM 계정으로 데이타베이스에 연결한 뒤, CREATE TABLESPACE 구문을 실행합니다.

Ex:$ sqlplusSQL*Plus: Release 10.1.0.2.0 - Production on Sun Jun 13 15:01:08 2004Copyright (c) 1982, 2004, Oracle.  All rights reserved.Enter user-name: systemEnter password:Connected to:Oracle Database 10g  Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> create tablespace data1  2  datafile '/u03/oradata/demo1/data1_01.dbf' size 100M  3  extent management local  4  segment space management auto;Tablespace created.

이제 새로운 테이블스페이스에 테이블, 인덱스 등의 데이타베이스 오브젝트를 저장할 수 있습니다.

Ex:SQL> create table demotab (id number(5) not null primary key,  2  name varchar2(50) not null,  3  amount number(9,2))  4  tablespace data1;  Table created.

Automatic Storage Management (ASM)

이제 마지막으로 가장 흥미로운 부분에 대해 설명할 차례입니다. ASM은 Oracle Database 10g 에 추가된 새로운 기능으로, 플랫폼 독립적인 환경에서 파일시스템, 논리적 볼륨 관리자, 소프트웨어 RAID 등의 서비스를 제공합니다. ASM을 이용하여 디스크 스트라이핑(striping) 또는 미러링(mirroring)을 구성하거나, 데이타베이스가 운영 중인 상태에서 디스크를 추가하거나 제거할 수 있으며, 성능병목 요소(hot spot)를 제거하기 위해 자동으로 I/O 로드 밸런싱을 수행하는 것이 가능합니다. ASM은 direct I/O와 asynchronous I/O를 지원하며, Oracle9i에서 처음 구현된 Oracle Data Manager API(단순화된 I/O system call interface)를 통해 구현되었습니다.

AASM은 범용적인 파일시스템이 아니며, 오라클 데이타 파일, 리두 로그, 컨트롤 파일이 저장된 환경에서만 사용 가능합니다.
ASM의 파일의 생성/명명 작업은 데이타베이스(Oracle Managed Files 기능)에 의해 자동 수행될 수도 있고, DBA에 의해 수작업으로
수행될 수도 있습니다. ASM에 저장된 파일은 운영체제에서 접근할 수 없으며, ASM 파일의 백업/복구를 수행하려면 RMAN(Recovery Manager)을 사용해야 합니다.

ASM은 다른 데이타베이스가 접근 가능한 별도의 오라클 인스턴스에 구현됩니다. Linux에서 ASM을 사용하려면 OCSSD 서비스(Oracle Universal Installer에 의해 디폴트로 설치됩니다)가 실행되고 있어야 합니다. ASM의 메모리 요구사항은 매우 낮으며, 대부분의 시스템
환경에서 64 MB만을 사용합니다.

ASM의 설치

Linux 플랫폼에서 ASM을 구성하는 경우, 로우 디바이스(raw device)를 사용하거나, ASMLib 인터페이스를 통해 관리되는 디바이스를
사용할 수 있습니다. 오라클은 사용편의성 및 성능을 고려했을 때 로우 디바이스 대신 ASMLib을 사용하는 것을 권장합니다. ASMLib은 OTN에서 무료로 다운로드 가능합니다. 이 섹션에서는 ASMLib을 사용하여 단순한 형태의 ASM 인스턴스를 설정하고 ASM을 사용한
데이타베이스를 구현하는 방법을 설명합니다.

ASMLib 버전의 확인

ASMLib은 세 가지 Linux 패키지의 형태로 제공됩니다:

  • oracleasmlib - ASM 라이브러리
  • oracleasm-support - ASMLib 관리 유틸리티
  • oracleasm - ASM 라이브러리를 위한 커널 모듈
오라클은 각각의 Linux 배포판 별로 서로 다른 ASMLib 패키지를 제공합니다. 또 운영체제의 각 커널 버전 별로 서로 다른 oracleasm
패키지가 사용됩니다. 어떤 패키지를 사용해야 하는지 확인하기 위해 아래에 설명된 것과 같이 작업을 수행합니다.

먼저, 현재 사용 중인 커널 버전을 확인하기 위해 root 계정으로 로그인하고 아래 명령을 실행합니다:

uname -rmEx:# uname -rm2.4.9-e.27smp i686

위 실행 예의 경우, Intel i686 CPU 기반 SMP (multiprocessor) 시스템을 위한 2.4.9 커널 버전이 사용되고 있음을 확인할 수 있습니다.

ASMLib 패키지를 적용하기 위해 아래와 같이 작업을 수행합니다:

  1. 웹 브라우저에서 다음 URL을 입력합니다: http://www.oracle.com/technology/tech/linux/asmlib
  2. 사용 중인 Linux 버전의 링크를 클릭합니다.
  3. 사용 중인 Linux 버전의 oracleasmlib, oracleasm-support 패키지를 다운로드 합니다.
  4. 사용 중인 커널 버전의 oracleasm 패키지를 다운로드합니다.
    위 실행 예의 경우 oracleasm-2.4.9-e-smp-1.0.0-1.i686.rpm 패키지를 다운로드해야 합니다.

    다음으로, root 계정으로 아래 명령을 실행하여 패키지를 설치합니다:

    rpm -Uvh oracleasm-kernel_version-asmlib_version.cpu_type.rpm \oracleasmlib-asmlib_version.cpu_type.rpm \oracleasm-support-asmlib_version.cpu_type.rpmEx:# rpm -Uvh \> oracleasm-2.4.9-e-smp-1.0.0-1.i686.rpm \> oracleasmlib-1.0.0-1.i386.rpm \> oracleasm-support-1.0.0-1.i386.rpmPreparing...                #################################### [100%]   1:oracleasm-support      #################################### [ 33%]   2:oracleasm-2.4.9-e-smp  #################################### [ 66%]Linking module oracleasm.o into the module path [  OK  ]   3:oracleasmlib           #################################### [100%]

ASMLib의 설정

ASMLib을 사용하기 전에, 먼저 구성 스크립트를 실행하여 드라이버를 설정해야 합니다. 아래에 설명된 것과 같이 명령을 실행합니다.

# /etc/init.d/oracleasm configureConfiguring the Oracle ASM library driver.This will configure the on-boot properties of the Oracle ASM librarydriver.  The following questions will determine whether the driver isloaded on boot and what permissions it will have.  The current valueswill be shown in brackets ('[]').  Hitting  without typing ananswer will keep that current value.  Ctrl-C will abort.Default user to own the driver interface []: oracleDefault group to own the driver interface []: dbaStart Oracle ASM library driver on boot (y/n) [n]: yFix permissions of Oracle ASM disks on boot (y/n) [y]: yWriting Oracle ASM library driver configuration            [  OK  ]Creating /dev/oracleasm mount point                        [  OK  ]Loading module "oracleasm"                                 [  OK  ]Mounting ASMlib driver filesystem                          [  OK  ]Scanning system for ASM disks                              [  OK  ]

ASMLib 드라이버를 아래와 같이 활성화합니다.

# /etc/init.d/oracleasm enableWriting Oracle ASM library driver configuration            [  OK  ]Scanning system for ASM disks                              [  OK  ]

ASM 디스크의 구성

다음으로, ASM 드라이버가 사용할 디스크를 설정합니다. 여기에서는 파티션도 설정되지 않은 빈 디스크를 사용하고 있음에 주의하시기
바랍니다. ASM에 디스크 파티션을 사용하는 것도 가능하지만 권장되지는 않습니다.

root 계정으로 아래 명령을 실행하여, ASMLib에서 사용할 디스크를 설정합니다:

/etc/init.d/oracleasm createdisk DISK_NAME device_name

(주의: DISK_NAME은 대문자로 입력합니다. 소문자를 사용하는 경우 ASM 인스턴스에서 디스크를 인식하지 못하는 버그가 존재합니다.)

Ex:# /etc/init.d/oracleasm createdisk VOL1 /dev/sdbMarking disk "/dev/sdb" as an ASM disk                     [  OK  ]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdcMarking disk "/dev/sdc" as an ASM disk                     [  OK  ]# /etc/init.d/oracleasm createdisk VOL3 /dev/sddMarking disk "/dev/sdd" as an ASM disk                     [  OK  ]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdfMarking disk "/dev/sdf" as an ASM disk                     [  OK  ]# /etc/init.d/oracleasm createdisk VOL5 /dev/sdgMarking disk "/dev/sdg" as an ASM disk                     [  OK  ]# /etc/init.d/oracleasm createdisk VOL6 /dev/sdhMarking disk "/dev/sdh" as an ASM disk                     [  OK  ]

TASMLib에서 사용하도록 설정된 디스크의 목록을 확인하는 예가 아래와 같습니다.

# /etc/init.d/oracleasm listdisksVOL1VOL2VOL3VOL4VOL5VOL6

이것으로 ASMLib의 설치 및 디스크 설정이 완료되었습니다. 이제 ASM 인스턴스를 생성하고, ASM을 사용하는 데이타베이스를 구현할 수 있습니다. Data Base Configuration Assistant (DBCA)을 이용하면 이 작업을 간단하게 수행할 수 있습니다.

oracle 계정으로 로그인하고 DBCA를 실행합니다:

$ dbca

  1. Welcome
    • Next를 클릭합니다
  2. Operations
    • Create a Database를 선택합니다.
  3. Database Templates
    • General Purpose를 선택합니다.
  4. Database Identification
    • Global Database Name을 입력합니다.
  5. Management Options
    • Configure the Database with Enterprise Manager를 선택합니다.
    • Use Database Control for Database Management를 선택합니다.
  6. Database Credentials
    • Use Same Password for All Accounts를 선택합니다.
    • 패스워드를 설정합니다.
  7. Storage Options
    • Automatic Storage Management (ASM)를 선택합니다.
  8. Create ASM Instance
    • ASM 인스턴스의 패스워드를 설정합니다.
  9. 9. DBCA가 ASM 인스턴스를 생성 및 시작한다는 팝업 창이 표시됩니다.
    • OK를 클릭합니다.
  10. 10. ASM 인스턴스가 생성되는 동안 팝업 진행 창이 표시됩니다.
  11. ASM Disk Groups
    • ASM 인스턴스가 아직 생성되지 않은 상태이므로, 사용 가능한 디스크 그룹이 없다는 메시지 창이 표시됩니다.
    • Create New를 클릭합니다.
  12. Create Disk Group
    • Disk Group Name
      - 디스크 그룹 명(예: DATA1)을 입력합니다.
    • Redundancy
      - High는 데이타를 2중으로 미러링 합니다.
      - Normal은 기본적인 미러링 구성입니다.
      - External은 ASM의 디스크를 미러링 하지 않습니다. 이 옵션은 일반적으로 하드웨어 RAID 어레이가 구성된 경우에
      사용됩니다.
    • Select Member Disks
      - ASMLib 디스크의 위치를 수작업으로 지정해 주어야 합니다. Change Disk Discovery Path를 클릭합니다.
      -
      팝업 창을 통해 Disk Discovery Path를 입력합니다. 아래와 같이 Disk Discovery Path를 'ORCL:*'로 변경합니다.
      - OK를 클릭합니다.
    • 다시 Selected Member Disks 윈도우로 돌아갑니다. 사용할 ASMLib 디스크가 목록에 포함되었는지 확인합니다.
      체크박스를 클릭하여 디스크 그룹에 사용할 디스크를 선택합니다. 작업이 완료되면 OK를 클릭합니다.
  13. ASM Disk Groups
    • ASM Disk Groups 윈도우로 돌아갑니다. 앞 단계에서 생성한 디스크 그룹이 목록에 포함되었는지 확인합니다.
    • 디스크 그룹의 체크박스를 클릭합니다. (여기에서는 하나의 디스크 그룹만을 사용하는 것으로 합니다.)
    • Next를 선택합니다.
  14. Database File Locations
    • Use Oracle-Managed Files를 선택합니다.
    • 생성된 디스크 그룹에 Database Area가 설정되었는지 확인합니다. (플러스 기호로 시작됩니다. 예: “+DATA1”)
  15. Recovery Configuration
    • Specify Flash Recovery Area를 선택합니다.
      - Flash Recovery Area?Flash Recovery를 위해 사용할 ASM 디스크 그룹을 입력합니다.
      - Flash Recovery Area Size?디폴트 설정(2048)을 그대로 사용합니다.
    • 아카이브로그 모드를 사용하려는 경우 Enable Archiving을 선택합니다. 테스트 용도로만 사용하려는 경우라면 선택하지
      않고 다음 단계로 진행합니다.
  16. Database Content
    • Sample Schemas를 선택합니다.
    • Custom Script를 사용하지 않으므로 Next를 클릭합니다.
  17. Initialization Parameters
    • Next를 클릭합니다.
  18. Database Storage
    • Next를 클릭합니다.
  19. Creation Options
    • 디폴트 설정(Create Database)을 그대로 사용하고 Finish를 클릭합니다.
  20. Confirmation
    • Database Details 정보를 확인한 후 OK를 클릭합니다.
  21. DBCA가 수행할 작업 목록과 진행 상황을 표시합니다. 데이타베이스를 생성하는 작업은 하드웨어 환경에 따라 수 분에서 수
    시간이 소요됩니다.
  22. 데이타베이스 생성이 완료되었다는 메시지와 함께 요약 정보가 표시됩니다. Enterprise Manager URL을 확인한 후 Exit
    클릭합니다.


결론

이제 데이타베이스를 실행하고 Oracle Database 10g 가 제공하는 새로운 기능을 체험해 보기 위한 모든 준비가 완료되었습니다.
제일 먼저, 웹 인터페이스를 기반으로 전혀 새롭게 재작성된 Oracle Enterprise Manager를 확인해 보시기 바랍니다.
오라클 데이타베이스의 사용 방법에 익숙하지 않은 경우, Oracle Database 10g Concepts Guide2-Day DBA 가이드 를 참고하시면 도움이 됩니다. OTN은 10g 의 활용도를 극대화하기 위한 다양한 가이드를 제공하고 있습니다.
필자는 개인적으로, Arup Nanda의 "Oracle Database 10g : DBA를 위한 20가지 기능"을 추천합니다.


부록

SQL*Plus를 이용한 데이타베이스의 접근

oracle 계정으로 Linux 시스템에 로그인하고 아래와 같이 환경 변수를 설정합니다.

Set the Oracle environment variables:

$ export ORACLE_BASE=/u01/app/oracle$ export ORACLE_SID=demo1$ export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1$ export PATH=$PATH:$ORACLE_HOME/bin

SQL*Plus를 실행합니다:

$ sqlplusSQL*Plus: Release 10.1.0.2.0 - Production on Sat Jun 5 16:59:21 2004Copyright (c) 1982, 2004, Oracle.  All rights reserved.Enter user-name: / as sysdbaConnected to:Oracle Database 10g  Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> 

Oracle Enterprise Manager 10g Database Control의 사용

웹 브라우저에서 설치과정에서 제공된 URL을 입력합니다.

Ex:
http://ds1.orademo.org:5500/em (데이타베이스에 DNS가 설정되지 않은 경우, 호스트 네임 대신 IP 주소를 입력해야 합니다.)

User Name: SYS
Password: <설치과정에서 입력한 패스워드>
Connect As: SYSDBA

을 클릭합니다

figure 6

Oracle Enterprise Manager 10g Database Control의 놀라운 세계에 오신 것을 환영합니다!

Oracle Enterprise Manager Database Control의 시작 및 중단:

$ emctl start dbconsole$ emctl stop dbconsole

iSQL*Plus를 이용한 데이타베이스 접근

iSQL*Plus는 SQL*Plus의 웹 기반 버전입니다. iSQL*Plus를 사용하려면, OEM 콘솔의 Related Links 섹션에 있는 iSQL* Plus 링크를
클릭하거나, 설치 과정에서 제공된 iSQL*Plus URL을 브라우저에 입력합니다.

Ex:
http://ds1.orademo.org:5560/isqlplus (데이타베이스에 DNS가 설정되지 않은 경우, 호스트 네임 대신 IP 주소를 입력해야 합니다.)

User Name: SYSTEM
Password: <설치과정에서 입력한 패스워드>

을 클릭합니다.

Workspace 박스에 SQL 명령을 입력한 뒤 Execute를 클릭합니다.

figure 7

iSQL*Plus의 시작 및 중단:

$ isqlplusctl start$ isqlplusctl stop

Listener의 시작 및 중단:

리스너(listener)는 클라이언트의 요청을 접수하고 인증 과정을 거친 후 데이타베이스 연결을 생성하는 역할을 담당합니다.
OEM과 ISQL*Plus를 사용하려면 리스너가 실행되고 있어야 합니다.

$ lsnrctl start$ lsnrctl stop

데이타베이스의 시작 및 중단:

데이타베이스를 시작/중단하는 가장 간단한 방법은 OEM 콘솔을 이용하는 것입니다. 같은 작업을 커맨드 라인에서 수행하려면 SQL*Plus에 oracle 계정으로 로그인하고 아래와 같이 실행합니다:

데이타베이스의 시작:

$ sqlplusSQL*Plus: Release 10.1.0.2.0 - Production on Sun Jun 13 22:27:48 2004Copyright (c) 1982, 2004, Oracle.  All rights reserved.Enter user-name: / as sysdbaConnected to an idle instance.SQL> startupORACLE instance started.Total System Global Area  188743680 bytesFixed Size                   778036 bytesVariable Size             162275532 bytesDatabase Buffers           25165824 bytesRedo Buffers                 524288 bytesDatabase mounted.Database opened.SQL> exit

데이타베이스의 중단:

$ sqlplusSQL*Plus: Release 10.1.0.2.0 - Production on Sun Jun 13 22:25:55 2004Copyright (c) 1982, 2004, Oracle.  All rights reserved.Enter user-name: / as sysdbaConnected to:Oracle Database 10g  Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> exit

오라클 프로세스의 목록 조회:

$ ps ?fuoracle

ocssd.bin 프로세스란 무엇인가?

Oracle Cluster Synchronization Services (OCSSD)는 ASM을 사용하는 RAC 및 단일 인스턴스 데이타베이스에서 요구되는 서비스입니다. OCCSD는 디폴트로 설치되며, 매우 적은 시스템 리소스만을 사용합니다. OCCSD는 /etc/inittab을 통해 설정 가능합니다.
이 프로세스는 시스템이 부팅될 때마다 자동으로 시작됩니다. 오라클은 ASM을 사용하지 않는 경우라도 OCCSD를 비활성화하는 것을
권장하지 않습니다.

출처 : oracle.com

top

re: 페도라 코어 4에 오라클 10g 설치하기좀 알려주세요

fbtjdals10 (2006-08-10 08:30 작성)1대1 질문하기

신고신고|이의제기이의제기


$ Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2006-01-14_10-18-09AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory

at java.lang.ClassLoader$NativeLibrary.load(Native Method)

at java.lang.ClassLoader.loadLibrary0(Unknown Source)

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

at sun.security.action.LoadLibraryAction.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)

at sun.awt.DebugHelper.(Unknown Source)

at java.awt.Component.(Unknown Source)


위에 색깔로 표시한 것처럼 해당 화일이 없어서 에러가 발생하는 것 입니다.


.bash_profile 은 각 계정의 디렉토리 속에 들어 있는 화일입니다.

각 계정의 설정파일입니다.

여러 환경 변수들이 있습니다. 전체 환경변수를 보려면

env

또는

set


명령을 주면 됩니다.


위의 명령 결과 중에 PATH 변수가 있습니다.

PATH(경로) 변수는 프롬프트에서 명령 실행시 명령어를 참조하는 디렉토리들을 포함합니다.

예를 들면,

명령 프롬프트에 ls 라고 입력을 하면

PATH 변수에 등록된 디렉토리 순서대로 각 디렉토리에 ls 명령어가 있으면 해당하는 ls 명령이 실행되는 것 입니다. ls는 /bin 디렉토리에 있습니다.

만약 PATH 변수에 /bin 디렉토리가 포함되지 않았을 경우에 ls 명령을 /bin 디렉토리가 아닌 /root 디렉토리에서 실행했다면

No such file or directory 또는 command not found 라는 메시지가 나옵니다.

run_installer 를 실행할 때도 앞에 ./ 를 붙이는데

PATH 설정에 run_installer 가 들어 있는 디렉토리가 포함되어 있지 않기 때문에

run_installer 가 어느 디렉토리에 있는지를 명시해 주는 것입니다.


.bash_profile 을 vi 편집기로 열면,

PATH=/bin:/usr/bin


위와 같이 디렉토리를 :로 연결해 놓은 형식의 줄이 있을 수도 없을 수도 있습니다.

있다면 마지막에 써있는 디렉토리 뒤에 :를 붙이며 새 디렉토리를 연결해 주면 됩니다.


만약에 위와 같은 PATH 변수 설정 구문이 없다면

PATH=$PATH:


위와 같이 새롭게 라인을 추가하고 마지막 : 뒤에 연결하고자 하는 디렉토리를 추가하면 됩니다. $PATH 는 이미 설정된 PATH 변수에 연결을 한다는 의미로 넣은 것 입니다.



출처 : opensrc 게시글중

top

re: 페도라 코어 4에 오라클 10g 설치하기좀 알려주세요

wholng5098 (2006-08-14 02:07 작성)1대1 질문하기

신고신고|이의제기이의제기

AdventNet SwisSQL - Oracle to SQL Server Edition
A PL/SQL to Transact-SQL Migration Tool
데이터베이스 어플리케이션을 다른 데이터베이스로 옮긴다는 것이 쉽지 않다는 것은 잘 알려진 사실입니다. 특히, 오라클의 PL/SQL이나 마이크로소프트의 Transact-SQL같이 특정 데이터베이스에 속해있는 언어로 작성된 어플리케이션의 경우는 더더욱 그렇습니다. 대부분의 데이터베이스 벤더들은 다른 데이터베이스로부터 그들의 데이터베이스로의 이전을 용이하게 하는 마이그레이션 툴을 제공합니다. 예를 들면 T-SQL을 PL/SQL로 전환해주는 오라클의 Migration work bench등 입니다. 이에 반해 마이크로소프트는 반대의 경우를 수행하는 툴을 제공하지 않습니다. 이러한 차이점을 SwisSQL ? Oracle to SQL Server Edition이 채우고자 합니다. 기업이 오라클에서 MS-SQLServer로 이전할 때나 ISV들이 Oracle과 SQL-Server 양쪽을 지원할 필요가 있을 때 SwisSQL - Oracle to SQL Server Edition은 오라클 PL/SQL의 프로시저, 펑션, 트리거들을 자동으로 T-SQL로 변환함으로써 이전작업을 간소화 시킬 수 있습니다.

SwisSQL - Oracle to SQL Server Edition은 또한 SwisSQL ? SQLOne API를 포함시켜서 PL/SQL이 포함된 SQL 문장을 특정 SQL-Server SQL문으로 번역할 수 있게 합니다.



Release Notes For AdventNet SwisSQL - Oracle to SQL Server Edition
Release 2.3에 추가된 특징

1. Stored Procedure내의 Sub-Procedure / Sub-Function 변환 지원

2. Oracle 데이터 타입을 SQL-Server 데이터 타입으로 변환 시에 사용되는 데이터 타입 맵핑의 설정

지원

3. GREATEST, LEAST, HEXTORAW, LAST_DAY 함수의 변환 지원

4. 툴이 수행하는 변환에 대한 이해를 돕기 위한 Report 제공

5. 툴 내에서 변환된 T-SQL 코드 컴파일을 제공

6. 이전의 버전보다 더 신뢰할 수 있는 변환이나 역방향 호환성을 가능케 함.

7. 2.2버전에서 생성된 버그 수정 및 성능 향상



SwisSQL - Oracle to SQL Server Edition의 일반적 특징

1. Cursor FOR 루프 내의 INLINE SELECT 문장 지원

2. PL/SQL의 이름 지어진 오브젝트 (프로시저, 펑션, 트리거, 팩키지 등)와 익명블록의 변환 지원

3. 오라클 데이터타입을 SQL-SERVER 데이터타입으로 변환 지원

4. PL/SQL 펑션을 T-SQL 펑션으로 변환 지원

5. ORACLE SQL 문장을 T-SQL SQL 문장으로 변환 지원

6. PL/SQL의 Scalar와 Record 타입 모두 지원

7. Cursor 선언, OPEN, FETCH, CLOSE 문장 변환 지원

8. Cursor 변수 변환 지원

9. User-defined Datatype 변환 지원

10. Implicit Cursor 변환 지원

11. PL/SQL 조건절 변환 지원

12. PL/SQL 제어문 변환 지원

13. Native Dynamic SQL(NDS) 변환 지원

14. %ROWCOUNT, %FOUND, %NOTFOUND, %ISOPEN 커서 attribute 지원

15. PL/SQL Label 변환 지원

16. PL/SQL IN OUT 모드 지원

17. PL/SQL Record 문장 지원

18. Collection 타입 변환 지원

19. COMMIT, ROLLBACK, SAVEPOINT 등의 트랜잭션 문장 변환 지원

20. || 와 같은 PL/SQL 문법의 변환 지원

21. 소스 데이터베이스에서 직접 PL/SQL 모델들을 fetch

22. 정형화, 가독성, 충분한 주석을 갖춘 T-SQL code 생성

23. 사용자 편의적인 그래픽 인터페이스 제공



Release 2.3의 한계점

1. Exception 블록 변환은 완벽하지 않습니다.

2. PL/SQL built-in 팩키지의 변환은 DBMS_OUTPUT과 DBMS_SQL 팩키지에 국한됩니다.

3. SYS_CONTEXT, TRANSLATE, NEW_TIME과 같은 몇몇 함수는 변환되지 않습니다.

4. Bulk SQL 문장은 지원되지 않습니다.

5. Package에 정의된 Stored Procedure, Function 또는 User datatype이 Stored Procedure 내에서

호출될 때, 해당 Package Specification은 SwisSQL - Oracle to SQL Server Edition을 통해 먼저

변환 되어야 합니다.

6. Stored Procedure 혹은 Function이 main Strored Procedure에 의해 호출될 때, 호출되는 Stored

Procedure가 먼저 SwisSQL - Oracle to SQL Server Edition를 통해 변환되어야 합니다.

7. Error report가 변환된 블록 가까이에 표시되지만 GUI 진행 리포트에는 표시되지 않습니다.

8. Pragma는 지원되지 않습니다.



알려진 Issue들

1. PL/SQL Package 명세는 해당 명세 안에 정의된 user-type, function, procedure를 사용하기 전에

수행되어야 합니다.

2. SwisSQL - Oracle to SQL Server Edition의 GUI는 와일드카드 문자를 사용한 PL/SQL 파일의 입

력을 혀용하지 않는다. 대신 전체 파일명이나 *.sql 이 주어져야 합니다.



이후 버전에서 개선될 점들

1. Exception 블록 변환 향상

2. PL/SQL built-in Package 변환 지원

3. GUI 성능 향상





User Guide
Table of Contents

툴 시작

PL/SQL문 변환

local machine에 저장된 소스 파일

database로부터 소스 임포트

--------------------------------------------------------------------------------

AdventNet SwisSQL - Oracle to SQL Server Edition은 오라클 PL/SQL을 T-SQL로 변환하는 툴이다. 이 제품은 개발자들이 PL/SQL을 T-SQL로 변한 하는 작업을 돕기 위한 GUI를 제공합니다.



1.0 AdventNet SwisSQL-Oracle to SQL Server Edition GUI Migration Tool 시작

SwisSQL - Oracle to SQL Server Edition Migration tool을 시작하기 전에 초기화 설정이 필요합니다.



환경변수 설정

1. binsetenv.bat 파일 열기

2. oraclejdbc 환경변수에 Oracle JDBC driver classpath 설정

(예) set oraclejdbc= c:JDBCclasses12.zip where classes12.zip are the default JDBC drivers

provided by Oracle database



SwisSQL - Oracle to SQL Server Edition GUI Migration Tool 시작하기

툴을 시작하기 위해 툴의 홈 디렉토리로 이동

(AdventNetSwisSQLOracleToSQLServer2.3)

runPL2TSQL.bat 배치파일 실행



제품을 사용하려면




1. 다음 방법중 하나로 SwisSQL - Oracle to SQL Server Edition GUI Migration Tool 시작.



바탕화면에서 “SwisSQL ? OracleToSQLServer” 프로그램 아이콘을 더블 클릭. (제품 인스톨시 바탕

화면에 아이콘 생성 옵션을 선택한 경우)

(Or)

인스톨시 설정한 프로그램 폴더에서 “Oracle To SQL Server Edition”을 클릭

(디폴트 : Start -> Programs -> AdventNet SwisSQL -> SwisSQL-Oracle to SQL Server Edition

2.3 -> Oracle To Sql Server Editon 2.3)

(Or)

다음 경로에서 runPL2TSQL.bat 파일 실행

<OracleToSQLServer_Install_dir>AdventNetSwisSQLOracleToSQLServer2.3 디렉토리 또는 “bin” 디렉토리



2. Key 값을 묻는 대화상자가 나타난다. ‘Cancel’을 클릭해 대화상자를 닫습니다.



3. “PL2TSQLRegInfo.class” 파일이

“<OracleToSQLServer_Install_dir>AdventNetSwisSQLOracleToSQLServer2.3” 디렉토리에 생성된다. 이 파일을 swissql-support@adventnet.com에 보내 키 값을 얻는다. 파일을 보낼때는 윈집 등을 이용해서 압축한 후에 보낸다. AdventNet은 1000라인짜리 평가판 키 값을 보내줍니다.



주의 :

1. 압축된 파일을 사용하고 있는 업무용 메일로 보냄니다.

2. “PL2TSQLRegInfo.class” 파일은 컴퓨터 이름, IP 주소, MacAddress 등의 컴퓨터 정보를 가지고 있습니다.



키값을 획득한후에 툴을 다시 한번 실행하고 키 값을 입력하면 툴을 사용할 수 있게 됩니다.



2.0 PL/SQL stored procedure를 Transact ? SQL로 변환

변환은 다음의 옵션들을 통해서 수행 될 수 있습니다.

1. 로컬 머신에 저장된 PL/SQL 소스 파일 변환

1.1 메타 데이터 정보 획득

변환의 정확성을 보장하기 위해서는 변환을 수행하기 전에 PL/SQL이 수행되던 데이터베이스의 메타데이터를 가져오는 것이 필수적이다. 다음은 데이터베이스로부터 메타데이터를 가져오는 과정을 설명합니다.



1.1.1 Oracle JDBC 드라이버 설정

GUI 상에서 Configure 메뉴, JDBC 메뉴를 차례로 선택한다. JDBC 서브메뉴를 클릭하면 대화상자가 나타나고 다음을 설정할 수 있습니다.



JDBC 드라이버

이 필드에는 사용되고 있는 JDBC 드라이버 클래스의 이름입니다.

예) oracle.jdbc.driver.OracleDriver



Connection URL

오라클 데이터베이스에 접속하기 위한 접속 경로

예) jdbc:oracle:thin:@192.168.1.3:1521:ora8

192.168.1.3은 host name, 1521은 포트, ora8은 데이터베이스 이름입니다.



Driver jar/zip

JDBC 드라이버 클래스들, 혹은 JDBC jar나 zip들을 위한 클래스패스.



User Name

데이터베이스 접속에 사용되는 User name



Password

해당 유저의 데이터베이스 접속을 위한 패스워드



1.1.2 ***data 획득

Action 메뉴의 Get ***data 메뉴를 선택하면 나타나는 대화상자에서 다음을 설정합니다.



CatalogName

이 파라미터 옵션과 데이터를 가져올 카탈로그 이름과 매칭이 되어야 한다. 기본값은 NULL로 카탈로그 이름을 사용하지 않음으로써 메타데이터 검색에 제한을 두지 않는다는 의미이다. 만약 “” 값이 주어진다면 카탈로그 이름을 가지고 있지 않은 메타데이터만을 가져옵니다.



SchemaName

이 파라미터 옵션과 데이터를 가져올 스키마 이름과 매칭이 되어야 한다. 기본값은 NULL로 스키마 이름을 사용하지 않음으로써 메타데이터 검색에 제한을 두지 않는다는 의미이다. 만약 “” 값이 주어진다면 스키마 이름을 가지고 있지 않은 메타데이터만을 가져옵니다.



TableNamePattern

검색해올 테이블의 패턴을 정의한다. 가령 EMP%로 패턴을 정의하면 EMP로 시작하는 테이블의 메타데이터 정보만을 가져오게 된다. 기본값은 NULL로 검색시 TableNamePattern을 사용하지 않습니다.



ColumnNamePattern

검색해올 컬럼의 패턴을 정의한다. 가령 NAME%로 패턴을 정의하면 NAME으로 시작하는 컬럼의 메타데이터 정보만을 가져오게 된다. 기본값은 NULL.



이 작업은 전체 데이터베이스의 정보를 검색하기 때문에 시간이 많이 소요됩니다.



1.2 로컬 머신에 저장된 소스 파일로부터 PL/SQL 로딩

올바른 변환을 위해 변환전에 필수적인 환경이 갖추어졌는지 확인해야 합니다.



‘Add’ 버튼과 ‘Remove’ 버튼을 이용해 변환시킬 PL/SQL 파일들을 추가, 삭제할 수 있다.

평가판에서는 여러 파일 선택을 지원하지 않기 때문에 하나씩만 변환할 수 있다. 변환된 T-SQL 파일이 저장될 경로를 ‘T-SQL Directory’ 텍스트 필드를 통해 생성할 수 있습니다.



1.3 불러온 PL/SQL 파일을 T-SQL로 변환

‘Examine’ 아이콘을 클릭해서 PL/SQL 파일을 파싱하거나 ‘Migrate’ 아이콘을 클릭해 T-SQL 파일로 변환 할 수 있다. ‘Migrate’ 아이콘을 클릭하면 성공적인 변환 후에 리포트가 생성되어 로드된 전체 파일 수, 변환된 전체 파일 수, 변환된 파일 경로 등의 정보를 볼 수 있다. 변환된 T-SQL 파일들은 메인윈도우의 오른쪽의 T-SQL 트리에 로드됩니다.

변환된 파일들은 PL/SQL 파일과 동일한 이름을 가지며 다만 이름 끝에 ‘_T’를 가지게 됩니다.



주의 : Package body를 변환하게 되면 대응하는 패키지 명세가 먼저 변환된다. 패키지 명세는 T-SQL 파일을 생성하지는 않지만 패키지 바디가 변환될 때의 상세한 정보를 툴에 제공해 변환을 돕게 됩니다.

2. 소스 데이터베이스로부터 오라클 모델을 추출해 PL/SQL ***들을 변환 (Wizard 사용)

마법사는 다음과 같이 사용될 수 있습니다.



2.1 데이터베이스에 저장된 PL/SQL을 오라클 모델로부터 추출해 변환



2.1.1. Creating a new project



a. 메인윈도우 상의 Wizard 클릭 해서 프로젝트 생성 창을 엽니다.

b. “Create New Project” 옵션을 선택.

c. 프로젝트 이름을 수정한다. 새 프로젝트는

AdventNetSwisSQLOracleToSQLServer2.3Projects. 디렉토리 하위에 편집한 이름과 같은 이름의 디렉토리에 생성됩니다.

d. NEXT 버튼을 클릭해 데이터베이스 접속 창으로 넘어갑니다.



2.1.2 Connecting to Oracle Database

a. 소스를 추출하기에 앞서 데이터베이스 컨넥션을 설정해 주어야 합니다.

b. JDBC 혹은 ODBC를 사용할 수 있습니다.

c. JDBC를 통해 접속하기 위해 JDBC를 선택. 다음 필드들을 설정합니다.



JDBC Driver

사용하고 있는 JDBC 드라이버 클래스의 이름이다. JDBC 드라이버 이름은 다음과 같은 형식입니다.

‘oracle.jdbc.driver.OracleDriver’



Connection URL

접속 경로로 다음과 같은 형식입니다.

'jdbc:oracle:thin:@192.168.1.3:1521:ora8'



Driver jar/zip

JDBC 클래스, JDBC jar, JDBC zip의 클래스 패스



User Name

데이터베이스에 접속할 유저 이름



Password

유저가 사용할 패스워드



d. ODBC를 통해 접속하기 위해 “ODBC” 옵션을 선택. usersystem/DSN, username, password 항목을 설정합니다.



e. NEXT 버튼을 클릭해 다음으로 넘어갑니다.





2.1.3 데이터베이스로부터 소스 추출



a. “Get Oracle Schema”나 “Get Following ***s” 옵션을 통해서 소스 데이터베이스 항목들을 추출해 온다.



b. Get Oracle Schema를 선택하면 해당 스키마 내의 가능한 모든 오브젝트들을 임포트한다.

(Index, Tables, Views, Packages, Package Body, Procedures, Functions, ***data, Triggers, User Defined Datatype, Sequence)



c. Get Following ***s를 선택하면 fetch 하고자 하는 오브젝트 종류를 선택할 수 있다.



d. Next를 클릭한다. 현재 프로젝트 디렉토리 하위의 PLSQL 폴더에 오브젝트들이 임포트된다.



e. 임포트가 끝나면 팝업창이 뜨며 성공을 알린다. OK를 클릭하면 메인윈도우 왼편의 PLSQL 트리에 임포트된 오브젝트들이 로드된다.





2.1.4 로드된 PL/SQL 파일을 Transact-SQL로 변환



등록된 사용자

a. PLSQL 트리의 모든 오브젝트를 변환하려 한다면 Migrate 버튼을 클릭



b. 선택한 파일만 변환하려 한다면 트리에서 필요한 파일을 클릭한후 Migrate Selected Files를 클릭한다.



c. 매 변환과정 후에는 리포트 대화창이 생성돼 로드된 파일수, 변환된 파일수, 변환파일 경로등의 정보를 알려준다.



d. 변환된 T-SQL 파일들은 AdventNetSwisSQLOracleToSQLServer2.3Project 하위의 ConvertedTSQL 폴더에 저장되며 동시에 TSQLTree에 로드된다.



비등록(평가판) 사용자

a. 만약 비등록 사용자 이거나 평가판 사용자라면 복수 파일 선택이 지원되지 않으므로 한번에 파일 하나씩만 변환이 가능하다.



b. PLSQL 트리에서 하나의 파일을 선택한다.



c. 변환된 파일이 저장될 경로를 지정한다. Browse 버튼을 사용해 TSQL Directory 값을 설정해서 지정.



d. Migrate Selected Files 버튼을 클릭해서 선택된 파일을 변환한다.



e. 변환된 TSQL 파일은 AdventNetSwisSQLOracleToSQLServer2.3Project 하위에 ConvertedTSQL 폴더에 저장되며 동시에 TSQLTree에 로드된다.



f. 매 변환과정 후에는 리포트 대화창이 생성돼 로드된 파일수, 변환된 파일수, 변환파일 경로등의 정보를 알려준다





2.2 데이터베이스로부터 임포트되어 프로젝트에 저장되어 있는 오브젝트 변환



a. 메인윈도우의 Wizard 버튼 클릭. 프로젝트 윈도우가 나타난다.



b. ‘Open Existing Project’ 라디오 버튼을 클릭.



c. 프로젝트 이름을 직접 명시하거나, Browse 버튼을 클릭해서 로드할 프로젝트를 선택한다. (.swissql 파일 선택)



d. NEXT 버튼을 클릭해 프로젝트에 저장된 파일들을 PLSQL 트리에 로드한다.



e. 섹션 2.1.4를 참고해 로드한 파일을 변환한다.





3.0 Report 보기



컨버젼 작업을 성공적으로 마치게 되면 summary report를 볼 수 있다.



Time taken for migration

변환을 초기화한 후부터 변환이 끝나는 시점까지의 걸린 시간을 표시



Migration success percentage

변환 과정의 성공률을 나타낸다. 파싱되지 않은 파일은 계산에 포함되지 않는다.



Total number of files

변환의 입력으로 들어간 파일의 전체 개수



Number of files not parsed

이름 그대로 변환과정 중에 파싱 에러가 발생한 파일의 수를 뜻한다



Output directory

툴에 의해 출력된 파일들의 경로. 기본 값은 제품 설치 경로.



Reports directory

항상 Output directory 하위의 “swissql_migration_X” 폴더가 된다. 여기서 X는 각각 혹은 모든 변환작업 후에 발생하는 증가 값이다.



Conversion summary

변환작업의 여러 항목들을 테이블 형태로 보여준다.



3.1 Detailed Reports 보기

View Detailed Reports 버튼을 클릭해서 보다 세부적인 정보를 얻을 수 있다. 이 버튼을 클릭하면 브라우저 상에서 레포트를 볼 수 있다.



툴은 기본적으로 레포트를 열기 위해 시스템의 브라우저 경로를 검색한다. 이것이 실패하면 파일 선택 대화 상자를 열어 파일을 실행시킬 브라우저 위치를 묻게 된다. 실행 가능한 브라우저가 선택되면 툴은 세부 레포트를 열게 된다. (자동 브라우저 검색이 실패 했을 경우 한차례만 브라우저 경로를 묻게 되고 이 경로는 기억되어 다음부터는 다시 묻지 않는다.)



3.2 Reports index



이후의 쉬운 참조를 위하여 툴은 레포트들의 링크가 포함된 인덱스 페이지를 생성한다. 인덱스 페이지는 제품 홈디렉토리상에 Reports.html 파일로 저장된다.





4.0 Compiling generated Transact-SQL



변환된 파일은 실시간 환경에 배포되기 전에 테스트 되어야만 한다. 툴은 컴파일 옵션을 제공함으로써 변환된 파일의 구문과 문법을 검사할 수 있도록 한다. 단지 컴파일 버튼을 누르기만 하면 된다.



1. TSQL Files 트리에서 변환된 T-SQL 파일을 선택한 후 “Compile” 버튼을 클릭한다. “Destination DB Settings” 창이 열리면 타겟 SQL Server 데이터베이스에 대한 정보를 설정한 후 다음으로 넘어간다.



2. 데이터베이스 접속 설정은 두가지 방법이 있다.

1. JDBC Driver를 선택할 경우 다음의 SQL Server JDBC Driver 설정을 해준다.

Driver Class Name

SQL Server JDBC 드라이버 이름을 설정한다. 이름은 다음과 같은 형식이다.

‘com.microsoft.jdbc.sqlserver.SQLServerDriver’



JDBC Driver Jars

브라우즈 버튼을 이용해 JDBC Driver jar 파일의 경로를 설정해준다. 예를 들어 SQL Server 드라이버의 디폴트 jar 경로는 다음과 같다.

“c:jdbcmssqlserver.jar, c:jdbcmsutil.jar, c:jdbcmsbase.jar”



URL

SQL Server 데이터베이스에 접속할 수 있는 URL 경로를 설정한다. 예를 들면,

‘jdbc:Microsoft:sqlserver://192.168.1.8:1433:DatabaseName=NorthWind’

여기서 192.168.1.8은 SQL-Server가 가동되고 있는 Hostname이며, 1433은 SQL-Server에 접속할 수 있는 포트번호, NorthWind는 데이터베이스 이름이다.



UserName

SQL Server 데이터베이스에 로긴할 유저 이름



Password

유저가 사용할 패스워드



2. SQL Server 컴맨드 라인 유틸리티인 “ISQL”을 사용해서 컴파일 하는 것도 가능하다. 브라우즈 하여 “ISQL.exe”를 명시해야 하며 데이터베이스 이름을 넣어야 한다. 이 옵션을 사용하기 전에 로컬 머신에 ISQL이 설치되어 있는지 확인해야 할 것이다.

(기본 설치 폴더는 “C:Program FilesMicrosoft SQL Server80ToolsBinn”)

보다 자세한 사항은 다음을 참고하라.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/coprompt/cp_intro_3nsj.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/coprompt/cp_isql_8r39.asp



3. 설정을 마치면 OK를 클릭한다. 위의 “Destination DB Settings” 대화상자는 컴파일 설정하기 전에 한번만 나온다. 컴파일에 관한 설정정보를 바꾸고 싶을 때는 “Configure” -> “Compilation JDBC” 메뉴나 “Ctrl + O” 단축키를 이용한다.





3. “Destination DB Setting”을 마치면 툴은 소스코드의 컴파일을 시작한다. 컴파일이 종료되면 컴파일 요약정보와 에러 세부사항들이 “Compilation Result View” 대화상자에 분리되어 표시된다. Save 버튼으로 에러사항을 저장할 수 있다.





4. 다중 파일 컴파일도 지원되므로 여러 파일을 선택하거나 트리의 루트 노드를 클릭함으로써 전체 파일을 선택해 컴파일 할 수 있다.



주의 : 컴파일시 SQL문이 실행될 수 있으므로 (create table 등) 테스트 데이터베이스에 먼저 컴파일 해 보는 것이 바람직하다.



SwisSQL ? Oracle to SQL Server Edition에 관한 기술적 문의는

swissql-support@adventnet.com 으로 하기 바랍니다.





Tutorial For Using AdventNet SwisSQL - Oracle to SQL Server Edition 2.3



SwisSQL ? Oracle to SQL Server Edition 2.3 사용 예제



이번 섹션은 SwisSQL ? Oracle to SQL Server Edition 2.3에 포함되어 있는 examples 폴더의 예제 어플리케이션들을 다룬다. 이 예제들은 PL/SQL 블록들이 어떻게 T-SQL로 바뀌는지 보여줄 것이다.



아래에 제공되는 코드의 단편들은 각 단계들의 이해를 도울 것이다.



아래의 몇몇 일부분의 코드들은 PL/SQL Function이 어떻게 T-SQL로 바뀌는지 보여준다.





커서 변환 예제

PL / SQL Code :

/* Explicit Cursor Conversion */

cursor cur_customers is
SELECT customer_name,preferred_customer
FROM S_Customer
ORDER BY preferred_customer, customer_name;
...
open cur_customers;
...
fetch cur_customers INTO lv_customer_txt,
lv_preferred_txt;
EXIT WHEN cur_customers%NOTFOUND
...

변환된 Transact-SQL code는 다음과 같다.

DECLARE cur_customers CURSOR FOR
SELECT customer_name , preferred_customer
FROM s_customer
ORDER BY preferred_customer , customer_name
...
open cur_customers
...

FETCH NEXT FROM cur_customers INTO @lv_customer_txt, @lv_preferred_txt
IF (@@FETCH_STATUS = -1)
BREAK



PL / SQL Code :


/* Implicit Cursor Conversion */

SELECT NextDoc, CurrentNextDoc, Prefix, Suffix
INTO Example6_SP.NextNo, Example6_SP.NextNoSys, Example6_SP.Prefixed_By, Example6_SP.Suffixed_By
FROM Client_Sequence
...

변환된 Transact-SQL code는 다음과 같다.

SELECT @NextNo = NextDoc , @NextNoSys = CurrentNextDoc , @Prefixed_By = Prefix , @Suffixed_By = Suffix
FROM Client_Sequence
WHERE Name = @ClientName
...





PL/SQL Loop 변환 예제

PL / SQL Code :


/* For Loop Conversion */

FOR count_ID IN 1 .. Limit_Spec_ID
LOOP
...
END LOOP
...

변환된 Transact-SQL code는 다음과 같다.

The converted Transact-SQL code snippet for this PL / SQL code will be as follows:

DECLARE @count_ID INTEGER
SET @count_ID = 1
WHILE @count_ID <= @Limit_Spec_ID
BEGIN
...
END
...

PL / SQL Code :


/* Simple Loop Conversion */

LOOP
BEGIN
...
FETCH cur1 INTO C_Ref_ID, C_Ref_NAME; EXIT WHEN cur1%NOTFOUND; ...
END



변환된 Transact-SQL code는 다음과 같다.



OPEN cur1
WHILE (0 = 0)
BEGIN
...
FETCH NEXT FROM cur1 INTO @C_Ref_ID, @C_Ref_NAME
IF (@@FETCH_STATUS = -1)
BREAK
...
END





PL/SQL 제어문 변환 예제

PL / SQL Code :

/* IF ... ELSEIF .. ELSE Conversion */
IF (Type_Def_Code = 0) THEN
ReturnStr := 'String = 0';
ELSIF (Type_Def_Code = 1) THEN
ReturnStr := 'Integer = 1';
...
ELSE ReturnStr := 'Unknown ('|| Type_Def_Code ||')';
...



변환된 Transact-SQL code는 다음과 같다.



DECLARE @LoopProcessingFlag BIT
SET @LoopProcessingFlag = 0
IF ( @Type_Def_Code = 0 )
BEGIN
SELECT @ReturnStr = 'String = 0'
SET @LoopProcessingFlag = 1
END
IF ( @Type_Def_Code = 1 ) AND (@LoopProcessingFlag = 0)
BEGIN
SELECT @ReturnStr = 'Integer = 1'
SET @LoopProcessingFlag = 1
END
...
IF (@LoopProcessingFlag = 0)
BEGIN
SELECT @ReturnStr = 'Unknown (' + @Type_Def_Code + ')'
RETURN @ReturnStr
END
...





함수 변환 예제

PL / SQL Code :

...
DocumentNo := NVL(Prefixed_By, '') || NextNoSys || NVL(Suffixed_By, '');
...



변환된 Transact-SQL code는 다음과 같다.



...
SELECT @DocumentNo = ISNULL (@Prefixed_By , '' ) + @NextNo + ISNULL (@Suffixed_By , '')
...





이번 버전에서는 일반적인 대부분의 function들의 변환이 지원됩니다. 추후버전에는 고객들의 요청에 기반하여 보다 많은 함수들이 지원될 것입니다.





Customizing Code Generation through Configurable Options


SwisSQL - Oracle to SQL Server Edition은 다양한 설정 옵션을 제공해 변환을 커스터마이징 할 수 있게 하고 코드 생성에 유연성을 부여 한다. 이러한 설정들은 설정파일들을 통해서 사용 할 수 있다. 파일 경로는 다음과 같다.

<InstallationDir>AdventNetSwisSQLOracleToSQLServer2.3conf

이번 섹션은 다양한 설정 옵션들과 코드 생성이 어떻게 커스터마이징 되는지 보여준다.



1. Data type Mapping



SwisSQL은 오라클 데이터 타입을 동등한 SQL Server 데이터 타입으로 변환하는데 필요한 데이터 타입 맵핑 설정을 지원한다. 이 옵션을 사용해 변환 엔진이 사용하는 기본 변환 규칙을 덮어 씌울수 있다.



SwisSQL은 OracleToMSSQLServerDatatype.conf 라는 이름의 설정 파일을 제공한다. 이 파일은 설정파일 경로에 존재하며 데이터 타입 맵핑시 사용된다. 이 설정 파일을 사용하여 각각의 오라클 데이터 타입에 대한 SQL-Server 데이터 타입을 커스터마이징 할 수 있다.



다음은 데이터 타입 맵핑에 대한 이해를 돕는 예제이다. 가령 오라클 데이터 타입의 DECIMAL, FLOAT, DOUBLE, REAL을 모두 SQL-Server의 REAL로 변환하고 싶다면 다음 항목들을 OracleToMSSQLServerDatatype.conf 파일에 추가하기만 하면 된다.



DECIMAL=REAL

FLOAT=REAL

DOUBLE=REAL



파일을 저장한 후에 툴을 (재)시작하고 변환작업을 한다. 오라클의 DECIMAL, FLOAT, DOUBLE 데이터 타입들이 설정파일의 설정대로 T-SQL의 REAL로 변환되는 것을 볼 수 있을 것이다.



2. Generating PL/SQL Sub procedures as Separate procedures in T-SQL



SwisSQL은 PL/SQL sub procedure를 부모 procedure에 집약된 프로시저로 변환하거나 또는 분리된 프로시저로 변환하게 하는 옵션을 제공한다.

이 설정은 설정파일 디렉토리의 PL2TSQLOptions.conf 파일에 제공된다.

옵션 이름은 SubProcedureConversionAsSeparateProcedure 이며 true 혹은 false 값을 가진다. true로 설정되면 오라클 서브 프로젝트는 SQL-Server 내의 분리된 프로시저들로 변환될 것이다. false 값 (디폴트)으로 설정된다면 Parent Procedure 내의 inline 형태로 변환될 것이다.



Example:

De***ion: 아래 PL/SQL 예제는 sp_innerproc_example이라는 이름의 프로시저로 sp_salary_bound라는 이름의 inner 프로시저를 포함하고 있다. inner 프로시저는 상위 프로시저로부터 인수로 받은 bound보다 큰 salary를 가지는 employee를 출력하는 일을 한다.

Case 1: SubProcedureConversionAsSeparateProcedure = false. 기본값

PL/SQL
Transact SQL

CREATE OR REPLACE PROCEDURE sp_innerproc_example

AS



PROCEDURE sp_salary_bound (salaryBound NUMBER(7,2)) IS

empnoholder NUMBER(2,0);

CURSOR employee_row_cursor IS SELECT empno FROM employee WHERE salary > salaryBound;

BEGIN

OPEN employee_row_cursor;

LOOP

FETCH employee_row_cursor INTO empnoholder;

EXIT WHEN employee_row_cursor%NOTFOUND;

DBMS_OUTPUT.PUT_LINE('Employee ID: ' || empnoholder);

END LOOP;

END sp_salary_bound;



BEGIN

sp_salary_bound(10000);

END sp_innerproc_example;
CREATE PROCEDURE sp_innerproc_example

AS

BEGIN

--The sub procedure is expanded inline

DECLARE @empnoholder NUMERIC(2,0)

DECLARE employee_row_cursor CURSOR FOR SELECT empno FROM employee

WHERE salary > 10000

OPEN employee_row_cursor

WHILE (0 = 0)

BEGIN --{

FETCH NEXT FROM employee_row_cursor INTO @empnoholder

IF (@@FETCH_STATUS = -1)

BREAK

DECLARE @PrintVariable1 VARCHAR (512)

SELECT @PrintVariable1 = 'Employee ID: ' + + CONVERT (VARCHAR (20),@empnoholder)

PRINT @PrintVariable1

END --}

END

Case 2: SubProcedureConversionAsSeparateProcedure = true.


CREATE PROCEDURE sp_innerproc_example

AS

BEGIN

EXEC sp_salary_bound 10000

SET NOCOUNT OFF

END

-- The PL/SQL sub procedure is generated as a separate procedure

CREATE PROCEDURE sp_salary_bound

@salaryBound NUMERIC(7,2)

AS

BEGIN

PRINT CONVERT(varchar(20), @salaryBound)

DECLARE @empnoholder NUMERIC(5,0)

DECLARE emp_row_cursor CURSOR FOR

SELECT empno FROM employee WHERE salary > @salaryBound

OPEN emp_row_cur