생계/OERR2022. 1. 25. 17:28

원인 :
아카이브 프로세스가 트랜잭션이 들어옴에 따라 online redo log 파일을 스위치하며 archive 파일로
써내려가는 중에, 해당 destination 에 더 이상 공간이 없어서 발생하는 에러.
보통 운영 중인 디비는 처음 세팅할 때 아카이브 공간을 여유있게 잡아놓는데 그럼에도 불구하고
full 이 발생하는 경우는 대량의 DML 작업을 하는 경우이다.
조치 :
당장은 쌓인 아카이브를 (필요하다면) 백업을 받고 아카이브를 삭제.
대량작업으로 인한 로그발생이면 테이블을 no logging 으로 변경하고 재작업하자.
초기 용량 산정이 잘못되어 공간이 부족한 것이라면 디스크를 추가로 할당하자.

-- 디스크 사용량 확인

SELECT GROUP_NUMBER, NAME,
     TOTAL_MB/1024 AS TOTAL_GB,
     ROUND((TOTAL_MB - FREE_MB)/1024,2) AS USED_GB,
    ROUND(FREE_MB/1024,2) AS FREE_GB,
   ROUND((TOTAL_MB - FREE_MB) / TOTAL_MB * 100,2) AS PERCENT
  FROM V$ASM_DISKGROUP
;

- RMAN 아카이브 삭제

rman target=/
report obsolete;
crosscheck copy of archivelog all;
delete expired copy of archivelog all;
delete obsolete;
delete archivelog all;

반응형
Posted by 돌고래트레이너
생계/용어2021. 12. 4. 19:23

 

 

  • MCI/ MCA(Multi-Channel Intergration/Architecture) : 

멀티채널 통합/아키텍쳐. 

 MCA 는 멀티채널로 된 아키텍처, MCI 는 그것의 통합(서비스연계) 를 지칭. 

실무에선 둘을 구분하지 않고 혼용해서 사용. 

 

출처 : https://itwiki.kr/w/MCI/MCA

   

MCI 를 적용하지 않으면 업무가 추가, 변경함에 따라 개별 채널마다 추가 개발이 발생할 수 있다. 

 

  • EAI (Enterprise Application Integration) : 

   기업 어플리케이션 통합. 

   쉽게 얘기하면 A 시스템에서 B 시스템의 데이터를 조회하고 싶을때 다이렉트로 붙어서(디비링크 등) 조회하지 말고

   EAI 를 거쳐서 조회를 하라는 것.  

   이렇게 함으로써 인터페이스가 통합/표준/단순화 되는 효과를 얻을수 있다. 

   반면 EAI 개념 없는 아키텍처에서는 시스템간 의존성이 시간이 지날수록 파악하기 힘들어질수 있다. 

 

  • FEP (front-end processor) : 

FEP는 메인프레임의 통신제어를 위해 설계된 전용 컴퓨터이다. 대개 FEP의 한쪽은 통신회선에 그리고 다른 한쪽은 메인프레임에 연결되어, 메시지의 전송이나 수신, 패킷의 조립 및 해체, 에러의 감지 및 교정 등의 역무를 수행한다. 그러므로, FEP가 때로 통신제어기라는 말과 동의어로 사용되는 경우도 있지만, 통신제어기라는 용어가 다소 유연성이 떨어지는 용어이다.

또한, FEP는 클라이언트/서버 구조에서는 백엔드, 즉 서버에 서비스를 요청하기 위한 하나의 노드 또는 소프트웨어 프로그램을 의미하기도 한다. FEP는 일반적으로, 입력되는 데이터를 어느 정도까지 사전에 처리함으로써, 주 소프트웨어가 일을 좀 더 쉽고 빠르게 처리할 수 있도록 하는 프로그램을 가리키는 경우도 있다.

http://www.terms.co.kr/FEP.htm 원문 출처

원래 용어의 의미와 다르게 현재는 (주로 금융권에서)  대외연계 를 지칭

 

출처: 메가투스( http://www.megatus.com/product/product_01.asp )

 

반응형
Posted by 돌고래트레이너
생계/Oracle2021. 10. 31. 18:37

sql loader 로 작업시 실제 데이터 길이보다 컬럼의 길이가 작아서 안들어가는 경우

alter 구문으로 길이를 늘려주고 다시 loader 작업을 해주면 된다.

로그 파일에 필요한 정보(테이블명, 컬럼명, 원본길이) 가 다 있으니 로그를 읽어서

자동으로 alter 스크립트를 생성할수 있다.  

 


SQL LOADER 테스트
create user test identified by test;
alter user quota unlimite on users;
grant resource, connect to test;

create table test(a char(3), b varchar2(3),c char(2));
insert into test values('aaa','bbb','ccc');
commit;


-- test.dat ---
fff,100000000000000,Y
ggg,100,N
iss,chchchchcc,N
aaaaaa,ch,C
aaaaaaaa,bbbbbbbbbbbb,ccccccccc
aa,bb,dd
-- test.dat ---
-- test.ctl ---
LOAD DATA
INFILE 'test.dat'
BADFILE 'test.bad'
APPEND
INTO TABLE test
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
a
,b
,c
)
-- test.ctl ---

-- ldr.sh --
sqlldr userid=test/test control=test.ctl
sqlldr userid=test/test control=tesa.ctl
...
-- ldr.sh --

sh ./ldr.sh > ldr.log

1. loader 결과에서 ora에러 추출
: ORA-12899: value too large for column "TEST"."TEST"."B" (actual: 15, maximum: 3)
=> cat ldr.log | grep ORA > ldr_ext.log
2. 에러 메세지에서 sql 에 쓸부분 (오너,테이블/컬럼명, 길이) 만 추출
: "TEST"."TEST"."B" 3)
=> awk '{print $7, $11}' ldr_ext.log > ldr_ext.v2.log
3. 불필요 문자 제거 ( ".", ")" )
: "TEST" "TEST" "B" 3
=> awk -F '.' '{ print $1, $2, $3 }' ldr_ext.v2.log | awk -F ')' '{ print $1 }' > ldr_ext.v3.log
4. alter 구문 생성 (원본 길이 1.5배 & 반올림 )
: alter table "TEST" ."TEST" modify "B" varchar2(5);
=> awk '{ print "alter table " $1,"." $2, "modify " $3, "varchar2(" int($4*1.5 +0.5) ");" }' ldr_ext.v3.log
## 실패한 sqlldr 다시 실행
5. bad 파일에서 리스트 추출
=> ls -l *.bad | awk '{print $9}' | awk -F '.bad' '{print $1}' > rerun.log

6. 추출 결과로 스크립트 생성
: sqlldr userid=test/test control=tesa.ctl
=> awk '{ print "sqlldr userid=test/test control=" $1 ".ctl" }' rerun.log > ldr.v2.sh

 

반응형

'생계 > Oracle' 카테고리의 다른 글

DBMS_SCHEDULER  (2) 2022.03.02
[ASM 환경] 테이블스페이스 생성, 추가, RESIZE  (0) 2022.01.26
DBMS_XMLGEN.GETXMLTYPE 테이블정의서  (0) 2021.10.23
오라클 서버 기동 단계  (0) 2021.10.09
오라클 초기화 파라미터 파일  (0) 2021.09.20
Posted by 돌고래트레이너