와글와글 잡담2009. 5. 21. 18:02

SAP가 표준으로 제공하고 있는 기능이나 프로세스가 회사의 실정에 비추어 부족하거나 부적합 하다고 판단이 되는 경우에는 일부기능을 개발하거나 표준 기능/프로세스를 변경하는 경우가 있습니다
- CBO(Customer Bolt-On) : Enhancement라고 불리기도 하는데,

SAP R/3의 표준기능, 테이블에 영향을 미치지 않는 상태에서 추가하고 기능을 개발하는 것 말한다. 추가적인 Report의 개발은 일반적으로 CBO라고 표현하지 않습니다.

참고로 이와 반대되는
- Modification : SAP의 표준기능을 직접 변경하는 것으로서, 기술적으로는 Source code나 표준 Table의 필드를 변경하는 작업을 말합니다.
일반적으로 SAP사는 Modification은 권고하지 않는데, 그 이유는 SAP의 전체적인 기술구조에 대한 명확한 이해가 없는 상태에서 표준 Source code나 테이블을 건드리는 작업이 예기치 못한 다른 영향을 미칠수도 있기 때문이며, 또한 Modification의 내용은 Version up시 반영이 되지 않으므로 이를 계속적으로 유지보수 해야 하는 부담도 회사가 감수해야 합니다

Posted by la30321
Java2009. 5. 21. 15:26
String fileName = "output.txt";
StringBuffer buf = new StringBuffer();
File file = new File(fileName);
FileWriter writer = new FileWriter(file);

buf.append("abc" + "\r\n"); // 요부분 집중
buf.append("def" + "\r\n");
StringReader reader = new StringReader(buf.toString());

int c;
while ((c = reader.read()) != -1)
writer.write(c);

reader.close();
writer.close();

Posted by la30321
Oracle 관련2009. 5. 21. 15:20
1. Shared pool
:: Library Cache + Data Dictionary Cache
- 모든 SQL 문을 처리하기 위해 사용
① Library Cache
- 가장 최근에 사용된 SQL 문장의 명령문, 구문 분석 트리, 실행계획정보를 갖고 있다
- 가장 최근에 실행한 PL/SQL 문장을 저장하고 공유. 프로시져(함수, 패키지, 트리거 ) 저장
② Data Dictionary Cache
- 테이블, 컬럼, 사용자 이름과 같은 최근 사용된 데이터 사전의 정보를 저장
2. DataBase Buffer Cache
- 가장 최근에 사용된 데이타 블록을 저장하는 메모리 공간 ( 수정된 데이터도 보유 가능)
- LRU 알고리즘에 의해 관리되어 성능 증가
※LRU 알고리즘:: 최근에 사용된 블록을 유지하기 위해 오래된 것을 제거하는 알고리즘
3. Redo Log Buffer
- DB에서 일어난 모든 변화를 저장하는 메모리 공간
( insert, update, delete, create, alter, drop 명령이 포함)
- LGWR 에 의해 리두 로그 파일에 저장한다
4. Java Pool
- 자바로 작성된 프로그램을 실행할 때 실행 계획을 저장하는 영역
5. Large Pool
- 오라클 백업 및 복원 작업에 대한 메모리 할당
# SGA의 크기를 결정하는 Parameter
- DB_CACHE_SIZE : 데이터베이스 버퍼 캐시
- SHARED_POOL_SIZE : 공유 풀
- LOG_BUFFER : 리두 로그 버퍼
- JAVA_POOL_SIZE : 자바 풀
- LARGE_POOL_SIZE : 라지 풀
** SGA의 크기를 보는 명령어 :: show SGA // show parameter SGA_MAX_SIZE
** 크기 변경 명령어
log_buffer_size 의 크기를 15M로 변경하고자 할 때
:: alter system set log_buffer_size =15 M;
Posted by la30321
Java2009. 5. 21. 15:18
1) HA
: High Availability의 준말
: 번역 - 고가용성, 고가용도
: 가용성은 시스템 고장 발생시 빠른 시간내에 치료하여 다시 정상적으로 서비스할 수 있는 상태를 분석하기 위해서 사용되는 척도입니다...따라서 고가용성이란 결함 또는 고장 발생 빈도를 줄이면서 결함 발생시 빠르게 수리하여 일년중 대략 30분 가량만 서비스 불능 상태이고 나머진 정상적인 서비스가 가능하다는 것을 의미합니다...99.999%
2) 클러스터링
: Clustering
: PC 또는 서버를 하나의 시스템처럼 관리 및 운영하기 위해 사용하는 기술입니다...클러스터 시스템의 응용분야는 고가용성 클러스터 시스템, 고성능 클러스터 시스템, 웹서버 클러스터 시스템이 있습니다...먼저 고가용성 클러스터 시스템이란 PC 또는 서버를 연결하는 목적이 가용성을 높여 고가용성을 제공하기 위해 구성된 시스템을 말합니다...나머지 고성능이나 웹서버 또한 비슷하게 이해하시면 됩니다...
3) 이중화
: Duplex 또는 Duplicate
: 위에서 가용성을 높인다는 표현을 많이 사용하였는데, 그럼 어떻게 하면 될까요? 이를 위한 가장 기본적인 방법이 이중화입니다...용어에서 힌트를 얻을 수 있는 것처럼 서버를 한대만 두는 것이 아니라 여분서버 하나를 더 비치하는 것입니다...즉 서버 2대를 사용하는 것이죠...이때 관리정책에 따라 Hot과 Cold 두가지 방식이 있습니다...Hot은 서버 2대를 동시에 동작을 시켜 한대의 서버가 고장이 발생하였을 경우 다른 한대의 서버가 바로 고장난 서버에서 제공하던 서비스를 인계받아 서비스를 하게 하는 것입니다...Cold는 우선 1대만 서비스를 하게 했다가 고장이 발생하면 다른 서버를 동작시키고 그 후 고장난 서버의 서비스를 인계받아 서비스를 제공하는 것입니다...
4) RAID
: Redundant Array of Inexpensive Disks의 약자
: 어떤 사람은 Inexpensive 대신에 Independent를 사용하는 사람도 있습니다...
: RAID는 하드디스크 다시 말해서 저장장치를 중복하는 것입니다...목적은 위에 서버를 이중화하는 것과 비슷합니다...저장장치의 고장으로 인한 가용도 감소를 여러 저장장치를 중복하여 가용도를 높이기 위한 것이죠...이 또한 메커니즘에 따라 RAID0~RIAD5 방식이 있습니다...
Posted by la30321
Java2009. 2. 25. 14:41

