1. JFreeChart
 - 지원 기능 : pie charts (2D and 3D), bar charts (horizontal and vertical, regular and stacked), line charts, scatter plots, time series charts, high-low-open-close charts, candlestick plots, Gantt charts, combined plots, thermometers
 - 지원 언어 : Java 지원
 - 예제 사이트 : http://www.jfree.org/jfreechart/samples.html

2. Cewolf
 - 지원 기능 : Line [XY], [3D] Pie, [3D] Horizonal Bar, [3D] Vertical [XY] Bar, [3D] Stacked Vertical Bar, Area [XY], Scatter Plot, Candlestick, High Low, Gantt, Overlaid, Combined
 - 지원 언어 : Java 지원
 - 예제 사이트 : http://cewolf.sourceforge.net/new/demo.html

3. PHP/SWF Charts
 - 지원 기능 : Line, Column, Stacked column,  Floating column, 3D column, Stacked 3D column, Parallel 3D column, Pie, 3D Pie, Bar, Stacked bar,  Floating bar, Area, Stacked area, Candlestick, Scatter, Polar, Mixed, Composite, Joined
 - 지원 언어 : PHP + Flash (swf), SP, CFML, Perl언어에서도 지원
 - 예제 사이트 : http://www.maani.us/charts/index.php?menu=Gallery

4. Open Flash Chart(플래시 기반)
 - 지원 기능 : Data Lines, Bar Chart, 3D Bar Chart, Glass Bar Chart, Fade Bar Chart, Sketch Bars, Area Chart, Bars + Lines, Pie Chart, Pie Chart Links, Scatter Chart, Mixed Scatter, High Low Close, Candle
 - 지원 언어 : 플래시 기반으로 Java, Perl, Python, Ruby and Rails, php, .net 지원
 - 예제 사이트 : http://teethgrinder.co.uk/open-flash-chart/index.php

5. AmCharts(플래시 기반)
 -  지원 기능 : Animated or static, Value axis, Linear, logarithmic value axis scale, bullets, Clickable columns/bars, Gradient fills, plot area Axis
 - 지원 언어 :  플래시 기반으로 PHP, .NET, Java, Ruby on Rails, Perl, ColdFusion 언어 지원
 - 예제 사이트 : http://www.amcharts.com/column

6. FusionCharts(플래시 기반)
 - 지원 기능 : 다양한 기능 지원함
 - 지원 언어 : cross-browser, cross-platform flash chart로서 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails, simple HTML pages 지원
 - 예제 사이트 : http://www.fusioncharts.com/Free/Gallery.asp?gMenuItemId=3

7. Flot
 - 지원 기능 : Line 기능 등 기본적인 기능에 줌 등 다양한 옵션을 줄 수 있음
 - 지원 언어 : Javascript + jQuery로 구성되어 있어 웹기반 언어는 모두 지원, Cross Browser지원
 - 예제 사이트 : http://people.iola.dk/olau/flot/examples/

8. Flotr
 - 지원 기능 : Basic Axis, Basic Bar, Basic Legend, Mouse Track, Mouse Zoom, JSON Data
 - 지원 언어 : Javascript + Prototype 1.6.0.2로 구성되어 있어 웹기반 언어는 모두 지원, Cross Browser지원
 - 예제 사이트 : http://www.solutoire.com/experiments/flotr/examples/basic.html

9. PlotKit
 - 지원 기능 : HTML Canvas: Safari 2+, Opera 9+, Firefox 1.5+, IE 6 (in emulated mode), SVG: Opera 9+, Firefox 1.5+ (see note), IE6 with Adobe SVG
 - 지원 언어 : Javascript + MochiKit 1.3로 구성되어 있어 웹기반 언어는 모두 지원, Cross Browser지원
 - 예제 사이트 : http://media.liquidx.net/js/plotkit-tests/svg-sweet.html

10. Emprise JavaScript Charts
 - 지원 기능 : Interactive, Axis Scaling, Auto Zooming, Scrolling, Stackable Series, Multiple Chart Types, Ajax-Driven Data, Compatible, Plugin Free, Customizable
 - 지원 언어 : Javascript로 구현되어 있고 Cross Browser지원
 - 예제 사이트 : http://www.ejschart.com/examples/index.php

11. Visifire
 - 지원 기능 : 실버 라이트 설치되면 다양한 차트 기능이 지원됨
 - 지원 언어 : Silverlight Charts
 - 예제 사이트 : http://www.visifire.com/silverlight_charts_gallery.php

'오픈소스SW' 카테고리의 다른 글

Ajax기반의 Webmail 소개  (0) 2008.12.26
JSCalendar를 활용한 일자 조회  (0) 2008.12.26
Ajax Scripts  (0) 2008.12.26
Web-Based HTML Editor 비교 및 미리보기  (0) 2008.12.02
core file 분석  (0) 2008.04.17

1. jqac
 - jQuery를 활용한 Auto-complete/suggest javascript 라이브러리
 - 다운로드 : http://code.google.com/p/jqac/downloads/list
 - 데모 : http://www.cs.bgu.ac.il/~ygleyzer/files/utils/jqac/jqac_example.html

2. AutoComplete 1.2
 - prototype과 scriptaculous를 활용한 Auto-complete javascript 라이브러리
 - 다운로드 : http://www.beauscott.com/examples/autocomplete/autocomplete.zip
 - 데모 : http://www.beauscott.com/examples/autocomplete/doc/examples.html
 
3. AutoCompleter(mootools)
 - MooTools를 활용한 Auto-complete javascript 라이브러리
 - 다운로드 : http://digitarald.de/project/autocompleter/#download
 - 데모 : http://digitarald.de/project/autocompleter/1-1/showcase/delicious-tags/, http://digitarald.de/project/autocompleter/1-1/showcase/local/

