728x90

1. choice 명령 사용


e.g. CHOICE /T 10 /D y


2. Resource kit 설치하여 sleep 명령어 사용

728x90
728x90

Mysql에서 한글 정렬이 문제가 되는 것은 charset 때문이다.
이럴땐 my.cnf파일에 한줄을 추가 하는것으로 한글 정렬 문제를 해결 할 수 있다.

default-character-set=euc_kr

그리고 /etc/rc.d/init.d/mysqld restart 하여 Mysql데몬을 재시작하면 된다.

만약 Mysql 데몬을 재시작할 상황이 안된다면
쿼리문을 수정하는 방법이 있다.

binary(FIELD_NAME)


member 테이블에 있는 name이라는 이름 필드에 다음과 같은 값들이 있을때
'김철수','이영희','한국인'

SELECT name FROM member ORDER BY binary(name) DESC

위 쿼리를 실행하면 한국인,이영희,김철수 순으로 정렬이 된다.

728x90
728x90

2단계 커밋 (2-phase commit)이란?

2단계 커밋은 커밋(Commit)과 취소(Abort)를 수행하는데 두 단계를 거친다는 말이다.
첫 번째 phase는 준비단계로서, 데이터베이스는 커밋을 위한 모든 준비를 수행한다.
분산 트랜잭션에 참여한 모든 데이터베이스가 준비단계를 성공한 후에야 두 번째 phase인 커밋단계가 수행되는 것이다.
만약 분산 트랜잭션에 참여한 어느 한 데이터베이스라도 prepare를 실패한다면 두 번째 phase는 커밋이 아닌 취소를 수행한다.

여기서 분산 트랜잭션이란 네트워크에 분산되어 있는 자원들에 트랜잭션을 수행하는 것을 말한다.
예를 들어, 어떤 어플리케이션이 MS-SQL과 오라클에 데이터를 트랜잭션 하에서 수행해야 한다면 분산 트랜잭션이 필요하다. 대개의 경우 분산 트랜잭션은 턱시도, 티맥스, 엔트라와 같은 TP 모니터나 EJB, COM+ 등과 같은 컴포넌트 기반 미들웨어가 그 기능들을 제공한다.
분산 트랜잭션의 반대되는 개념으로서 로컬 트랜잭션은 단일 자원(데이터베이스)에 대한 커밋과 롤백을 수행하며 1-phase 커밋으로 트랜잭션을 수행한다.

 

많은 트랜잭션은 하나의 RM (보통 데이터베이스)만을 포함하고 있다. 이 경우 RM은 보통 트랜잭션을 확약하고 롤백하기 위한 대부분의 작업을 수행한다. (거의 모든 트랜잭션성 RM이 자체적인 트랜잭션 관리자를 내장하고 있는데, 이는 지역 트랜잭션, 즉 그 RM만이 참여한 트랜잭션을 처리할 수 있다.)

그러나 트랜잭션이 두 개, 혹은 그 이상의 RM (아마도 두 개의 개별적인 데이터베이스, 혹은 데이터베이스와 JMS 큐, 또는 두 개의 개별적인 JMS provider)을 포함하고 있다면 "모두 처리하든지 아니면 아무것도 처리하지 않는"다는 의미론이 그 RM 내에서 뿐 아니라 트랜잭션 내의 모든 RM에게 적용되도록 하고 싶을 것이다. 이런 경우 TPM은 2단계 확약을 전개할 것이다.

2단계 확약에서 TPM은 각 RM에게 "준비" 메시지를 보내어 그 RM이 준비가 되었고 트랜잭션을 수행할 수 있는지 물어본다. 모든 RM으로부터 긍정적인 답을 받으면 자신의 트랜잭션 로그에 트랜잭션이 확약되었다고 기록한 후 모든 RM에게 그 트랜잭션을 확약하라고 지시한다. 만일 어느 한 RM이라도 실패한다면, 재구동시 TMP에게 장애가 일어나는 시점에 미완으로 남아있던 트랜잭션의 상태에 대하여 질의하고, 그들을 확약하거나 혹은 롤백한다.

2단계 확약을 사회 생활에 비유해 보면 결혼식을 들 수 있다. 목사나 판사가 먼저 신랑, 신부에게 각각 "당신은 그/그녀를 당신의 남편/아내로 받아들이겠습니까?"하고 물어본다. 신랑, 신부 모두 "네"라고 대답하면 둘은 모두 결혼했음이 선언된다.; 그렇지 않다면 둘 모두 결혼하지 않은 상태로 남을 것이다. 누가 먼저 "네"라고 대답했는지에 상관없이, 한 사람은 결혼했는데 다른 쪽은 결혼하지 않은 상태로 남는 경우는 없다.



 


다음은 텀즈에 있는 2PC (2-phase commit)에 대한 정의 이다.

