검색

레이블이 Oracle인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Oracle인 게시물을 표시합니다. 모든 게시물 표시

2022년 12월 20일

TIPS - java.sql.SQLException: Locale not recognized (맥에서 오라클 연결시 "로케일을 인식할 수 없습니다" 오류)

 맥에서 OS 가 업데이트 되면 Oracle Database 연결시 "Locale not recognized" 오류가 발생하며 이는 시스템설정의 언어 및 지역 설정 지역 선택 박스에서 (다른 나라를 선택하고 다시 대한민국을 선택하는 방식의) 해외 여행을 한번 하고 나면 정상 동작하는 이슈가 있었다. 

그림1. Ventura 언어 및 지역 설정

Ventura 업데이트 이후에는 위의 같은 조치에도 문제가 해결되지 않고 설정을 수정하여 조치해야하는 수고가 필요하다. 의문이 가는 것이 M1 MacBook Pro 에서는 동일한 이슈가 발생되지 않는  것으로 확인되고 있다. 


SQL Developer 

/Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/sqldeveloper.conf 에서 AddVMOption 옵션을 사용 아래와 같이 Locale 설정을 추가한다. 

AddVMOption -Duser.language=ko
AddVMOption -Duser.country=KR

테스트 환경은 아래와 같다.

◼︎ 노트북
  • Model : MacBook Pro (16-inch, 2019)
  • CPU : 2.3 GHz 8코어 Intel Core i9
  • GPU : AMD Radeon Pro 5500M 4 GB
  • MENORY : 16GB
  • DISK : 1TB SSD
  • OS : macOS 13.1(22C65)

◼︎ 프로그램
  • Oracle SQL Developer 22.2.1.234
  • Java 11.0.16.1

Eclipse (Tomcat)

Eclipse 를 개발도구로 사용하는 경우 대부분이 플러그인을 사용하여 톰켓을 설정하고 사용하게되는데 위와 동일한 속성값을 톰캣 런타임 옵션에 아래와 같이 추가한다.

-Duser.language=ko -Duser.country=KR

그림2. Eclipse Servers Tomcat Configuration

그림3. Eclipse Tomcat Configuration Edit Window

테스트 환경은 아래와 같다.

◼︎ 노트북
  • Model : MacBook Pro (16-inch, 2019)
  • CPU : 2.3 GHz 8코어 Intel Core i9
  • GPU : AMD Radeon Pro 5500M 4 GB
  • MENORY : 16GB
  • DISK : 1TB SSD
  • OS : macOS 13.1(22C65)

◼︎ 프로그램
  • Eclipse IDE for Enterprise Java Developers (includes Incubating components) 4.17.0
  • Java 11.0.16.1
  • Apache Tomcat 8.5

참고자료 

  1. An getting this error when i run my project: java.sql.SQLException: Locale not recognized
  2. My Oracle Support Banner java.sql.SQLException: Locale not recognized When Using -Duser.language and -Duser.region (Doc ID 2637901.1)

2016년 6월 2일

ORA-01861: literal does not match format string

서버 환경 :
Oracle 11.2.0.1.0
Apache Tomcat 7.0.52 ( Oracle Java 1.7.0_60-b19)
OS : Linux ( 2.6.32-431.el6.x86_64 )

클라이언트 환경 :
SqlDeveloper  4.1.1.19  ( Java  1.8.0_45 )

현상 : SqlDeveloper 에서는 정상적으로 수행되는 쿼리가 웹 프로그램에서 실행하는 경우

ORA-01861: literal does not match format string

오류가 발생.

    SELECT TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D'), 'YYYY-MM-DD')) wsday
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D'), 'DY'))       ws
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D')+6, 'YYYY-MM-DD')) weday
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D')+6, 'DY'))       we
    FROM   DUAL ;

해결방법 : 문자열을 날짜 형태로 변환하는 경우 명시적으로 포맷 문자값을 지정하여 처리한다.

 SELECT TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D'), 'YYYY-MM-DD')) wsday
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D'), 'DY'))       ws
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D')+6, 'YYYY-MM-DD')) weday
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D')+6, 'DY'))       we
 FROM   DUAL ;




2016년 4월 12일

Oracle SQL Developer 데이터 임포트 마법사

 Oracle SQL Developer 데이터 임포트 마법사를 사용하여 손쉽게 엑셀 형식의 데이터를 임포트 할 수 있다.