4. AJAX AutoComplete
 - Jim Roos가 자체로 만든 Ajax framework
 - 다운로드 : http://jimroos.com/AutoComplete.zip
 - 데모 : http://www.jimroos.com/2007/05/ajax-autocomplete.html

5. YUI Autocomplete
 - Yahoo! UI Library로 만든 Auto-complete
 - 다운로드 : http://brandspankingnew.net/download.php?file=autosuggest_v2.zip
 - 데모 : http://developer.yahoo.com/yui/examples/autocomplete/index.html

6. AutoSuggest
 - 심플한 Javascript를 활용한 Auto-complete
 - 다운로드 : http://www.brandspankingnew.net/specials/ajax_autosuggest/ajax_autosuggest_autocomplete.html
 - 데모 : http://www.brandspankingnew.net/specials/ajax_autosuggest/ajax_autosuggest_autocomplete.html

7. dhtmlxCombo
 - 콤보형 Auto-complete
 - 다운로드 : http://www.dhtmlx.com/docs/download/dhtmlxCombo.zip
 - 데모 : http://dhtmlx.com/docs/products/dhtmlxCombo/index.shtml

8. AutoComplete (mootools)
 - scriptaculous를 활용한 Auto-complete
 - 다운로드 : http://script.aculo.us/
 - 데모 : http://demo.script.aculo.us/ajax/autocompleter
Web-Based HTML Editor 비교 및 미리보기

웹개발시 종종 필요로 하는 웹기반 HTML에디터..

Sourceforge에 등록되어 있는 오픈소스 웹기반 HTML 에디터의 종류와 기능비교  및 미리보기

순서는 Sourceforge의 Activity 순

 