분산 컴퓨팅 환경에서 사용자의 트랜잭션을 처리하는데 있어, 트랜잭션 관리 프로그램은 트랜잭션에 관련된 모든 데이터베이스가 성공적으로 수정되었음을 확실하게 하기 위하여 2단계 커미트라고 불리는 프로토콜을 사용할 수 있다. 만일 데이터베이스의 수정이 성공적으로 이루어지지 않은 경우에, 그 트랜잭션은 롤백 상태가 되어 트랜잭션이 개시되기 이전의 상태로 되돌아간다. 만약 그 트랜잭션이 관련된 컴퓨터들에 의해 성공적으로 종료되었다면, 모든 데이터베이스의 수정을 위한 커미트가 이루어지며, 새로운 트랜잭션들이 자유로이 접근할 수 있도록 자원에 걸려 있던 로크들이 풀어진다.

아래에 이 프로토콜에 관한 간략한 설명이 있다.

  1. 한 컴퓨터 내에 있는 트랜잭션 관리 프로그램은 대체로 최초 요구에 연계되어, 관련된 모든 컴퓨터들을 대신하여 트랜잭션을 조정한다. 트랜잭션 관리 프로그램은 "트랜잭션 시작"이라는 내용을 로그 파일에 기재하고, 관련된 다른 컴퓨터들에게 트랜잭션 요청을 보낸다.

  2. 참여하고 있는 각 컴퓨터들은 자신의 로그에 트랜잭션을 기재하고, 다른 사용자가 쓸 수 없도록 데이터베이스 자원에 로크를 걸어 데이터베이스 변경을 수행하고, 트랜잭션 관리 프로그램에게 "커미트 할 준비가 되었다"는 메시지를 보낸다.

  3. 관리 프로그램은 관련된 모든 컴퓨터들로부터 "커미트 할 준비가 되었다"는 메시지를 받은 뒤에, 트랜잭션이 종료되었다는 사실을 로그 파일에 기재하고 나서, 모든 컴퓨터들에게 트랜잭션을 커미트 하라고 통보한다.

  4. 참여하고 있는 각 컴퓨터는 이 사실을 트랜잭션 로그 내에 기록한 다음, 자원에 걸려있던 로크를 풀어준다.

  5. 만약 모든 컴퓨터들이 트랜잭션을 커미트 하기 전의 어느 순간에 하나 이상의 컴퓨터에서 문제가 발생하면, 관리 프로그램은 트랜잭션이 시작되기 전의 상태로 되돌리도록 롤백 메시지를 전파한다.




응용 프로그래머에게 있어서의 2단계 커미트는 BEGIN, COMMIT, 그리고 필요한 경우 ROLLBACK 등의 프로그램 요청을 함으로써 구현된다. 

728x90

'용어' 카테고리의 다른 글

JEUS의 DB 연결  (0) 2010.07.28
ISV (independent software vendor)  (0) 2010.06.03
ERP (enterprise resource planning)  (0) 2010.01.21
클래스패스와 환경 변수, 그것이 알고 싶다.   (0) 2010.01.05
DBMS의 종류  (0) 2010.01.04
728x90

db2diag.log는 db에 문제가 생겼을 때 참조할 수 있는
가장 확실하고 가장 먼저 살펴볼 제 1의 레퍼런스이다.

db2diag.log는
active log, archive log, loadcopy, dump, tablespaces 와 함께
용량관리를 해주어야 하는 대상이 되는데

db2diag 커맨드는 db2diag.log를 분석하는 포매팅 툴로서,
제공하는 기능들 중에서 -A 옵션으로, db2diag.log를 분할하여 archive 할 수 있다.

in root's crontab

59 23 * * * su - ${instance user} -c "db2diag -A ${diagpath}/db2diag.log" > /dev/null 2>&1

매일 오후 23시 59분에 db2diag.log를 db2diag.log_YYYY-MM-DD-HH.MM.SS 형태로
하루에 하나씩 db2diag.log를 새로 생성하도록 해두면
로그를 검색하기도 쉽고 오래된 로그를 백업해두거나 삭제하는 정책을 만들기도 좋다.

728x90

'Db2 > Db2 reference' 카테고리의 다른 글

db2 접속환경설정  (0) 2011.03.13
db2 접속 및 종료  (0) 2011.03.13
DB2 데이터 암호화 함수 사용법  (0) 2011.03.08
Monitoring Script  (0) 2010.07.27
DB2 9의 메모리 모니터링과 튜닝  (0) 2010.07.13
728x90
ERP (enterprise resource planning) ; 전사적 자원 관리

ERP[이알피]란 제조업을 포함한 다양한 비즈니스 분야에서 생산, 구매, 재고, 주문, 공급자와의 거래, 고객서비스 제공 등, 주요 프로세스 관리를 돕는 여러 모듈로 구성된 통합 애플리케이션 소프트웨어 패키지를 뜻하는 산업 용어이며 재무 및 인적자원을 위한 모듈 또한 포함되어 있다.

일반적으로 ERP시스템은 관계형 데이터베이스를 기반으로 통합된 시스템의 형태이며, ERP시스템 구축은 비즈니스 프로세스 분석, 사용자 재훈련, 새로운 작업절차 등을 포함한다.

최근, ERP 아웃소싱을 제공하는 대표적인 ERP 패키지로는 SAP R/3, 오라클 Application, Peoplesoft, J. D. Edwards, BPCS 등이 있으며, 국내 패키지로는 삼성SDS의 Uni ERP, 영림원의 K시스템, 한국기업전산원의 탑 ERP 등이 있다.