테이블을 선택하고 우측마우스 버튼을 클릭 데이터 임포트(A) 를 클릭하여 데이터 임포트 마법사를 실행한다.

그림1. 임포트 마법사 실행 화면


데이터가 포함된 엑셀 파일을 선택하고 데이터를 확인, 다음(N) 버튼을 클릭한다. 일반적인 데이터 엑셀 구성은 첫번째 행을 테이블 컬럼으로 사용하기 때문에 헤더 체크박스 기본값은 체크된 상태이다. 데이터 엑셀을 작성할 때 테이블의 컬럼 명으로 엑셀 첫번째 행의 구성하면 임포트 작업이 아주 편하다.

그림2. 데이터 임포트 마법사 단계 1 /5
다시한번 데이터를 확인, 다음(N) 버튼을 클릭한다.

그림3. 데이터 임포트 마법사 단계 2/5
엑셀 데이터에서 임포트 할 컬럼을 선택합니다.

그림 4. 데이터 임포트 마법사 단계 3/5

이제 엑셀 데이터 컬럼과 데이터베이스 테이블의 컬럼을 매핑한다. 엑셀 파일과 데이터베이스 테이블 컬럼 이름이 동일한 경우 자동으로 매핑된다.

그림 5. 데이터 임포트 마법사 단계 4/5

이제 다음(N) 버튼을 클릭하고 완료(F) 버튼을 클릭하면 임포트가 실행된다.



2014년 12월 22일

RMAN 을 이용한 오라클 백업

Recover Manager(이한 RMAN) 은 오라클 데이터베이스에 대한 백업과 복구를 위한 클라이언트 프로그램이다. RMAN 는 크게 백업, 복원 및 데이터베이스 파일들에 대한 복구를 단순화한다.

데이터베이스 FULL 백업

다음의 스크립트는 로컬에 설치된 데이터베이스에 접속하여 /BACKUP/DATA 위치에 FULL 백업을 수행한다.

"FullBackup.sh"

OUSER=oracle

TS=`date +"%m.%d-%H:%M"`

su - $OUSER << EOF
rman log=/BACKUP/log/rman_FULL_$TS.log <<EOF1
connect target /
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt obsolete;

run{
allocate channel t1 type DISK;
SET MAXCORRUPT FOR DATAFILE 3 to 3;
BACKUP format "/BACKUP/RMAN/FULL_%d_%U" INCREMENTAL LEVEL 0 DATABASE filesperset 4;
sql "alter database backup controlfile to ''/BACKUP/RMAN/controlfile_full_backup'' reuse";
sql "alter system archive log current";
backup format  "/BACKUP/RMAN/IRDS_%s.arc.rman"
archivelog all delete all input;
release channel t1;
}
EOF1

EOF


데이터베이스 아키이브 백업

다음의 스크립트는 로컬에 설치된 데이터베이스에 접속하여 /BACKUP/DATA 위치에 아카이브 백업을 수행한다.

"DailyBackup.sh"


OUSER=oracle

TS=`date +"%m.%d-%H:%M"`

su - $OUSER << EOF
rman log=/BACKUP/log/rman_INC_$TS.log <<EOF1
connect target /
crosscheck archivelog all;
delete noprompt expired archivelog all;

run{
allocate channel t1 type DISK;
SET MAXCORRUPT FOR DATAFILE 3 to 3;
BACKUP format "/BACKUP/RMAN/INC_%d_%U" INCREMENTAL LEVEL 1 DATABASE filesperset 4;
sql "alter database backup controlfile to ''/BACKUP/RMAN/controlfile_inc_backup'' reuse";
sql "alter system archive log current";
backup format  "/BACKUP/RMAN/DATABASE_%s.arc.rman"
archivelog all delete all input;
release channel t1;
}
EOF1
EOF



참고로 RMAN 은 catalog 을 이용하는 방법과 target database 의 controlfile 을 이용한 방법이 있으나 오라클에서는 catalog 를 이용하는 방법을 강력히 권고한다.

참고 자료

Database Backup and Recovery User's Guide

2014년 3월 11일

CentOS 6.5 에 Oracle Database 11g Release 2 설치하기