- FCKeditor (http://sourceforge.net/projects/fckeditor/)
  * IE의 Editor Object 를 이용하여 제작
  * jsp, php, asp에 대응하는 이미지 업로드 및, 브라우징 기능
  * 미리 정의된 3가지 형태의 툴바 형태제공
  * 간편하게 기존 소스에 추가 가능
  * 테이블 편집 기능 지원
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요
  * 다양한 언어 지원(한글포함)

  * 완성도 높음.. 강추!
  * sample -
http://pistos.pe.kr/FCKeditor/_test/test.php

- HTMLarea (http://sourceforge.net/projects/itools-htmlarea)
  * 이미지 업로드 지원 안함
  * 풀스크린 편집 지원
  * 영문메뉴만 지원
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음  
  * PHP Image Editor 지원 (
http://sourceforge.net/projects/imgmngedt/)

  * 한글화 및 이미지업로드만 커스터마이징하면 FCK에 떨어지지 않을듯
  * sample -
http://pistos.pe.kr/htmlArea/examples/full-page.html

 

- SPAW web-based WYSIWYG editor control (http://sourceforge.net/projects/spaw/)
  * 예쁜 디자인
  * 이미지 라이브러리 기능
  * 이미지 업로드 지원 안함  
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음

  * 디자인만 놓고 보면 최고! 그러나 이미지삽입부분이 맘에 들지 않고, 사소한 버그가 좀 있는듯.
  * sample -
http://pistos.pe.kr/spaw/test.php

 

- hypertextarea (http://sourceforge.net/projects/hypertextarea/)
  * 기본적인 기능만 제공
  * 이미지 업로드 지원 안함
  * 심플한 디자인
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음

  * 바로 갖다 쓰기엔 스크립트에러의 압박이 심함..
  * sample -
http://pistos.pe.kr/hypertextarea/javascript/demo.html

 

- RichText-editor (http://sourceforge.net/projects/richtext/)
  * 브라우저 언어설정이 한글인경우 문제있음(한글지원 커스터마이징 필요)
  * 이미지 업로드 지원 안함
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음

  * 한때는 꽤 잘나가는 녀석이었는데... 이제는 경쟁력이 떨어짐.. 가져다 쓰려면 고쳐야 할것도 많음.
  * sample -
http://pistos.pe.kr/richtext/editor/rte/richedit.html

 

- aynHTML (http://sourceforge.net/projects/aynhtml/)
  * 이미지업로드 지원
  * 이미지 저장소 지원
  * 깔끔한 디자인
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음

  * 나름대로 깔끔함.. 소스보기시 컬러링도 해주고.. 간단히 쓰기엔 좋을듯
  * sample -
http://pistos.pe.kr/aynHTML/

 

- XsDhtmlEditor (http://sourceforge.net/projects/xsdheditor/)
  * 심플한 디자인
  * 이미지 업로드 지원
  * 타 사이트 내용 copy&paste시 이미지 경로 변경 필요 없음

  * 바로 쓰기에는 버그가 좀 있음..
  * sample -
http://pistos.pe.kr/XsDhtmlEditor/

 

- bpEditor ( http://sourceforge.net/projects/bpeditor/)
  * 만들다 만듯..ㅡㅡ
  * sample -
http://pistos.pe.kr/bpShitEditor/bpShitEditor.php

'오픈소스SW' 카테고리의 다른 글

Open Source 기반의 차트 프로그램  (0) 2008.12.26
Ajax Scripts  (0) 2008.12.26
core file 분석  (0) 2008.04.17
탭 방식으로 html에 옷을 입혀주는 css  (0) 2008.02.02
공개웹방화벽을 이용한 보안대응  (0) 2008.01.11

제가 주로 쓰는 방법을 말씀드리자면


먼저 gdb <실행화일> -c <core 화일> 하여 디버거를 실행시킨후
아래와 같이 bt(backtrace)명령어로 어떤 함수를 부르다 죽었는지
확인합니다.


(gdb) bt
#0 0xef663628 in fprintf () from /usr/lib/libc.so.1
#1 0x15b0c in fxRslt (gubun=0x56bf0 "1", from=0x57070 "010305",
    to=0x574f0 "010305", loginid=0x57970 "TEST001")
    at /fxMain/SRC/fxWeb/cgi/rslt.c:50
#2 0x1597c in main (argc=1, argv=0xeffff964)
    at /fxMain/SRC/fxWeb/cgi/fxrslt.c:85
(gdb)


보니까 main->fxRslt->fprintf 하다가 죽었군요. 장소는 rslt.c 에 50번째 줄.
이제 frame 명령어로 해당 스택으로 이동합니다. 이후 list 명령어로
소스파일을 확인해봅니다.


(gdb) frame 1
#1 0x15b0c in fxRslt (gubun=0x56bf0 "1", from=0x57070 "010305",
    to=0x574f0 "010305", loginid=0x57970 "TEST001")
    at /fxMain/SRC/fxWeb/cgi/rslt.c:50
50 fprintf(logfile,"GUBUN:[%c] FROM:[%s] TO:[%s] LOGIN:[%s]\n",
(gdb) list
45 loginid[i] = '\0';
46 strcpy(audit_id, loginid);
47
48
sprintf(logfname,"%s/%s.log",FXRSLT_LOGDIR,RSLT_LOGINIT,loginid);
49 logfile = fopen(logfname, "w");
50 fprintf(logfile,"GUBUN:[%c] FROM:[%s] TO:[%s] LOGIN:[%s]\n",
51 gubun[0],from,to,loginid);
52
53 if (ChkDate(from,to)==0) {
54 fprintf(logfile,"Error in ChkDate\n");
(gdb)


그담엔 print명령어등으로 각 변수값을 조사하여 NULL이 있는지 체크해보면
됩니다.
----------------
[스크랩] Java VM Core Dump 분석   조회(41)
 
java 프로그램 | 2005/01/02 (일) 16:17   공감하기(0)  | 스크랩하기(0) 
 
 

대부분의 문제 발생 원인(리스트는 우선 순위가 아닙니다.)
 
1.       해당 어플리케이션이 사용하는 Native 코드 사용시 발생
 
2.       모든 Type 2 JDBC 드라이버는 native DBMS 라이브러리를 사용하므로 이러한 유형의 오류가 발생할 수 있습니다.  이 드라이버가 문제의 원인인지 판별하려면 pure java(Type 4) JDBC 드라이버로 전환합니다.
 
3.       JNI 호출을 사용하여 액세스하는 모든 native 라이브러리도 이러한 유형의 오류가 발생할 수 있습니다.  응용 프로그램에서 이러한 라이브러리를 사용하는 경우 신중하게 조사해야 합니다.  보통 이러한 라이브러리는 응용 프로그램에서 해당 기능을 필요로 하기 때문에 제외시키기 어렵습니다.
 
4.       JVM 자체도 native 프로그램이며 이러한 오류가 발생할 수 있습니다.  JVM이 의심스러운 경우 인증된 다른 JVM 또는 상위 버전을 사용하여 JVM 버그가 오류의 원인인지 파악합니다.  많은 JVM 버그는 JIT 컴파일러 사용과 관련이 있으며 종종 이 기능을 해제하면 이러한 유형의 문제가 해결되기도 합니다.  이 기능을 해제하려면 대개 -Djava.compiler=none 명령 옵션을 사용합니다. 
 
위와 같은 원인 이외에도 발생 원인은 많습니다. Core file이 생성되면 이 Core file을 분석하여 발생원인의 범위를 좁혀 가야 합니다.(발생원인을 좁혀가는 거지 발생원인을 정확히 집어내기는 어렵습니다. – 능력이 출중한 사람은 되겠지요.)
이 문서에서는 Core file 분석 Tool인 dbx나 gdb을 사용하지 않고 각 OS에서 제공하는 Core File분석 툴을 사용 하여 분석하는 방법에 관하여 알아봅니다.
 
참고 : 다음과 같은 경우 Core File이 생성되지 않을 수도 있습니다.
 
•        시스템 또는 사용자 별 ulimit -c(코어 파일의 설정된 크기)를 검사합니다.
•        사용 가능한 사용자 디스크 공간을 검사합니다(예: 디스크 할당량이 있습니까?)
•        Solaris에서는 /etc/system 파일에 다음 매개변수가 있는데 이 값에 따라 코어 파일이 생성되지 않을 수 있습니다. set sys:coredumpsize=0
•        Linux에서는 기본적으로 코더 덤프가 오프로 있습니다.  RedHat Advanced Server 2.1에서는 구성 정보 파일이 /etc/security에 있습니다.  limits.conf라는 파일에서 설정 사항을 확인할 수 있습니다. "core"라는 단어를 찾아보십시오.  0으로 설정되어 있으면 coredump를 만들 수 없습니다.
•        HP OS 설정 커널 매개변수 maxdsiz(max_per_proc_data_size는 사용자 프로세스의 데이터 세그멘트 크기를 늘림) 64M에서 134M 이상으로 변경합니다. 

 
Core File 분석 Tool
다음은 각 OS에서 사용하는 분석 툴입니다.
분석을 위해서는 statck분석 툴과 map분석 툴을 사용합니다.
    Solaris:
        stack 명령 = pstack
        map 명령 = pmap
    IBM의 추가 기능이 있는 AIX 5.2 이상(이전 버전에서는 사용할 수 없음)
        stack 명령 = procstack
        map 명령 = procmap
        참고: http://www-106.ibm.com/developerworks/eserver/articles/AIX5.2PerfTools.html
 
    Linux:
        stack = lsstack
        map = pmap
 
참고: http://sourceforge.net/projects/lsstack/에서 lsstack을 가져와서 Linux 플랫폼에서 빌드할 수 있습니다.
이 명령은 Solaris의 pstack에 해당합니다.
 
http://web.hexapodia.org/~adi/pmap.c에서 pmap 소스를 가져와서 Linux 플랫폼에서 빌드할 수 있습니다.
 
HPUX: 기본 제공 툴은 없으며, GDB, ADB을 사용함.
 
명령어 사용
 
각 명령어의 보다 자세한 옵션 사항은 명령어의 Help을 참조하십시오.
 
Solaris 예
 
/usr/bin/pstack [-F] [pid | core] > [분석내용저장파일명]
 
ex) pstack core2004-10-29 > coreStack.txt
 
/usr/bin/pmap [ -rslF ]  [ pid | core ] > [분석내용저장파일명]
 
Ex) pmap core2004-10-29 > coreMap.txt
 
 
분석
 
coreStack.txt 내용
core 'core' of 20956:   /wwsl/sharedInstalls/solaris/wls70sp2/jdk131_06/bin/../bin/sparc/nativ
-----------------  lwp# 14 / thread# 25  --------------------
 ff369764 __sigprocmask (ff36bf60, 0, 0, e6181d70, ff37e000, 0) + 8
 ff35e110 _sigon   (e6181d70, ff385930, 6, e6180114, e6181d70, 6) + d0
 ff361150 _thrp_kill (0, 19, 6, ff37e000, 19, ff2c0450) + f8
 ff24b900 raise    (6, 0, 0, ffffffff, ff2c03bc, 4) + 40
 ff2358ec abort    (ff2bc000, e6180268, 0, fffffff8, 4, e6180289) + 100
 fe3c68fc __1cCosFabort6Fl_v_ (1, fe4c8000, 1, e61802e8, 0, e9f90420) + b8
 fe3c59f0 __1cCosbBhandle_unexpected_exception6FpnGThread_ipCpv_v_ (ff2c02ac, fe53895c, fe4dc164, fe470ab4, fe4c8000, e6180308) + 254
 fe20a8b4 JVM_handle_solaris_signal (0, 25d5b8, e6180d90, fe4c8000, b, e6181048) + 8ec
 ff36b824 __sighndlr (b, e6181048, e6180d90, fe20a8cc, e6181e14, e6181e04) + c
 ff3684d8 sigacthandler (b, e6181d70, 0, 0, 0, ff37e000) + 708
 --- called from signal handler with signal 11 (SIGSEGV) ---
 e9f90420 Java_HelloWorld_displayHelloWorld (25d644, e6181224, e61819b8, 0, 2, 0) + 30
 00090ae4 ???????? (e6181224, e61819b8, 25d5b8, fe4c8000, 0, 109a0)
 0008dc4c ???????? (e61812c4, ffffffff, ffffffff, 97400, 4, e61811b8)
 0008dc4c ???????? (e618135c, e61819b8, fe4c8000, 99600, c, e6181250)
 0008dc4c ???????? (e61813ec, f76a2f90, e618147c, 99600, c, e61812f8)
 0008ddb4 ???????? (e618147c, f68578b8, 0, 99974, c, e6181388)
 0008ddd8 ???????? (e618154c, e61815c8, e61815cc, 99974, 4, e6181410)

 
굵은 부분이 오류가 발생한 부분을 나타낸다. “--- called from signal handler with signal“을 찾으면 된다. 이 오류가 발생한 메모리 영역이 “e9f90420“ 이다. coreMap.txt 파일에서 이 주소값이 포함되는 범위를 찾아본다.
 
coreMap.txt 내용
E9500000   1184K read
E9680000   1392K read
E9800000   4608K read
E9F60000    136K read/write/exec
E9F90000      8K read/exec         /home/usera/wls70/solaris/projectWork/lib/libhello.so
E9FA0000      8K read/write/exec   /home/usera/wls70/solaris/projectWork/lib/libhello.so
E9FB4000      8K read/write/exec
E9FC0000    120K read/exec         /usr/lib/libelf.so.1
E9FEE000      8K read/write/exec   /usr/lib/libelf.so.1

 
“e9f90420“ 가 포함된 범위에서 사용되는 라이블러리는 “libhello.so“ 임을 알 수 있다.
Core 발생은 주 원인은 “libhello.so“ 일 가능성으로 추측할 수 있다. 
 


http://clagnut.com/sandbox/csstabs/?writingtext=csstabs

The HTML:

<ul id="globalnav">
<li><a href="#">Home</a></li>
<li><a href="#" class="here">About</a>
<ul>
<li><a href="#">Vision</a></li>
<li><a href="#">Team</a></li>
<li><a href="#">Culture</a></li>
<li><a href="#">Careers</a></li>
<li><a href="#" class="here">History</a></li>
<li><a href="#">Sponsorship</a></li>
</ul>
</li>
<li><a href="#">News</a></li>
<li><a href="#">Proof</a></li>
<li><a href="#">Process</a></li>
<li><a href="#">Expertise</a></li>
<li><a href="#">Help</a></li>
</ul>


The CSS:

/*globalnav*/

#globalnav {
position:relative;
float:left;
width:100%;
padding:0 0 1.75em 1em;
margin:0;
list-style:none;
line-height:1em;
}

#globalnav LI {
float:left;
margin:0;
padding:0;
}

#globalnav A {
display:block;
color:#444;
text-decoration:none;
font-weight:bold;
background:#ddd;
margin:0;
padding:0.25em 1em;
border-left:1px solid #fff;
border-top:1px solid #fff;
border-right:1px solid #aaa;
}

#globalnav A:hover,
#globalnav A:active,
#globalnav A.here:link,
#globalnav A.here:visited {
background:#bbb;
}

#globalnav A.here:link,
#globalnav A.here:visited {
position:relative;
z-index:102;
}

/*subnav*/

#globalnav UL {
position:absolute;
left:0;
top:1.5em;
float:left;
background:#bbb;
width:100%;
margin:0;
padding:0.25em 0.25em 0.25em 1em;
list-style:none;
border-top:1px solid #fff;
}

#globalnav UL LI {
float:left;
display:block;
margin-top:1px;
}