ERP의 특징

1.

다국적, 다통화(多通貨), 다언어 지원
대부분의 ERP패키지는 다국적, 다통화, 다언어를 지원하고 있다. 여러 나라의 상거래 방식, 생산 방식을 패키지에서 지원하며 기업은 필요한 기능을 선택하여 사용할 수 있다.

2.

통합 시스템
ERP는 기업 활동 전 부분에 걸쳐있는 자원을 하나의 체계로 관리한다. 정보의 일관성, 실시간 처리로 인한 신속성 등은 기업의 경쟁력 제고에 중요한 기반을 제공한다.

3.

Best Practice에 의한 BPR 지원
ERP는 기업의 업무를 위한 기능을 "Best Practice"에 기반하여 제공한다. Best Practice는 세계의 일류 기업이 사용하는 업무 처리 프로세스를 공통화시킨 프로세스를 말하는데, 이를 자사에 도입함으로써 비즈니스 프로세스 리엔지니어링(BPR)을 실현하는 효과를 볼 수 있다.

4.

통합 데이터베이스
ERP의 업무 프로세스는 중앙의 데이터베이스를 매개로 기업활동 전반에 걸쳐 통합되어 있다. 통합 데이터베이스를 통해 하나의 정보는 한번만 입력되며 입력된 정보는 가공하지 않은 데이터로 어느 업무에서도 참조될 수 있다.

5.

매개변수 설정에 의한 단기간의 도입과 개발
ERP패키지는 매개변수 설정을 통해 필요한 기능을 구현하는 방식이다. 매개변수 설정을 이용하여 단기간에 시스템을 도입할 수 있다.

6.

개방형 시스템
대다수의 ERP시스템은 특정 하드웨어에 의존하지 않는 개방형 시스템이다. 다양한 하드웨어를 조합하여 클라이언트/서버 구조의 시스템을 구축할 수 있고 확장성도 뛰어나다.

728x90

'용어' 카테고리의 다른 글

ISV (independent software vendor)  (0) 2010.06.03
2단계 커밋  (0) 2010.03.02
클래스패스와 환경 변수, 그것이 알고 싶다.   (0) 2010.01.05
DBMS의 종류  (0) 2010.01.04
OLE DB에 대한 이야기  (0) 2009.12.17
728x90

# env|grep LANG

LANG=ko_KR

# locale -a

C

POSIX

ko_KR

ko_KR.IBM-eucKR

en_US

en_US.8859-15

en_US.ISO8859-1

# export LANG=ko_KR.IBM-eucKR

# env|grep LANG

LANG=ko_KR.IBM-eucKR


참고


WindowsXP : MS949 -> OK
RHEL : EUC-KR
AIX: IBM-eucKR
KSC5601

728x90

'*nix' 카테고리의 다른 글

sed 사용법  (0) 2010.06.01
vi 특정문자열 삭제  (0) 2010.06.01
로그파일 가공하기  (0) 2010.05.17
awk 사용법  (0) 2010.05.17
nohup  (0) 2009.12.01
728x90

SQL*LOADER는 일반 text file의 data를 ORACLE table로 load하는 유틸리티로서 IBM의 DB2 load utility와 흡사하다. SQL*LOADER의 처리 mode에는 크게 direct load와 conventional load가 있다. 여기에서는 각 mode 의 차이점과, SQL*LOADER 를 실행중 index 가 direct load state로 빠지는 현상에 대해 살펴본다.  
1.CONVENTIONAL PATH LOAD  

default로 사용되는 option으로 일정한 크기의 버퍼을 memory에 할당하고 이곳에 text data를 저장 하여 버퍼가 모두 차면 SQL command인 insert를 이용하여일반 적인 insert 작업을 수행하게 된다. 이러한 방법은 ORACLE에서 제공하는 일반적인 다른 tool 들에서도 사용하는 insert 방법이다. commit은 버퍼에 저장된 row들이 전부 insert되었을때 수행되며 버퍼의 size는 bindsize라는 option으로 지정되며 만일 한 row의 길이가 너무 길어 지정된 bindsize내에 하나의 row가 수용되지 못할 정도로 크다면 SQL*LOADER는 error를 발생시킨다.  

예)bindsize=10k,rows=1,record length=15K일 경우 error발생.  

conventional mode는 direct mode에 비해 처리 과정에서 훨씬 여러 단계를 거치므로 performance는 떨어진다. 그러나 이 방법은direct mode가 안고 있는 몇 가지 제한 사항을 해결하는 장점이 있다.  

1)load하려는 table에 다른 process에서 access가 가능하다.  

즉 한쪽에서는 SQL*LOADER로 A table에 load하고 다른 쪽에서는 같은 A table에 SQL*PLUS로 update,insert가 가능하다.  

2)load시 SQL function을 사용 하려면 conventional을 사용해야 한다.  

예)load data  
infile 'test.dat'  
append  
into table dept  
(deptno position(01:02) integer external,  
dname position(03:10) char upper(:dname),  
loac position(11:15) char  
)  

3)load하려고 하는 table이 단일 table이 아닌 cluster인 경우로 cluster table은 direct path load를 사용 못함.  