Step 1: 오라클설치를 위한 관련 패키지 설치 

먼저 "Oracle Public Yum" 레파지토리가 제공하는 "oracle-rdbms-server-11gR2-preinstall" 패키지를 다운로드한다. 오라클 공개 yum 레파지토리는 무료로 가장 쉽게 Linux 환경에서 Oracle 설치를 위하여 필요한 것들을 자동으로 설치하는 기능을 제공하고 있다.

yum 레파지토리는 아래와 같은 방법으로 구성은 한다. root 계정으로 wget 명령을 사용하여 yum 설정 파일을 /etc/yum.repos.d/ 경로에 다운로드한다.

# cd /etc/yum.repos.d
# wget https://public-yum.oracle.com/public-yum-ol6.repo --no-check-certificate

--2014-03-10 18:12:02--  https://public-yum.oracle.com/public-yum-ol6.repo
Resolving public-yum.oracle.com... 173.223.227.26, 173.223.227.10
Connecting to public-yum.oracle.com|173.223.227.26|:443... connected.
WARNING: certificate common name “a248.e.akamai.net” doesn’t match requested host name “public-yum.oracle.com”.
HTTP request sent, awaiting response... 200 OK
Length: 4233 (4.1K) [text/plain]
Saving to: “public-yum-ol6.repo”

100%[======================================>] 4,233       --.-K/s   in 0s

2014-03-10 18:12:03 (370 MB/s) - “public-yum-ol6.repo” saved [4233/4233]

이제 아래와 같이 yum 명령을 실행하여 사전에 필요한 것들을 설치한다.

#yum install oracle-rdbms-server-11gR2-preinstall
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
 * base: ftp.daum.net
 * extras: ftp.daum.net
 * updates: ftp.daum.net
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-9.el6 will be installed
--> Processing Dependency: gcc for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: gcc-c++ for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: kernel-uek for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: compat-libcap1 for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: ksh for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: libaio-devel for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: compat-libstdc++-33 for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Processing Dependency: libstdc++-devel for package: oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-1 will be installed
---> Package compat-libstdc++-33.x86_64 0:3.2.3-69.el6 will be installed
---> Package gcc.x86_64 0:4.4.7-4.el6 will be installed
--> Processing Dependency: cpp = 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64
--> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-4.el6.x86_64
---> Package gcc-c++.x86_64 0:4.4.7-4.el6 will be installed
--> Processing Dependency: libmpfr.so.1()(64bit) for package: gcc-c++-4.4.7-4.el6.x86_64
---> Package kernel-uek.x86_64 0:2.6.39-400.214.3.el6uek will be installed
--> Processing Dependency: kernel-uek-firmware = 2.6.39-400.214.3.el6uek for package: kernel-uek-2.6.39-400.214.3.el6uek.x86_64
---> Package ksh.x86_64 0:20120801-10.el6_5.3 will be installed
---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed
---> Package libstdc++-devel.x86_64 0:4.4.7-4.el6 will be installed
--> Running transaction check
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be installed
--> Processing Dependency: libppl_c.so.2()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
--> Processing Dependency: libppl.so.7()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-4.el6 will be installed
---> Package kernel-uek-firmware.noarch 0:2.6.39-400.214.3.el6uek will be installed
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be installed
--> Running transaction check
---> Package ppl.x86_64 0:0.10.2-11.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                    Arch   Version                 Repository      Size
================================================================================
Installing:
 oracle-rdbms-server-11gR2-preinstall
                            x86_64 1.0-9.el6               ol6_latest      17 k
Installing for dependencies:
 cloog-ppl                  x86_64 0.15.7-1.2.el6          base            93 k
 compat-libcap1             x86_64 1.10-1                  base            17 k
 compat-libstdc++-33        x86_64 3.2.3-69.el6            base           183 k
 cpp                        x86_64 4.4.7-4.el6             base           3.7 M
 gcc                        x86_64 4.4.7-4.el6             base            10 M
 gcc-c++                    x86_64 4.4.7-4.el6             base           4.7 M
 kernel-uek                 x86_64 2.6.39-400.214.3.el6uek ol6_UEK_latest  28 M
 kernel-uek-firmware        noarch 2.6.39-400.214.3.el6uek ol6_UEK_latest 3.6 M
 ksh                        x86_64 20120801-10.el6_5.3     ol6_latest     756 k
 libaio-devel               x86_64 0.3.107-10.el6          base            13 k
 libstdc++-devel            x86_64 4.4.7-4.el6             base           1.6 M
 mpfr                       x86_64 2.4.1-6.el6             base           157 k
 ppl                        x86_64 0.10.2-11.el6           base           1.3 M

