블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-20 08:40
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글


오라클에서 덤프를 이용하여 다른 스키마로 복사가 가능합니다.

우선 원본 스키마 덤프를 뜹니다.

# expdp [계정명]/[패스워드] SCHEMAS=[원본 스키마 명] DUMPFILE=[파일명]

ex)계정이 'vicki' 이고 패스워드가 'vickipasswd' 인 계정인 경우 스키마 덤프 명령
# expdp vicki/vickipasswd SCHEMAS=vicki DUMPFILE=vicki.dmp



복사할 스키마를 생성한 후 아래와 같은 명령으로 복사를 수행합니다.

# impdp [계정명]/[패스워드] REMAP_SCHEMA=[원본 스키마 명]:[복사할 스키마 명] DUMPFILE=[파일명]

ex)'vicki_new' 스키마로 복사할 경우
# impdp vicki/vickipasswd REMAP_SCHEMA=vicki:vicki_new DUMPFILE=vicki.dmp


오라클 10g Express  버전에서 정상 구동 확인하였습니다.


Posted by 자수씨
, |


CentOS 6 에 오라클을 설치할 일이 생겨서 11g express 버전을 설치하였습니다.

다운로드

아래의 페이지에서 rpm 을 다운로드 받습니다.
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html



설치

다운로드 받은 패키지를 설치합니다. WAS 를 설치할 예정이라면 Oracle Application Express 포트를 적절하게 변경합니다.

# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
준비 중...               ########################################### [100%]
   1:oracle-xe              ########################################### [100%]
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

# /etc/init.d/oracle-xe configure
Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press <Enter> to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:9090

Specify a port that will be used for the database listener [1521]: (enter)

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration: (SYS, SYSTEM 패스워드 입력)
Confirm the password: (SYS, SYSTEM 패스워드 재입력)

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]: (enter)

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.




환경설정

express 버전은 환경 설정도 간단합니다.
 
(bourne, bash, korn shell)
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

(c shell)
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.csh


위의 환경설정이 각 쉘 시작시에도 실행될 수 있게 .bash_profile (bash) 이나 .bashrc 와 같은 파일에 추가합니다.



외부 연결 설정

오라클에서 사용하는 포트 1521 을 오픈하도록 설정을 합니다. 그 후 lsnrctl 명령을 이용하여 리스너가 정상적인지를 확인합니다.

# system-config-firewall

# lsnrctl status

LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 02-2월 -2012 14:08:28

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date                02-2월 -2012 13:20:06
Uptime                    0 days 0 hr. 48 min. 24 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=9090))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully





설치부터 접속까지 10분 내로 처리되네요~ 계정을 생성하지 않아도 되고... 간단한 테스트 용도로는 XE 버전이 좋을 듯 합니다.


참고자료

http://docs.oracle.com/cd/E17781_01/install.112/e18802/toc.htm

Posted by 자수씨
, |

오라클에서 비밀번호를 몇 번 틀리다보면 계정이 LOCK 걸리게 됩니다.

관리자 계정으로 접속하여 아래의 쿼리를 실행하면 계정 상태를 확인할 수 있습니다.

SELECT
USERNAME
, ACCOUNT_STATUS
, LOCK_DATE
FROM
DBA_USERS


아래와 같은 쿼리 문을 통해 계정의 LOCK 을 풀어줍니다.

ALTER USER [계정] ACCOUNT UNLOCK


Posted by 자수씨
, |



위의 오류가 나는 이유는 column 의 결과에 char 에 포함하는 내용이 있을 경우 발생합니다.

즉, SYS_CONNECT_BY_PATH(name, ',') 일 때, name 에 쉼표가 포함되어 있다면 위의 오류가 발생하게 됩니다.

DB 내의 재귀호출은 별로 좋아하지 않는지라... 쩝;;;

Posted by 자수씨
, |

원래 오라클이랑은 별로 안 친해서 프로시저에 대해 잘 몰랐는데, 프로젝트 진행 중에 레거시의 요구사행 때문에 SYS_REFCURSOR 사용법을 알게되었습니다.


[프로시저]

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18
19

CREATE OR REPLACE PROCEDURE TEST.SP_OUT_CURSOR_EXAMPLE (

  V_PARAM IN VARCHAR2,
  V_OUT
OUT SYS_REFCURSOR)

IS

BEGIN

 

OPEN V_OUT FOR

SELECT

  'TEST' AS "제목",

  V_PARAM AS "내용"

FROM DUAL;

 

EXCEPTION

WHEN NO_DATA_FOUND THEN

 NULL;

WHEN OTHERS THEN

 RAISE;

END SP_OUT_CURSOR_EXAMPLE;

GO


03 라인에 보면 "OUT SYS_REFCURSOR" 라는 타입으로 정의되어 있습니다. 결과값을 담는 파라미터에 CURSOR 를 넘기는 것으로 생각하면 될 것 같습니다.