4)SQL*NET을 통해 data를 load시 SQL*NET을 이용해 direct path load mode로 data를 load할 수는 없다.  

2.DIRECT PATH LOAD  

direct mode는 일반적으로 다량의 data를 table에 load시 performance를 위해 이용하는 방법이다. 이 경우에는 일반적으로 table에 index가 있으면 제거한 후 load를 하는 것이 더 좋은 performance를 얻을 수 있는데 그 이유는 direct mode에서insert시 index가 구성되는 mechanism을 살펴보면 쉽게 알 수 있다.  

1)direct path load에서의 index의 형성과정은  

memory buffer의 data를 datafile에 direct하게 저장 
load된 new data에 대해 temporary index를 생성 
old index와 temporary index를 merge하여 new index를 형성 
d)old index의 drop및 new index로 대치한다.  
2)이의 처리를 위해 direct path를 이용해 data load시 다음의 제한이 따른다.  

a)cluster에는 사용 할 수 없다.  

만일 해당 table에 active transaction이 있는 경우 error발생(commit 안된transaction 이 있는 상태에서 direct load시 ORA-54 error가 발생하는데 해당 table에 table lock을 걸다 실패하기 때문이다) 
c)SQL function을 control file에서 사용 할 수 없다.  
d)만일 index가 table에 있을 경우 direct load중에는 select를 할 수 없다.  

제약사항과 특별한 index 생성 process로 인해 direct mode에서는 실제로 data는 table에 load 되었으나 index에서 문제가 발생하여 해당index를 사용하지 못하는 상태가 발생할 수 있다. 즉 direct load중 index에 대한 space를 allocate할 수 없는 경우, sorted indexes option이 사용되었는데 data가 ordered되지 않은 경우, load도중 shutdown이 발생한 경우, index가 unique index인데 load되는 data중에 동일한 key값이 있는 경우에 해당index는 direct load state 상태가 된다. 이 상태에서는 이 테이블을 select시 index를 사용하지 못하거나, SQL*LOADER direct=y option으로 load시 ORA-1502 error 를 만나게 된다. 이 때는 해당 index를 drop후 recreate하면 쉽게 해결이 가능하다 

728x90
728x90

매우 많은 양의 데이타를 빠른 시간 내에 load하고자하는 경우 direct path load를
사용할 수 있다. 여기에서 이러한 direct path load의 자세한 개념 및 사용방법,
사용 시 고려해야 할 점 등을 설명한다.

1. conventional path load

일반적인 sql*loader를 이용한 방법은 존재하는 table에 datafile 내의 data를 
SQL의 INSERT command를 이용하여 insert시킨다. 이렇게 SQL command를 
이용하기 때문에 각각의 데이타를 위한 insert command가 생성되어 parsing되는 
과정이 필요하며, 먼저 bind array buffer (data block buffer) 내에 insert되는 
데이타를 입력시킨 후 이것을 disk에 write하게 된다.

conventional path load를 사용하여야 하는 경우는 다음과 같다.
--- load 중에 table을 index를 이용하여 access하여야 하는 경우
direct load중에는 index가 'direct load state'가 되어 사용이 불가능하다.
--- load 중에 index를 사용하지 않고 table을 update나 insert등을 수행해야 
하는 경우
direct load 중에는 table에 exclusive write(X) lock을 건다.
--- SQL*NET을 통해 load를 수행해야 하는 경우
--- clustered table에 load하여야 하는 경우
--- index가 걸려 있는 큰 table에 적은 수의 데이타를 load하고자 할 때
--- referential이나 check integrity가 정의되어 있는 큰 table에 
load하고자 할 때
--- data field에 SQL function을 사용하여 load하고자 할 때

2. direct path load의 수행 원리

Direct Path Loads는 다음과 같은 특징들로 인하여 매우 많은 양의 데이타를 
빠른 시간에 load하고자 할 때 이용하는 것이 바람직하다.

(1) SQL INSERT 문장을 generate하여 수행하지 않는다.
(2) memory 내의 bind array buffer를 이용하지 않고 database block의 
format과 같은 data 
block을 memory에 만들어 데이타를 넣은 후 그대로 disk에 write한다.
memory 내의 block buffer와 disk의 block은 그 format이 다르다.
(3) load 시작 시에 table에 lock을 걸고 load가 끝나면 release시킨다.
(4) table의 HWM (High Water Mark) 윗 부분의 block에 data를 load한다. 
HWM는 table에 data가 insert됨에 따라 계속 늘어나고 truncate 외에는 
줄어들게 하지 못한다. 
그러므로, 항상 완전히 빈 새로운 block을 할당받아 data를 입력시키게 된다.
(5) instance failure가 발생하여도 redo log file을 필요로 하지 않는다.
(6) UNDO information을 발생시키지 않는다. 
즉 rollback segment를 사용하지 않는다.
(7) OS에서 asynchronous I/O가 가능하다면, 복수개의 buffer에 의해서 동시에
data를 읽어서 buffer에 write하면서 buffer에서 disk로 write할 수 있다.
(8) parallel option을 이용하면 더욱 성능을 향상시킬 수 있다.

3. direct path load의 사용방법 및 options