Transaction Summary
================================================================================
Install      14 Package(s)

Total download size: 54 M
Installed size: 175 M
Is this ok [y/N]: Y
Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Importing GPG key 0xEC551F03:
 Userid: "Oracle OSS group (Open Source Software group) "
 From  : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : mpfr-2.4.1-6.el6.x86_64                                     1/14
  Installing : libstdc++-devel-4.4.7-4.el6.x86_64                          2/14
  Installing : cpp-4.4.7-4.el6.x86_64                                      3/14
  Installing : kernel-uek-firmware-2.6.39-400.214.3.el6uek.noarch          4/14
  Installing : kernel-uek-2.6.39-400.214.3.el6uek.x86_64                   5/14
  Installing : ppl-0.10.2-11.el6.x86_64                                    6/14
  Installing : cloog-ppl-0.15.7-1.2.el6.x86_64                             7/14
  Installing : gcc-4.4.7-4.el6.x86_64                                      8/14
  Installing : gcc-c++-4.4.7-4.el6.x86_64                                  9/14
  Installing : compat-libstdc++-33-3.2.3-69.el6.x86_64                    10/14
  Installing : libaio-devel-0.3.107-10.el6.x86_64                         11/14
  Installing : ksh-20120801-10.el6_5.3.x86_64                             12/14
  Installing : compat-libcap1-1.10-1.x86_64                               13/14
  Installing : oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64      14/14
  Verifying  : compat-libcap1-1.10-1.x86_64                                1/14
  Verifying  : ksh-20120801-10.el6_5.3.x86_64                              2/14
  Verifying  : libstdc++-devel-4.4.7-4.el6.x86_64                          3/14
  Verifying  : cpp-4.4.7-4.el6.x86_64                                      4/14
  Verifying  : kernel-uek-2.6.39-400.214.3.el6uek.x86_64                   5/14
  Verifying  : libaio-devel-0.3.107-10.el6.x86_64                          6/14
  Verifying  : oracle-rdbms-server-11gR2-preinstall-1.0-9.el6.x86_64       7/14
  Verifying  : compat-libstdc++-33-3.2.3-69.el6.x86_64                     8/14
  Verifying  : mpfr-2.4.1-6.el6.x86_64                                     9/14
  Verifying  : gcc-4.4.7-4.el6.x86_64                                     10/14
  Verifying  : gcc-c++-4.4.7-4.el6.x86_64                                 11/14
  Verifying  : ppl-0.10.2-11.el6.x86_64                                   12/14
  Verifying  : cloog-ppl-0.15.7-1.2.el6.x86_64                            13/14
  Verifying  : kernel-uek-firmware-2.6.39-400.214.3.el6uek.noarch         14/14

Installed:
  oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-9.el6

Dependency Installed:
  cloog-ppl.x86_64 0:0.15.7-1.2.el6
  compat-libcap1.x86_64 0:1.10-1
  compat-libstdc++-33.x86_64 0:3.2.3-69.el6
  cpp.x86_64 0:4.4.7-4.el6
  gcc.x86_64 0:4.4.7-4.el6
  gcc-c++.x86_64 0:4.4.7-4.el6
  kernel-uek.x86_64 0:2.6.39-400.214.3.el6uek
  kernel-uek-firmware.noarch 0:2.6.39-400.214.3.el6uek
  ksh.x86_64 0:20120801-10.el6_5.3
  libaio-devel.x86_64 0:0.3.107-10.el6
  libstdc++-devel.x86_64 0:4.4.7-4.el6
  mpfr.x86_64 0:2.4.1-6.el6
  ppl.x86_64 0:0.10.2-11.el6

Complete!
설치과정에서 "GPG key retrieval failed" 오류가 발생되는데, 아래와 같이 wget 명령을 사용하여 GPG 키를 다운로드한면 해결된다.
#wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle --no-check-certificate

Step 2: Oracle 계정 설정