08~11 라인까지 자신이 넘기고 싶은 쿼리를 정의하여 07 라인을 통해 V_OUT 에 담습니다.

토드에서 아래와 같은 쿼리를 실행하여 위의 프로시저가 정상적으로 생성이 되었는지 확인합니다.
exec SP_OUT_CURSOR_EXAMPLE( 'param1', :C );


실행을 하게되면 변수에 대해 어떤 타입인지 선택을 하는 창이 뜹니다. Type을 Cursor로 선택하고 "OK"를 누릅니다.


아래와 같이 결과가 나오면 정상적으로 된 것입니다.



함수의 결과 값으로 SYS_REFCURSOR 를 넘길 수도 있다고 하니 알아두면 좋은 것 같습니다.




Posted by 자수씨
, |

정리용으로 작성합니다.
설치환경: Windows 7


1. 오라클 인스턴트 클라이언트 다운로드
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
위 사이트에서 Instant Client Downloads 를 다운로드 받습니다.
제가 받을 때 최신버전은 Version 11.2.0.1.0 입니다.

Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
 instantclient-basic-win32-11.2.0.1.0.zip (51,458,190 bytes)

다운받은 파일을 적당한 위치에 압축을 해제합니다.
(이번 포스팅에서는 C:\instantclient 에 압축 해제)


2. 환경변수 설정
환경 변수의 시스템 변수에 아래를 추가합니다.
TNS_ADMIN: C:\instantclient
Path: [기존 Path];%TNS_ADMIN% 
LNS_LANG: KOREAN_KOREA.KO16MSWIN949


3. tnsnames.ora 파일 설정
오라클 접속 정보를 가지고 있는 tnsnames.ora 파일을 설정합니다.
(%TNS_ADMIN% 경로에 새로 생성하여 넣어줍니다.)
TEST1 =
  (DESCRIPTION_LIST=
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.8)(PORT = 1521))
      )                                                               
    (CONNECT_DATA =
      (SID = TESTDB1)
    )
  )
)
TEST2 =
  (DESCRIPTION_LIST=
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.9)(PORT = 1521))
      )                                                               
    (CONNECT_DATA =
      (SID = TESTDB2)
    )
  )
)

위와 같이 설정을 하면 TEST1, TEST2 가 추가되며 IP와 SID는 보이는 대로 설정을 할 수 있습니다.


4. 토드 실행
TNS 탭에서 Database를 선택하고 user,password 를 설정하고 접속 버튼을 통해 데이터베이스에 접속을 할 수 있습니다.
Installed Clients 에 아까 처음에 내려받은 Instant Client - 11.2.0.1.0 이 보이네요~




이상 끝~



Posted by 자수씨
, |

현재 작업이 진행 중인 프로젝트 중에 DB링크로 레거시와 연동하는 부분이 있었습니다.

어찌저찌 잘 연결해서 사용을 하고 있었는데, 토요일 오후에 확인해보니 우리쪽 시스템이 동작을 하지 않았습니다.

그래서 로그를 확인하니...

Cause: java.sql.SQLException: ORA-12170: TNS: 접속 시간 초과가 발생함

레거시 연동하는 로직에서 위의 문제가 발생하여 우리쪽 DB의 작업들이 모두 동작이 되지 않았습니다.

시스템 - [우리DB ---- 레거시DB(link)]

이런식으로 묶여 있어 레거시DB가 죽어 있으면 우리쪽DB도 바보가 된다는 걸...
깨닿게 해준 레거시 시스템께 감사를 드려야겠네요.


시스템에서 레거시DB의 직접 커넥션을 열어 작업을 해야 할 것 같습니다.


Posted by 자수씨
, |

맨날 jdbc 로 DB 에 연결할 때는 아래와 같이 간단한 url 로 접속을 하였습니다.
jdbc:oracle:thin:@[HOST]:1521:[SID]


최근 프로젝트를 하면서 늦게까지 남아있었다는 죄로... DB 쪽 설정을 만지게 되었는데, 이번에는 RAC 로 구성되어 있는 것을 보았습니다. RAC 구성을 통해 로드 밸런싱과 fail over 설정도 가능하였습니다.
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = [HOST1])(PORT = 1521))(ADDRESS =(PROTOCOL = TCP)(HOST = [HOST2])(PORT = 1521))(LOAD_BALANCE = OFF)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = [Service Name])))


RAC 구성과는 다르게 프로젝트 하는 환경에서는 스캔 아이피를 이용하였습니다.
하드웨어적으로 로드 밸런싱과 fail over를 지원하는 것으로 생각되네요...
jdbc:oracle:thin:@[span ip host]:1521/[service name]


스캔 아이피로 붙을 경우 요즘 나온 클라이언트들로는 어떻게 붙는지 몰라서... 그냥 RAC 구성으로만 테스트 하고 있습니다.

오라클을 잘 모르는 분야이므로 이정도만 정리~







Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백