direct path load를 사용하기 위한 view들은 다음 script에 포함어 있으며, 
미리 sys user로 수행되어야 한다. 단 이 script는 catalog.sql에 포함되어 있어,
db 구성 시에 이미 수행되어진다.

@$ORACLE_HOME/rdbms/admin/catldr.sql 

direct path load를 사용하기 위해서는 일반적인 sqlload 명령문에 DIRECT=TRUE를
포함시키기만 하면 된다. 다음과 같이 기술하면 된다.

sqlload username/password control=loadtest.ctl direct=true 

이 direct path load를 사용 시에 고려할 만한 추가적인 option 및 control file
내에 기술 가능한 clause들을 살펴본다.

(1) ROWS = n 
conventional path load에서 rows는 default가 64이며, rows에 지정된 갯수
만큼의 row가 load되면 commit이 발생한다. 이와 비슷하게 direct load 
path에서는 rows option을 이용하여 data save를 이루며, data save가 발생하면
data는 기존 table에 포함되어 입력된 data를 잃지 않게 된다. 
단 이 때 direct path load는 모든 data가 load된 다음에야 index가
구성되므로 data save가 발생하여도 index는 여전히 direct load state로 
사용하지 못하게 된다.
direct path load에서 이 rows의 default값은 unlimited이며, 지정된 값이
database block을 채우지 못하면 block을 완전히 채우는 값으로 올림하여, 
partial block이 생성되지 않도록 한다.

(2) PIECED clause
control file내에 column_spec datatype_spec PIECED 순으로 기술하는 
것으로서 direct path load에만 유효하다. LONG type과 같이 하나의 data가
maximum buffer size보다 큰 경우 하나의 data를 여러번에 나누어 load하는 
것이다. 이 option은 table의 맨 마지막 field 
하나에만 적용가능하며, index column인 경우에는 사용할 수 없다.
그리고 load도중 data에 문제가 있는 경우 현재 load되는 data의 잘린 부분만
bad file에 기록되게 된다. 왜냐하면 이전 조각은 이미 datafile에 기록되어 
buffer에는 남아있지 않기 때문이다.

(3) READBUFFERS = n (default is 4)
만약 매우 큰 data가 마지막 field가 아니거나 index의 한 부분인 경우 
PIECED option을 사용할 수 없다. 이러한 경우 buffer size를 증가시켜야 
하는데 이것은 readbuffers option을 이용하면 된다. default buffer갯수는 
4개이며, 만약 data load중 ORA-2374(No more slots for read buffer 
queue) message가 나타나면, buffer갯수가 부족한 것이므로 늘려주도록 한다. 
단 일반적으로는 이 option을 이용하여 값을 늘린다하더라도 system 
overhead만 증가하고 performance의 향상은 기대하기 어렵다.

4. direct path load에서의 index 처리

direct path load에서 인덱스를 생성하는 절차는 다음과 같다.

(1) data가 table에 load된다.
(2) load된 data의 key 부분이 temporary segment에 copy되어 sort된다.
(3) 기존에 존재하던 index와 (2)에 의해서 정렬된 key가 merge된다.
(4) (3)에 의해서 새로운 index가 만들어진다.
기존에 존재하던 index와 temporary segment, 그리고 새로 만들어지는 index가
merge가 완전히 끝날 때까지 모두 존재한다.
(5) old index와 temporary segment는 지워진다.

이와 같은 절차에 반해 conventional path load는 data가 insert될 때마다 한
row 씩 index에 첨가된다. 그러므로 temporary storage space는 필요하지 않지만
direct path load에 비해 index 생성 시간도 느리고, index tree의 balancing도
떨어지게 된다.

index생성 시 필요한 temporary space는 다음과 같은 공식에 의해 예측되어질 수
있다.

1.3 * key_storage
key_storage = (number_of_rows) * (10 + sum_of_column_sizes + 
number_of_columns)

여기에서 1.3은 평균적으로 sort 시에 추가적으로 필요한 space를 위한 값이며,
전체 data가 완전히 순서가 거꾸로 된 경우에는 2, 전체가 미리 정렬된 경우라면
1을 적용하면 된다.

--- SINGLEROW clause
이와 같이 direct path load에서 index 생성 시 space를 많이 차지하는 문제점
때문에 resource가 부족한 경우에는 SINGLEROW option을 사용할 수 있다.
이 option은 controlfile 내에 다음과 같은 형태로 기술하며, direct path
load에만 사용 가능하다.

into tables table_name [sorted indexes...] singlerow

이 option을 사용하면 전체 data가 load된 뒤에 index가 구성되는 것이 아니라
data가 load됨에 따라 data 각각이 바로 index에 추가된다.
이 option은 기존에 미리 index가 존재하는 경우 index를 생성하는 동안 
merge를 위해 space를 추가적으로 필요로 하는 것을 막고자 하는 것이므로 
INSERT 시에는 사용하지 않고, APPEND시에만 사용하도록 하고 있다. 
실제 새로 load할 data 보다 기존 table이 20배 이상 클 때 사용하도록 권하고
있다.

direct path load는 rollback information을 기록하지 않지만, 이 singlerow
option을 사용하면 insert되는 index에 대해 undo 정보를 rollback segment에
기록하게 된다. 
그러나, 중간에 instance failure가 발생하면 data는 data save까지는 보존
되지만 index는 여전히 direct load state로 사용할 수 없게 된다.