#globalnav UL A {
background:#bbb;
color:#fff;
display:inline;
margin:0;
padding:0 1em;
border:0
}

#globalnav UL A:hover,
#globalnav UL A:active,
#globalnav UL A.here:link,
#globalnav UL A.here:visited {
color:#444;
}

http://www.krcert.or.kr/firewall2/index.jsp


  WebKnight

       AQTRONIX사에서 개발한 IIS 웹서버용 공개 웹방화벽으로 SQL Injection 공격 등 IIS 웹서버의 주요 공격 차단 가능
       홈페이지 : http://www.aqtronix.com/?PageID=99

  ModSecurity

       Ivan Ristic이 개발한 Apache 웹서버용 공개 웹방화격으로 PHP Injection 공격 등 Apache 웹서버의 주요 공격 차단 가능
       홈페이지 : http://www.modsecurity.org




http://www.boho.or.kr/index.html



o 저자사항 : 정보통신부, 컴퓨터프로그램보호위원회
o 발간부서 : SW정책개발팀
o 발행년도 : 2007
o 총페이지 : 56p.


□ 목차


I. 오픈소스SW의 개요 = 06


II. 오픈소스SW의 지적재산권과 라이선스 = 10
 1. SW 지적재산권 = 10
 2. 라이선스와 오픈소스SW = 11
 3. 오픈소스SW 라이선스의 이해와 활용 = 13