먼저 "oracle" 계정의 패스워드를 설정한다.
# passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
/etc/security/limits.d/90-nproc.conf 파일을 다음과 같이 수정한다.
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     1024
# To this
* - nproc 16384

"/etc/selinux/config" 파일을 수정하여 SELinux 값을 permissive 로 설정한다.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=permissive

# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

변경사항을 적용하기 위하여 서버를 "reboot" 한다. oracle 계정으로 로그인한 다음 .bash_profile 파일(홈 경로에 위치)을 수정한다. 경로는 오라클을 설치하는 서버 환경에 맞게 수정하면 된다.

# vi .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export PATH

umask 022
export ORACLE_BASE=/app/oracle
export ORACLE_SID=11GR2
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORA_NLS10=$ORACLE_HOME/nls/data
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export PATH=$PATH:.:$ORACLE_HOME/bin:/usr/ccs/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/X11R6/bin:/usr/bin/X11
export EDITOR=vi
export PS1='$LOGNAME@`hostname`:$PWD>'
root 계정으로 디렉터리를 생성하고 권한을 부여한다.
# mkdir -p /app/oracle/product/11.2.0/dbhome_1
# chown -R oracle.dba /app/oracle

NLS_LANG 값을 AMERICAN_AMERICA.KO16KSC5601으로 지정하였으나 이는 설치에 영향을 주지는 않았다.

Step3 : 오라클 소프트웨어 다운로드 



오라클 소프트웨어는 2개의 zip 파일로 구성되어 있는데 이 파일들을 “/home/oracle/" 로 다운로드한다. 압축을 풀면 database 이름의 폴더가 생성된다.

#unzip V17530-01_1of2.zip
#unzip V17530-01_2of2.zip

Step3 : 오라클 소프트웨어 설치

설치는 반듯이 oracle 계정으로 진행한다.
database 폴더로 이동하여 runInstaller 을 실행하여 설치를 진행한다.

1. (보안패치 관련 메일을 받지않는 것으로 하여 메일을 설정하지 않고 넘어감.)



2. Create and configure a database 선택


3.Server Class 선택


4. Single instance database installation 선택


5.Typical install 선택
Typical install을 선택하여 설치하면 문자셋(CHARACTER SET) NLS_CHARACTERSET 값은 "AL32UTF8", NLS_LANGUAGE 값은 AMERICAN 으로 디폴트 설치가 된다. 설치시에 문자셋를 변경하려면 Advenced Install 을 선택하여 설치를 진행하여야 한다. (AL32UTF8 은 유니코드이기 때문에 한글 입력이 지원됨).

참고로 한글을 지원하는 문자셋(CHARACTER SET)은 3가지 있다고 한다.

  •  KO16KSC5601 : 완성형 한글 - 2350자의 한글, 4888자의 한자, 히라카나, 카타카나, 영문 및 기호.
  •  KO16MSWIN949 : 확장 완성형 - KO16KSC5601을 그대로 포함하고 추가로 8822 자까지 표현. 
  • UTF8/AL32UTF8 : 가변길이 한글표현에 최대 3바이트 (AL32UTF8은 6바이트) 유니코드는 잘 알려진 바와 같이 현대 한글 11172자를 모두 가나다 순으로 잘 정렬된 상태로 포함.



6. Administrative password 를 입력한다. 여기에서는 Database file location 을 다른 파티션으로 지정하였다.


7. Inventory 를 생성한다.


8. 필수 사항 검사에서 아래와 같은 문제가 보여진다. 그냥 전체 무시 (ignore all)을 선택하고 진행하여도 설치가 진행된다. (참고한 문서에서 제시한 방식으로는 해결이 불가하였음)


9. 계속 지시사항에 따라 설치를 진행하면 된다.



마직막으로 방화벽을 사용하고 있다면 1521 포트를 개방하면 된다.


11g 설치가 필요하여 11.0.2.1 CentOS 6.2 Final 버전에서 다시 설치해보았다.


출처: http://www.tecmint.com/oracle-database-11g-release-2-installation-in-linux/

2013년 11월 25일

Oracle DBMS_CRYPTO 사용하기

DBMS_CRYPTO는 저장된 데이터를 암호화하고 복호화하기 위한 기능을 제공하고 있다.