로그 찍는 거 별로 안좋아하는데 로그를 찍어보니까 더 좋은 것 같아요 ^^
게다가 log4j라는 매우 우수한 로그찍는 프로그램이 있습니다.
sysout에서 벗어나봅시다-_-; 습관적으로 sysout을-_-(System.out.println()......-_-)

우선 이클립스에서 프로젝트를 하나 만들어봅시다.
log4j를 받아봅시다.
http://logging.apache.org/log4j/1.2/download.html
1.2버전입니다. 받아서 log4j-1.2.15.jar파일을 라이브러리에 추가합시다.

log4j설정파일을 만들어봅시다.
최상위 폴더에다가 log4j.properties파일을 만듭시다.


# Log4j Setting file
log4j
.rootLogger=INFO, console

# Daily file log
log4j
.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j
.appender.logfile.File=D:/mudchobo/Log/glv.log
log4j
.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j
.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j
.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n

# Console log
log4j
.appender.console=org.apache.log4j.ConsoleAppender
log4j
.appender.console.layout=org.apache.log4j.PatternLayout
log4j
.appender.console.layout.ConversionPattern=%-5p %l - %m%n

# log level and appender
log4j
.logger.com.mudchobo=DEBUG, console
log4j
.logger.com.mudchobo.Test=INFO, logfile

대략 내용을 살펴보면 log4j.rootLogger는 최상위 로거입니다.
모든 INFO레벨이상의 로그는 다 console로 찍겠다는 겁니다.
(레벨에는 DEBUG, INFO, WARN, ERROR, FATAL 순인데, 예를 들어 INFO레벨로 지정해두면 logger.debug로 찍는 로그는 나타나지 않습니다. INFO레벨 이상것만 나타납니다.)

console은 아래 #Console log쪽에 보시면
log4j.appender.console <- 요 이름입니다.
요 console은 자세히보면 ConsoleAppender라는 클래스입니다. 이건 말그대로 콘솔에 로그를 찍어준다는 겁니다. layout에는 PatternLayout을 지정할 수 있는데 저 패턴은 뭐 레벨이 뭐고, 클래스가 뭐고, 메시지찍고 뭐 그런 내용입니다. 검색 고고싱-_-;

그리고, 파일에다가 출력 할 수 있는데, DailyRollingFileAppender클래스를 이용합니다. 이눔은 말그대로 매일매일 다른로그를 사용하게 만듭니다. 로그이름이 위와 같이 glv.log라면, 해당로그가 어제날짜인데 로그를 찍으려고 하면 기존에 있던 파일은 glv.log.2008-04-17 이렇게 바꿔줍니다.

아래부분에 보면 log4j.logger. 다음에 패키지명이나 클래스명을 지정해놓고, 로그레벨과 출력할 로그를 지정할 수 있는데요. 해당 클래스나 패키지의 로그는 저걸로 찍겠다는 겁니다. Test클래스는 logfile로 찍힌다는 겁니다.
그리고, rootLogger가 colsole로 지정되어 있기 때문에 console에도 찍히겠죠? ^^

로그를 찍어봅시다.
TestLogging이라는 프로젝트 이름으로 만듭시다.

Test클래스를 만들어봅시다.
Test.java

package com.mudchobo;

import org.apache.log4j.Logger;

public class Test {

private Logger logger = Logger.getLogger(getClass());

public void println() {
logger
.info("안녕하세요! Test입니다");
}
}

Test2클래스를 만들어봅시다.
Test2.java

package com.mudchobo;

import org.apache.log4j.Logger;

public class Test2 {

private Logger logger = Logger.getLogger(getClass());

public void println() {
logger
.info("안녕하세요! Test2입니다.");
}
}

TestLogging클래스를 만들어봅시다. 메인을 만들어야합니다.

package com.mudchobo;

public class TestLogging {

public static void main(String[] args) {
Test test = new Test();
Test2 test2
= new Test2();

test
.println();
test2
.println();
}
}

자 그럼 콘솔에는
INFO com.mudchobo.Test.println(Test.java:10) - 안녕하세요! Test입니다.
INFO com.mudchobo.Test.println(Test.java:10) - 안녕하세요! Test입니다.
INFO com.mudchobo.Test2.println(Test2.java:10) - 안녕하세요! Test2입니다.
INFO com.mudchobo.Test2.println(Test2.java:10) - 안녕하세요! Test2입니다.
이렇게 출력이 될 것이고 로그파일에는
[19:56:35][INFO ](Test.java:10) - 안녕하세요! Test입니다.
이것만 출력될 것입니다.
위에 콘솔에 두번 찍힌 이유는 Rootlogger도 찍고, 아래 패키지를 지정한 로그도 찍었기 때문이죠.
그리고, 파일에는 한번만 쓰여진 이유는 파일에 쓰는건
log4j.logger.com.mudchobo.Test=INFO, logfile 여기 이 Test클래스 하나죠-_-;
이상입니다-_-;
Posted by la30321