III. 오픈소스SW 라이선스의 구체적 내용 = 16
 1. 공통적 준수사항 = 16
 2. 라이선스별 준수사항 = 18
 3. 주요 쟁점 = 29
 4. 주요 오픈소스SW 사례 = 32
 5. 오픈소스SW 라이선스 위반사례 = 35


IV. 기업에서의 오픈소스SW 라이선스 관리/활용 방안 = 38
 1. 오픈소스SW 관련 정책의 수립 = 38
 2. 오픈소스SW 라이선스 관리를 위한 프로세스 및 조직의 구축 = 40


참고자료  주요 오픈소스SW와 라이선스 = 48



데이터베이스 백업과 복구전략 (1) - 오라클의 데이터베이스 백업

엔코아 컨설팅 한 준 희

"복구에 실패한 DBA는 용서받을 수 있어도, 백업에 실패한 DBA는 용서받을 수 없다"


데이터베이스 백업과 복구전략 (1) - 오라클의 데이터베이스 백업

엔코아 컨설팅 한 준 희

"복구에 실패한 DBA는 용서받을 수 있어도, 백업에 실패한 DBA는 용서받을 수 없다"

이 길을 들어서서 제일 먼저 사수에게 들었던 전설과 같다는 말이다.
아무리 시스템의 성능이 고도화되고, 성능개선을 위해 숱한 시간을 허비했어도, 다음날 출근했을 때 어제의 작업, 심지어 그동안의 모든 작업이 허사가 되도록 시스템이 주저앉아버린다면 아무런 소용도 없게 된다.
본 문서는 ORACLE사의 RDBMS를 사용하는 사용자 및 운영자들이 적절한 수준에서 백업전략을 수립하고, 이에 맞는 복구전략을 숙지할 수 있도록 가이드를 하는 목적으로 작성하게 되었다.
본 장은 일반적인 데이터베이스 백업전략에 대해 정리해 보았다.

1. DATABASE-데이터베이스 백업

1.1 백업의 개요 및 목적

데 이터베이스 백업이라 함은 기간시스템의 장애가 발생할 경우 이를 복구하기 위한 “보험”과 같은 개념이다. 관계형 데이터베이스를 사용하는데 있어서 가장 큰 장점중의 하나는 데이터베이스의 이상 발생시 언제든지 데이터베이스 RECOVERY를 수행하여 현재의 상황으로 복구할 수 있다는 점이다. 이러한 복구가 가능하기 위해서는 데이터베이스 관리자는 복구가 가능한 상태로 데이터베이스를 운용하여야 한다. 예를 들어 사용자가 NO ARCHIVE MODE로 운용할 경우에는 불행히도 데이터베이스를 처음 생성한 시점이나 전체 백업 받은 시점으로만이 복구가 가능하기 때문이다.
일반적인 경우 백업 정책이 없이 무작정 과다한 양의 백업을 받을 경우 일정 기간이 경과하면 백업에 대한 의미가 희미해지게 되고 정상적인 작업을 수행하지 않을 때, 백업파일이 꼭 필요한 경우 작업을 할 수 없는 경우가 발생할 수도 있다.
데이터베이스 관리자는 백업에 대한 정책을 수립하여 꼭 필요한 데이터를 최소의 약으로 백업을 받고 최소의 시간을 소비- 고객의 MTTR(MEAN TIME TO RECOVERY)을 만족할 수 있는 시간-하면서도 항시 복구가 가능한 상태를 유지하여야 한다.

1.2 주요 고려사항