사용을 위하여 먼저 "sys/passwd as sysdba" 명령으로 sqlplus 을 실행하여 데이터베이스 서버에 접속, 아래와 같이 쿼리를 실행하여 DBMS_CRYPTO 패키지를 설치한다. (Oracle 이 설치된 경로는 환경에 맞게 수정이 필요)
@/home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/dbmsobtk.sql
@/home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/prvtobtk.plb


설치가 완료되었으며 패키지를 사용하는 계정에 권한을 부여한다. 다음은 모든 사용자에게 권한을 부여하는 예이다.

Grant execute on dbms_crypto to public;
Grant execute on dbms_obfuscation_toolkit to public;

2013년 5월 24일

오라클 데이터 파일 IMPORT 하기

보통은 export 된 데이터 파일을 import 한는 경우  imp 명령 옵션에서 fromuser=[export 계정] 와 touser=[import 계정] 을 사용하거나 FULL=Y 옵션을 사용하여 임포트한다.

TABLESPACE 이름이 다른 경우 import 하는 계정의 TABLESPACE 가 디폴드로 사용되는데 CLOB, BLOB 타입은  예외다. 즉 LOB 타입의 컬럼을 포함하는 테이블들은 import 되지 않는 문제가 발생된다.

이를 해결하기 위하여 데이터파일을 가지고 LOB 데이터를 포함하는 테이블 생성을 위한 스크립트를 추출하고, 추출된 쿼리를 사용하여 LOB 컬럼을 포함하는 미리 테이블을 생성한다.
다음으로 데이터파일을 import 한다.


indexfile 옵션을 사용하여 export 된 데이터파일에서 쿼리 추출 