--- Direct Load State

만약 direct path load가 성공적으로 끝나지 않으면 index는 direct load 
state로 된다. 
이 index를 통해 조회하고자 하면 다음과 같은 오류가 발생한다.
ORA-01502 : index 'SCOTT.DEPT_PK' is in direct load state.

index가 direct load state로 되는 원인을 구체적으로 살펴보면 다음과 같다.
(1) index가 생성되는 과정에서 space가 부족한 경우
(2) SORTED INDEXES clause가 사용되었으나, 실제 data는 정렬되어 있지 않은
경우
이러한 경우 data는 모두 load가 되고, index만이 direct load state로 된다.
(3) index 생성 도중 instance failure가 발생한 경우
(4) unique index가 지정되어 있는 컬럼에 중복된 data가 load되는 경우

특정 index가 direct load state인지를 확인하는 방법은 다음과 같다.

select index_name, status
from user_indexes
where table_name = TABLE_NAME';

만약 index가 direct load state로 나타나면 그 index는 drop하고 재생성
하여야만 사용할 수 있다. 단, direct load 중에는 모든 index가 direct
load state로 되었다가 load가 성공적으로 끝나면 자동으로 valid로 변경된다.

--- Pre-sorting (SORTED INDEX)

direct load 시 index구성을 위해서 정렬하는 시간을 줄이기 위해 미리 index
column에 대해서 data를 정렬하여 load시킬 수 있다. 이 때 control file 내에
SORTED INDEXES option을 다음과 같이 정의한다. 
이 option은 direct path load 시에만 유효하며, 복수 개의 index에 대해서
지정가능하다.

into table table_name SORTED INDEXES (index_names_with_blank)

만약, 기존의 index가 이미 존재한다면, 새로운 key를 일시적으로 저장할 만큼
의 temporary storage가 필요하며, 기존 index가 없는 경우였다면, 이러한
temporary space도 필요하지 않다.

이와 같이 direct path load 시에 index 구성 시에는 기존 데이타가 있는 table에
load하는 경우 space도 추가적으로 들고, load가 완전히 성공적으로 끝나지 않으면
index를 재생성하여야 하므로, 일반적으로 direct path load 전에 미리 table의
index를 제거한 후 load가 모두 끝난 후 재생성하도록 한다.

5. Recovery

direct load는 기존 segment중간에 data를 insert하는 것이 아니라 완전히 
새로운 block을 할당받아 정확히 write가 끝난 다음 해당 segment에 포함되기 
때문에 instance failure시에는 redo log정보를 필요로 하지 않는다. 그러나 
default로 direct load는 redo log에 입력되는 data를 기록하는데 이것은 media
recovery를 위한 것이다. 그러므로 archive log mode가 아니면 direct load에 
생성된 redo log 정보는 불필요하게 되므로 NOARCHIVELOG mode시에는 항상 
control file내에 UNRECOVERABLE이라는 option을 사용하여 redo log에 redo entry를 기록하지 않도록 한다. 
data가 redo log 정보 없이 instance failure시에 data save까지는 보호되는데 
반해 index는 무조건 direct load state가 되어 재생성하여야 한다. 그리고 data save이후의 load하고자 하는 table에 할당되었던 extent는 load된 data가 
user에게 보여지지는 않지만 extent가 free space로 release되지는 않는다.

6. Integrity Constraints & Triggers

direct path load중 not null, unique, primary key constraint는 enable
상태로 존재한다. not null은 insert시에 check되고 unique는 load후 index를 
구성하는 시점에 check된다.
그러나 check constraint와 referential constraint는 load가 시작되면서 
disable상태로 된다. 전체 데이타가 load되고 난 후 이렇게 disable된 
constraints를 enable시키려면 control file내에 REENABLE이라는 option을 
지정하여야 한다. 이 reenable option은 각 constraint마다 지정할 수는 없으며 
control file에 한번 지정하면 전체 integrity/check constraint에 영향을 
미치게 된다. 만약 reenable되는 과정에서 constraint를 위배하는 data가 
발견되면 해당 constraint는 enable되지 못하고 disabled status로 남게 되며, 
이렇게 위배된 data를 확인하기 위해서는 reenable clause에 exceptions option을 다음과 같이 추가하면 된다.

reenable exceptions table_name 

이 때 table_name은 $ORACLE_HOME/rdbms/admin/utlexcpt.sql을 다른 
directory로copy하여 table이름을 exceptions가 아닌 다른 이름으로 만들어 수행시키면 된다.
insert trigger도 integrity/check constraint와 같이 direct load가 시작하는
시점에 disable되며, load가 끝나면 자동으로 enable된다. 단 enable되고 나서도
load에 의해 입력된 data에 대해 trigger가 fire되지는 않는다.


http://kr.forums.oracle.com/forums/thread.jspa?threadID=470778&tstart=315

728x90
728x90


최근 Windows 7 나오면서 다들 관심이 많아 지셨는데 뜸금없이 2008 R2 내용입니다. ^^;

아주 간단한 Tip이라 도움이 되실지 모르겠지만, 제가 도움을 많이 받은 TPHOLIC이라 작성해 봅니다.

 