데 이터베이스는 기존의 파일시스템과는 달리 전체 사용자 OBJECT를 하나의 TABLESPACE로 관리하거나 필요에 따라 나누어 사용 및 관리하므로 백업뿐 아니라 복구 시에도 상당히 주의를 요한다. 만일 ARCHIVE LOG 상태에서 운용하고 있는 상태에서 이상이 발생할 경우 복구작업에 필요한 LOG FILE중에 하나의 파일이라도 없어지거나 사용할 수 없는 경우에는 정상적인 복구가 불가능하게 된다.
이러한 불행한 경우를 방지하기 위해서 DBA는 항시 복구가 가능한 상태로 작업하기 위한 백업정책을 수립하여 정확하게 작업하여야 한다.
또한 24 X 7(1년 365일) DOWN TIME없이 운용되는 시스템의 경우 백업 정책의 수립에 COLD BACKUP과 같은 FULL IMAGE 백업이 불가능 할 수 있기에 HOT BACKUP 혹은 EXPORT를 통한 LOGICAL 백업만이 가능할 수 있다. 이런 제약사항으로 인해 혹시 발생할 수 있는 장애에 적절한 대응을 하지 못할 수 있다.
이러한 결정상황을 파악하여 백업정책 수립에 심혈을 기울여야 할 것이며 , 시스템 운용의 묘를 살려야 할 것이다.
또한 HOT BACKUP등의 ONLINE상에서 데이터베이스를 백업하기 위해서는 반드시 ARCHIVE MODE로 운영되어야 한다.

1.3 백업 전략

DBA 가 어떠한 방법으로 백업을 유지하느냐에 따라 복구 성공률이나 복구 속도 등이 결정된다 물론 매일 작업 종료 후 전체 데이터베이스에 대하여 FULL BACKUP을 한다면 가장 안전한 백업이라고 볼 수 있으나 실질적으로 백업을 받는데 많은 시간을 요구하므로 현실적으로는 불가능한 작업이라 볼 수 있다.

예 : XXX시스템의 특징은 24시간 365일 무중단 운영을 원칙으로 하고 있고, 타 시스템과의 INTERFACE 대상의 DATA LOAD가 야간에 대량으로 발생하며, 정산 및 온라인 통계작업을 통한 대량의 TRANSACTION이 발생한다.이는 다시 말해 COLD BACKUP을 위한 시스템 중단이 사실상 불가능하다는 말과 같다.

이런 시스템의 특성을 반영한 백업시스템 정책은 현실적으로 적용 가능한 HOT BACKUP을 업무가 집중하지 않는 시간에 수행하는 것으로 정하여야 하며, 단위 업무별로 대량의 변화가 발생할 경우에 데이터의 수정 혹은 삭제, 변화가 발생하기 전에 각 단위 팀의 별도 APPLICATION을 통해 데이터 BACKUP을 수행하는 것으로 한다.

가. 업무수행에 지장을 받지 않는 시간대에 HOT BACKUP을 수행한다.
나. 업무변화가 대량으로 발생하기 전에 APPLICATION을 통한 BACKUP수행
다. 자주 read-write되는 tablespace는 자주 online backup을 수행.
라. 데이터베이스에 구조적인 변화가 생기기 前,後로 full backup을 수행.
마. 이전의 backup본을 최소한 2본 이상 가지고 있을 필요가 있다.
바. 특정 테이블들에 대한 data의 입력 오류로 인해 과거 특정 시점으로의 회귀가 필요하거나, 특정 테이블 데이터의 분실로 인해 다시 복귀를 하고자 할 경우를 대비하여 Logical Backup인 Export를 수시로 받아놓도록 한다.
사. Unrecoverable로 Creation된 Object는 redo log file에 logging되지 않기에 이러한 Object들에 대해서는 Export Utility를 사용하여 Backup하도록 하는 것이 좋으며, 초기 생성 후 정상적인 데이터 입력/수정이 이루어질 경우에는 logging으로 변경하도록 한다.

1.4 백업 방법

1.4.1 Physical Backup

물 리적인 데이터베이스 파일을 한 위치에서 다른 위치로 COPY하는 물리적인 복제를 Physical Backup이라 한다. 또한 Physical Backup은 Offline, Online Backup(Without Archiving / With Archiving)으로 나눌 수 있다. 즉 데이터베이스 상태가 Down인 상황에서 Backup을 수행하면 Offline Backup이며 이 백업은 Archive Log파일의 Backup은 불필요하나, 데이터베이스가 Online인 상황에서 Backup을 수행하는 Online Backup인 경우에는 Backup도중에도 Transaction이 발생할 수 있고, 이 기간 중에 발생한 데이터의 보존을 위해 Archive Log를 반드시 백업하고 있어야 한다.

1.4.1.1 Cold Backup (Offline Backup)

데이터베이스를 Shutdown 한 이후 아래와 같은 파일들을 백업 Library로 COPY하여야 한다.

가. DataFiles (V$datafile확인자료)
나. Redo Log Files (V$logfile확인자료)
다. Control Files (V$controlfile확인자료)
라. Parameter Files(initSID.ora, spfileSID, configSID.ora, etc)

1.4.1.2 HOT Backup(Online Backup)

데이터베이스가 구동중인 상태에서 datafile을 복사하는 방식으로 Archive Log Mode로 운영되어야 한다.

SQL> ALTER TABLESPACE …… BEGIN BACKUP;
$ *.DBF의 COPY수행
SQL> ALTER TABLESPACE ….. END BACKUP;

이 런 명령을 수행하는 기간 동안에는 해당 TABLESPACE가 HOTBACKUP MODE로 운영중이어서 해당 TABLESPACE안에 있는 TABLE에 대한 DML이 발생할 경우 DATAFILE WRITE가 불가능하기 때문에 REDO LOG에만 기록하는 기록하게 되고, 백업이 완료된 시점에서 LOG에 저장된 변경사항을 다시 Data file에 기록하기 위해 적지 않은 부하가 발생할 수 있다. 그러므로 ONLINE HOT BACKUP을 수행하는 시간은 작업량이 적고, 사용자의 접근을 최소화 할 수 있는 시간을 선정하여야 하며, 최소한의 시간에 HOT BACKUP을 수행할 수 있어야 한다.

