블로그 이미지
올해목표 // 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
 
02-29 00:00
 

달력

« » 2024.2
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
 

최근에 올라온 글

최근에 달린 댓글


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

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

# 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 자수씨
, |


긴 연휴가 끝난 오늘... 외국 고객사에서 그룹웨어 기능이 이상하다고 연락이 왔습니다.

오류를 찾아보다가 로그를 확인한 결과 아래와 같은 문제가 발생하였었습니다.

트랜잭션(프로세스 ID:XX)이 잠금 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다. 트랜잭션을 다시 실행하십시오.


복구 명령도 실행해보고 별짓을 다하다가... 가장 무식한 방법을 사용하였습니다.

"데이터베이스 복제"


결과는 대성공입니다!!! 역시 무식하게 가는게 좋을 수도 있네요...
(다행히 복제가 성공할 정도로는 깨지지 않아서...)

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 자수씨
, |





위와 같이 Department 테이블에 상위 부서에 대한 정보를 FK 로 갖는 경우가 있을 것 입니다.

이러한 경우 자신의 부서를 포함하여 상위부서를 찾으려면 단순한 쿼리문으로는 불가능 할 것입니다.


오라클에서는 아래와 같이 재귀호출을 사용할 것 입니다.

하지만 MSSQL 에서는 CTE (Common Table Expressions) 을 이용하여 쿼리문을 작성할 수 있습니다.



WITH 절을 이용하여 CTE 를 선언한 이후에 사용하는 방식으로 재귀 호출을 위해 나온 것은 아니지만 재귀 호출이 필요할 때 사용할 수 있는 기능 중에 하나입니다.


새벽에 정리하다보니 좀 내용이 이상한 것 같습니다... 나중에 정신이 돌아온다면... 보완을 해야겠습니다.

Posted by 자수씨
, |

CONVERT( target_type, expression, date_style smallint ) RETURNS <data type>
사용법 date_style 결과 값
CONVERT(NVARCHAR(20), GETDATE(), 100) 100 Sep  2 2010  1:35PM
CONVERT(NVARCHAR(20), GETDATE(), 101) 101 09/02/2010
CONVERT(NVARCHAR(20), GETDATE(), 102) 102 2010.09.02
CONVERT(NVARCHAR(20), GETDATE(), 103) 103 02/09/2010
CONVERT(NVARCHAR(20), GETDATE(), 104) 104 02.09.2010
CONVERT(NVARCHAR(20), GETDATE(), 105) 105 02-09-2010
CONVERT(NVARCHAR(20), GETDATE(), 106) 106 02-Sep-10
CONVERT(NVARCHAR(20), GETDATE(), 107) 107 02-Sep-10
CONVERT(NVARCHAR(20), GETDATE(), 108) 108 13:35:31
CONVERT(NVARCHAR(20), GETDATE(), 109) 109 Sep  2 2010  1:35:31
CONVERT(NVARCHAR(20), GETDATE(), 110) 110 09-02-2010
CONVERT(NVARCHAR(20), GETDATE(), 111) 111 2010-09-02
CONVERT(NVARCHAR(20), GETDATE(), 112) 112 20100902
CONVERT(NVARCHAR(20), GETDATE(), 113) 113 2010-09-02 13:35
CONVERT(NVARCHAR(20), GETDATE(), 114) 114 13:35:31:510
CONVERT(NVARCHAR(20), GETDATE(), 120) 120 2010-09-02 14:02
CONVERT(NVARCHAR(20), GETDATE(), 121) 121 2010-09-02 14:02
CONVERT(NVARCHAR(20), GETDATE(), 126) 126 2010-09-02T14:02:50.

date_type 에 100을 빼면 세기를 포함안하고 표시를 한다고 합니다. 2010-09-02 --> 10-09-02



Posted by 자수씨
, |

com.microsoft.sqlserver.jdbc.SQLServerException: 문자열이나 이진 데이터는 잘립니다.


MSSQL 의 오류가 한글로 나오는 것으 좋은데, 저런식으로 퉁쳐서 나오는 오류 때문에 해결하기가 어렵습니다.

위의 오류가 발생한 부분은 update 쿼리로 아래와 같이 구성되어 있었습니다.
(MSSQL + iBatis 를 사용하였습니다.)
UPDATE TEST_TABLE
   SET TEST_COL_1 = ISNULL(#test_col_1#, 0)
 WHERE IDX = #idx#


#test_col_1# 의 값이 null 이 아니면 관계가 없는데, null 값으로 들어오면 위의 오류가 발생하는 것이였습니다.

지난 번에 찾았던 꼼수를 이용하여 일단 CAST 를 해보았습니다.
UPDATE TEST_TABLE
   SET TEST_COL_1 = ISNULL( CAST( #test_col_1# AS NVARCHAR ), 0)
 WHERE IDX = #idx#



=ㅁ=... 문제 없이 동작을 합니다...

쩝... MSSQL 에서 일단 문제가 생기면 CAST 나 CONVERT 신공이 필요한가 봅니다...

Posted by 자수씨
, |

테이블 별 row 개수 확인



테이블 별 사용량 확인




데이터베이스 내의 모든 테이블 drop 하기



데이터베이스 내의 모든 테이블 row delete 하기 (위의 것을 약간 응용해서...)





참고자료: http://www.holisticsystems.co.uk/blog/?p=3

Posted by 자수씨
, |

SQL Server 2008 로 서비스를 띄웠는데도 netstat -na 에서 1433 포트와 관련된 리스너가 없을 때는 다음과 같이 조치를 합니다.


SQL Server Configuration Manager 에서 SQL Server Network Configuration 을 보면 Protocol 에 대한 사용여부가 있습니다.


TCP/IP 가 Disabled 가 되어 있어서 1433 포트가 리스닝 상태가 되지 않았던 것이였습니다. Enabled 상태로 변경한 후 SQL Server 서비스를 재시작합니다.

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백