1. Windows Server 2008 R2 평가판 소프트웨어 다운로드

http://msdn.microsoft.com/ko-kr/evalcenter/ee175713.aspx

 .180일 평가판 입니다. Live ID를 필요로 하고 ISO 형태로 받을 수 있습니다. DVD로 구워서 설치하면 됩니다.
 .링크 잘 따라가시면 Live ID 로그인 하고 받을 수 있습니다.
 .기본적으로 영문판이고 R2 버전부터 x64 로만 나온다고 합니다. x86은 없습니다.


2. Windows Server 2008 R2 환경에서 다국어 사용자 인터페이스 사용하기

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=03831393-eef7-48a5-a69f-0ce72b883df2

 .영문판이기 때문에 혹시 한글이 필요하시다면 MUI 받으시면 한글로 사용할 수 있습니다.
 .제가 보기에는 한글버전과 차이가 없다고 생각 될 정도입니다.
 .실행파일을 클릭하자 마자 설치됩니다. 그냥 기달리시면 설치되고요..
 .설치 완료후 한글 활성화 방법은 제가 영어가 짧아서 한글 메뉴로 말씀드립니다.
   제어판 -> 시계, 언어 및 국가별 옵션 -> 표시언어 변경 에서 한국어로 바꾸시면 됩니다.
   (로그오프 되고 다시 로그인 하시면 한글이 보입니다.)


3. 서버관리자 셋팅

 .제가 Windows Server 2000 까지 써보고 서버를 사용해 본적이 없습니다.
  처음에는 어색했는데 써보니 많이 편하네요..
 .서버관리자가 많이 바뀌었습니다. 셋팅시 제가 진행하는 부분을 적어봅니다.

 가. IE ESC (보안강화구성) 변경
   - 기본 IE 셋팅이 보안이 엄청 높아서 할 수 있는 부분이 거의 없습니다. ESC를 해제 하면됩니다.
   - 서버관리자 구동하시고 좌단의 "서버관리자(서버이름)"을 클릭하시면 초기 페이지가 나오는데 "보안정보" 항목에서
     IE ESC 구성을 선택하시고 사용 안함으로 하시면 일반 OS의 IE 사용처럼 바뀝니다. 
 나. 기능 - 무선 LAN 서비스 활성화
   - 2008 R2는 필요한 서비스를 사용자가 활성화 시켜야합니다. 무선랜을 사용하신다면 
     기능 -> 기능추가 -> 무선 LAN 서비스를 설치하셔야합니다.
     드라이버 설정과는 별개로 이부분을 추가하셔야 무선랜을 사용할 수 있습니다.
 다. .NET Framework 3.5.1 활성화
   - 초기에는 .NET Framework이 활성화 되어 있지 않습니다. .NET Framework을 필요로 하는 드라이버가 있습니다.
     예를 들어서 ATI 비디오 카드를 쓰시는 분은 .NET Framework가 실행되어 있지 않으면 드라이버가 제대로 올라오지
     않습니다.
   - 기능 -> 기능추가 -> .NET Framework 3.5.1 기능 설치
   - 필요한 소프트웨어가 .NET 기반이라면 설치후 가장 먼저 추가해야 합니다.
 

3. Aero Glass 사용방법

 .2008 R2는 기본으로 Aero Glass를 구동하지 않습니다. 설치하면 보기는 많이 좋아지네요.. ^^;
 .당연한 말이지만, 비디오 드라이버가 제대로 설치된 후에 아래 작업 하셔야 합니다. 
 
 가. 기능추가 (데스크톱 경험, Quality Audio Video Experience 설치)
   - 서버관리자의 기능으로 가셔서 데스크톱 경험, Quality Audio Video Experience 을 설치합니다.
   - 위에서 기능 부분 설치해보시면 아시겠지만, 필요한 다른 기능이나 역할이 있으면 알아서 추가합니다.
 나. 서비스 중 Themes 구동 
   - 서비스는 여러 방법으로 갈 수 있는데 서버관리자 -> 구성 -> 서비스에서 하셔도 됩니다.
   - Themes 서비스는 사용안함으로 되어 있는데 자동으로 실행하도록 바꿔주시면 됩니다.
 다. Aero Glass Skin 추가/변경
   - 바탕화면에서 오른쪽 마우스를 클릭하시면 하단에 "개인설정" 메뉴가 추가됩니다.
   - 여기서 온라인 테마추가 하시거나 기본 제공 Aero 테마를 선택하시면 됩니다.


4. TP 관련 드라이버
 
 .제가 설치해본 TP 기종은 X61s, T400 입니다. 
 .제가 모두 다 해본건 아니지만, 대부분 VISTA 드라이버로 설치가 됩니다.
 .TPHOLIC 사이트의 유저강좌에서 windows 7 드라이버를 찾아보시면 설치가 됩니다. 
  유저강좌의 파미님 올려주신글이 참고가 많이 되었습니다. 여기서 감사드립니다.

 .최근 나온 os라 그런지 대부분 장치는 기본적으로 설치가 됩니다.

 .제가 알고 있는 문제는 블루투스가 2008 R2에서 기본적으로 막았다고 합니다. 이부분 설치하는건 결국 못했습니다.