또한 BACKUP의 시작과 끝에는 HOT BACKUP의 시작 바로 전까지 발생한 TRANSACTION의 REDO LOG를 CHANGE하도록 하여 ARCHIVING하도록 한다.또한 BACKUP이 종료한 후에도 LOG CHANGE를 하도록 하여 BACKUP중에 발생한 DATA에 대한 REDO LOG 내 변경분을 DATAFILE에 기록 및 ARCHIVING을 통한 ARCHIVE FILE BACKUP을 동시에 수행할 수 있도록 하여야 한다.

SQL> ALTER SYSTEM ARCHIVE LOG CURRENTS;

1.4.2 Logical Backup

Export Utility를 이용한 데이터 백업은 보통 DML 발생빈도가 높아 데이터블록의 활용도나 Capacity를 높이지 못할 경우 데이터블록을 최적화하기 위해 사용할 수 있고, 사용자의 실수 혹은 구조상의 문제로 인해 데이터의 손실을 최소화하기 위해 데이터의 보존을 목적으로 사용하는 방법이다.

Export Utility를 이용한 데이터 백업방법은 Full, User, Table단위의 Export Mode가 있다.

1.4.3 Archive Log File의 Backup

1.4.3.1 Archive Log Mode 구조

오라클에서 Online Backup을 받거나 완벽한 복구작업을 수행하기 위해서는 데이터베이스를 “Archive Log Mode”로 운영하여야 한다.
오라클의 log File기록방법은 “순환”기록방법을 채택하고 있다. 첫 번째 log File을 기입하고 나면 두 번째 것을 기입하고, 그것이 끝나면 세 번째 log를 기록한다. 그리고 마지막 Online Redo Log File을 쓰고 나면 Log Writer(LGWR)가 첫번째 Log File을 다시 선택하여 덮어쓰기 시작한다.
Oracle Archive Log Mode에서 작동하고 있을 때에는 Archive Background Process(ARCH)는 각각의 Redo Log File을 덮어쓰기 전에 그에 대한 복사본을 지정된 디렉토리에 만들게 된다.


[그림 1 No Archive Log Mode]

CheckPoint가 발생할 때 까지는 Redo Log File은 재사용되지 않으며 ARCH에 의해 물리적으로 Redo Log File은 다시 backup된다.


[그림 2 Archive Log Mode]

1.4.3.2 Archive Mode와 No-Archive Mode의 비교

위 그림에서 보는 바와 같이 Redo Log가 덮어 쓰이기 시작하고 Archive Mode가 아니면 Media Recovery는 마지막으로 Full Backup받은 시점으로 밖에 복구가 불가능 하다. 반면에 Archive Mode로 운영되는 데이터베이스는 가장 나중의 변화까지도 복구가 가능하다. Archive Log Mode로 운영 시 log_archive_dest Directory밑에 Archive File이 계속 발생하여 할당된 Space가 부족할 경우 log Change가 발생하지 않아 데이터베이스가 Hang-Up이 될 수 있으므로 Space관리를 유의하여야 한다.

1.4.3.3 Archive Log의 백업

데이터베이스 백업주기 결정시 archive log의 backup주기도 결정되어야 한다.
Archive log는 O/S Backup 을 통해 보관하고, Archive Log가 너무 많이 발생하지 않도록 Archive Log의 Size 즉 Redo Log의 사이즈를 적절히 조절하여야 복구를 위한 필요시간을 줄일 수 있다.
Archive Log는 데이터베이스 백업수행과는 별도로 Space의 여유분을 Check하여 일정수치 이상 Free Space가 부족할 경우 자동적으로 Copy한 다음 삭제하도록 스케쥴링하여야 한다.

1.5 백업 주기

1.5.1 백업주기의 결정

백업의 주기 및 백업 시기, 시간은 어떠한 백업방법을 적용할 것인가와 어느 정도의 Down Time을 허용할 것인가에 따라 결정된다.
즉 Hot Backup만을 허용하는 사이트에는 Transaction양이 최소화되는 시간을 선택하여 백업을 수행할 것이고, 시스템을 사용할 수 없는 최대한의 시간을 1~3시간으로 선정었다면 복구를 위해 주어진 시간이 1~3시간으로 판단되어 이에 맞는 백업주기가 결정되게 된다.

전체 시스템을 모두 Backup하는데 걸리는 시간을 산정하여야 한다. 예를 들어 전체 시스템을 Hot Backup하는데 걸리는 시간이 최대 3시간이 걸린다 할 경우 이를 3일 주기로 전체시스템을 백업할 수 있도록 나눈다면 하루에 백업에 소요되는 시간은 대략 1시간이 될 것이다.
그런데 3일 주기로 백업의 한 사이클이 종료되는 관계로 월요일에 백업한 테이블스페이스에 속한 데이터파일에 문제가 생긴 시기가 수요일 오후라면 약 이틀간 발생한 Archive Log를 이용하여 복구를 하여야 하는데 DataFile, Archive Log Restore 및 복구를 마치는데 주어진 Down Time안에 해결할 수 있는지 판단하여야 한다.
일반적으로 백업의 주기는 1년,1분기,1월,1일에 두고 주기 및 방법을 정한다. 또한 백업의 주기 뿐 아니라 백업한 Media의 보관 주기 또한 백업 및 복구에 큰 영향을 미치는 요소이다.

1.5.2 백업 주기 별 대상 결정