imp system/***** file=SITE1_REAL.DMP fromuser=user01 touser=user02 indexfile=create.sql constraints=y full=y log=debug.log


create.sql 에서 CLOB, BLOB 문자를 검색하고 해당 테이블 관련 쿼리를 추출한다. 참고로 추출된 create.sql 은 아래와 같은 형식으로 만들어 진다. 이때 TABLESPACE 를 import 하려는 계정이 사용하는 TABLESPACE 롤 변경한다.  

REM  ... 0 rows

REM  CREATE TABLE "USER02"."T_USER_PHOTO" ("USER_NUM" VARCHAR2(15)

REM  NOT NULL ENABLE, "PHOTO" BLOB, "CREATED_DTIME" VARCHAR2(14),

REM  "CREATED_BY" VARCHAR2(15), "UPDATED_DTIME" VARCHAR2(14), "UPDATED_BY"

REM  VARCHAR2(15)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

REM  STORAGE(INITIAL 2097152 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL

REM  DEFAULT) TABLESPACE "USER01_TB" LOGGING NOCOMPRESS LOB ("PHOTO")

REM  STORE AS (TABLESPACE "USER01_TB" ENABLE STORAGE IN ROW CHUNK 8192

REM  PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 2097152 FREELISTS 1

REM  FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) ;

REM  ... 3 rows

REM  ALTER TABLE "USER02"."T_USER_PHOTO" ADD PRIMARY KEY

REM  ("USER_NUM") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255

REM  STORAGE(INITIAL 2097152 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL

REM  DEFAULT) TABLESPACE "USER01_TB" LOGGING ENABLE ;



TABLESPACE "USER01_TB" 값을 TABLESPACE "USER02_TB" (USER02 의 TABLESPACE 가  "USER02_TB" 라 가정)

이제 추출된 쿼리를 사용하여 테이블 생성한다.

export 된 데이터파일에서 import 

imp system/****** file=SITE1_REAL.DMP fromuser=user01 touser=user02 ignore=y log=debug.log

2012년 4월 26일

Oracle SQL Developer 도구 활용하기 - Part2

데이터베이스 복사

Oracle SQL Developer 의 "데이터베이스 복사"  기능는 다른 데이터베이스 간의 객체 복사을 아주 쉽게 처리할 수 있도록 한다.

A 데이터베이스의 T1 테이블을 B 데이터베이스에 데이터를 포함하여 복사하는 경우 예로들어 보자.

1. 도구(T) > 데이터베이스 복사(C)... 메뉴를 클릭하여 데이터베이스 복사 마법사를 실행한다.



2. 소스 접속(S)대상 접속(D) 을 지정한다.


3. 객체 유형을 선택한다. 여기에서는 테이블만을 복사한다.


4. 대상 객체를 검색한다. 결과에서 원하는 객체를 선택하고 >버튼을 클릭하여 복사할 객체를 지정한다.


5. 이제 다음 버튼을 클릭하여 객체를 복사한다.







SQL Developer

Oracle SQL Developer 도구 활용하기 - Part1 
Oracle SQL Developer 도구 활용하기 - Part2

2012년 4월 12일

Oracle SQL Developer 도구 활용하기 - Part1

오라클을 사용하는 경우라면 Oracle SQL Developer 도구를 사용하여 문서작성 및 서로 다른 데이터베이스를 쉽게 복사할 수 있다. Oracle SQL Developer 는 http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html 에서 다운로드 받아 사용하면 된다

사용된 Oracle SQL Developer 버전정보

1. 스키마 문서 만들기

Oracle SQL Developer 는 리뷰 또는 정보 공유를 위하여 HTML 포맷으로 데이터베이스에대한 문서 만들 수 있다. 문서는 다음과 같은 단계를 따라 만들 수 있다.

1. 문서 생성을 원하는 스키마에 대한 접속을 생성한다. CTRL + N 키를 입력하고 데이터베이스 접속을 선택하여 생성한다.

<그림 1> 새로 생성 창


2. 데이터베이스에 대한 접속을 실행하고 DB 문서생성(Q) 메뉴을 클릭한다.

<그림2> DB 문서 생성하기

3. 출력 디렉토리를 설정하고 확인 버튼을 클릭한다.

<그림3> DB 문서 생성 창


<그림4> DB 생성 진행 상태 창

4. 작업이 완료되면 프라우저가 실행되어 생성된 HTML 포맷의 문서를 보여준다.


2. 데이터베이스 복사하기 

Oracle SQL Developer 는 데이터베이스 복사를 위한 여러가지 방법을 제공한다.


  • 특정 객체 (테이블, 함수, 프로시저)에 대한  Data Definition Language (이하 DDL)  을 생성하는 경우  빠른 DDL(D)  기능을,  
  • 다중 테이블에 대한 DDL과 그 데이터을 위한 INSERT 문을 함께 생성하는 경우는 익스포트 마법사를 사용하는 것이 유용한다. 
  • 하나의 데이터베이스에서 다른 데이터베이스로 복사하는 경우는 데이터베이스 복사 마법사를 사용한다.



2.1 빠른 DDL 생성
접속>테이블 노드의 테이블 객체들을 선택, 우측 마우스 버튼을 누르고 빠른 DDL(D) > 워크시트에 저장(W) 을 선택하여 DDL 을 만든다. 프로시저 또는 함수의 경우도 동일하게 적용하면 된다.

<그림6> DDL을 워크시트에 저장
워크시트에 저장된 DDL 은 다른 스키마에 실행하기에는 적합하지 않는 스키마 이름, 테이블스페이스 정보와 같은 불필요한 정보를 포함하고 있다.


DDL 을 생성할 때 이러한 정보를 무시하고 생성하려면 도구(T)>환경설정 을 선택하고 환경설정 창에서 데이터베이스>유틸리티>익스포트 항목의 저장영역(G)스키마 표시(S) 의 체크를 제거한다음 다시 DDL 을 생성한다.

<그림7> 환경설정 
<그림8> DDL 생성 옵션 변경

2.2 익스포트마법사
접속>테이블 노드의 테이블을 선택, 우측 마우스  버튼을 누르고 익스포트(B) 메뉴를 선택하여 익스포트 마법서를 실행한다.

<그림9> 테이블 데이터 익스포트
마법사는 디폴트로 단일 파일에 DDL 을 저장하도록 되어 있어 이부분을 적절하게 수정한다.  

<그림10> 익스포트 마법사



2.3 데이터베이스 복사 마법사 
도구>데이터베이스 복사(C) 메뉴를 선택하여 데이터베이스 복사 마법사를 실행한다. 데이터베이스 복사 마법사는  INSERT 문을 스크립트로 생성하는 대신, 직접 대상 테이블에 데이터를 입력한다. 또한 BLOB, CLOB 데이터 역시 지원하고 있다.






SQL Developer

Oracle SQL Developer 도구 활용하기 - Part1
Oracle SQL Developer 도구 활용하기 - Part2


2011년 1월 10일

Toad with Oracle Database Instant Client

Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME. OCI, OCCI, Pro*C, ODBC, and JDBC applications work without modification, while using significantly less disk space than before. Even SQL*Plus can be used with Instant Client. No recompile, no hassle.


참고로 import, export 기능을 사용하는 경우는 사용할 수 없다.




먼저 프로그램 다운로드는 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 에서 하면 된다.




Basic 또는 Basic Lite 는 반듯이 필요하며, 나머지들은 필요한 패키지를 선택하여 다운로드 하면된다. 




다운로드된 파일들은 모두 ZIP 압축되어 있는데 동일한 이름의 폴더에 압축을 푼다.


ODBC 기능을 사용하기 위하여 먼저 odbc_install 을 실행한다. 이제 OCI 을 위해서 TNS_ADMIN 경로을 지정해주자. 
만일 다국어 지원을 위하여 언어를 지정해야 한다면 NLS_LANG 값을 같은 방식으로 지정하면 된다. 한글을 사용하는 경우는 반듯이 해당 데이터베이스의 문자을 확인하고 NLS_LANG 값을 지정해주어야 한다. 보통은 KOREAN_KOREA.KO16KSC5601 지정하면 될 것으로 예상.


참고로  Oracle Database Instant Client 는 여러가지 버전이 있는데 같이 사용하려고 하는 Toad 에서 해당 ODBC 드라이버 버전과 호환되어야 하는가를 확인해야 한다. (Toad v9.0.1.8 버전과 Instance Client 10.1 을 사용하여 성공하였다. )




2010년 10월 13일

오라클 어플리케이션 서버에서 오픈소스 프레임워크 사용하기


1. 스프링 프레임워크
오라클 어플리케이션에서 스프링을 사용하는 웹 어플리케이션을 배포하는 경우 어플리케이션이 정상 배포 되지 않는 문제점이 있다. 오라클에서는 이 문제에 대한 해결책을 제시하고 있는 자세한 내용은 아래의 링크를 참조.



http://download-west.oracle.com/docs/cd/B25221_04/web.1013/b14433/opensrc.htm

결론적으로 application.xml 파일에서 아래 부분을 주석처리 하면 된다.

2. 하이버네이트
하이버네이트를 사용하는 경우 TopLink 의 ATR 라이브러리의 충돌이 발생되어 오류가 발생되는데 이 문제는 system-application.xml 파일에서 toplink 라이브러리 사용관련 설정을 제거하면 된다. 자세한 내용은 아래의 링크를 참조. 결론적으로 아래의 부분을 주석처리 하면 된다.

http://forums.oracle.com/forums/thread.jspa?messageID=2022327

2010년 8월 19일

Oracle 9i Client (9.2.0.1.0) 가 필요하다면.

Client 에서 9i 디비를 익스포트하려고 하는데 오라클 공식 사이트에서는 10g 이하는 설치 파일을 받을 수 없었다. 
일단 10g 클라이언트를 설치하고 exp 을 시도하니  

EXP-00056: ORACLE 오류 6550이(가) 발생했습니다.
ORA-06550: 줄 1, 열41:PLS-00302: 'SET_NO_OUTLINES' 구성 요소가 정의되어야 합니다

ORA-06550: 줄 1, 열15:PL/SQL: Statement ignored
EXP-00000: 엑스포트가 실패로 끝났습니다

이런 오류가 발생되어 확인하니 호환성 때문이며 이경우는 9i 클라이언트를 설치하여 해결할 수 있다고 한다. 
문제는 공식사이트에서 배포되지 않는다는 것인데, 방법을 찾아보니 http://edelivery.oracle.com  에서 다운로드가 가능하다고 한다.

Oracle 9i 다운로드 방법 

1. http://edelivery.oracle.com 로 이동한다. 언어를 한글을 선택 후 "계속" 버튼을 클릭한다. 

2. 사이트가 요구하는 몇가지 정보와 약관 2개에 체크 후 "계속" 버튼을 클릭한다.

3. Search 단계에서 제품팩과 운영체제를 선택한다. 그리고 "실행" 버튼을 클릭한다.



















4. 검색된 결과 중 다운로드를 원하는 제품을 다운로드 한다.