여기까지가 간단하게 Widnows Server 2008 R2 기본적인 셋팅입니다.
제가 Windows 7을 써보지 못했는데 이유가.. ^^; 마이크로소프트 Windows 7 평가판중에 한국어 버전은 64버전을 제공한다고 하는데
다운로드가 되지 않았습니다. 그래서 비교는 못해봤습니다.

R2 설치 하면서 64 버전이라서 안되는것이 많을 줄 알았는데 제가 쓰는 프로그램에서는 문제되는 부분이 없습니다. 물론..
몇개 쓰지 않습니다.

 

도움이 되었으면 좋겠습니다.



출처 : http://tpholic.com/xe/?mid=ibmreport&page=5&document_srl=2731433

728x90
728x90

Oracle Client / Server Interoperability Support

Introduction

This note gives a summary of the support for interoperability between Oracle client and server versions. This includes support for connections over database links between Oracle versions. Note that this relates to support for investigation of defects / ability to obtain bug fixes.

Note that this is a general guide for interoperability only - certain products or utilities may impose additional restrictions on supported combinations specific to the product / utility. eg: Precompilers, Export / Import utilities etc..

For a summary of the support status of each Oracle release see Note 161818.1

General Policy

Oracles general policy is to test and support each new Oracle release for compatibility with older releases thus:

Current Interoperability Support Situation

The matrix below summarizes client and server combinations that are supported.

New interoperability problems will only be investigated if BOTH releases involved are covered by a valid support contract at the time that the issue is reported .
eg:

A 9.2.0 client to a 10.2.0 server issue requires the customer to have a valid Extended Support contract for the 9.2.0 client in order for Oracle to investigate it.

Server Version
Client Version11.1.010.2.010.1.09.2.09.0.18.1.78.1.68.1.58.0.68.0.57.3.4
11.1.0YesYes #6Yes #6ES #5NoNoNo #3No #3No #3No #3No #3
10.2.0Yes #6YesYesES #5NoWasNo #3No #3No #3No #3No #3
10.1.0(#4)Yes #6YesYesESWasWas #2No #3No #3No #3No #3No #3
9.2.0ES #5ES #5ESESWasWasNoNoWasNoNo #1
9.0.1NoNoWasWasWasWasWasNoWasNoWas
8.1.7NoWasWasWasWasWasWasWasWasWasWas
8.1.6NoNoNoNoWasWasWasWasWasWasWas
8.1.5NoNoNoNoNoWasWasWasWasWasWas
8.0.6NoNoNoWasWasWasWasWasWasWasWas
8.0.5NoNoNoNoNoWasWasWasWasWasWas
7.3.4NoNoNoWasWasWasWasWasWasWasWas

Key:
YesSupported
ESSupported but fixes only possible for customers with Extended Support .
WasWas a supported combination but one of the releases is no longer covered by any of Premier Support , Primary Error Correct support , Extended Support nor Extended Maintenance Support so fixes are no longer possible.
NoHas never been Supported
Specific Notes:
  • #1 - See Note 207319.1
  • #2 - An ORA-3134 error is incorrectly reported if a 10g client tries to connect to an 8.1.7.3 or lower server. See Note 3437884.8 .
  • #3 - An ORA-3134 error is correctly reported when attempting to connect to this version.
  • #4 - There are problems connecting from a 10g client to 8i/9i where one is EBCDIC based. See Note 3564573.8
  • #5 - For connections between 10.2 (or higher) and 9.2 the 9.2 end MUST be at 9.2.0.4 or higher. Connections between 10.2 (or higher) and 9.2.0.1, 9.2.0.2 or 9.2.0.3 are not supported.
  • #6 - For connections between 11.1 (or higher) and 10.1 / 10.2 the 10g end MUST be at 10.1.0.5 / 10.2.0.2 (or higher) respectively in order to use PLSQL between those versions. See Note 4511371.8 for more details.
General Notes:
  1. For database links between different Oracle versions connections must be supported in BOTH directions in the matrix above.
    eg: As 9.2 -> 7.3.4 is not supported then database links between these version are notsupported in either direction.
  2. Unsupported combinations may appear to work but can encounter errors for particular operations. The fact that they appear to work should not be relied upon - issues on unsupported combinations will not be investigated.
  3. Since new database servers are compatible with a limited set of older OCI clients, it may not be necessary to upgrade the client software when upgrading the database. However, some new features may not work without upgrading the client software. So, for example, an Oracle 7.3.4 client is able to connect to an Oracle8i database, but is not able to take advantage of newer features such as Transparent Application Failover (introduced in v8).
  4. Oracle Applications , or other Oracle products, may have supported configurations not listed in the matrix above.
  5. The matrix above also applies between different platforms and between 32/64 bit releases of Oracle client / server except where any Oracle platform desupport notice indicates otherwise .
  6. Unix BEQUEATH (BEQ) connections are NOT supported between different releases. eg: Client 9.2.0 is not supported to make an Oracle Net connection to a 10.1.0 server using the BEQ protocol adapter regardless of the interoperability support listed above. SeeNote 364252.1 for more details.

728x90

+ Recent posts