백업의 주기(일단위,주단위,월단위,분기단위,년단위,기타)별로 백업 대상을 선정하여 백업 매체를 선정하고, 백업대상을 LIST-UP한 다음 백업하도록 한다.

1.5.2.1 백업 주기

요일 대상
백업 대상 A B C D E F ALL
TBS
백업사이즈 354G 296G 338G 354G 296G 338G 998G


다음장에서는 이런 백업전략하에서 발생할 수 있는 다양한 케이스의 장애에 대한 복구전략에 대해 정리하도록 하겠다.
어떻게 보안이 취약한지 그 여부를 알 수 있는 방법을 모르기 때문이다. 또 대부분이 영어일색이다.

무관심 때문


크래커들은 공격할 대상을 찾기 위해 스캐닝이란 작업
스캐닝은 특정 시스템의 보안 취약점을 확인하기 위한 보안 스캐너라는 프로그램 사용
(프리웨어도 있고 보안 컨설팅을 위한 상용 프로그램도 있음)
*보안 권고문 사이트
http://www.securityfocus.com
http://www.securityproof.net

....보안 스캐너를 설치하지 않고 간단하게 확인하는 방법
노턴 안티바이러스로 알려진 시만텍에서 제공하는 보안 점검 서비스
인터넷으로 쉽게 보안 점검을 할 수 있다는 장점
http://security.symantec.com
1.홈페이지 접속
2.secutiry scan 아래 나와 있는 start 클릭
3. activeX controls를 설치 필요가 있다가 나옴. 윈도 xp sp2가 설치되어 있는 경우에 뜬다. 설치하면 된다.
4.클릭하면 프로그램(symantec security check utilites) 설치가 나온다.
5.설치가 끝나면 시스템에 대한 보안 점검이 시작된다.
6. hacker exposure check, windows vulnerability check, trojan horse check 부분이 안전한 것으로 나오면 크래커에 의한 공격을 받을 가능성이 적다는 것을 의미.
antivirus product check는 보안 프로그램이 설치되어 있지 않을 때 at risk(:위험)표시를 한다. 프로그램이 깔려 있어도 뜬다. 자사 제품이 아닌 경우.


.......sygate online service
sygate사에서 제공하는 서비스
위와 달리 6개의 스캐닝 옵션
http://scan.sygate.com
여기서 제공되는 스캐닝 서비스들은 크래커들이 보통 자주 사용하는 스텔스 스캐닝 방법들도 포함되어 있음.
권장 옵션은 Quick scan...이 옵션은 다른 옵션들을 모두 포함하고 있음.

1.사이트에 접속
2.메뉴에서 quick scan
3.scan now를 클릭
4.서버로 사용되는 컴퓨터가 아니라 일반 컴퓨터라면 status부분의 결과가 모두 "blocked"라는 결과가 나와야 한다. 만약 다른 결과가 나올 경우 보안상의 문제를 가지고 있다.


......바이러스/웜 탐지
앞서 symantec security check에서도 서비스를 제공하고 있으며
안철수 연구소 바이러스 검사 온라인 서비스도 있다.
http://home.anlab.com
모든 파일 검사 체크부분을 한 후 검사한다.

시만텍의 경우도 바이러스 검색이 가능한데 이 경우 감염(infected)되었다고 나오면 직접 이 파일을 삭제하면 된다.
바이러스 백신 프로그램의 종류에 따라 바이러스나 웜(복제)하는 것들이 다르게 잡힌다. 완벽한 백신 프로그램은 없으며 백신을 맹신하면 오히려 피해를 입을 수 있다.
가능하다면 2개 이상의 백신프로그램 사용이 더 안전

.........adware / spyware 탐지
이는 사용자 모르게 사용자의 인터넷 상의 각종 활동을 탐지하여 상업적 목적을 노리는 사람에게 보내는 역할

1.ad-aware 가장 대표적 프로그램
lavasoft에서 만든 것
http://www.lavasoftusa.com/support/download/ 에서 무료로 다운
운영체제의 선점형과 비선점형을 아주 간단하게 말하자면

특정 프로세스가 CPU 를 독점하는것이 불가능(운영체제가 강제로 프로세스의 CPU 점유를 제어)하면 선점형
특정 프로세스가 CPU 를 독점하는것이 가능(프로세스가 스스로 CPU 점유를 포기해야만 다른 프로세스가 실행)하면 비선점형,

커널이 짱이냐, 프로세스가 깡패냐로 이해가능 합니다.
선점형은 사전적 의미처럼 프로세스에게 뭘시켜도 커널이 내꺼야 라고 프로세스로 부터 권한을뺏어올수 있습니다.
비선점형은 프로세스가 '걍 배째' 라고 이야기 하면 그냥 그런것. 한마디로 프로세스가 깡패인 상황.

운영체제 책 'Operating Systems : Internals and Design Principles (Fifth Edition), William Stallings 저'를 참고해보면
이것을 스케쥴링 정책의 decision mode라고 부르고있고 정확히 Nonpreemptive(비선점)과 Preemptive(선점)라는 용어를 사용하고 있습니다
.
대표적인 비선점형 스케쥴링 방식으로는 FCFS(First-Come-First-Served)가 있고, 선점형 스케쥴링 방식으로는 Round-Robin이 있습니다.

리눅스 커널은 선점형 멀티태스킹을 하고, 2.4 이하는 비선점형 커널, 2.6은 선점형 커널과 비선점형 커널을 선택할 수 있습니다.

MS윈도우즈3.1은 비선점형 멀티태스킹을 합니다.
한 어플리케이션이 시스템콜 호출, 입출력 사용 등의 방법으로 CPU를 운영체제에 넘겨주지 않으면 혼자서 프로세서를 독점합니다.

+ Recent posts