'분류 전체보기'에 해당되는 글 2491건

  1. 2009.02.09 전 세계 실시간 TV보기 & CCTV 보기
  2. 2009.02.06 오라클 에러코드 확인 사이트
  3. 2009.02.04 myeclipse 이용한 스트럿츠 개발환경
  4. 2009.01.30 우선 BLOB, CLOB을 DB에서 SELECT 해서 사용하는
  5. 2009.01.30 JSP 다운로드 프로그램
  6. 2009.01.30 Oracle Clob를 이용한 예제
  7. 2009.01.30 JSP File Brows
  8. 2009.01.30 아파치 + 리눅스 + 톰켓 설치
  9. 2009.01.30 톰캣 DB connection 관련 Server.xml/Web.xml 설정
  10. 2009.01.30 1.1. SELinux의 이해
  11. 2009.01.30 업로드 응답메시지 : 553 Could not create file. autoftp 2
  12. 2009.01.30 FTP 226 Transfer done (but failed to open directory). 오류해결방법 & SELINUX 관련 설정(FTP관련)
  13. 2009.01.30 파일이름을 일괄적으로 변경
  14. 2009.01.30 html 입력모드 : ime-mode 1
  15. 2009.01.30 Chmod는 권한 설정이다.
  16. 2009.01.30 37장. chmod 편
  17. 2009.01.30 정적 쿼리와 동적 쿼리프로그래밍
  18. 2009.01.30 리눅스 chmod (퍼미션,권한) 1
  19. 2009.01.29 내가 가진 도메인을 이용하여 독립적인 이 메일주소를 만들어 보자.
  20. 2009.01.29 jsp 초보 배우기
  21. 2009.01.29 php 배우기
  22. 2009.01.29 콘솔 테트리스
  23. 2009.01.29 팩토리얼 값 얻기 예제: factorial Method Example
  24. 2009.01.29 eclipse auto ftp error : pedora vsftpd :업로드 응답메시지 : 553 Could not create file. 1
  25. 2009.01.29 [eclipse - 이클립스] Workspace in use or cannot be created, choose a different one. 이라는 메시지가 나타날때
  26. 2009.01.29 Apache Load balancing && Terracotta Sessions Clustering
  27. 2009.01.29 div 모든것...
  28. 2009.01.28 Mysql 자동 백업 하기
  29. 2009.01.28 리눅스 쉘 스크립트
  30. 2009.01.28 스크립트 태그의 CDATA 사용에 대해서
98..Etc/Etc...2009. 2. 9. 10:25
반응형

전 세계 실시간 TV보기 & CCTV 보기

 

나라별 실시간 웹캠 (CCTV) 보기

한국

일본

덴마크

리투아니아

오스트리아

마케도니아

노르웨이

벨기에

불가리아

그레나다

체코

영국

에스토니아

태국

핀란드

프랑스

독일

그리스

헝가리

아이슬란드

대만

미국

호주

이탈리아

슬로바키아

슬로베니아

볼리비아

터키

캐나다

네덜란드

폴란드

포르투갈

루마니아

러시아

이스라엘

멕시코

스페인

스웨덴

스위스

아르헨티나

브라질

중국

파나마

콜롬비아

싱가폴

이집트

남아공

동물캠

라디오

   

나라별 실시간TV 보기

한국

일본

알바니아

안도라

오스트리아

아제르바..

스리랑카

벨기에

불가리아

크로아티아

체코

영국

에스토니아

태국

핀란드

프랑스

독일

그리스

헝가리

아이슬란드

대만

아일랜드

호주

이탈리아

코소보

라트비아

룩셈부르크

터키

몰타

네덜란드

폴란드

포르투갈

루마니아

러시아

우즈베키..

슬로베니아

스페인

스웨덴

스위스

우크라이나

바티칸

베트남

뉴질랜드

캐나다

코스타리카

도미니카

멕시코

푸에트로..

남아공

미국1

미국2

미국3

미국4

미국5

미국6

미국7

미국7

아르헨티나

벨리즈

브라질

칠레

콜롬비아

이집트

쿠바

엘살바도르

아이티

니카라과

파나마

페루

코트디브..

베네수엘라

중국

그루지야

인도

이란

이라크

가나

이스라엘

쿠르디스탄

말레이시아

오만

필리핀

카타르

리비아






------------------------------------------------------------------------

sbs 실시간TV http://0620.tv
mbc 실시간TV http://0620.tv
kbs 실시간TV http://0620.tv
ebs 실시간TV http://0620.tv
미국 실시간TV http://0620.tv
영국 실시간TV http://0620.tv
일본 실시간TV http://0620.tv
캐나다 실시간TV http://0620.tv
중국 실시간TV http://0620.tv
헝가리 실시간TV http://0620.tv
스포츠 실시간TV http://0620.tv
축구 실시간TV http://0620.tv
유럽축구 실시간TV http://0620.tv
홈쇼핑 실시간TV http://0620.tv
아프리카 실시간TV http://0620.tv
호주 실시간TV http://0620.tv
일본TV 실시간TV http://0620.tv
미국드라마 실시간TV http://0620.tv
영화 실시간TV http://0620.tv
체코 실시간TV http://0620.tv
전세계 실시간TV http://0620.tv
벨기에 실시간TV http://0620.tv
축구중계 실시간TV http://0620.tv
야구중계 실시간TV http://0620.tv
메이저리그 실시간TV http://0620.tv
NBA 실시간TV http://0620.tv
싸이클 실시간TV http://0620.tv
이종격투기 실시간TV http://0620.tv
K1 실시간TV http://0620.tv
WWE 실시간TV http://0620.tv
bbc 실시간TV http://0620.tv
미국espn 실시간TV http://0620.tv
맨체스터 실시간TV http://0620.tv
아프리카 실시간TV http://0620.tv
아시아 실시간TV http://0620.tv
유럽 실시간TV http://0620.tv
폴란드 실시간TV http://0620.tv
프랑스 실시간TV http://0620.tv
축구채널 실시간TV http://0620.tv
이탈리아 실시간TV http://0620.tv
프리미어리그 실시간TV http://0620.tv
실시간중계 실시간TV http://0620.tv
실시간 축구중계 실시간TV http://0620.tv
스위스 실시간TV http://0620.tv
스페인 실시간TV http://0620.tv
일본쇼프로 실시간TV http://0620.tv
독일 실시간TV http://0620.tv
음악방송 실시간TV http://0620.tv
뮤직비디오 실시간TV http://0620.tv
MTV 실시간TV http://0620.tv
기독교방송 실시간TV http://0620.tv
전세계 기독교채널 실시간TV http://0620.tv
종교 실시간TV http://0620.tv
프라이드 실시간TV http://0620.tv
박지성 축구 실시간TV http://0620.tv
맨체스터유나이티드 실시간TV http://0620.tv
맨유 실시간TV http://0620.tv
이영표 실시간TV http://0620.tv
이동국 축구 실시간TV http://0620.tv
미들스브로 실시간TV http://0620.tv
다큐멘터리 실시간TV http://0620.tv
네덜란드 실시간TV http://0620.tv
케이블TV 실시간TV http://0620.tv
생방송 실시간TV http://0620.tv
실시간 축구중계 실시간TV http://0620.tv
인터넷 축구중계 실시간TV http://0620.tv
유럽축구 실시간TV http://0620.tv
축구방송 실시간TV http://0620.tv
힙합 방송 실시간TV http://0620.tv
무료 실시간TV http://0620.tv
챔피언스리그 실시간TV http://0620.tv
일본방송 실시간TV http://0620.tv
일본TV 쇼프로 실시간TV http://0620.tv
실시간 웹캠 실시간TV http://0620.tv
웹캠 실시간TV http://0620.tv
라이브 웹캠 실시간TV http://0620.tv
전세계 라이브웹캠 실시간TV http://0620.tv
Live 웹캠
실시간 라디오 실시간TV http://0620.tv
전세계 음악 실시간TV http://0620.tv
재즈 실시간TV http://0620.tv
Live TV 실시간TV http://0620.tv
만화 실시간TV http://0620.tv
전세계 홈쇼핑 실시간TV http://0620.tv
외국 홈쇼핑 채널 실시간TV http://0620.tv
익스트림 채널 실시간TV http://0620.tv
알바니아 실시간TV http://0620.tv
브라질 실시간TV http://0620.tv

Posted by 1010
02.Oracle/DataBase2009. 2. 6. 14:30
반응형
오라클 에러코드 확인 사이트

http://www.oracle.com/pls/db92/db92.error_search?remark=homepage&prefill=ORA
http://download-west.oracle.com/docs/cd/B12037_01/server.101/b10744/toc.htm

ora-00000     성공적인 정상 종료입니다.
ora-00001     유일성 제약조건(%s.%s)에 위배됩니다.
ora-00017     트레이스 이벤트 설정이 세션에 요구되었습니다.
ora-00018     최대 세션 수를 초과했습니다.
ora-00019     최대 세션 라이선스 수를 초과했습니다.
ora-00020     최대 프로세스 수(%s)를 초과했습니다.
ora-00021     세션이 다른 프로세스에 첨부되어 있음; 세션을 변경할 수 없습니다.
ora-00022     부적절한 세션 번호; 액세스가 거절되었습니다.
ora-00023     세션이 프로세스 고유의 메모리를 참조함; 세션을 분리할 수 없습니다.
ora-00024     단일 프로세스 모드에서는 하나 이상의 프로세스가 로그인할 수 없습니다.
ora-00025     %s에 메모리를 할당하는데 실패했습니다.
ora-00026     누락 혹은 부적합한 세션 번호
ora-00027     현 세션을 제거할 수 없습니다.
ora-00028     세션이 제거되었습니다.
ora-00029     사용자 세션이 아닙니다.
ora-00030     사용자 세션 id가 존재하지 않습니다.
ora-00031     세션이 중단될 것입니다.
ora-00032     부적합한 세션 migration password
ora-00033     현세션이 migration password를 갖고있지 않습니다.
ora-00034     pl/sql 세션에서 %s를 할 수 없습니다.
ora-00035     license_max_users가 현재의 사용자 수보다 적을 수 없습니다.
ora-00050     엔큐를 하는 동안 o/s 오류가 발생했음. o/s 오류를 확인하십시오
ora-00051     자원 대기 중 시간 초과입니다.
ora-00052     최대 엔큐 자원 수(%s)를 초과했습니다.
ora-00053     최대 엔큐 수를 초과했습니다.
ora-00054     자원이 사용중이고, nowait가 지정되어 있습니다.
ora-00055     최대 dml 잠금 수를 초과했습니다.
ora-00056     개체 %s.%s에 대한 ddl 잠금이 비호환 모드로 되어 있습니다.
ora-00057     최대 임시 테이블 잠금 수가 초과했습니다.
ora-00058     이 데이타베이스를 마운트하기 위해서 db_block_size가 %s이어야 함(%s 아님).
ora-00059     최대 db_files 수를 초과했습니다.
ora-00060     자원 대기중 데드록이 검출되었습니다.
ora-00061     다른 하나의 인스턴스가 다른 dml_locks을 설정하고 있습니다.
ora-00062     dml 전(full) 테이블 잠금을 취할 수 없습니다. dml_locks은 0 입니다.
ora-00063     최대 log_files 수를 초과했습니다.
ora-00064     현 o/s (%s,%s)에 할당하기에는 개체가 너무 큽니다.
ora-00065     fixed_date의 초기화에 실패했습니다.
ora-00066     log_files는 %s이지만 호환성을 위해 %s 이어야합니다.
ora-00067     값 %s은 파라미터 %s에 대해 부적당하며, 최소한 %s 이어야 합니다.
ora-00068     값 %s은 파라미터 %s에 대해 부적당하며, %s와 %s 사이의 값이어야 합니다.
ora-00069     잠글 수 없습니다 -- %s에 대해 테이블 잠금을 할 수 없습니다.
ora-00070     명령어 %s 은 적당하지 않습니다.
ora-00071     프로세스 번호은 1 과 %s 사이어야 합니다.
ora-00072     프로세스 %s 은 활동적인 것이 아닙니다.
ora-00073     명령어 %s은 %s 와 %s 인수를 가지고 옵니다.
ora-00074     지정된 프로세스가 없습니다.
ora-00075     프로세스 %s 은 이 인스턴스에서 찾을 수 없습니다.
ora-00076     덤프 %s 을 찾을 수 없습니다.
ora-00077     덤프 %s 은 적당하지 않습니다.
ora-00078     이 이름으로 변수를 덤프 할 수 없습니다.
ora-00079     변수 %s 가 없습니다.
ora-00080     레벨 %s 로 지정된 글로벌 영역이 부적당합니다.
ora-00081     주소 범위 [%s, %s)은 읽기가능한 것이 아닙니다.
ora-00082     %s의 메모리 크기는 적당한 [1], [2], [4]%s%s%s%s%s의 설정으로 되어 있지 않습니다.
ora-00083     경고: 맵된 sga가 손상한것 같습니다.
ora-00084     글로벌 영역이 pga, sga, 또는 uga 이어야만 합니다.
ora-00085     현재 호출이 존재하지 않습니다.
ora-00086     사용자 호출이 존재하지 않습니다.
ora-00097     oracle sql 기능에서 사용하고 있는것이 sql92 %s 레벨서 존재하고 있지 않습니다.
ora-00100     데이터가 없습니다.
ora-00101     시스템 파라미터 mts_dispatchers에 대한 사용 문법이 부적합합니다.
ora-00102     %s 네트워크 프로토콜이 디스패쳐에 의해 사용될 수 없습니다.
ora-00103     부적합한 네트워크 프로토콜; 디스패쳐에 의해 사용되도록 예약되었음
ora-00104     데드록이 검출되었음; 모든 공유서버가 자원을 기다리고 있습니다.
ora-00105     디스패칭 기법이 %s 네트워크 프로토콜을 지원하도록 되어있지 않습니다.
ora-00106     디스패쳐에 연결되었을때는 데이타베이스를 기동/중지시킬 수 없습니다.
ora-00107     oracle의 리스너 프로세스에 연결하지 못했습니다.
ora-00108     비동기 연결이 가능하도록 디스패쳐를 설정하지 못했습니다.
ora-00111     최대 서버수는 %s입니다; %s개의 서버 추가중
ora-00112     경고: %s (지정 최대치) 디스패쳐만으로 생성되었습니다.
ora-00113     프로토콜명 %s가 너무 깁니다.
ora-00114     시스템 파라미터 mts_service에 대한 값이 없습니다.
ora-00115     연결이 거절됨; 디스패쳐 연결 레이블이 full 상태입니다.
ora-00116     mts_service명이 너무 깁니다.
ora-00117     시스템 파라미터 mts_servers의 범위를 벗어납니다.
ora-00118     시스템 파라미터 mts_dispatchers의 범위를 벗어납니다.
ora-00119     mts_listener_address 시스템 파라미터에 지정이 부적합합니다.
ora-00120     디스패칭 기법이 사용불가 혹은 설치되어있지 않습니다.
ora-00121     mts_dispatchers를 제외하고 mts_servers가 지정되었습니다.
ora-00122     네트워크 구성을 초기화할 수 없습니다.
ora-00123     비작업중인 공유 서버를 종료합니다.
ora-00124     mts_dispatchers가 mts_max_servers 없이 지정되었습니다.
ora-00150     중복된 트랜잭션 id
ora-00151     부적합한 트랜잭션 id
ora-00152     현 세션이 요구된 세션과 일치하지 않습니다.
ora-00200     제어 화일 %s을 생성할 수 없습니다.
ora-00201     제어 화일 버전 %s은 oracle 버전 %s과 호환되지 않습니다.
ora-00202     제어화일: %s
ora-00203     잘못된 제어화일을 사용하였습니다.
ora-00204     제어 화일 %s (블록 %s, 블록 수 %s) 읽기 오류입니다.
ora-00205     제어 화일 %s 식별 오류입니다.
ora-00206     제어 화일 %s (블록 %s, 블록 수 %s) 쓰기 오류입니다.
ora-00207     제어화일이 현재 사용중인 데이타베이스용이 아닙니다.
ora-00208     제어 화일명이 최대수 %s 를 초과했습니다.
ora-00209     블록 크기 %s 가 최대 %s 바이트를 초과했습니다.
ora-00210     제어 화일 %s 를 열 수 없습니다.
ora-00211     제어 화일 %s 가 앞의 제어 화일과 일치하지 않습니다.
ora-00212     블록 크기 %s가 최소한 필요한 크기 %s 바이트 미만입니다.
ora-00213     제어 화일 %s 재사용 불가; 구 화일 크기 %s, %s가 필요합니다.
ora-00214     제어 화일 %s의 버전 %s는 화일 %s 버전 %s와 일치하지 않습니다.
ora-00215     적어도 한 개의 제어 화일이 필요합니다.
ora-00216     제어 화일 %s 에 대한 물리 블록 크기를 확정할 수 없습니다.
ora-00217     제어 화일 %s의 물리적 블록 크기 %s가 %s와 일치하지 않습니다.
ora-00218     제어 화일 %s는 블록 크기를 %s로 작성되었지만 현재는 %s 입니다.
ora-00219     필요한 제어 화일 크기 %s 가 최대치 %s 보다 큽니다.
ora-00220     제어화일 %s가 첫 인스턴스에 의해 사용한 것과 일치하지 않습니다.
ora-00221     제어화일에의 쓰기오류
ora-00222     디스패쳐로 제어화일을 조회할 수 없습니다.
ora-00223     변환 데이타화일이 부적합하거나 틀린 버전입니다.
ora-00224     명시된 화일이 제어 화일이 아닙니다.
ora-00225     기대된 크기 %s 은( 제어화일 %s 관한) 실제 크기 %s 와 다릅니다.
ora-00250     아카이버가 작동되지 않았습니다.
ora-00251     사용되지 않는 오류
ora-00252     로그 %s (쓰레드 %s의)는 비었습니다. 아카이브할 수 없습니다.
ora-00253     제한치 %s가 길이 %s로 초과되었습니다 (아카이브 스트링 %s의)
ora-00254     아카이브 제어 스트링 %s 오류입니다.
ora-00255     로그 %s(쓰레드 %s, 시퀀스 번호 %s)의 아카이브 오류
ora-00256     아카이브 텍스트 스트링 %s의 변환시 오류가 발생했습니다.
ora-00257     아카이버 오류. 해제되기 전에는 내부 연결만 가능
ora-00258     noarchivelog 모드에서의 수동 아카이브는 로그를 지정해야합니다.
ora-00259     로그 %s(개방 쓰레드 %s의)가 현재 로그이므로 아카이브할 수 없습니다.
ora-00260     온라인 로그 시퀀스 %s(쓰레드 %s의)를 발견할 수 없습니다.
ora-00261     로그 %s(쓰레드 %s의)가 아카이브중이거나 수정중입니다.
ora-00262     현재 로그 %s(닫힌 쓰레드 %s의)를 스위치할 수 없습니다.
ora-00263     쓰레드 %s를 위해 아카이빙이 필요한 로그가 없습니다.
ora-00264     복구가 필요하지 않습니다.
ora-00265     인스턴스 복구가 요구됩니다. archivelog모드를 지정할 수 없습니다.
ora-00266     아카이브된 로그 화일의 이름을 필요로 합니다.
ora-00267     아카이브된 로그 화일의 이름을 필요로 하지 않습니다.
ora-00268     지정된 로그화일이 존재하지 않습니다 %s
ora-00269     지정된 로그화일은 쓰레드 %s의 (%s가 아닌) 부분임
ora-00270     아카이브 로그 생성시 오류
ora-00271     아카이브를 필요로 하는 로그가 없습니다.
ora-00272     아카이브 로그 기록시 오류
ora-00273     로그되지 않은 직접 로드 데이타의 매체 복구
ora-00274     부적절한 복구 옵션 %s
ora-00275     매체 복구가 이미 시작되었습니다.
ora-00276     키워드 change가 지정되었으나 변환 번호가 주어지지 않았습니다.
ora-00277     until 복구 플래그 %s에 부적절한 옵션
ora-00278     현 복구를 위해 로그화일 %s는 더이상 필요하지 않습니다.
ora-00279     변환 %s가 (%s에서 생성된) 쓰레드 %s에 필요합니다.
ora-00280     변환 %s(쓰레드 %s를 위한)가 시퀀스번호 %s에 있습니다.
ora-00281     매체 복구는 디스패쳐를 사용하여 수행되지 않습니다.
ora-00282     upi %s 호출이 지원되지 않으니, alter database recover를 사용하십시요
ora-00283     복구 세션이 오류로 인하여 취소되었습니다.
ora-00284     복구 세션이 진행중입니다.
ora-00285     time 키워드가 지정되었으나 시간이 주어지지 않았습니다.
ora-00286     이용가능한 멤버가 없거나, 적합한 데이타를 포함하고 있지 않습니다.
ora-00287     지정된 변환 번호 %s가 쓰레드 %s에 없습니다.
ora-00288     복구를 계속하려면 alter database recover continue를 입력하십시요
ora-00289     제안 : %s
ora-00290     로그화일을 아카이브 하려고 할때, o/s 오류가 발생했습니다.
ora-00291     parallel 옵션에 숫자값이 필요로합니다.
ora-00292     병렬 복구 기능이 설치되지 않았습니다.
ora-00293     제어 화일과 리두로그가 동기화 상태에서 벗어나 있습니다.
ora-00300     부적합한 리두 로그 블록 크기 %s가 지정됨 - 한계 %s 초과
ora-00301     로그 화일 %s를 추가 작성할 수 없습니다.
ora-00302     로그의 최대수 %s 를 초과했습니다.
ora-00304     요구된 인스턴스 번호는 사용중입니다.
ora-00305     로그 %s(쓰레드 %s의)는 일관되지 않습니다. 이것은 다른 데이타베이스에 속합니다.
ora-00306     이 데이타베이스에서는 %s 인스턴스가 한계입니다.
ora-00307     요구된 인스턴스 번호가 범위를 벗어납니다(최대치는 %s)
ora-00308     아카이브된 로그 %s를 열 수 없습니다.
ora-00309     로그가 잘못된 데이타베이스에 속해 있습니다.
ora-00310     아카이브된 로그는 시퀀스 %s를 포함하고 있습니다 시퀀스 %s가 필요합니다.
ora-00311     아카이브 로그로부터 헤더 정보를 읽을 수 없습니다.
ora-00312     온라인 로그 %s 쓰레드 %s: %s
ora-00313     로그 그룹 %s (쓰레드 %s의)의 멤버를 여는데 실패했습니다.
ora-00314     로그 %s(쓰레드 %s의, 시퀀스번호가 %s일)는 %s와 일치하지 않습니다.
ora-00315     로그 %s (쓰레드 %s의) 헤더의 쓰레드 번호 %s가 틀립니다.
ora-00316     로그 %s (쓰레드 %s의) 헤더내의 유형 %s는 로그화일이 아닙니다.
ora-00317     헤더에 있는 화일형 %s가 로그화일이 아닙니다.
ora-00318     로그 %s (쓰레드 %s의, 화일 크기가 %s인)가 %s와 맞지 않습니다.
ora-00319     로그 %s(쓰레드 %s의)가 틀린 로그 재설정 상태를 가지고 있습니다.
ora-00320     로그 %s(쓰레드 %s의)로부터 화일 헤더를 읽을 수 없습니다.
ora-00321     로그 %s(쓰레드 %s의)에서 로그화일 헤더를 수정할 수 없습니다.
ora-00322     로그 %s(쓰레드 %s의)는 현시점의 것이 아닙니다.
ora-00323     쓰레드 %s의 현 로그는 사용불가하며, 나머지 전부도 아카이브하여야 합니다.
ora-00324     로그 화일 %s의 변환명 %s가 너무 깁니다, 문자수 %s가 %s를 초과했습니다.
ora-00325     쓰레드 %s으로 아카이브된 로그가 헤더내에 틀린 쓰레드 번호 %s를 가지고 있습니다.
ora-00326     변환 %s에서 시작된 아카이브 로그, 이전의 변환 %s를 필요로 합니다.
ora-00327     로그 %s(쓰레드 %s의), 물리적인 크기 %s가 필요한 %s보다 작습니다.
ora-00328     변환 %s에서 끝난 아카이브 로그, 이후의 변환 %s를 필요로 합니다.
ora-00329     변환 %s에서 시작된 아카이브 로그, 변환 %s를 필요로 합니다.
ora-00330     변환 %s에서 끝난 아카이브 로그, 변환 %s를 필요로 합니다.
ora-00331     로그 버전 %s가 oracle 버전 %s와 호환성이 없습니다.
ora-00332     아카이브된 로그가 너무 작음 - 완전하게 아카이브되지 않았습니다.
ora-00333     재실행 로그 읽기 오류(블록 %s 카운트 %s)
ora-00334     아카이브된 로그: %s
ora-00335     온라인 로그 %s: 이 번호의 로그가 존재하지 않습니다.
ora-00336     로그 화일의 크기 %s가 최소 블록 수 %s 보다 작습니다.
ora-00337     로그 화일 %s가 존재하지 않고 크기가 지정되어 있지 않습니다.
ora-00338     로그 %s(쓰레드 %s의)가 제어화일보다 최근의 것입니다.
ora-00339     아카이브 로그가 redo 로그를 포함하고 있지 않습니다.
ora-00340     온라인 로그 %s(쓰레드 %s의) 처리시 io 오류입니다.
ora-00341     로그 %s(쓰레드 %s의)에 대한 헤더내에 로그 번호 %s가 틀립니다.
ora-00342     아카이브된 로그가 마지막 resetlogs 전에 생성되었습니다.
ora-00343     너무 많은 오류 발생, 로그 멤버가 클로즈됐습니다.
ora-00344     온라인 로그 %s를 재생성할 수 없습니다.
ora-00345     redo 로그 쓰기(write) 오류, 블록 %s 카운트 %s
ora-00346     로그 멤버가 stale로 표시되었습니다.
ora-00347     로그 %s(쓰레드 %s의)의 예상 블록크기 %s는 %s와 일치하지 않습니다.
ora-00348     단일 프로세스 redo 실패입니다 인스턴스를 중지해야 합니다.
ora-00349     %s 의 블록 크기 확보 실패입니다.
ora-00350     로그 %s(쓰레드 %s의)를 아카이브해야 합니다.
ora-00351     지정된 시간으로의 복구가 불가능합니다.
ora-00352     쓰레드 %s에 대한 모든 로그가 아카이브되어야 함 - 가용화할 수 없습니다.
ora-00353     블록 %s 변경 %s 시간 %s 부근에서 로그가 깨졌습니다.
ora-00354     redo 로그의 블록헤더가 깨짐
ora-00355     변환 번호가 잘못됨
ora-00356     변환 설명내에 일치하지 않는 길이
ora-00357     로그화일에 너무 많은 수의 멤버가 지정됨 (최대치는 %s)
ora-00358     너무 많은 화일 멤버가 지정됨 (최대치는 %s)
ora-00359     로그화일 그룹 %s가 존재하지 않습니다.
ora-00360     로그화일 멤버가 아닙니다 %s
ora-00361     마지막 로그 멤버 %s는 그룹 %s를 옮길수 없습니다.
ora-00362     그룹 %s내에 정당한 로그화일을 형성하기 위해 멤버를 필요로 합니다.
ora-00363     로그가 아카이브 버전이 아닙니다.
ora-00364     새로운 로그 멤버에 헤더를 기록할 수 없습니다.
ora-00365     지정한 로그가 다음 로그가 아닙니다.
ora-00366     로그 %s, 쓰레드 %s의, 화일 헤더에 체크섬 오류가 있습니다.
ora-00367     로그 화일 헤더에 체크섬 오류가 있습니다.
ora-00368     리두 로그 블록에 체크섬 오류가 있습니다.
ora-00369     쓰레드 %s의 현재 로그는 사용불가이며 다른 로그가 지워지고 있습니다.
ora-00370     kcbchange 작업수행시 데드록의 가능성이 있습니다.
ora-00371     빈 버퍼의 사용이 불가합니다.
ora-00372     화일 %s는 지금 수정될 수 없습니다.
ora-00373     온라인 로그 버전 %s가 oracle 버전 %s와 호환되지 않습니다.
ora-00374     지정된 파라미터 db_block_size = %s 가 부적절함 - 가능한 범위[%s..%s]
ora-00375     디폴트 db_block_size의 값을 얻을수 없습니다.
ora-00376     현재 화일 %s를 읽을 수 없습니다.
ora-00390     로그 %s(쓰레드 %s의)는 지워질것이므로 현재 로그가 될 수 없습니다.
ora-00391     전체 쓰레드는 동시에 새로운 로그 포맷으로 전환해야 합니다.
ora-00392     로그 %s(쓰레드 %s의)는 지워질것이므로 작업이 허용되지 않습니다.
ora-00393     오프라인 데이타화일 복구에 로그 %s(쓰레드 %s의)가 필요합니다.
ora-00400     release 값 %s는 파라미터 %s에 부적절합니다.
ora-00401     이번 release에서 지원되지 않은 파라미터 %s에 대한 값입니다.
ora-00402     %s release에 변경된 데이타베이스는 %s release에 사용될 수 없습니다.
ora-00403     %s (%s) 는 다른 인스턴스(%s)와 같지 않습니다.
ora-00404     변환 데이타 화일이 없습니다 %s
ora-00405     호환 가능한 유형 %s
ora-00406     compatible 파라미터는 %s 이상이어야 합니다.
ora-00407     릴리즈 %s.%s 에서 %s.%s로 향상이 허용되지 않습니다.
ora-00408     파라미터 %s는 true로 설정되었습니다.
ora-00436     oracle이 라이센스되어 있지 않습니다 oracle사에 연락해 주십시오.
ora-00437     oracle의 기능이 라이센스되어 있지 않습니다. oracle사에 연락해 주십시오
ora-00443     백그라운 프로세스 %s가 시작되지 않았습니다.
ora-00444     백그라운드 프로세스 %s 기동중 장애가 발생했습니다.
ora-00445     백그라운드 프로세스 %s가 %s초 후 기동되지 않았습니다.
ora-00446     백그라운드 프로세스가 부적절하게 기동되었습니다.
ora-00447     백그라운드 프로세스에 치명적인 오류가 발생했습니다.
ora-00448     백그라운드 프로세스가 정상 종료했습니다.
ora-00449     백그라운드 프로세스 %s 가 오류 %s 와 함께 종료되었습니다.
ora-00470     lgwr 프로세스가 오류로 종료되었습니다.
ora-00471     dbwr 프로세스가 오류로 종료되었습니다.
ora-00472     pmon 프로세스가 오류로 종료되었습니다.
ora-00473     arch 프로세스가 오류로 종료되었습니다.
ora-00474     smon 프로세스가 오류로 종료되었습니다.
ora-00475     trwr 프로세스가 오류로 종료되었습니다.
ora-00476     reco 프로세스가 오류로 종료되었습니다.
ora-00477     snp* 프로세스가 오류로 종료되었습니다.
ora-00480     lck* 프로세스가 오류로 종료되었습니다.
ora-00483     정지 처리중 프로세스가 오류로 종료되었습니다.
ora-00568     인터럽트 처리기의 최대수를 초과했습니다.
ora-00574     osndnt: $cancel 실패 (break)
ora-00575     osndnt: $qio 실패 (send out-of-band break)
ora-00576     인-밴드 브레이크 프로토콜 오류
ora-00577     아웃-밴드 브레이크 프로토콜 오류
ora-00578     재설정 프로토콜 오류
ora-00579     osndnt: 서버가 잘못된 연결요구를 받았습니다.
ora-00580     프로토콜 버전이 일치하지 않습니다.
ora-00581     osndnt: 문맥 영역을 할당할 수 없습니다.
ora-00582     osndnt: 문맥 영역을 해제할 수 없습니다.
ora-00583     osndnt: $trnlog 실패
ora-00584     연결을 끊을 수 없습니다.
ora-00585     잘못된 유형의 호스트명입니다.
ora-00586     osndnt: lib$asn_wth_mbx 실패
ora-00587     원격 호스트에 연결할 수 없습니다.
ora-00588     호스트로부터의 메시지가 너무 짧습니다.
ora-00589     호스트로부터의 메시지가 잘못된 데이타 길이를 갖습니다.
ora-00590     호스트로부터의 메시지가 잘못된 데이타 유형을 갖습니다.
ora-00591     틀린 바이트 수가 기록되었습니다.
ora-00592     osndnt: $qio 실패 (mailbox queue)
ora-00593     osndnt: $dassgn 실패 (network device)
ora-00594     osndnt: $dassgn 실패 (mailbox)
ora-00595     osndnt: $qio 실패 (receive)
ora-00596     osndnt: $qio 실패 (send)
ora-00597     osndnt: $qio 실패 (mailbox requeue)
ora-00598     osndnt: $qio 실패 (mailbox read)
ora-00600     내부 오류 코드, 인수 : [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]
ora-00601     크린업 잠금이 충돌했습니다.
ora-00602     내부 프로그래밍 오류입니다 - bug로 등록하세요
ora-00603     oracle 서버 세션이 치명적인 오류로 종료되었습니다.
ora-00604     순환 sql 레벨 %s 에 오류가 발생했습니다.
ora-00606     내부 오류코드
ora-00701     데이타베이스의 기동에 필요한 개체를 변경할 수 없습니다.
ora-00702     부트스트랩 버전 %s가 버전 %s와 일치하지 않습니다.
ora-00703     행 캐쉬 인스턴스 잠금의 최대 수를 초과했습니다.
ora-00704     부트스트랩 프로세스 실패
ora-00816     오류 메세지 해석 오류입니다.
ora-00900     sql 문이 부적합합니다.
ora-00901     create 명령어가 부적합합니다.
ora-00902     데이타유형이 부적합합니다.
ora-00903     테이블명이 부적합합니다.
ora-00904     열명이 부적합합니다.
ora-00905     키워드가 없습니다.
ora-00906     좌괄호가 없습니다.
ora-00907     우괄호가 없습니다.
ora-00908     null 키워드가 없습니다.
ora-00909     인수의 개수가 부적합합니다.
ora-00910     데이타형에 지정된 길이가 너무 깁니다.
ora-00911     문자가 부적합합니다.
ora-00913     값의 수가 너무 많습니다.
ora-00914     add 키워드가 없습니다.
ora-00915     네트워크을 통한 dictionary table 액세스는 허가되지 않습니다.
ora-00917     코머가 누락되었습니다.
ora-00918     열의 정의가 애매합니다.
ora-00919     함수가 부적합합니다.
ora-00920     관계 연산자가 부적합합니다.
ora-00921     sql 명령어가 불완전합니다.
ora-00922     옵션이 부적합하거나 없습니다.
ora-00923     from 키워드가 있어야할 곳에 없습니다.
ora-00924     by 키워드가 없습니다.
ora-00925     into 키워드가 없습니다.
ora-00926     values 키워드가 없습니다.
ora-00927     등호가 없습니다.
ora-00928     select 키워드가 없습니다.
ora-00929     마침표(.)가 없습니다.
ora-00930    
ora-00931     식별자가 없습니다.
ora-00932     데이타 유형이 일치하지 않습니다.
ora-00933     sql 명령어가 올바르게 종료되지 않았습니다.
ora-00934     그룹 함수는 허가되지 않습니다.
ora-00935     그룹 함수의 내포 레벨이 너무 깊습니다.
ora-00936     식이 없습니다.
ora-00937     단일 그룹의 그룹 함수가 아닙니다.
ora-00938     함수의 인수가 충분하지 않습니다.
ora-00939     함수의 인수가 너무 많습니다.
ora-00940     alter 명령어가 부적합합니다.
ora-00941     클러스터 명이 없습니다.
ora-00942      테이블 또는 뷰가 존재하지 않습니다.
ora-00943     클러스터가 존재하지 않습니다.
ora-00944     클러스터 열의 수가 충분하지 않습니다.
ora-00945     지정한 클러스터 열이 존재하지 않습니다.
ora-00946     to 키워드가 없습니다.
ora-00947     값의 수가 충분하지 않습니다.
ora-00948     alter cluster 문은 제공되어 있지 않습니다.
ora-00949     원격 데이타베이스는 참조할 수 없습니다.
ora-00950     drop 옵션이 부적합합니다.
ora-00951     클러스터가 비어 있지 않습니다.
ora-00952     group 키워드가 없습니다.
ora-00953     색인명이 부적합합니다.
ora-00954     identified 키워드가 없습니다.
ora-00955     이미 사용된 개체명입니다.
ora-00956     감사 옵션이 부적합하거나 없습니다.
ora-00957     열명이 중복되었습니다.
ora-00958     check 키워드가 없습니다.
ora-00959     테이블 영역 %s 가 존재하지 않습니다.
ora-00960     선택 리스트에 애매한 열명이 있습니다.
ora-00962     너무 많은 group-by / order-by 식이 있습니다.
ora-00964     from 리스트에 테이블명이 없습니다.
ora-00965    
ora-00966     table 키워드가 없습니다.
ora-00967     where 키워드가 없습니다.
ora-00968     index 키워드가 없습니다.
ora-00969     on 키워드가 없습니다.
ora-00970     with 키워드가 없습니다.
ora-00971     set 키워드가 없습니다.
ora-00972     식별자의 길이가 너무 깁니다.
ora-00973     행수의 추정이 잘못되었습니다.
ora-00974     pctfree 값(백분율)이 부적합합니다.
ora-00975     날짜와 날짜의 가산은 할 수 없습니다.
ora-00976     level, prior, rownum 은 사용 할 수 없습니다.
ora-00977     감사 옵션이 중복되었습니다.
ora-00978     group by 구 없이 그룹 함수가 내포되었습니다.
ora-00979     group by 의 식이 없습니다.
ora-00980     동의어의 해석이 불가능합니다.
ora-00981     테이블 및 시스템 감사 옵션은 함께 지정될 수 없습니다.
ora-00982    
ora-00984     열을 사용할 수 없습니다.
ora-00985     프로그램명이 부적합합니다.
ora-00986     그룹명이 부적합하거나 없습니다.
ora-00987     사용자명이 부적합하거나 없습니다.
ora-00988     암호가 틀립니다.
ora-00989     사용자명에 대한 암호가 너무 많습니다.
ora-00990     권한이 부적합합니다.
ora-00991     mac 권한만이 프로시저에게 권한부여해 줍니다.
ora-00992     revoke 명령어의 형식이 부적합합니다.
ora-00993     grant 키워드가 없습니다.
ora-00994     option 키워드가 없습니다.
ora-00995     동의어의 식별자가 부적합합니다.
ora-00996     연접 연산자는 | 이 아니고 || 입니다.
ora-00997     long 데이타 유형은 사용할 수 없습니다.
ora-00998     이 식은 열의 별명과 함께 지정해야 합니다.
ora-00999     뷰명이 부적합합니다.
ora-01000     최대 열기 커서 수를 초과했습니다.
ora-01001     커서가 부적합합니다.
ora-01002     인출 시퀀스가 틀립니다.
ora-01003     해석된 문이 없습니다.
ora-01004     디폴트 사용자명 사용 불가. 로그온이 허락되지 않습니다.
ora-01005     널 암호가 입력되었습니다 로그온이 허락되지 않습니다.
ora-01006     바인드 변수가 없습니다.
ora-01007     변수가 선택 리스트에 없습니다.
ora-01008     모든 한계변수가 아닙니다.
ora-01009     필수 파라미터가 없습니다.
ora-01010     oci 조작이 부적합합니다.
ora-01011     v6 서버와 교신할때 v7 호환성 모드를 사용할 수 없습니다.
ora-01012     로그온되어 있지 않습니다.
ora-01013     현 조작의 취소가 요구되었습니다.
ora-01014     oracle의 정지 처리가 진행중입니다.
ora-01015     로그온이 순환적으로 호출되었습니다.
ora-01016     이함수는 인출 이후에만 호출될 수 있습니다.
ora-01017     사용자명/암호가 부적합, 로그온할 수 없습니다.
ora-01018     long 데이타 유형의 열이 아닙니다.
ora-01019     사용자쪽의 기억영역을 할당할 수 없습니다.
ora-01020     문맥의 상태가 불명확합니다.
ora-01021     지정한 문맥 크기가 부적합합니다.
ora-01022     이 구성에 데이타베이스 작업이 지원되지 않습니다.
ora-01023     커서 문맥가 없습니다부당한 커서번호)
ora-01024     oci 콜의 데이타 유형은 부적합합니다.
ora-01025     upi 파라미터가 부적합합니다.
ora-01026     바인드 목록에 크기가 2000이상인 다중 버퍼
ora-01027     데이타 정의에서는 바인드 변수를 사용할 수 없습니다.
ora-01028     내부 투 태스크(two task) 오류
ora-01029     내부 투 태스크(two task) 오류
ora-01030     select ... into 변수가 없습니다.
ora-01031     권한이 불충분합니다.
ora-01032     사용자 번호가 존재하지 않습니다.
ora-01033     oracle의 초기화 또는 정지 처리가 진행중입니다.
ora-01034     oracle을 사용할 수 없습니다.
ora-01035     oracle은 restricted session 권한을 갖는 사용자만 사용 가능합니다.
ora-01036     잘못된 변수명/번호
ora-01037     최대 커서 메모리가 초과되었습니다.
ora-01038     데이타베이스 화일 버전 %s에 oracle 버전 %s으로 기록할 수 없습니다.
ora-01039     사용되지 않는 오류
ora-01040     암호에 잘못된 문자가 있습니다 로그온을 할 수 없습니다.
ora-01041     내부오류. hostdef 확장이 존재하지 않습니다.
ora-01042     개방된 커서와 함께 세션을 분리하는 것은 허용되지 않습니다.
ora-01043     사용자쪽의 기억영역 파괴 [%s], [%s], [%s], [%s]
ora-01044     버퍼의 크기 %s (한계가 변수 %s)가 최대의 %s를 초과했습니다.
ora-01045     사용자 %s는 create session 권한을 가지고있지 않음; 로그온이 거절되었습니다.
ora-01046     확장할 문맥 영역을 획득할 수 없습니다.
ora-01047     위에 오류는 스키마=%s, 패키지=%s, 프로시저=%s에서 발생된 것입니다.
ora-01048     주어진 컨텍스트에서 지정된 프로시저를 찾을 수 없습니다.
ora-01049     스트림된 rpc에서 이름으로 바인드한것은 지원되지 않습니다.
ora-01050     문맥 영역을 개방하기 위한 영역을 획득할 수 없습니다.
ora-01051     잘못된 지연 rpc 버퍼 포맷
ora-01053     사용자 기억 영역 주소를 읽을 수 없습니다.
ora-01054     사용자 기억 영역 주소에 기록할 수 없습니다.
ora-01057     내부의 new upi 인터페이스 오류
ora-01058     internal new upi interface error
ora-01059     바인드 또는 실행전에 구문분석이 필요합니다.
ora-01060     배열 바인드 또는 실행이 허용되지 않습니다.
ora-01070     서버용으로 구버전의 오라클을 사용
ora-01071     oracle을 기동하지 않으면 조작 실행이 불가 합니다.
ora-01072     oracle은 기동중이 아닙니다 정지할 수 없습니다.
ora-01073     연결 오류. 콜(call)의 유형을 인식할 수 없습니다.
ora-01074     oracle은 정지되지 않습니다 먼저 로그오프해 주십시오
ora-01075     이미 로그온되어 있습니다.
ora-01076     단일 프로세스에 대한 복수 로그온은 제공되지 않습니다.
ora-01077     백그라운드 프로세스 초기화 오류입니다.
ora-01078     시스템 파라미터 처리 오류입니다.
ora-01079     oracle 데이타베이스가 작성되지 않았음 - 작업이 비정상 종료되었습니다.
ora-01080     oracle 정지중 오류가 발생했습니다.
ora-01081     이미 기동중인 oracle을 기동하려 했습니다.
ora-01082     row_locking = always 기능은 tps 옵션이 없는 oracle에서는 지원되지않습니다.
ora-01083     파라미터 값 %s는 다른 서버들의 값과 불일치합니다.
ora-01084     oci 호출에 부적당한 인수가 있습니다.
ora-01085     %s에 대한 지연 원격 프로시저 호출(rpc)에서 오류 발생
ora-01086     세이브포인트 %s 는 설정되어 있지 않습니다.
ora-01087     현재 oracle에 로그온되어 있습니다 기동할 수 없습니다.
ora-01088     액티브 프로세스가 있기 때문에 oracle을 정지할 수 없습니다.
ora-01089     정지 처리(즉시)중입니다 조작은 허가되지 않습니다.
ora-01090     정지 처리중입니다 연결할 수 없습니다.
ora-01091     기동중에 오류가 발생했습니다.
ora-01092     오라클 인스턴스 종료 분리가 되었습니다.
ora-01093     alter database close 문은 연결된 세션이 없는 경우에만 가능합니다.
ora-01094     alter database close 문이 수행중 입니다 연결은 허용되지 않습니다.
ora-01095     dml 문이 0개의 행을 처리 했습니다.
ora-01096     프로그램 버전 (%s)과 인스턴스 (%s)가 호환성이 없습니다.
ora-01097     트랜잭션 도중에 shutdown할 수 없습니다- 먼저 커밋 혹은 롤백하십시오
ora-01098     long insert중에 프로그램 인터페이스 오류
ora-01099     단일 프로세스 모드로 기동된 데이타베이스는 shares 모드로 마운트할 수 없습니다.
ora-01100     데이타베이스가 이미 마운트 되었습니다.
ora-01101     다른 인스턴스로 부터 생성된 데이타베이스가 현재 마운트 되었습니다.
ora-01102     데이타베이스가 exclusive 모드로 마운트할 수 없습니다.
ora-01103     제어 화일의 데이타베이스명 %s는 %s가 아닙니다.
ora-01104     제어 화일의 수(%s)가 %s 와 일치하지 않습니다.
ora-01105     올리기는 다른 인스턴스에 의해 마운트하는 것과 호환성이 없습니다.
ora-01106     내리기를 하기전에 데이타베이스를 디스마운트 합니다.
ora-01107     매체 복구를 위해 데이타베이스를 마운트해야 합니다.
ora-01108     화일 %s가 매체 복구 중에 있습니다.
ora-01109     데이타베이스가 개방되지 않습니다.
ora-01110     데이타 화일 %s: %s
ora-01111     데이타 화일 %s의 이름을 모릅니다- 올바른 화일로 재명명 하십시오.
ora-01112     매체 복구 처리가 개시되지 않았습니다.
ora-01113     화일 %s가 매체 복구되어야 합니다.
ora-01114     화일 %s의 블록쓰기 io 오류입니다블록 번호 %s).
ora-01115     화일 %s의 블록(블록 번호 %s) 읽기 io 오류입니다.
ora-01116     데이타베이스 화일 %s의 개방 오류입니다.
ora-01117     추가하는 화일 %s 의 블록 크기 %s 는 부적합합니다 제한은 %s 입니다.
ora-01118     데이타베이스 화일을 더 이상 등록할 수 없습니다 제한 %s 를 초과했습니다.
ora-01119     데이타베이스 화일 %s 의 작성 오류입니다.
ora-01120     온라인 데이타베이스 화일 %s은 삭제할 수 없습니다.
ora-01121     데이타 화일 %s를 재명명할 수 없습니다- 화일이 사용중이거나 복구중입니다.
ora-01122     데이타 화일 %s의 검증 체크에 실패 했습니다.
ora-01123     온라인 백업을 개시할 수 없습니다 매체 복구가 사용 불가로 되어 있습니다.
ora-01124     데이타 화일 %s을 복구할 수 없음 - 화일이 사용중이거나 복구중입니다.
ora-01125     매체 복구를 사용불가할 수 없음. 화일 %s 가 온라인 백업으로 설정됨.
ora-01126     데이타베이스는 exclusive로 마운트하고 개방하지 말아야 합니다.
ora-01127     데이타베이스명 %s가 최대 문자수 %s를 초과했습니다.
ora-01128     온라인 백업을 시작할 수 없음 - 화일 %s가 오프라인입니다.
ora-01129     디폴트 또는 임시 테이블 영역이 존재하지 않습니다.
ora-01130     데이타베이스 화일 버전 %s 는 oracle 버전 %s 와 호환되지 않습니다.
ora-01131     db_files 파라미터의 값 %s 가 최대수 %s 를 초과했습니다.
ora-01132     데이타베이스 화일명 %s 의 길이가 최대 문자수 %s 를 초과했습니다.
ora-01133     로그 화일명 %s 의 길이가 최대 문자수 %s 를 초과했습니다.
ora-01134     데이타베이스가 다른 인스턴스에 의해 배타 모드로 마운트했습니다.
ora-01135     dml/질의로 액세스된 화일 %s 는 오프 라인입니다.
ora-01136     화일 %s의 명시된 크기(%s 블록)가 원래 크기 %s 블록보다 작습니다.
ora-01137     데이타 화일 %s가 오프라인으로 되고 있는 중입니다.
ora-01138     데이타베이스가 이 인스턴스로 열거나 다른 인스턴스에 대해 닫아야 합니다.
ora-01139     resetlogs 옵션은 불완전한 데이타베이스의 복구 후에만 유효합니다.
ora-01140     온라인 백업을 종료할 수 없음 - 모든 화일이 오프라인입니다.
ora-01141     데이타 화일 %s의 재명명 오류 - 새로운 화일 %s 가 없습니다.
ora-01142     온라인 백업을 종료할 수 없음 - 백업할 수 있는 상태의 화일이 없습니다.
ora-01143     매체 복구를 사용불가하게할 수 없습니다 화일 %s가 매체복구를 필요로 합니다.
ora-01144     화일크기(%s 블록)가 최대치 %s 블록을 초과합니다.
ora-01145     매체 복구가 사용 가능하지 않으면 즉시 오프라인으로 할 수 없습니다.
ora-01146     온라인 백업을 시작할 수 없습니다 - 화일 %s가 이미 백업중에 있습니다.
ora-01147     system 테이블 영역 화일 %s가 오프 라인입니다.
ora-01148     이 작업을 하려면 데이타베이스가 exclusive 모드로 마운트해야 합니다.
ora-01149     정지처리 불가 - 화일 %s를 온라인 백업중 입니다.
ora-01150     쓰기 방지를 할수 없음 - 화일 %s를 온라인 백업중 입니다.
ora-01151     블록을 복구하려면 미디어 복구를 사용하고 필요하면 백업을 사용하십시오
ora-01152     화일 %s가 충분한 이전 백업으로 복구되지 않았습니다
ora-01153     비호환 매체 복구가 동작 상태입니다.
ora-01154     데이타베이스는 사용중 - 개방, 클로즈, 마운트, 디스마운트 할 수 없습니다.
ora-01155     데이타베이스는 개방, 클로즈, 마운트 혹은 디스마운트 중 입니다.
ora-01156     진행중인 복구 작업이 화일 액세스를 필요로 할 수 있습니다.
ora-01157     데이타 화일 %s를 식별할 수 없습니다- 화일이 발견되지 않음
ora-01158     데이타베이스 %s 가 이미 마운트했습니다.
ora-01159     화일이 동일한 데이타베이스의 화일이 아닙니다- 데이타베이스 id가 잘못됨.
ora-01160     화일이 %s가 아닙니다.
ora-01161     화일헤더에 있는 데이타베이스명 %s가 주어진 이름 %s 와 일치하지 않습니다.
ora-01162     화일 헤더에 블록 크기 %s가 db_block_size(%s)와 일치하지 않습니다.
ora-01163     size 절에 %s (블록)이 지정되었으나 헤더 %s와 일치해야 합니다.
ora-01164     maxlogfiles는 %s 를 초과할 수 없습니다.
ora-01165     maxdatafiles는 %s 를 초과할 수 없습니다.
ora-01166     화일번호 %s가 %s (%s)보다 큽니다.
ora-01167     두개의 화일들이 같은 화일 그룹번호 이거나 같은 화일입니다.
ora-01168     물리 블록 크기 %s가 다른 멤버들의 크기 %s와 일치하지 않습니다.
ora-01169     datafile 번호 1번이 없습니다.
ora-01170     화일이 존재하지 않습니다 %s
ora-01171     체크포인트 오류 때문에 데이타 화일 %s이 오프라인됩니다.
ora-01172     쓰레드 %s의 복구가 블록 %s(화일 %s의)에서 더이상 진행되지 못합니다.
ora-01173     데이타 dictionary
ora-01174     db_file %s는 호환성을 위해서 %s가 되어야 합니다.
ora-01175     데이타 dictionary가 인스턴스에서 허용하는 %s 보다 많은 수의 화일을 포함합니다.
ora-01176     데이타 dictionary가 제어 화일에서 허용하는 %s 보다 많은 수의 화일을 포함합니다.
ora-01177     데이타 화일이 dictionary와 일치하지 않습니다- 아마도 오래된 것입니다.
ora-01178     화일 %s가 마지막 create controlfile 이전에 생성됐음. 재 생성할 수 없습니다.
ora-01179     화일 %s 가 존재하지 않습니다.
ora-01180     데이타 화일 1을 생성할 수 없습니다.
ora-01181     최후의 resetlogs 이전에 생성된 화일 %s를 재생성할 수 없습니다.
ora-01182     데이타베이스 화일 %s를 생성할 수 없음 - 사용중이거나 복구중입니다.
ora-01183     shared모드로 데이타베이스를 마운트할 수 없습니다.
ora-01184     로그화일 그룹 %s는 이미 존재합니다.
ora-01185     로그화일 그룹 %s는 부적절합니다.
ora-01186     화일 %s의 검증 테스트에 실패했습니다.
ora-01187     검증 테스트에 실패했기 때문에 화일 %s를 읽을 수 없습니다.
ora-01188     헤더내의 블록 크기 %s가 실제 물리블록 크기 %s와 맞지 않습니다.
ora-01189     이전 화일과 다른 resetlogs가 사용되었습니다.
ora-01190     제어 화일 혹은 데이타 화일 %s는 마지막 resetlogs 이전의 것입니다.
ora-01191     화일 %s는 이미 오프라인임 - 정상적인 오프라인을 할 수 없습니다.
ora-01192     최소한 하나의 이용 가능한 쓰레드를 가져야합니다.
ora-01193     화일 %s는 복구 시작시 인식된 화일이 아닙니다.
ora-01194     화일 %s가 일관성을 갖기 위해서는 더 많은 복구가 필요로 합니다.
ora-01195     화일 %s의 온라인 백업은 일관성을 갖기위해 더 많은 복구가 필요로 합니다.
ora-01196     매체복구 세션의 실패로 인하여 화일 %s의 일관성이 결여되어 있습니다.
ora-01197     쓰레드 %s는 하나의 로그만을 포함하고 있습니다.
ora-01198     resetlogs인 경우 로그화일에 대한 크기를 지정하여야 합니다.
ora-01199     화일 %s는 온라인 백업 모드가 아닙니다.
ora-01200     실제 화일크기 %s는 맞는 크기인 %s 블록보다 작습니다.
ora-01201     헤더내의 화일 크기 %s가 제어화일내의 크기 %s와 일치하지 않습니다.
ora-01202     화일의 구현이 잘못됨 - 작성 시각이 틀립니다.
ora-01203     화일의 구현이 잘못됨 - 작성 scn이 틀립니다.
ora-01204     화일 번호가 %s (%s가 아님) - 틀린 화일입니다.
ora-01205     데이타 화일이 아님 - 헤더내의 유형 번호가 %s입니다.
ora-01206     화일은 이 데이타베이스의 일부가 아님 - 데이타베이스 id가 틀립니다.
ora-01207     화일이 제어화일보다 최근의 것임 - 오래된 제어화일입니다.
ora-01208     데이타 화일이 구버전임 - 현 버전을 액세스하지 않았습니다.
ora-01209     데이타 화일이 마지막 resetlogs 이전의 것입니다.
ora-01210     데이타 화일의 헤더가 매체 붕괴되었습니다.
ora-01211     버전 6의 데이타 화일이 버전7으로의 변환 화일이 아닙니다.
ora-01212     maxlogmembers는 %s를 초과할 수 없습니다.
ora-01213     maxinstance는 %s를 초과할 수 없습니다.
ora-01214     maxloghistory는 %s를 초과할 수 없습니다.
ora-01215     create controlfile이후의 가용 쓰레드 %s가 빠졌습니다.
ora-01216     create controlfile이후 쓰레드 %s는 사용불가되어야합니다.
ora-01217     로그화일 멤버가 다른 로그화일 그룹에 속해있습니다.
ora-01218     로그화일 멤버는 동일한 시간때에 만든것이 아닙니다.
ora-01219     데이타베이스가 열지 않았음: 고정 테이블/뷰에 대해서만 조회가 가능합니다.
ora-01220     데이테베이스가 개방 되기전에는, 화일을 기본으로하는 소트가 부적합합니다.
ora-01221     데이타 화일 %s는 백그라운드 프로세스에 대해 동일 화일이 아닙니다.
ora-01222     %s의 maxinstances는 maxlogfiles가 최소 %s이어야함(%s가 아님)
ora-01223     새로운 데이타베이스명을 부여하기 위해서는 resetlogs를 지정하여야 합니다.
ora-01224     헤더 %s내의 그룹번호가 group %s와 맞지 않습니다.
ora-01225     쓰레드 번호 %s가 maxinstances %s 보다 큽니다.
ora-01226     로그 멤버의 화일헤더가 다른 멤버와 일치하지 않습니다.
ora-01227     로그 %s는 다른 로그와 일치하지 않습니다.
ora-01228     기초 데이테베이스를 설치하려면 set database 옵션이 필요합니다.
ora-01229     데이타 화일 %s가 로그와 일치하지 않습니다.
ora-01230     읽기 전용으로 만들수 없습니다- %s 화일이 오프라인입니다.
ora-01231     쓰기 전용으로 만들수 없습니다- %s 화일이 오프라인입니다.
ora-01232     온라인 백업을 수행할 수 없습니다- %s 화일은 읽기 전용입니다.
ora-01233     %s 화일은 읽기 전용입니다- 컨트롤화일 백업을 사용해서 복구할 수 없습니다.
ora-01234     화일 %s의 백업을 종료할 수 없습니다 - 화일을 사용중이거나 복구중입니다.
ora-01235     %s 화일에 대한 end backup은 실패하고 %s에 대해서는 성공했습니다.
ora-01237     데이타화일 %s를 확장할 수 없습니다.
ora-01238     데이타화일 %s를 축소할 수 없습니다.
ora-01239     데이터베이스는 외부 캐시를 사용하기 위해서 archivelog 모드로 되어 있어야 합니다.
ora-01240     하나의 명령어에 너무 많은 데이터 화일을 추가합니다.
ora-01241     외부 캐시가 죽었습니다.
ora-01242     데이터 화일이 메디아 실패를 받았습니다: 데이터베이스는 noarchivelog 모드입니다.
ora-01243     시스템 테이블스페이스 화일이 메디아 실패를 받았습니다.
ora-01244     메디아 복구에 의해서 제어화일에 이름 없는 데이터화일이 추가되었습니다.
ora-01245     오프라인 화일 %s 은 resetlogs이 끝나면 없어집니다.
ora-01400     행의 입력으로 필수 열(not null)에 값이 지정되지 않았습니다.
ora-01401     열에 입력한 값이 너무 큽니다.
ora-01402     뷰의 with check option의 조건에 위배 됩니다.
ora-01403     데이타가 없습니다.
ora-01404     alter column은 색인을 너무 크게 만들 수 있습니다.
ora-01405     인출된 열의 값은 null입니다.
ora-01406     인출된 열의 값이 절사되었습니다.
ora-01407     입력 필수 열(not null)은 null로 갱신할 수 없습니다.
ora-01408     열 리스트에는 이미 색인이 작성되어 있습니다.
ora-01409     nosort 옵션은 사용할 수 없습니다 행이 오름차순으로 되어 있지 않습니다.
ora-01410     rowid가 부적합합니다.
ora-01411     표시기내에 열의 길이를 저장할 수 없습니다.
ora-01412     이 데이타 유형에 대해서는 0길이가 허용되지 않습니다.
ora-01413     팩형 십진수 버퍼안의 값이 부적합합니다.
ora-01414     배열을 바인드 할때 배열 길이가 부적합합니다.
ora-01416     두 개의 테이블을 outer-join할 수 없습니다.
ora-01417     하나의 테이블은 하나의 다른 테이블과 outer-join할 수 있습니다.
ora-01418     지정한 색인는 존재하지 않습니다.
ora-01419     datdts: 형식 코드 오류입니다.
ora-01420     datstd: 형식 코드 오류입니다.
ora-01421     datrnd/dattrn: 정도 지정자 오류입니다.
ora-01422     실제 인출은 요구된 것보다 많은 수의 행을 추출합니다.
ora-01423     실제 인출에서 여분의 행을 검사하는 중에 오류가 검출되었습니다.
ora-01424     에스케이프 문자 뒤에 누락 혹은 부당한 문자가 있습니다.
ora-01425     에스케이프 문자는 1자리 문자 스트링이어야 합니다.
ora-01426     수치 오버플로우
ora-01427     단일 행 부속 질의에 의해 2개 이상의 행이 리턴되었습니다.
ora-01428     인수 %s가 범위를 벗어났습니다.
ora-01430     추가하려는 열이 이미 테이블에 존재합니다.
ora-01431     grant 명령어 내부 불일치 오류입니다.
ora-01432     삭제할 공개 동의어가 존재하지 않습니다.
ora-01433     작성한 동의어가 이미 정의되어 있습니다.
ora-01434     삭제할 비공개 동의어가 존재하지 않습니다.
ora-01435     사용자가 존재하지 않습니다.
ora-01436     connect by의 루프가 발생되었습니다.
ora-01437     결합은 connect by와 함께 지정할 수 없습니다.
ora-01438     지정한 정도를 초과한 값이 열에 지정되었습니다.
ora-01439     데이타 유형을 변경할 열은 비어 있어야 합니다.
ora-01440     정도 또는 자리수를 축소할 열은 비어 있어야 합니다.
ora-01441     길이를 짧게 변경할 열의 값은 null이어야 합니다.
ora-01442     변경하고자 하는 열이 이미 not null입니다.
ora-01443     내부 오류 : 뷰 열의 데이타 유형이 부적합합니다.
ora-01444     내부 오류 : 내부 데이타 유형와 외부 데이타 유형은 부적합합니다.
ora-01445     키-보전 테이블 없이 결합 뷰으로 부터 rowid를 선택할 수 없습니다.
ora-01446     distinct, group by 등을 포함하는 뷰로부터 rowid를 선택할 수 없습니다.
ora-01447     클러스터 열에 alter table 문을 사용할 수 없습니다.
ora-01448     데이타 유형을 변경하기 전에 색인을 삭제해야 합니다.
ora-01449     열이 null값을 포함하고 있습니다 not null로 변경할 수 없습니다.
ora-01450     키의 최대 길이(%s)를 초과했습니다.
ora-01451     열이 이미 null로 되어 있습니다.
ora-01452     중복 키가 있습니다. 유일한 색인을 작성할 수 없습니다.
ora-01453     set transaction 사용시에는 트랜잭션의 최초문장 이어야 합니다.
ora-01454     수치 데이타 유형으로 변환할 수 없습니다.
ora-01455     열의 변환에 의해 정수 데이타 유형이 오버플로우되었습니다.
ora-01456     read only 트랜잭션은 삽입/삭제/갱신할 수 없습니다.
ora-01457     열의 변환에 의해 decimal 데이타 유형이 오버플로우되었습니다.
ora-01458     가변장 스트링의 지정된 길이가 부적합합니다.
ora-01459     가변장 스트링의 길이가 부적합합니다.
ora-01460     요구된 변환은 실행될 수 없습니다.
ora-01461     long 값은 long 열에만 입력할 수 있습니다.
ora-01462     2000 문자 이상은 입력할 수 없습니다.
ora-01463     자신에 대한 권한의 허가나 취소는 불가능합니다.
ora-01464     테이블 또는 뷰의 grant 오류입니다.
ora-01465     16진수의 지정이 부적합합니다.
ora-01466     테이블 정의가 변경되었습니다 데이타를 읽을 수 없습니다.
ora-01467     정렬 키가 너무 깁니다.
ora-01468     outer-join된 테이블은 1개만 지정할 수 있습니다.
ora-01469     prior의 뒤에는 열 명을 지정해 주십시오
ora-01471     개체와 같은 이름의 동의어는 작성할 수 없습니다.
ora-01472     connect by는 distinct, group by 를 동반한 뷰에 사용할 수 없습니다.
ora-01473     connect by 구에 부속 질의를 지정할 수 없습니다.
ora-01474     connect by 없이 start with 나 prior 는 지정할 수 없습니다.
ora-01475     바인드 변수의 데이타 유형 변경을 위해서는 커서를 재구문분석을 해야 합니다.
ora-01476     제수가 0 입니다.
ora-01477     사용자 데이타 영역 기술자가 너무 큽니다.
ora-01478     long 열은 배열 바인드에 사용할 수 없습니다.
ora-01479     버퍼내의 마지막 문자가 널(null)이 아닙니다.
ora-01480     str 바인드 값에 종료의 널이 없습니다.
ora-01481     숫자 형식 모델이 부적합합니다.
ora-01482     지정된 문자세트는 제공하지 않습니다.
ora-01483     date 또는 number 바인드 변수의 길이가 부적합합니다.
ora-01484     배열은 pl/sql문 범위에서만 해야 합니다.
ora-01485     실행 바인드 길이가 컴파일 바인드 길이와 다릅니다.
ora-01486     배열요소 크기가 너무 큽니다.
ora-01487     팩형 십진수가 제공된 버퍼에 비해 너무 큽니다.
ora-01488     부적절한 팩형 십진수 입니다.
ora-01489     스트링 연결의 결과가 너무 깁니다.
ora-01490     부적합한 analyze 명령입니다.
ora-01491     cascade 옵션이 부적합합니다.
ora-01492     현 트랜잭션이 이미 롤백 세그먼트에 연결되어 있습니다.
ora-01493     명시된 sample 길이가 부적합합니다.
ora-01494     지정된 size가 부적당합니다.
ora-01495     지정된 연결행 테이블이 없습니다.
ora-01496     지정된 연결행 테이블 형식이 틀립니다.
ora-01497     analyze cluster에 대한 옵션이 잘못되었습니다.
ora-01498     블록 체크 실패 - 트래스 화일을 보십시오
ora-01499     테이블/색인의 교차 참조 실패 - 트래스 화일을 보십시오
ora-01500     날짜/시간의 획득 오류입니다.
ora-01501     create database 문 오류입니다.
ora-01502     색인 %s는 직접 로드 상태입니다.
ora-01503     create controlfile이 실패했습니다.
ora-01504     데이타베이스명 %s가 db_name 파라미터 %s와 맞지않습니다.
ora-01505     로그 화일 등록 오류입니다.
ora-01506     데이타베이스 명을 올바르게 지정해 주십시오.
ora-01507     데이타베이스가 마운트하지 않았습니다.
ora-01508     화일 %s 의 줄 %s 에 오류. 데이타베이스를 생성할 수 없습니다.
ora-01509     지정한 이름 %s 가 실제의 이름 %s 와 일치하지 않습니다.
ora-01510     로그 화일 삭제 오류입니다.
ora-01511     로그/데이타 화일의 재명명 오류입니다.
ora-01512     로드 화일 %s의 재명명 오류 - 새로운 화일 %s가 없습니다.
ora-01513     운영 시스템으로 부터 부정확한 현시각이 보내졌습니다.
ora-01514     로그 명세에 오류: 그런 로그가 없습니다.
ora-01515     로그 그룹 %s의 삭제시 오류. 그런 로그가 없습니다.
ora-01516     로그/데이타 화일 %s 는 존재하지 않습니다.
ora-01517     로그 멤버: %s
ora-01518     2개 이상의 로그 화일을 create database 에 지정해 주십시오.
ora-01519     오류 발생(화일 %s 의 줄 %s 부근)
ora-01520     추가할 데이타 화일의 수(%s)가 최대수 %s 를 초과했습니다.
ora-01521     데이타 화일의 등록중 오류가 발생했습니다.
ora-01522     재명명할 화일 %s 가 없습니다.
ora-01523     데이타 화일 %s 는 이미 데이타베이스의 일부입니다. 재명명할 수 없습니다.
ora-01524     %s로 데이타 화일을 생성할 수 없음 - 화일이 이미 데이타베이스의 부분입니다.
ora-01525     데이타 화일의 재명명중 오류가 발생했습니다.
ora-01526     화일 %s 의 열기 오류가 발생했습니다.
ora-01527     화일을 읽는 도중 오류가 발생했습니다.
ora-01528     sql 문의 처리중 eof 오류입니다.
ora-01529     화일 %s 의 클로즈중 오류가 발생했습니다.
ora-01530     이 인스턴스는 이미 데이타베이스를 마운트했습니다.
ora-01531     이 인스턴스는 이미 데이타베이스를 개방했습니다.
ora-01532     인스턴스가 기동되어 있습니다. 데이타베이스를 생성할 수 없습니다.
ora-01533     화일 %s 는 테이블 영역에 속해 있지 않습니다. 재명명할 수 없습니다.
ora-01534     롤백 세그먼트 %s 가 존재하지 않습니다.
ora-01535     롤백 세그먼트 %s 는 이미 존재합니다.
ora-01536     테이블 영역 %s 에 대한 영역 할당량이 초과됐습니다.
ora-01537     데이타 화일 %s 는 이미 데이타베이스의 일부입니다 등록할 수 없습니다.
ora-01538     롤백 세그먼트를 획득할 수 없습니다.
ora-01539     테이블 영역 %s 가 온라인이 아닙니다.
ora-01540     테이블 영역 %s 가 오프라인이 아닙니다.
ora-01541     system 테이블 영역은 오프라인될 수 없습니다 필요하면 중지 하십시오
ora-01542     테이블 영역 %s 가 오프라인입니다. 영역을 할당할 수 없습니다.
ora-01543     테이블 영역 %s 는 이미 존재하고 있습니다.
ora-01544     시스템 롤백 세그먼트는 삭제할 수 없습니다.
ora-01545     롤백 세그먼트 %s 는 사용할 수 없습니다.
ora-01546     테이블 영역에 액티브 롤백 세그먼트 %s 가 있습니다.
ora-01548     액티브 롤백 세그먼트 %s 가 존재함, 테이블 영역의 삭제를 종료하십시오.
ora-01549     테이블 영역이 비어있지 않으므로 including contents를 사용해 주십시오.
ora-01550     시스템 테이블 영역은 삭제할 수 없습니다.
ora-01551     롤백 세그먼트 확장 오류입니다.
ora-01552     시스템 테이블 영역이 아닌 %s 에 시스템 롤백 세그먼트를 사용할 수 없습니다.
ora-01553     maxextents는 현재 할당된 %s 엑스텐트 수 이상이어야 합니다.
ora-01554     트랜잭션 슬롯이 없습니다.
ora-01555     스냅샷이 너무 오래 되었습니다(롤백 세그먼트가 너무 작습니다)
ora-01556     롤백 세그먼트를 위한 minextents는 1보다 커야만 합니다.
ora-01557     롤백 세그먼트 엑스텐트는 최저 %s 블록이 필요합니다.
ora-01558     롤백 세그먼트 %s 에 트랜잭션 번호가 없습니다.
ora-01559     롤백 세그먼트의 maxextents 는 2 이상입니다.
ora-01560     글로벌 해쉬 테이블의 크기가 %s와 일치하지 않습니다 (%s !=%s)
ora-01561     지정된 테이블 영역중의 개체가 삭제되지 않았습니다.
ora-01562     롤백 세그먼트 확장 실패입니다 (id = %s)
ora-01563     키워드 public 을 사용해 주십시오
ora-01564     롤백 세그먼트는 public 이 아닙니다.
ora-01565     화일 %s 의 식별 오류가 발생했습니다.
ora-01566     drop logfile에 화일이 2회 이상 지정되었습니다.
ora-01567     로그 %s를 삭제하면 쓰레드 %s에 남는 로그 화일이 2개 미만으로 됩니다.
ora-01568     public에 영역 할당량을 설정할 수 없습니다.
ora-01569     시스템 dictionary 테이블에 대한 데이타 화일이 너무 작습니다.
ora-01570     minextents는 현재 할당된 %s보다 클 수 없습니다.
ora-01571     로그 레코드 버전 %s 가 oracle의 버전 %s 과 호환되지 않습니다.
ora-01572     롤백 세그먼트용 글로벌 해쉬 테이블의 크기 %s가 롤백 세그먼트 번호 %s 에 대해 너무 작음
ora-01573     인스턴스의 정지 처리가 진행중. 더 이상의 변경은 허용되지 않습니다.
ora-01574     최대 동시 실행 트랜잭션 수를 초과했습니다.
ora-01575     영역 관리 자원의 대기중 시간이 초과되었습니다.
ora-01576     인스턴스 잠금 프로토콜 버전 %s는 oracle의 버전 %s 와 호환되지 않습니다.
ora-01577     로그 화일 %s는 이미 데이타베이스의 일부입니다 등록이 불가능합니다.
ora-01578     oracle 데이타 블록이 파손되었습니다 (화일 번호 %s, 블록 번호 %s)
ora-01579     복구중 기록(write) 오류가 발생했습니다.
ora-01580     제어 화일의 백업 화일 %s 를 작성하는 중에 오류가 발생했습니다.
ora-01581     이미 할당된 롤백 세그먼트(%s) 새로운 익스텐트(%s)를 사용하려 시도했습니다.
ora-01582     백업을 하기위해 제어 화일을 열 수 없습니다.
ora-01583     백업될 제어 화일의 블록 크기를 획득할 수 없습니다.
ora-01584     백업될 제어 화일의 화일 크기를 획득할 수 없습니다.
ora-01585     백업 화일 %s 를 인식할 수 없습니다.
ora-01586     백업을 하기위한 수신 화일 %s을 열 수 없습니다.
ora-01587     제어 화일의 백업 화일 복제중 오류가 발생했습니다.
ora-01588     데이타베이스를 열기 위해서는 resetlogs 옵션을 사용해야 합니다.
ora-01589     데이타베이스를 열기 위해서는 resetlogs/noresetlogs 옵션을 사용해야 함
ora-01590     가용 세그멘트 수(%s)가 최대치인 %s 를 초과합니다.
ora-01591     잠금이 in-doubt 분산 트랜잭션 %s에 주어졌습니다.
ora-01592     버전 6의 롤백 세그먼트(%s)를 oracle7 포맷으로 변환시 오류 발생
ora-01593     롤백 세그먼트의 최적크기(%s 블록)가 초기크기 계산(%s 블록)보다 작습니다.
ora-01594     해제될 롤백 세그먼트(%s) 익스텐트(%s)를 연결하려함
ora-01595     익스텐스(%s)(롤백 세그먼트 (%s)의) 해제시 오류
ora-01596     %s 파라미터에 시스템을 지정할 수 없습니다.
ora-01597     시스템 롤백 세그먼트를 온라인 혹은 오프라인시킬 수 없습니다.
ora-01598     롤백 세그먼트 %s가 온라인이 아닙니다.
ora-01599     롤백 세그먼트(%s)를 획득하는데 실패, 캐쉬 영역이 꽉찼습니다현재(%s)엔트리를 가짐)
ora-01600     많아야 하나의 %s (gc_files_to_locks의 %s절에)
ora-01601     gc_files_to_locks의 %s절에 부당한 버켓(bucket) 크기
ora-01602     gc_files_to_locks에 예정된 것보다 gc_db_locks에 더 많은 잠금임
ora-01603     gc_files_to_locks의 %s절에 부당한 그룹크기
ora-01604     gc_files_to_locks의 %s절에 부당한 화일 번호 범위
ora-01605     gc_files_to_locks의 %s절에 화일 번호 누락
ora-01606     gc_files_to_lock가 마운트한 다른 인스턴스의 그것과 동일하지 않습니다.
ora-01607     gc_lck_procs (%s)가 다른 인스턴스 (%s)와 같지 않습니다.
ora-01608     롤백 세그먼트 %s를 온라인화할 수 없음. 상태는 (%s)
ora-01609     로그 %s는 쓰레드 %s에 대한 현 로그 - 멤버를 삭제할 수 없습니다.
ora-01610     backup controlfile 옵션을 이용해서 복구가 끝나야만 합니다.
ora-01611     쓰레드번호 %s는 부적절함 - %s보다 커서는 안됩니다.
ora-01612     쓰레드 %s는 이미 가용되었습니다.
ora-01613     쓰레드 %s는 %s 로그만을 가짐 - 가용화를 위해서는 최소 2개의 로그를 필요로 함
ora-01614     쓰레드 %s는 사용중임 - 사용가능하게할 수 없습니다.
ora-01615     쓰레드 %s는 마운트됨 - 사용불가하게할 수 없습니다.
ora-01616     쓰레드 %s는 열려 있음 - 사용불가하게할 수 없습니다.
ora-01617     마운트할 수 없음: %s는 정당한 쓰레드 번호가 아님
ora-01618     쓰레드 %s는 사용가능하지 않았음 - 마운트할 수 없습니다.
ora-01619     쓰레드 %s는 다른 인스턴스에 의해 마운트했습니다.
ora-01620     마운트에 필요한 공용 쓰레드가 없습니다.
ora-01621     데이타베이스가 열려 있으면 현 로그의 멤버를 개명할 수 없습니다.
ora-01622     쓰레드 번호가 지정되어야함 - 디폴트는 없습니다.
ora-01623     로그 %s는 쓰레드 %s에 대한 현 로그임 - 삭제할 수 없습니다.
ora-01624     로그 %s가 쓰레드 %s 복구시 필요합니다.
ora-01625     롤백 세그먼트 %s는 이 인스턴스에 속해있지 않습니다.
ora-01626     롤백 세그먼트 번호 %s는 더 이상의 트랜잭션을 처리할 수 없습니다.
ora-01627     롤백 세그먼트 번호 %s는 온라인이 아닙니다.
ora-01628     롤백 세그먼트 %s에 대한 최대 익스텐스 수 (%s)에 도달했습니다.
ora-01629     테이블 영역 %s에 대한 실행취소의 저장시 최대 익스텐트 수(%s)에 도달했음
ora-01630     테이블 영역 %s의 임시 세그먼트에 최대 익스텐트 수(%s)가 되었습니다.
ora-01631     최대 익스텐트 수(%s)에 도달 (테이블 %s.%s)
ora-01632     최대 익스텐트 수(%s)에 도달 (색인 %s.%s)
ora-01633     이 조작에는 병렬 서버 옵션이 필요합니다.
ora-01634     롤백 세그먼트 번호 %s가 오프라인 되려합니다.
ora-01635     지정된 롤백 세그먼트 번호 %s가 가용하지 않습니다.
ora-01636     롤백 세그먼트 %s가 이미 온라인 상태입니다.
ora-01637     롤백 세그먼트 %s가 다른 인스턴스(수 %s)에 의해 사용됩니다.
ora-01638     %s 파라미터는 oracle 버전 %s에서 병렬 마운트를 허용하지 않습니다.
ora-01639     데이타베이스는 잠금 프로세스 없이 병렬로 마운트할 수 없습니다.
ora-01640     활성 트랙잰션으로 테이블 공간을 읽기 전용으로 만들수 없습니다.
ora-01641     테이블스페이스 %s은 온라인이 아닙니다 - 데이타 화일을 추가할 수 없습니다.
ora-01642     읽기 전용 %s 테이블 공간에 초기 백업이 필요하지 않습니다.
ora-01643     시스템 테이블 공간를 읽기 전용으로 만들 수 없습니다.
ora-01644     %s 테이블 공간은 이미 읽기 전용입니다.
ora-01645     읽기 쓰기를 하기위해서 이전에 시도한것이 반만 완성되었습니다.
ora-01646     %s 테이블 공간은 읽기 전용입니다- 읽기 쓰기를 할 수 없습니다.
ora-01647     %s 테이블 공간은 읽기 전용이어서, 거기에 공간을 할당할 수 없습니다.
ora-01648     로그 %s는 사용불가인 쓰레드 %s의 현재 로그입니다.
ora-01649     백업 컨트롤 화일에 대한 작업이 허용되지 않습니다.
ora-01650     롤백 세그먼트 %s를 %s에 의해 %s 테이블 공간에서 확장할 수 없습니다.
ora-01651     %s로 테이블 공간 %s에 저장 취소 세그먼트를 확장할 수 없습니다.
ora-01652     %s로 테이블 공간 %s에서 임시 세그먼트를 확장할 수 없습니다.
ora-01653     테이블 %s.%s를 %s에 의해 %s 테이블 공간에서 확장할 수 없습니다.
ora-01654     색인 %s.%s를 %s에 의해 %s 테이블 공간에서 확장할 수 없습니다.
ora-01655     크러스터 %s.%s를 %s에 의해 %s 테이블 공간에서 확장할 수 없습니다.
ora-01656     최대 번호 확장 (%s)가 %s.%s 크러스터에 도달했습니다.
ora-01657     부적당한 shrink 옵션 값
ora-01658     테이블스페이스 %s에 세그먼트에 대한 initial 익스텐트를 작성할 수 없습니다.
ora-01659     테이블스페이스 %s에 %s이상의 minextents를 할당할 수 없습니다.
ora-01660     테이블스페이스 %s 은 이미 영구적인 것입니다.
ora-01661     테이블스페이스 %s 은 이미 임시적인 것입니다.
ora-01662     테이블스페이스 %s 은 비어 있지 않아 임시로 만들 수가 없습니다.
ora-01663     테이블스페이스 %s 의 내용은 항상 변경합니다.
ora-01664     정렬 세그먼트로 확장된 트랜잭션은 중지 되었습니다.
ora-01665     제어화일은 대기 제어화일이 아닙니다.
ora-01666     제어화일은 대기 제어화일을 위한 것입니다.
ora-01667     리두 로그는 대기 데이터베이스와 상반됩니다.
ora-01668     데이터 화일의 오프라인을 위해서 대기 데이터베이스가 drop 옵션을 요구합니다.
ora-01669     대기 데이터베이스 제어화일은 데이터화일과 일치하지 않습니다.
ora-01670     대기 데이터베이스 복구에 새로운 데이터화일 %s 가 필요합니다.
ora-01671     제어화일은 백업합니다, 대기 제어화일을 만들 수 없습니다.
ora-01672     제어화일에 화일이 빠졌거나 하나 더 가지고 있습니다.
ora-01673     데이터 화일 %s 은 식별된것이 아닙니다.
ora-01674     데이터 화일 %s 은 현재 화일 대신 오래된 것을 가지고 있습니다.
ora-01676     대기 화일 이름은 %s의 변환을 하는데 최대 %s의 길이를 초과했습니다.
ora-01677     대기 화일 이름이 파라미터 변환을 다른 인스턴스와 다르게 했습니다.
ora-01678     파라미터 %s 은 패턴과 교체로 된 두가지 스트링을 가지고 있어야 합니다.
ora-01679     데이터베이스는 exclusive로 마운트 되어야 하고 열려 있지 않아야 합니다.
ora-01680     만약 gc_files_to_locks이 사용하고 있으면 gc_db_locks가 영일 수 없습니다.
ora-01700     리스트 내의 사용자명이 중복되었습니다.
ora-01701     클러스터가 부적합합니다.
ora-01702     뷰는 부적합합니다.
ora-01703     키워드 synonym이 없습니다.
ora-01704     스트링이 너무 깁니다.
ora-01705     상관 열에는 외부 결합을 지정할 수 없습니다.
ora-01706     사용자 함수의 결과가 너무 큽니다.
ora-01707     키워드 list가 없습니다.
ora-01708     access 또는 session을 지정해 주십시오
ora-01709     프로그램이 존재하지 않습니다.
ora-01710     키워드 of가 없습니다.
ora-01711     중복된 권한이 리스트되어 있습니다.
ora-01712     자신이 소유하지 않은 권한을 허가할 수 없습니다.
ora-01713     그 권한에 대해서는 grant option 이 존재하지 않습니다.
ora-01714     사용자 함수의 실행중 오류가 발생했습니다.
ora-01715     클러스터 색인에는 unique를 사용할 수 없습니다.
ora-01716     클러스터 색인에는 nosort를 사용할 수 없습니다.
ora-01717     secta : 액세스 모드 토큰이 부적합합니다.
ora-01718     by access | session절은 noaudit에 대해서는 허용되지 않습니다.
ora-01719     외부 결합 운영 (+)는 or 또는 in의 연산수를 허용하지 않습니다.
ora-01720     %s에 대한 허가(grant) 옵션은 존재하지 않습니다.
ora-01721     트랜잭션에서 userenv(commitscn)을 2회 이상 불렀습니다.
ora-01722     수치가 부적합합니다.
ora-01723     길이가 0인 열은 지정할 수 없습니다.
ora-01724     부동 소숫점 수치의 정도를 벗어났습니다 (1 to 126)
ora-01725     userenv(commitscn)는 여기에서 허용되지 않습니다.
ora-01726     테이블의 지정이 부적합합니다.
ora-01727     수치의 정도 범위(38 자리 이내)를 초과했습니다.
ora-01728     수치의 스케일 범위(-84 에서 127)를 초과했습니다.
ora-01729     데이타베이스 링크명을 지정해 주십시오
ora-01730     지정한 열명의 수가 부적합합니다.
ora-01731     뷰 정의가 부적합(순환)합니다.
ora-01732     뷰에 대한 데이타 조작이 부적합합니다.
ora-01733     가상 열은 사용할 수 없습니다.
ora-01734     잘못된 파라미터 - extent min 값이 extent max 보다 큽니다.
ora-01735     부적합한 alter table 옵션입니다.
ora-01736     [not] successful 을 지정해 주십시오.
ora-01737     공유, 배타 모드에서만 테이블을 잠금할 수 있습니다.
ora-01738     키워드 in 을 지정해 주십시오
ora-01739     키워드 mode 를 지정해 주십시오
ora-01740     이중 인용부를 지정해 주십시오
ora-01741     길이가 0인 식별자는 부적합합니다.
ora-01742     주석이 정확하게 종료되지 않았습니다.
ora-01743     내부적 불일치 : 사용자 함수 색인이 부적합합니다.
ora-01744     into구의 지정이 부적합합니다.
ora-01745     호스트/바인드 변수명이 부적합합니다.
ora-01746     인디케이터 변수는 사용할 수 없습니다.
ora-01747     열명을 올바르게 지정해 주십시오.
ora-01748     열명 그 자체만 사용할 수 있습니다.
ora-01749     자신의 권한으로는 grant/revoke 할 수 없습니다.
ora-01750     update/reference 는 열에 의해서가 아닌 테이블 전체로부터 revoke 될 수 있습니다.
ora-01751     부적당한 덤프 취소 옵션입니다.
ora-01752     뷰으로 부터 정확하게 하나의 키-보전된 테이블 없이 삭제할 수 없습니다.
ora-01753     열 정의가 클러스터 열의 정의와 일치하지 않습니다.
ora-01754     long 유형의 열은 테이블에 1 개만 포함될 수 있습니다.
ora-01755     영역 수나 블록 수를 지정해야만 합니다.
ora-01756     단일 인용부를 지정해 주십시오
ora-01757     개체 수를 지정해야 합니다.
ora-01758     not null 열을 추가하기 위해서는 테이블이 비어 있어야 합니다.
ora-01759     사용자 함수가 올바르게 정의되지 않았습니다.
ora-01760     함수의 인수가 부적합합니다.
ora-01761     결합문는 유일 테이블에 dml 작업으로 맵 할 수 없습니다.
ora-01762     vopdrv: 뷰의 질의 블록이 from 구에 없습니다.
ora-01763     갱신 또는 삭제가 외부 결합 테이블을 포함하고 있습니다.
ora-01764     결합의 새로운 갱신 값은 유일한것을 보증할 수 없습니다.
ora-01765     테이블의 소유자명을 지정할 수 없습니다.
ora-01766     데이타 사전 개체명을 사용할 수 없습니다.
ora-01767     update ... set 식은 부속 질의이어야 합니다.
ora-01768     수치 열이 너무 깁니다.
ora-01769     cluster 옵션 지정이 중복되었습니다.
ora-01770     cluster 옵션은 사용할 수 없습니다.
ora-01771     클러스터 테이블에 대한 옵션이 부적합합니다.
ora-01772     level에 대한 값을 지정해야 합니다.
ora-01773     지정한 create table 문에는 열 데이타 유형을 지정할 수 없습니다.
ora-01774     한번 이상 덤프 취소 옵션이 지정되었습니다.
ora-01775     동의어가 순환 고리 유형으로 정의되어 있습니다.
ora-01776     결합 뷰에 의하여 하나 이상의 기본 테이블을 수정할 수 없습니다.
ora-01777     with grant 옵션은 사용할 수 없습니다.
ora-01778     부속 질의의 내포 레벨의 제한을 초과했습니다.
ora-01779     키-보존된것이 아닌 테이블로 맵한 열을 수정할 수 없습니다.
ora-01780     스트링 상수가 필요합니다.
ora-01781     unrecoverable은 as select와 함께 지정해야 합니다.
ora-01782     클러스터 또는 클러스터 테이블에 대해서는 unrecoverable을 지정할 수 없습니다.
ora-01783     recoverable 또는 unrecoverable 중 하나만을 지정할 수 있습니다.
ora-01784     데이타베이스 미디어 복구가 사용불가이면 recoverable을 지정할 수 없습니다.
ora-01785     order by 항목은 select 리스트 식의 수라야 합니다.
ora-01786     for update 구는 사용할 수 없습니다.
ora-01787     질의 블록당 1개의 구만 허용됩니다.
ora-01788     connect by 구를 지정해 주십시오.
ora-01789     질의의 결과 열의 수가 틀립니다.
ora-01790     대응하는 식과 같은 데이타 유형이어야 합니다.
ora-01791     select 식이 부적합합니다.
ora-01792     테이블, 뷰에 지정 가능한 열의 최대수는 254 입니다.
ora-01793     지정 가능한 색인 열의 최대수는 16 입니다.
ora-01794     지정 가능한 클러스터 열의 최대수는 16 입니다.
ora-01795     리스트에 지정 가능한 식의 최대수는 254 입니다.
ora-01796     연산자의 지정이 부적합합니다.
ora-01797     연산자의 뒤에 any 또는 all을 지정해 주십시오.
ora-01798     exception 키워드가 누락되었습니다.
ora-01799     열은 부속 질의에 외부결합될 수 없습니다.
ora-01800     날짜 형식 내의 리터럴이 너무 길어서 처리할 수 없습니다.
ora-01801     날짜 형식이 내부 버퍼에 비해 너무 깁니다.
ora-01802     율리우스일의 지정이 범위를 초과했습니다.
ora-01803     날짜/시각의 획득 실패
ora-01810     형식 코드가 2 번 나타났습니다.
ora-01811     율리우스일에서 년간 통산일의 사용은 금지되어 있습니다.
ora-01812     년은 1 번만 지정할 수 있습니다.
ora-01813     시간은 1 번만 지정할 수 있습니다.
ora-01814     am/pm 과 a.m./p.m.은 혼재할 수 없습니다.
ora-01815     bc/ad 와 b.c./a.d.는 혼재할 수 없습니다.
ora-01816     월은 1 번만 지정할 수 있습니다.
ora-01817     요일은 1 번만 지정할 수 있습니다.
ora-01818     hh24와 am/pm은 혼재할 수 없습니다.
ora-01819     부호가 붙은 년과 bc/ad는 혼재할 수 없습니다.
ora-01820     날짜 지정에 포함된 형식 코드가 부적합합니다.
ora-01821     날짜 형식이 부적합합니다.
ora-01830     날짜 형식의 지정에 불필요한 데이타가 포함되어 있습니다.
ora-01831     년과 율리우스일은 혼재할 수 없습니다.
ora-01832     년의 일과 율리우스일은 혼재할 수 없습니다.
ora-01833     월과 율리우스일은 혼재할 수 없습니다.
ora-01834     월의 일과 율리우스일은 혼재할 수 없습니다.
ora-01835     요일과 율리우스일은 혼재할 수 없습니다.
ora-01836     시와 일의 초는 혼재할 수 없습니다.
ora-01837     시의 분과 일의 초는 혼재할 수 없습니다.
ora-01838     분의 초와 일의 초는 혼재할 수 없습니다.
ora-01839     지정된 월에 대한 날짜가 부적합합니다.
ora-01840     입력된 값의 길이가 날짜 형식에 비해 부족합니다.
ora-01841     년은 -4713 과 +4713 사이의 값으로 지정해 주십시오.
ora-01842     분기는 1 부터 4 사이의 값을 지정해 주십시오.
ora-01843     지정한 월이 부적합합니다.
ora-01844     주를 올바르게 지정해 주십시오 ( 1 에서 52 사이 )
ora-01845     주를 올바르게 지정해 주십시오 ( 1 에서 5 사이 )
ora-01846     지정한 요일이 부적합합니다.
ora-01847     날짜를 올바르게 지정해 주십시오 ( 1 에서 말일까지 )
ora-01848     날짜를 올바르게 지정해 주십시오 ( 1 에서 365 사이 )
ora-01849     시간을 올바르게 지정해 주십시오 ( 1 에서 12 사이 )
ora-01850     시간을 올바르게 지정해 주십시오 ( 0 에서 23 사이 )
ora-01851     분을 올바르게 지정해 주십시오 ( 0 에서 59 사이 )
ora-01852     초를 올바르게 지정해 주십시오 ( 0 에서 59 사이 )
ora-01853     초를 올바르게 지정해 주십시오 ( 0 에서 86399 사이 )
ora-01854     율리우스 날짜는 1에서 5373484 사이여야 합니다.
ora-01855     am/a.m. 또는 pm/p.m.이 필요합니다.
ora-01856     bc/b.c. 또는 ad/a.d.이 필요합니다.
ora-01857     시간대가 부적합합니다.
ora-01858     수치를 지정해야할 곳에 비수치 문자가 지정되었습니다.
ora-01859     문자를 지정해야할 곳에 비문자가 지정되었습니다.
ora-01860     년의 주는 1 에서 53 사이이어야 합니다.
ora-01861     스트링이 형식 스트링에 맞지 않습니다.
ora-01862     이 형식의 항목에 대한 잘못된 자리수
ora-01898     precision 지정자가 너무 많습니다.
ora-01899     잘못된 precision 지정자입니다.
ora-01900     키워드 logfile을 지정해 주십시오
ora-01901     키워드 rollback을 지정해 주십시오
ora-01902     키워드 segment를 지정해 주십시오
ora-01903     키워드 events를 지정해 주십시오
ora-01904     키워드 datafile을 지정해 주십시오
ora-01905     키워드 storage를 지정해 주십시오
ora-01906     키워드 backup을 지정해 주십시오
ora-01907     키워드 tablespace를 지정해 주십시오
ora-01908     키워드 exists를 지정해 주십시오
ora-01909     키워드 reuse를 지정해 주십시오
ora-01910     키워드 tables을 지정해 주십시오
ora-01911     키워드 contents를 지정해 주십시오
ora-01912     키워드 row를 지정해 주십시오
ora-01913     키워드 exclusive를 지정해 주십시오
ora-01914     시퀀스 번호에 대한 감사 옵션이 부적합합니다.
ora-01915     뷰에 대한 감사 옵션이 부적합합니다.
ora-01916     키워드 online, offline, resize, autoextend 또는 end를 지정하십시오
ora-01917     사용자 또는 롤 %s가 존재하지 않습니다.
ora-01918     사용자 %s가 존재하지 않습니다.
ora-01919     롤 %s가 존재하지 않습니다.
ora-01920     사용자명 %s가 다른 사용자나 롤명과 상충됩니다.
ora-01921     롤명 %s가 다른 사용자나 롤명과 상충됩니다.
ora-01922     %s를 삭제하려면 cascade를 지정하여야 합니다.
ora-01923     개체가 다른 사용자에 의해서 잠금 되어 cascade가 비정상 종료되었습니다.
ora-01924     롤 %s가 허가되지 않았거나 존재하지 않습니다.
ora-01925     가용 롤의 최대치 %s를 초과했습니다.
ora-01926     with grant option으로 롤을 grant할 수 없습니다.
ora-01927     허가하지 않은 권한을 revoke할 수 없습니다.
ora-01928     모든 권한에 대하여 grant 옵션이 허가되지는 않았습니다.
ora-01929     grant할 권한이 없습니다.
ora-01931     %s를 롤에게 허가할 수 없습니다.
ora-01932     롤 %s에 대한 admin 옵션이 허가되지 않았습니다.
ora-01933     롤에 대한 권한으로 저장 개체를 생성할 수 없습니다.
ora-01934     순환되는 롤 권한 부여가 감지되었습니다.
ora-01935     누락된 사용자 혹은 롤명
ora-01936     사용자나 롤을 생성시 소유자를 지정할 수 없습니다.
ora-01937     부적절한 롤명
ora-01938     create user에 대한 identified by가 지정되어야 합니다.
ora-01939     admin option만이 지정될 수 있습니다.
ora-01940     현재 연결되어 있는 사용자를 삭제할 수 없습니다.
ora-01941     키워드 sequence가 요구됩니다.
ora-01942     identified by 와 externally는 모두 지정될 수 없습니다.
ora-01943     identified by가 이미 지정되었습니다.
ora-01944     identified externally가 이미 지정되었습니다.
ora-01945     default role[s]가 이미 지정되었습니다.
ora-01946     default tablespace가 이미 지정되었습니다.
ora-01947     temporary tablespace가 이미 지정되었습니다.
ora-01949     role 키워드가 요구합니다.
ora-01950     테이블 영역 %s에 대한 권한이 없읍
ora-01951     role %s가 %s에 허가되지 않았습니다.
ora-01952     시스템 권한이 %s에 허가되지 않았습니다.
ora-01953     명령어가 더 이상 유효하지 않음,alter user를 보내십시오
ora-01954     create user에 default role절이 유효하지 않습니다.
ora-01955     default role %s가 사용자에게 허가되지 않았습니다.
ora-01956     os_roles이 사용될시 부적절한 명령어
ora-01957     키워드 min 혹은 max 를 지정해 주십시오
ora-01958     layer 옵션을 위한 정수가 필요합니다.
ora-01959     opcode 옵션을 위한 정수가 필요합니다.
ora-01960     부적절한 덤프 로그 화일 옵션입니다.
ora-01961     부적절한 덤프 옵션입니다.
ora-01962     화일 번호 혹은 시퀀스 번호를 지정해야 합니다.
ora-01963     블록 번호를 지정해야 합니다.
ora-01964     time 옵션을 위한 시간을 지정해야 합니다.
ora-01965     period 를 지정해야 합니다.
ora-01967     create controlfile 의 부적절한 옵션입니다.
ora-01968     resetlogs 혹은 noresetlogs 를 한번만 지정하십시오
ora-01969     resetlogs 혹은 noresetlogs 를 지정해야 합니다.
ora-01970     create controlfile에 대한 데이타베이스 명을 지정해야 합니다.
ora-01971     부적절한 alter tracing 옵션
ora-01972     alter tracing enable 혹은 disable에 대한 스트링을 지정해야 합니다.
ora-01973     변경 번호 누락
ora-01974     부적절한 아카이브옵션
ora-01975     변환 번호 %s에 부적절한 문자
ora-01976     변경 번호 누락
ora-01977     쓰레드 번호 누락
ora-01978     시퀀스 번호 누락
ora-01979     롤 %s에 대한 암호가 틀리거나 누락되었습니다.
ora-01980     os role 초기화시 오류
ora-01981     현 권한취소를 수행하려면 cascade constraints가 지정되어야 합니다.
ora-01982     테이블에 대한 부적절한 감사 옵션
ora-01983     default에 대한 부적절한 감사 옵션
ora-01984     프로시저/패캐지/함수에 대한 부적절한 감사 옵션
ora-01985     license_max_users 파라미터가 초과되어 사용자를 생성할 수 없습니다.
ora-01986     optimizer_goal에 대한 옵션 부적합
ora-01987     클라이언트 os 사용자명이 너무 깁니다.
ora-01988     원격 os 로그온이 허용되지 않습니다.
ora-01989     롤 %s는 운영 시스템에 의해 권한되지 않았습니다.
ora-01990     암호 %s 화일을 여는데 오류가 발생했습니다.
ora-01991     %s 암호 화일이 부적합합니다.
ora-01992     %s 암호 화일을 닫는데 오류가 발생했습니다.
ora-01993     %s 암호 화일을 쓰는 중에 오류가 발생했습니다.
ora-01994     grant 실패: 공용 암호 화일에다 사용자를 추가할 수 없습니다.
ora-01995     %s 암호 화일을 읽는 중에 오류가 발생했습니다.
ora-01996     grant 실패: %s 암호 화일이 꽉 찼습니다.
ora-01997     grant 실패: %s 사용자는 여기에 없습니다.
ora-01998     revoke 실패: sys 사용자는 항상 sysoper 와 sysdba를 가지고 있습니다.
ora-01999     암호 화일 모드는 %s 에서 %s로 바꾸었습니다.
ora-02000     누락된 %s 키워드
ora-02001     사용자 sys는 빈리스트 그룹와 함께 색인을 생성하는것을 허락하지 않습니다.
ora-02002     감사 추적 테이블에 기록 중 오류가 발생했습니다.
ora-02003     userenv 파라미터가 부적합합니다.
ora-02004     보안 위반
ora-02005     길이(-1)가 부적합합니다.
ora-02006     팩형 10진 형식 스트링이 부적합합니다.
ora-02007     allocate 또는 deallocate 옵션을 rebuild와 같이 사용할 수 없습니다.
ora-02008     숫자가 아닌 열에 대하여 0 이외의 스케일이 지정되었습니다.
ora-02009     화일에 지정된 크기는 0이 아니어야 합니다.
ora-02010     호스트 연결 스트링을 지정해 주십시오
ora-02011     데이타베이스 링크명이 중복되었습니다.
ora-02012     키워드 using 을 지정해 주십시오
ora-02013     키워드 connect 를 지정해 주십시오
ora-02014     for update 구를 사용해서 선택할 수 없습니다.
ora-02015     원격 테이블에 대하여 for update 구는 사용할 수 없습니다.
ora-02016     원격 데이타베이스에서는 start with 로 부속 질의를 사용할 수 없습니다.
ora-02017     정수 값을 지정해 주십시오
ora-02018     같은 이름의 데이타베이스 링크가 개방, 연결되어 있습니다.
ora-02019     원격 데이타베이스를 찾을 수 없을때 기술적으로 연결하십시오
ora-02020     너무 많은 데이타베이스 링크들이 사용되고 있습니다.
ora-02021     원격 데이타베이스에 ddl 조작들이 허용되지 않습니다.
ora-02022     원격 문장이 원격 개체를 갖는 최적화 되지않을 뷰를 사용합니다.
ora-02023     원격 데이타베이스는 start with, connect by 술어를 평가할 수 없습니다.
ora-02024     데이타 링크를 찾을 수 없습니다.
ora-02025     sql 문장에 있는 모든 테이블은 원격 데이타베이스에 있어야만 합니다.
ora-02026     키워드 link 를 지정해 주십시오
ora-02027     long 열은 복수 행의 갱신이 불가능합니다.
ora-02028     정확한 행의 번호를 인출 하는것이 지원되지 않습니다.
ora-02029     키워드 file 을 지정해 주십시오
ora-02030     고정 테이블/고정 뷰에서는 선택만 가능합니다.
ora-02031     고정 테이블에 대하여 rowid 를 지정할 수 없습니다.
ora-02032     클러스터 색인의 작성 이전에 클러스터 테이블을 사용할 수 없습니다.
ora-02033     이미 클러스터 색인이 존재하고 있습니다.
ora-02034     스피드 바인드가 허용되지 않습니다.
ora-02035     부당한 작업묶음의 조합입니다.
ora-02036     자동커서 개방시 묘사할 변수가 너무 많습니다.
ora-02037     초기화되지 않은 스피드 바인드 영역
ora-02038     배열 유형에 정의가 허용되지 않습니다
ora-02039     배열 유형에 값으로 바인드는 허용되지 않습니다
ora-02040     원격 데이타베이스는 %s는 두단계 커밋을 지원하지 않습니다.
ora-02041     클라이언트 데이타베이스는 트랜잭션을 시작하지 않습니다.
ora-02042     너무 많은 분산 트랜잭션들
ora-02043     %s를 실행하기 전에 현재 트랜잭션을 끝내야 합니다.
ora-02044     트랜잭션 관리자 로그인이 거부되었음: 트랜잭션이 진행중입니다.
ora-02045     글로벌 트랜잭션에 관여한 로컬 세션이 너무 많습니다.
ora-02046     분산 트랜잭션이 이미 시작되었습니다.
ora-02047     진행 중에 분산 트랜잭션을 결합할 수 없습니다.
ora-02048     로그잉하지 않고 분산 트랜잭션을 시작하려 했습니다.
ora-02049     시간초과: 분산 트랜잭션이 잠금으로 대기중 입니다.
ora-02050     트랜잭션 %s가 롤백되고, 다른 원격 db는 불명료한 상태입니다.
ora-02051     동일 트랜잭션내에 다른 세션이 실패했습다.
ora-02052     원격 트랜잭션이 %s에서 실패했습니다.
ora-02053     트랜잭션 %s가 커밋되고, 다른 원격 db는 불명료한 상태입니다.
ora-02054     트랜잭션 %s이 불명료한 상태입니다.
ora-02055     분산 수정 작업이 실패했음; 롤백이 요구됩니다.
ora-02056     2pc: %s: 잘못된 두 단계 명령어 번호 %s(%s로 부터의)
ora-02057     2pc: %s: 잘못된 두 단계 복구상태 번호 %s(%s로 부터의)
ora-02058     id %s를 가지는 준비된 트랜잭션이 없습니다.
ora-02059     커밋 코맨트의 ora-2pc-crash-test-%s
ora-02060     select for update문에 분산 테이블에 대한 결합이 지정되었습니다.
ora-02061     select for update에 분산 테이블 목록이 지정되었습니다.
ora-02062     분산 복구가 dbid %s를 받았습니다(%s가 기대되었으나)
ora-02063     %s%s가 선행됨 (%s%s로 부터)
ora-02064     분산 작업이 지원되지 않습니다.
ora-02065     alter system에 대한 부당한 옵션
ora-02066     누락 혹은 부당한 mts_dispatchers 텍스트
ora-02067     트랜잭션 혹은 세이브포인트 롤백이 요구됩니다.
ora-02068     %s%s로 부터의 다음의 치명적인 오류가 있습니다.
ora-02069     global_names 파라미터는 이 작업에 true라고 설정해야만 합니다.
ora-02070     데이타베이스 %s%s는 이문맥에서 %s를 지원하지 않습니다.
ora-02071     원격 데이타베이스 %s에 대한 능력을 초기화시 오류
ora-02072     분산 데이타베이스의 네트워크 프로토콜이서로 맞지 않습니다.
ora-02073     원격 수정에서는 시퀀스번호가 지원되지 않습니다.
ora-02074     분산 트랜잭션에 %s을 할 수 없습니다.
ora-02075     사용되지 않는 오류입니다.
ora-02076     수정된 테이블이나 long 열의 시퀀스가 동일한 노드에 있어야 합니다.
ora-02077     select문에서 long 열의 값을 가지고 올때는 동일한 노드에 있어야 합니다.
ora-02078     alter system fixed_date에 대한 지정이 잘못됐습니다.
ora-02079     새로운 세션이 분산 트랜잭션의 커밋에 동참할 수 있습니다.
ora-02080     데이타베이스 링크가 사용중입니다.
ora-02081     데이타베이스 링크가 열려있지 않았습니다.
ora-02082     루프백(loopback) 데이타베이스 링크는 연결 수식어를 가져야합니다.
ora-02083     데이타베이스명에 부적절한 문자 %s가 있습니다.
ora-02084     데이타베이스명에 요소가 누락되었습니다.
ora-02085     데이타베이스 링크 %s가 %s에 연결됩니다.
ora-02086     데이타베이스 (링크)명이 너무깁니다.
ora-02087     동일 트랜잭션내의 다른 프로세스에 의해 개체가 잠금 되었습니다.
ora-02088     분산 데이타베이스 옵션이 설치되지 않았습니다.
ora-02089     종속 세션에서는 commit이 허용되지 않습니다.
ora-02090     네트워크 오류: callback+passthru
ora-02091     트랜잭션이 롤백되었습니다.
ora-02092     분산 트랜잭션에 대한 트랜잭션 테이블 슬롯이 부족합니다.
ora-02093     transactions_per_rollback_segment(%s)가 가능한 최대치(%s) 보다 많습니다.
ora-02094     중복 옵션이 설치되지 않았습니다.
ora-02095     지정된 초기화 파라미터를 수정할 수 없습니다.
ora-02096     지정된 초기화 파라미터는 이 옵션으로 수정가능하지 않습니다.
ora-02098     색인-테이블 참조 (:i)를 파싱하는데 오류
ora-02099     내부 목적으로 사용됨, 출력되지 않아야 합니다.
ora-02100     pcc: 메모리 부족 (할당할 수 없습니다.
ora-02101     pcc: 일치하지 않는 커서 캐쉬(uce/cuc 불일치)
ora-02102     pcc: 일치하지 않는 커서 캐쉬(이 uce에 대한 cuc 엔트리가 없습니다.
ora-02103     pcc: 일치하지 않는 커서 캐쉬(cuc 참조가 범위를 벗어남)
ora-02104     pcc: 일치하지 않는 호스트 캐쉬(사용가능한 cuc가 없습니다)
ora-02105     pcc: 일치하지 않는 커서 캐쉬(캐쉬내에 cuc 엔트리가 없습니다)
ora-02106     pcc: 일치하지 않는 커서 캐쉬(oracursor nr이 잘못됐습니다)
ora-02107     pcc: 프로그램이 수행시 라이브러리에 대해 너무 오래됨: 다시 pcc하십시오
ora-02108     pcc: 수행시 라이브러리에 유효하지않은 디스크립터가 넘겨졌습니다.
ora-02109     pcc: 일치하지 않는 호스트 캐쉬(sit 참조가 범위를 벗어남)
ora-02110     pcc: 일치하지 않는 호스트 캐쉬(유효하지 않은 sqi 유형)
ora-02111     pcc: 힙 일관성 오류
ora-02112     pcc: select..into가 너무 많은 행을 리턴합니다.
ora-02140     테이블스페이스 이름이 부적합합니다.
ora-02141     offline 옵션이 부적합합니다.
ora-02142     적절한 alter tablespace 옵션을 지정해 주십시오
ora-02143     storage 옵션이 부적합합니다.
ora-02144     적절한 alter cluster 옵션을 지정해 주십시오
ora-02145     storage 옵션을 지정해 주십시오
ora-02146     shared 옵션이 복수 회 지정되었습니다.
ora-02147     shared 와 exclusive 는 혼용할 수 없습니다.
ora-02148     exclusive 옵션이 복수 회 지정되었습니다.
ora-02155     default 테이블 영역 식별자가 부적합합니다.
ora-02156     temporary의 테이블 영역 식별자가 부적합합니다.
ora-02157     alter user 옵션을 지정해 주십시오
ora-02158     create index 옵션이 부적합합니다.
ora-02159     설치된 dlm은 릴리즈가능한 잠금 모드를 지원하지 않습니다.
ora-02161     maxlogfiles에 대한 값이 부적합합니다.
ora-02162     maxdatafiles에 대한 값이 부적합합니다.
ora-02163     freelist groups에 대한 값이 부적합합니다.
ora-02164     datafile 구가 2개 이상 지정되었습니다.
ora-02165     create database 옵션의 지정이 부적합합니다.
ora-02166     archivelog 와 noarchivelog 가 함께 지정되었습니다.
ora-02167     logfile 구가 2 회 이상 지정되었습니다.
ora-02168     freelists에 대한 부당한 값
ora-02169     freelists 저장영역 옵션은 허용되지 않습니다.
ora-02170     freelist groups 저장영역 옵션은 허용되지 않습니다.
ora-02171     maxloghistory에 대한 부당한 값
ora-02172     사용불가 쓰레드에 대한 public 키워드는 적합하지 않습니다.
ora-02173     drop tablespace 옵션이 부적합합니다.
ora-02174     요구되는 쓰레드 번호의 누락
ora-02175     롤백 세그먼트 명이 부적합합니다.
ora-02176     create rollback segment 옵션이 부적합합니다.
ora-02177     요구되는 그룹 번호의 누락
ora-02178     올바른 구문 : set transaction read { only | write }
ora-02179     적당한 옵션: isolation level { serializable | read committed }
ora-02180     create tablespace 옵션이 부적합합니다.
ora-02181     rollback work 옵션이 부적합합니다.
ora-02182     세이브포인트명을 지정해 주십시오
ora-02183     적당한 옵션: isolation_level { serializable | read committed }
ora-02184     revoke 에서는 자원의 할당량을 지정할 수 없습니다.
ora-02185     commit 뒤에 work 이외의 토큰이 지정되었습니다.
ora-02186     테이블 영역의 자원 권한은 다른 권한과 동시에 지정할 수 없습니다.
ora-02187     할당량의 지정이 부적합합니다.
ora-02189     on <tablespace> 가 필요합니다.
ora-02190     키워드 tables를 지정해 주십시오
ora-02191     올바른 구문: set transaction use rollback segment <rbs>
ora-02192     pctincrease는 롤백 세그먼트 영역절에서는 허용되지 않습니다.
ora-02194     이벤트 지정 구문 오류 %s (중요치 않은 오류 %s), %s 부근에
ora-02195     %s 개체를 %s 테이블스페이스에서 만들도록 시도합니다.
ora-02196     permanent/temporary 옵션이 이미 지정되었습니다.
ora-02197     화일 리스트가 이미 지정되어 있습니다.
ora-02198     online/offline 옵션이 이미 지정되어 있습니다.
ora-02199     datafile 구를 지정해 주십시오
ora-02200     with grant option 은 public 에 대하여 사용할 수 없습니다.
ora-02201     시퀀스를 사용할 수 없습니다.
ora-02202     클러스터에서는 더이상의 테이블을 작성할 수 없습니다.
ora-02203     initial 영역 옵션은 허가되지 않습니다.
ora-02204     alter, index, references 그리고 execute는 뷰에서 사용할 수 없습니다.
ora-02205     select 와 alter 권한만이 시퀀스에 대하여 사용할 수 있습니다.
ora-02206     initrans 옵션 지정이 중복되었습니다.
ora-02207     initrans 옵션의 값이 부적합합니다.
ora-02208     maxtrans 옵션 지정이 중복되었습니다.
ora-02209     maxtrans 옵션의 값이 부적합합니다.
ora-02210     alter table 옵션을 지정해 주십시오
ora-02211     pctfree 또는 pctused 에 대한 값이 부적합합니다.
ora-02212     pctfree 옵션 지정이 중복되었습니다.
ora-02213     pctused 옵션 지정이 중복되었습니다.
ora-02214     backup 옵션 지정이 중복되었습니다.
ora-02215     tablespace 구가 중복되었습니다.
ora-02216     테이블 영역명을 지정해 주십시오
ora-02217     기억 영역(storage) 옵션 지정이 중복되었습니다.
ora-02218     initial 옵션의 값이 부적합합니다.
ora-02219     next 옵션의 값이 부적합합니다.
ora-02220     minextents 옵션의 값이 부적합합니다.
ora-02221     maxextents 옵션의 값이 부적합합니다.
ora-02222     pctincrease 옵션의 값이 부적합합니다.
ora-02223     부당한 optimal 저장 영역 옵션값
ora-02224     execute 권한은 테이블에 대해서는 허용되지 않습니다.
ora-02225     프로시저에 대해서는 execute 권한만이 유효합니다.
ora-02226     부당한 maxextents값 (허용 최대치: %s)
ora-02227     클러스터명이 부적합합니다.
ora-02228     size 지정이 중복되었습니다.
ora-02229     size 옵션의 값이 부적합합니다.
ora-02230     alter cluster 옵션이 부적합합니다.
ora-02231     적절한 alter database 옵션을 지정해 주십시오
ora-02232     mount 모드가 부적합합니다.
ora-02233     close 모드가 부적합합니다.
ora-02234     이 테이블에 대한 변경은 이미 로그되어 있습니다.
ora-02235     이 테이블은 다른 테이블에 이미 변경을 기록했습니다.
ora-02236     화일명이 부적합합니다.
ora-02237     화일 크기가 부적합합니다.
ora-02238     화일명 리스트의 화일 수가 다릅니다.
ora-02239     이 시퀀스를 참조하는 개체가 있습니다.
ora-02240     objno 혹은 tabno에 대한 부당한 값
ora-02241     extents (file <n> block <n> size <n>, ...)유형이어야 합니다.
ora-02242     alter index 옵션을 지정해 주십시오
ora-02243     alter index 또는 alter snapshot 옵션이 부적합합니다.
ora-02244     alter rollback segment 옵션이 부적합합니다.
ora-02245     롤백 세그먼트 명이 부적합합니다.
ora-02246     events 의 텍스트를 지정해 주십시오
ora-02247     alter session 옵션을 지정해 주십시오
ora-02248     alter session 옵션이 부적합합니다.
ora-02249     maxlogmembers에 값이 빠졌거나 부당한 값입니다.
ora-02250     적절한 제약명을 지정해 주십시오
ora-02251     부속 질의는 사용할 수 없습니다.
ora-02252     검사 제약 조건이 올바르지 않습니다.
ora-02253     제약을 지정할 수 없습니다.
ora-02254     default <expression>은 사용할 수 없습니다.
ora-02255     못쓰게된 7.1.5
ora-02256     참조하고 있는 열의 숫자, 유형 그리고 크기는 참조 열의 수와 일치해야 합니다.
ora-02257     열의 최대수를 초과했습니다.
ora-02258     null, not null 지정이 중복 또는 혼재되었습니다.
ora-02259     unique/primary key의 지정이 중복되었습니다.
ora-02260     테이블에는 기본 키를 1 개만 포함시킬 수 있습니다.
ora-02261     유일 키 또는 기본 키가 이미 존재하고 있습니다.
ora-02262     ora-%05d 발생. 열의 디폴트 값 식의 유형 검사 오류.
ora-02263     열의 데이타 유형을 지정해 주십시오
ora-02264     기존의 제약에 사용된 이름입니다.
ora-02265     참조 열의 데이타 유형이 정의되지 않았습니다.
ora-02266     외래 키에 의해 참조되는 유일/기본 키가 테이블에 있습니다.
ora-02267     열의 데이타 유형이 참조 열의 데이타 유형와 일치하지 않습니다.
ora-02268     참조 테이블에 기본 키가 없습니다.
ora-02269     키 열은 long 데이타 유형을 취할 수 없습니다.
ora-02270     이 열목록에 대한 유일 혹은 일차 키가 일치하지 않습니다.
ora-02271     제약명이 없습니다.
ora-02272     제약 열은 long 데이타 유형을 취할 수 없습니다.
ora-02273     유일/기본 키가 외부 키에 의해 참조되었습니다.
ora-02274     중복된 참조 제약 지정입니다.
ora-02275     참조 제약이 이미 테이블에 존재합니다.
ora-02276     디폴트 유형이 열의 유형과 일치하지 않습니다.
ora-02277     시퀀스명이 부적합합니다.
ora-02278     maxvalue/nomaxvalue 지정이 중복 또는 혼재되어 있습니다.
ora-02279     minvalue/nominvalue 지정이 중복 또는 혼재되어 있습니다.
ora-02280     cycle/nocycle 지정이 중복 또는 혼재되어 있습니다.
ora-02281     cache/nocache 지정이 중복 또는 혼재되어 있습니다.
ora-02282     order/noorder 지정이 중복 또는 혼재되어 있습니다.
ora-02283     개시 시퀀스 번호는 변경할 수 없습니다.
ora-02284     increment by 지정이 중복되었습니다.
ora-02285     start with 지정이 중복되었습니다.
ora-02286     alter sequence 옵션을 지정해 주십시오
ora-02287     시퀀스 번호는 이 위치에 사용할 수 없습니다.
ora-02288     open 모드가 부적합합니다.
ora-02289     시퀀스가 존재하지 않습니다.
ora-02290     체크 제약조건(%s.%s)이 위배되었습니다.
ora-02291     무결성 제약조건(%s.%s)이 위배되었습니다- 부모 키가 없습니다.
ora-02292     무결성 제약조건(%s.%s)이 위배되었습니다- 자식 레코드가 발견되었습니다.
ora-02293     (%s.%s)를 사용가능하게 할 수 없습니다 - 잘못된 제약을 점검
ora-02294     참조 제약을 추가할 수 없음 - 부모 키가 없습니다.
ora-02295     제약에 대한 하나 이상의 사용가능/사용불가 절이 있습니다.
ora-02296     제약 (%s.%s)을 사용가능하게 할 수 없음 - 부합하는 값이 없습니다.
ora-02297     제약 (%s.%s)을 사용불가하게 할 수 없음 - 종속관계가 있습니다.
ora-02298     제약 (%s.%s)을 사용가능하게 할 수 없음 - 부모 키가 없습니다.
ora-02299     제약 (%s.%s)을 사용가능하게 할 수 없음 - 중복 키가 있습니다.
ora-02351     레코드 %s: 거부되었습니다- 테이블 %s, 열 %s에서 오류
ora-02352     직접 패스 연결은 동기종 간에만 가능합니다.
ora-02353     복수 자리의 문자 오류
ora-02354     필드 %s에 대한 초기치를 위한 변환 오류가 발생했습니다.
ora-02355     constant 필드 %s에 변환 오류가 발생했습니다.
ora-02356     데이타베이스에 더 이상 영역이 없음 - 로드를 계속할 수 없습니다.
ora-02357     팩형 십진수 변환 오류
ora-02358     존 십진수 변환 오류
ora-02359     데이타 화일의 필드가 지정된 길이를 초과합니다.
ora-02360     논리 레코드의 끝 이전에 열을 찾을 수 없습니다 (trailing nullcols사용)
ora-02361     최초 인클로징 문자를 찾을 수 없습니다.
ora-02362     논리 레코드의 끝 - 두번째 인클로징 문자가 없습니다.
ora-02363     terminated 와 enclosed 가 지정된 필드에 종료 문자가 없습니다.
ora-02364     %s 레코드가 디스카드됨 - 모든 when 구의 조건을 만족하지 않습니다.
ora-02365     %s 색인이 로드되지 못함
ora-02366     %s 테이블의 다음 색인이 처리되었습니다.
ora-02367     %s 색인이 로드되었습니다.
ora-02368     %s 레코드가 디스카드됨 - 모든 열이 널입니다.
ora-02369     경고 : 가변길이 필드가 잘렸습니다.
ora-02370     %s 레코드 - %s 테이블의 %s 열에 경고 발생
ora-02371     직접 패스를 위해서는 로더가 %s.%s.%s.%s.%s 버전 이상 이어야 합니다.
ora-02372     상대시작 위치 > 절대필드 마감 위치
ora-02373     테이블 %s에 대한 입력 문의 구문분석시 오류
ora-02374     읽기 버퍼 큐에 대한 더 이상의 슬롯이 없습니다.
ora-02376     부당한 혹은 중복된 자원
ora-02377     자원의 부당한 한계치
ora-02378     중복된 자원명 %s
ora-02379     프로화일 %s이 이미 존재합니다.
ora-02380     프로화일 %s이 존재하지 않습니다.
ora-02381     public_default 프로화일을 삭제할 수 없습니다.
ora-02382     프로화일 %s에 사용자가 할당되어 있어, cascade 없이 삭제할 수 없습니다.
ora-02383     부당한 비용요소
ora-02390     composite_limit을 초과했음, 로그오프될 것입니다.
ora-02391     동시 sessions_per_user 한계치를 초과했습니다.
ora-02392     cpu 사용에 대한 세션 한계치를 초과했음. 로그오프될 것입니다.
ora-02393     cpu 사용에 대한 호출 한계치를 초과했습니다.
ora-02394     io 사용에 대한 세션 한계치를 초과했음. 로그오프될 것입니다.
ora-02395     io 사용에 대한 호출 한계치를 초과했습니다.
ora-02396     최대 유휴(idle) 시간을 초과했음. 다시 연결하십시오
ora-02397     private_sga 한계치 초과, 로그오프될 것입니다.
ora-02398     프로시저 영역 사용을 초과했습니다.
ora-02399     최대 연결시간을 초과했음. 로그오프될 것입니다.
ora-02401     다른 사용자의 뷰를 explain 할 수 없습니다.
ora-02402     plan_table이 없습니다.
ora-02403     플랜 테이블이 정확한 유형이 아닙니다.
ora-02404     지정된 플랜 테이블이 없습니다.
ora-02420     스키마에 대한 권한부여 절의 누락
ora-02421     누락 혹은 부당한 스키마 권한 식별자
ora-02422     누락 혹은 부당한 스키마 요소
ora-02423     스키마명이 스키마 권한 식별자와 맞지 않습니다.
ora-02424     잠재적인 순환 뷰 참조 혹은 불명의 참조 테이블
ora-02425     테이블의 생성실패
ora-02426     권한 부여 실패
ora-02427     뷰의 생성실패
ora-02428     외래키 참조를 추가할 수 없습니다.
ora-02429     유일/일차 키 적용을 위한 색인을 삭제할 수 없습니다.
ora-02430     제약(%s)을 가용화할 수 없음 - 그런 제약이 없습니다.
ora-02431     제약(%s)을 사용불가하게 할 수 없음 - 그런 제약이 없습니다.
ora-02432     일차키를 사용가능하게 할 수 없음 - 테이블에 일차키가 정의되지 않았습니다.
ora-02433     일차키를 사용불가하게 수 없음 - 테이블에 일차키가 정의되지 않았습니다.
ora-02434     유일성(%s)을 사용가능하게 할 수 없음 - 테이블에 일차키가 정의되지 않았습니다.
ora-02435     유일성(%s)을 사용불가하게 수 없음 - 테이블에 일차키가 정의되지 않았습니다.
ora-02436     check 제약에 날짜 또는 시스템 변수가 잘못 지정되었습니다.
ora-02437     (%s.%s)를 사용가능하게 할 수 없습니다 - 잘못된 기본 키입니다.
ora-02438     열 검사제약은 다른 열을 참조할 수 없습니다.
ora-02439     유일/일차 키 제약상에 유일하지 않은 색인이 있습니다.
ora-02440     참조 제약과 함께 create as select는 허용되지 않습니다.
ora-02441     존재하지 않는 일차 키를 삭제할 수 없습니다.
ora-02442     존재하지 않는 유일 키를 삭제할 수 없습니다.
ora-02443     존재하지 않는 제약 - 삭제할 수 없습니다.
ora-02444     참조 제약에서만 기본 테이블을 참조할 수 없습니다.
ora-02445     예외 테이블이 없습니다.
ora-02446     create table ... as select 실패 - 제약 위반 점검
ora-02450     부당한 해쉬 옵션 - 키워드 is 누락
ora-02451     hashkeys의 중복지정
ora-02452     부당한 hashkeys 옵션값
ora-02453     hash is의 중복 지정
ora-02454     블록(%s)당 해쉬 키의 수가 최대치 %s를 초과했습니다.
ora-02455     클러스터키 열의 수는 1 이어야 합니다.
ora-02456     열 지정 hash is는 number(*,0)이어야 합니다.
ora-02457     hash is 옵션에 정당한 열을 지정하여야 합니다.
ora-02458     hash cluster에 대하여 hashkeys가 지정되어야 합니다.
ora-02459     해쉬 키 값은 양의 정수이어야 합니다.
ora-02460     해쉬 클러스터에 대한 부적절한 색인 작업입니다.
ora-02461     index 옵션의 부적절한 사용입니다.
ora-02462     index 옵션의 중복지정
ora-02463     hash is 옵션의 중복지정
ora-02464     클러스터 정의는 hash와 index 양쪽 다 일수는 없습니다.
ora-02465     hash is 옵션의 부적절한 사용
ora-02466     hash clusters를 위해 size 옵션의 변경은 허용되지 않습니다.
ora-02467     식에 참조된 열을 클러스터 정의에서 찾을 수 없습니다.
ora-02468     식에서 상수 또는 시스템 변수가 잘못 지정되었습니다.
ora-02469     해쉬 식은 oracle 번호를 리턴하지 않습니다.
ora-02470     to_date, userenv, 또는 sysdate가 해쉬 식에서 잘못 사용되었습니다.
ora-02471     sysdate, uid, user, rownum, 또는 level이 해쉬 식에서 잘못 사용되었습니다.
ora-02472     해쉬 식에 pl/sql 함수를 사용할 수 없습니다.
ora-02473     클러스터 해쉬 식의 값을 구하는 동안 오류 발생
ora-02474     고정된 해쉬 영역이 (%s) 범위를 사용했는데 허용된 (%s) 최대값을 초과했습니다.
ora-02476     테이블에서 병렬 직접 로드에 의해 색인을 만들수 없습니다.
ora-02477     개체 %s에 병렬 직접 로드를 실행할 수 없습니다.
ora-02478     기초 세그먼트에 합병하는것은 maxextents 한계을 초과하는 것입니다.
ora-02479     병렬 로드에다 화일명을 바꾸는 중에 오류가 발생했습니다.
ora-02480     이벤트에 대한 너무 많은 이벤트 클래스가 지정되었습니다.
ora-02481     이벤트에 대한 너무 많은 id 범위가 지정되었습니다.
ora-02482     이벤트 클래스를 지정했으나 이벤트를 주지 않았습니다.
ora-02483     이벤트에 대한 부당한 id 값을 지정했습니다.
ora-02485     id 값의 하한치가 상한치보다 큽니다.
ora-02486     화일 %s에서 오류. init.ora 파라미터인 trace_dest를 확인하십시오
ora-02487     화일명 %s을 기록시 오류. init.ora 파라미터인 trace_dest를 검사하십시오
ora-02489     trace_block_size (%s)가 %s로 나누어져야 합니다.
ora-02490     resize 절에 필요한 화일 크기가 빠졌습니다.
ora-02491     autoextend 절에 필요한 on 또는 off 키워드가 빠졌습니다.
ora-02492     next 절에 필요한 화일 블록 증가 크기가 빠졌습니다.
ora-02493     next 절의 화일 증가 크기가 부적당합니다.
ora-02494     maxsize 절의 최대 화일 크기가 부적당하거나 빠졌습니다.
ora-02495     화일 %s의 크기를 조정할 수 없는데, 테이블스페이스 %s가 읽기전용이기 때문입니다.
ora-02700     osnoraenv: oracle_sid의 변환시 오류입니다.
ora-02701     osnoraenv: 오라클 이미지명의 변환시 오류입니다.
ora-02702     osnoraenv: orapop 이미지명의 변환시 오류입니다.
ora-02703     osnpopipe: 파이프 생성에 실패했습니다.
ora-02704     osndopop: 포크에 실패했습니다.
ora-02705     osnpol: 통신 채널의 폴링에 실패했습니다.
ora-02706     osnshs: 호스트명이 너무 깁니다.
ora-02707     osnacx: 문맥 영역을 할당할 수 없습니다.
ora-02708     osnrntab: 호스트로의 연결에 실패, oracle_sid가 불명입니다.
ora-02709     osnpop: 파이프 생성에 실패했습니다.
ora-02710     osnpop: 포크(fork)에 실패했습니다.
ora-02711     osnpvalid: 검증 채널로의 연결에 실패했습니다.
ora-02712     osnpop: malloc 실패
ora-02713     osnprd: 메세지 수신에 실패했습니다.
ora-02714     osnpwr: 메세지 송신에 실패했습니다.
ora-02715     osnpgetbrkmsg: 호스트로부터의 메시지가 부정확한 메시지 유형을 갖습니다.
ora-02716     osnpgetdatmsg: 호스트로부터의 메시지가 부정확한 메시지 유형을 갖습니다.
ora-02717     osnpfs: 기록된 바이트 수가 잘못되었습니다.
ora-02718     osnprs: 프로토콜 재설정 오류
ora-02719     osnfop: 포크(fork)에 실패했습니다.
ora-02720     osnfop: shmat 실패
ora-02721     osnseminit: 세마포 세트를 생성할 수 없습니다.
ora-02722     osnpui: orapop에 중지메시지를 송신할 수 없습니다.
ora-02723     osnpui: 중지메시지를 송신할 수 없습니다.
ora-02724     osnpbr: orapop에 중지메시지를 송신할 수 없습니다.
ora-02725     osnpbr: 중지메시지를 송신할 수 없습니다.
ora-02726     osnpop: 오라클 수행모듈의 액세스 오류입니다.
ora-02727     osnpop: orapop 수행모듈의 액세스 오류입니다.
ora-02728     osnfop: 오라클 수행모듈의 액세스 오류입니다.
ora-02729     osncon: 드라이버가 osntab내에 없습니다.
ora-02730     osnrnf: 사용자 로그온 디렉토리가 없습니다.
ora-02731     osnrnf: 버퍼의 malloc에 실패했습니다.
ora-02732     osnrnf: 일치하는 데이타베이스 별명을 발견할 수 없습니다.
ora-02733     osnsnf: 데이테베이스 스트링이 너무 깁니다.
ora-02734     osnftt: 공유 메모리의 사용허가를 재설정할 수 없습니다.
ora-02735     osnfpm: 공유 메모리 세그먼트를 생성할 수 없습니다.
ora-02736     osnfpm: 부적절한 공유메모리 번지의 디폴트치입니다.
ora-02737     osnpcl: orapop의 종료를 명령할 수 없습니다.
ora-02738     osnpwrtbrkmsg: 기록된 바이트 수가 잘못되었습니다.
ora-02739     osncon: 호스트 별명이 너무 깁니다.
ora-02750     osnfsmmap: 공유메모리 화일(?/dbs/ftt_<pid>.dbf)을 열 수 없습니다.
ora-02751     osnfsmmap: 공유메모리 화일을 배치할 수 없습니다.
ora-02752     osnfsmmap: 부당한 공유메모리 번지입니다.
ora-02753     osnfsmmap: 공유메모리 화일을 닫을 수 없습니다.
ora-02754     osnfsmmap: 공유메모리의 형질을 변경할 수 없습니다.
ora-02755     osnfsmcre: 공유메모리 화일(?/dbs/ftt_<pid>.dbf)을 생성할 수 없습니다.
ora-02756     osnfsmnam: 이름 변환에 실패했습니다.
ora-02757     osnfop: fork_and_bind 실패
ora-02758     내부배열의 할당에 실패했습니다.
ora-02759     요구 디스크립터가 충분하지 않습니다.
ora-02760     클라이언트의 화일 닫기 실패
ora-02761     취소될 화일 번호가 음수입니다.
ora-02762     취소될 화일 번호가 최대치보다 큽니다.
ora-02763     최소 한건의 요구도 취소할 수 없습니다.
ora-02764     부당한 패키지 모드입니다.
ora-02765     부당한 최대 서버수입니다.
ora-02766     요구 디스크립터의 부당한 최대치입니다.
ora-02767     서버당 하나 이하의 요구 디스크립터가 할당되었습니다.
ora-02768     최대 화일수가 부적절합니다.
ora-02769     sigterm에 대한 처리기 지정이 실패했습니다.
ora-02770     전체 블록수가 부적절합니다.
ora-02771     요구 타임아웃 값이 부적절합니다.
ora-02772     서버의 최대 유휴 시간이 부적절합니다.
ora-02773     클라이언트의 최대 대기시간이 부적절합니다.
ora-02774     요구 목록 래치의 타임아웃값이 부적절합니다.
ora-02775     요구 수행 신호가 부적절합니다.
ora-02776     요구 수행 신호값이 최대치를 초과합니다.
ora-02777     로그 디렉토리에 대한 stat실패
ora-02778     로그 디렉토리에 주어진 이름이 부적합합니다.
ora-02779     코아덤프 디렉토리에 대한 stat실패
ora-02780     코아덤프 디렉토리에 주어진 이름이 부적합합니다.
ora-02781     시간이 주어지는 플래그에 대한 값이 부적합합니다.
ora-02782     읽기/쓰기 기능이 모두 지정되지 않았습니다.
ora-02783     포스트/대기 기능이 모두 지정되지 않았습니다.
ora-02784     부적절한 공유 메모리 id가 지정되었습니다.
ora-02785     부적절한 공유 메모리 버퍼크기입니다.
ora-02786     공유 영역에 필요한 크기가 세그먼트 크기보다 큽니다.
ora-02787     세그먼트 목록에 대한 메모리를 할당할 수 없습니다.
ora-02788     async 프로세스 배열내에 커널 프로세스 포인터를 찾을 수 없습니다.
ora-02789     최대 화일 수에 도달했습니다.
ora-02790     화일명이 너무 깁니다.
ora-02791     비동기 i/o에 사용될 화일을 열 수 없습니다.
ora-02792     비동기 i/o에 사용될 화일을 fstat()할 수 없습니다.
ora-02793     비동기 i/o의 닫기 실패
ora-02794     클라이언트가 공유메모리에 대한 키를 얻을 수 없습니다.
ora-02795     요구 목록이 비었습니다.
ora-02796     수행된 요구가 정확한 상태에 있지 않습니다.
ora-02797     모든 요구에 응답할 수 없습니다.
ora-02798     요구 수가 부적절합니다.
ora-02799     신호 처리기를 대비할 수 없습니다.
ora-02800     요구가 시간 경과되었습니다.
ora-02801     작업이 시간 경과되었습니다.
ora-02802     모든 유휴 서버를 병렬모드에서 사용할 수 없습니다.
ora-02803     현재 시간의 추출에 실패했습니다.
ora-02804     로그 화일명에 대한 메모리 할당에 실패했습니다.
ora-02805     sigtpa에 대한 처리기를 지정할 수 없습니다.
ora-02806     sigalrm에 대한 처리기를 지정할 수 없습니다.
ora-02807     i/o 벡터에 대한 메모리 할당에 실패했습니다.
ora-02808     서버가 사용하는 flag array를 위한 메모리 할당에 실패했습니다.
ora-02809     jump 버퍼가 적절하지 않습니다.
ora-02810     메모리 맵화일에 대한 임시 화일명을 만들수 없습니다.
ora-02811     공유메모리 세그먼트를 첨부할 수 없습니다.
ora-02812     잘못된 첨부 번지입니다.
ora-02813     키를 얻기위한 임시화일명을 만들수 없습니다.
ora-02814     공유 메모리를 얻을 수 없습니다.
ora-02815     공유 메모리를 첨부할 수 없습니다.
ora-02816     프로세스를 죽일 수 없습니다.
ora-02817     읽기실패
ora-02818     요구된 것보다 적은 수의 블록이 읽혀졌습니다.
ora-02819     쓰기실패
ora-02820     요구된 수의 블록을 기록할 수 없습니다.
ora-02821     요구된 수의 블록을 읽을 수 없습니다.
ora-02822     부적절한 블록 오프셋
ora-02823     버퍼가 정열되지 않았습니다.
ora-02824     가용 요구 목록이 비었습니다.
ora-02825     자유롭게 선택할 수 있는 목록에 대한 요구가 해제되지 않았습니다.
ora-02826     부적절한 블록크기 입니다.
ora-02827     부당한 화일번호입니다.
ora-02828     가용 세그먼트 목록이 비었습니다.
ora-02829     적절한 크기의 세그먼트가 없습니다.
ora-02830     세그먼트는 파티션될 수 없음 - 가용 세그먼트가 없습니다.
ora-02831     세그먼트 할당해제 실패 - 세그먼트 목록이 비었습니다.
ora-02832     세그먼트 할당해제 실패 - 세그먼트가 목록에 없습니다.
ora-02833     서버가 화일을 닫을 수 없습니다.
ora-02834     서버가 화일을 열 수 없습니다.
ora-02835     서버가 클라이언트에 신호을 송신할 수 없습니다.
ora-02836     임시 키 화일을 생성할 수 없습니다.
ora-02837     임시 화일을 링크 해제할 수 없습니다.
ora-02838     알람 신호를 위한 신호처리기를 대비할 수 없습니다.
ora-02839     디스크로 블록을 sync하는데 실패했습니다.
ora-02840     클라이언트가 로그 화일을 여는데 실패했습니다.
ora-02841     기동시 서버가 죽었습니다.
ora-02842     클라이언트가 서버를 포크할 수 없습니다.
ora-02843     커널 플래그에 대한 부적절한 값입니다.
ora-02844     열기 허가 플래그에 대한 부적절한 값입니다.
ora-02845     시각 요구 플래그에 대한 부적절한 값입니다.
ora-02846     중지시킬 수 없는 서버입니다.
ora-02847     포스트시 서버가 종료되지 않았습니다.
ora-02848     비동기 i/o 패키지가 가동중이 아닙니다.
ora-02849     오류로 인한 읽기 실패
ora-02850     화일이 닫혔습니다.
ora-02851     비어있지 않아야할 요구 목록이 비었습니다.
ora-02852     위험 부분에 대한 부적절한 타임아웃 값입니다.
ora-02853     서버 목록 래치 타임아웃 값이 부적절합니다.
ora-02854     요구 버퍼의 수가 부적절합니다.
ora-02855     요구건수가 slaves수 보다 작습니다.
ora-03001     현재에는 구현되어 있지 않은 기능입니다.
ora-03002     이 연산자는 구현되어 있지 않습니다.
ora-03007     이 기능은 폐지되었습니다.
ora-03008     파라미터 compatible >= %s 가 %s에 필요합니다.
ora-03100     통신 영역이 할당되지 않음. 메모리가 충분하지 않습니다.
ora-03105     내부 프로토콜 오류
ora-03106     두 태스크 간의 통신 프로토콜 오류입니다.
ora-03107     oranet 버퍼 언더플로우입니다.
ora-03108     oranet: oracle은 이 인터페이스 버전을 지원하지 않습니다.
ora-03109     oranet 버퍼 오버플로우입니다.
ora-03110     oranet: oracle은 이 sql 버전을 지원하지 않습니다.
ora-03111     통신 채널에서 브레이크를 수신했습니다.
ora-03112     단일-태스크로 링크된 서버는 sql*net을 사용할 수 없습니다.
ora-03113     통신 채널에 eof 가 있습니다.
ora-03114     oracle에 연결되어 있지 않습니다.
ora-03115     지원되지 않은 네트워크 데이타 유형 또는 표현이 있습니다.
ora-03116     부적당한 버퍼 길이가 변환 루틴으로 전달되었습니다.
ora-03117     2-타스크 보존 영역 오버플로우
ora-03118     2-타스크 코루틴의 상태가 부적당합니다.
ora-03120     2-타스크 변환 루틴: 정수 오버플로우
ora-03121     인터페이스 드라이버가 연결되어 있지 않습니다 함수는 실행되지 않습니다.
ora-03122     사용자측에서 oracle측의 윈도우를 클로즈하려 했습니다.
ora-03123     작업이 막힘
ora-03124     2-타스크 내부 오류
ora-03125     클라이언트-서버 프로토콜에 위배됩니다.
ora-03126     네트워크 드라이버가 비-블로킹 작업을 지원하지 않습니다.
ora-03127     실행 작업이 종료되기 전에는 새로운 작업을 할 수 없습니다.
ora-03128     연결은 블로킹 모드입니다.
ora-03129     다음 구분이 삽입되도록 요청했습니다.
ora-03130     다음 구분이 인출 되도록 요청한 버퍼입니다.
ora-03131     다음 구분을 위한 버퍼가 잘못 제공되었습니다.
ora-03200     세그먼트 유형 명세가 부적당합니다.
ora-03201     그룹 번호 명세가 부적당합니다.
ora-03202     스캔 한계 명세가 부적당합니다.
ora-03203     동시 갱신은 영역 분석을 불가능하게 합니다.
ora-03230     세그먼트는 %s 블록만을 포함하고 있습니다.
ora-03231     initial 영역이 할당 해제되지 않았습니다.
ora-03274     allocate extent와 deallocate unused 옵션들이 지정되었습니다.
ora-03275     이중 deallocate 옵션으로 명세
ora-03276     allocate extent의 중복지정
ora-03277     부적절한 size의 지정
ora-03278     allocate extent 옵션의 중복지정
ora-03279     부적절한 instance가 지정되었음
ora-03280     부적절한 datafile 화일명의 지정
ora-03281     부적절한 allocate extent 옵션
ora-03282     allocate extent 옵션의 누락
ora-03283     지정된 데이타 화일 %s이 존재하지 않습니다.
ora-03284     데이타 화일 %s는 테이블스페이스 %s의 멤버가 아닙니다.
ora-03286     hash clusters에 대해 allocate extent가 정당하지 않습니다.
ora-03287     부적절한 freelist group의 지정
ora-03288     freelist group과 instance 파라미터가 함께 지정될 수 없습니다.
ora-03290     부적절한 truncate 명령어 - cluster 혹은 table 키워드의 누락
ora-03291     부적절한 truncate 옵션 - storage 키워드의 누락
ora-03292     잘릴 테이블이 클러스터의 일부입니다.
ora-03293     잘릴 클러스터는 hash cluster입니다.
ora-03296     데이타화일의 크기를 조정할 수 없습니다 - 화일 %s 이 없습니다.
ora-03297     요구된 resize 값보다 큰 %s 데이타 블록이 화일에 포함되어 있습니다.
ora-03298     데이타화일을 줄일 수 없습니다 - 화일 %s는 핫 백업중입니다.
ora-03299     딕셔너리 테이블 %s을 생성할 수 없습니다.
ora-04000     pctused 와 pctfree 의 합이 100을 초과할 수 없습니다.
ora-04001     시퀀스 파라미터 %s 는 정수라야 합니다.
ora-04002     increment 는 0이 아닌 정수라야 합니다.
ora-04003     시퀀스 파라미터 %s가 최대 크기 허용(%s 자리)를 초과했습니다.
ora-04004     minvalue 는 maxvalue 보다 작아야 합니다.
ora-04005     increment 는 ( maxvalue - minvalue ) 보다 작아야 합니다.
ora-04006     start with 에 minvalue 보다 작은 값은 지정할 수 없습니다.
ora-04007     minvalue 에 현재치보다 큰 값을 지정할 수 없습니다.
ora-04008     start with 에 maxvalue 보다 큰 값을 지정할 수 없습니다.
ora-04009     maxvalue 에 현재치보다 작은 값을 지정할 수 없습니다.
ora-04010     cache 에는 1 보다 큰 수치를 지정해야 합니다.
ora-04011     시퀀스 %s 은 %s 와 %s 범위 사이어야 합니다.
ora-04012     지정된 개체는 시퀀스가 아닙니다.
ora-04013     cache 에는 1 사이클보다 작은 값을 지정해야 합니다.
ora-04014     cycle이 명시하는 minvalue가 내림차순 시퀀스입니다.
ora-04015     cycle 을 실시하는 오름차순 시퀀스에는 maxvalue 를 지정해야 합니다.
ora-04016     시퀀스 %s 은 더 이상 존재하지 않습니다.
ora-04020     개체 %s%s%s%s%s의 잠금 시도중 데드록이 검출되었습니다.
ora-04021     개체 %s%s%s%s%s의 잠금 대기중 시간이 초과됐습니다.
ora-04028     개체 %s%s%s%s%s에 대한 diana를 생성할 수 없습니다.
ora-04029     %s%s%s를 조회하는 중에 ora-%s 오류가 발생했습니다.
ora-04030     %s바이트 (%s,%s)의 할당 시도중 프로세스 메모리의 부족현상 발생
ora-04031     %s 바이트의 공유 메모리를 할당할 수 없습니다 (%s,%s,%s)
ora-04041     패키지 본체의 생성전에 패키지 지정이 먼저 생성되어야 합니다.
ora-04042     프로시저,함수,패키지 혹은 패키지 본체가 존재하지 않습니다.
ora-04043     개체 %s가 존재하지 않습니다.
ora-04044     프로시저, 함수, 패키지는 이곳에서 허용되지 않습니다.
ora-04045     %s.%s의 재 컴파일/재 검증시 오류
ora-04046     컴파일 결과를 제공하기에는 너무 큽니다.
ora-04050     부적절한 혹은 누락된 프로시저, 함수, 혹은 패키지명입니다.
ora-04051     사용자 %s는 데이타베이스 링크 %s.%s를 사용할 수 없습니다.
ora-04052     원격 개체 %s%s%s%s%s를 찾는 동안 오류발생
ora-04053     원격 개체 %s%s%s%s%s의 검증시 오류발생
ora-04054     데이타베이스 링크 %s가 존재하지 않습니다.
ora-04060     %s를 수행하기 위한 권한이 부족합니다.
ora-04061     %s의 기존상태가 무효화되었습니다.
ora-04062     %s(%s의)이 변경되었습니다.
ora-04063     %s가 오류를 가집니다.
ora-04064     실행불가, %s가 무효화 되었습니다.
ora-04065     실행불가, %s가 변경 혹은 삭제되었습니다.
ora-04066     실행할수 없는 개체, %s
ora-04067     실행불가, %s가 존재하지 않습니다.
ora-04068     패키지%s%s%s의 기존 상태가 버려졌습니다.
ora-04070     부적절한 트리거명
ora-04071     before 혹은 after 키워드의 누락
ora-04072     부적절한 트리거유형
ora-04073     이 트리거유형에 대해서 열 목록은 부당합니다.
ora-04074     부적절한 referencing명
ora-04075     부적절한 트리거동작
ora-04076     부적절한 new 혹은 old지정
ora-04077     when절은 레이블 레벨의 트리거와 사용될 수 없습니다.
ora-04078     old와 new값이 같을 수 없습니다.
ora-04079     부당한 트리거 지정
ora-04080     트리거 %s가 존재하지 않습니다.
ora-04081     트리거 %s가 이미 존재합나다.
ora-04082     테이블 레벨 트리거에서 new 혹은 old 참조는 허용되지 않습니다.
ora-04083     부적절한 트리거 변수 %s
ora-04084     행 트리거후에 트리거의 new값을 변경할 수 없습니다.
ora-04085     old 참조변수의 값을 변경할 수 없습니다.
ora-04086     트리거 설명이 너무 깁니다 트리거 코드에 주석을 옮기십시오
ora-04087     rowid 참조 변수의 값을 변경할 수 없습니다.
ora-04088     트리거 %s의 수행시 오류
ora-04089     sys 소유의 개체에 대한 트리거를 작성할 수 없습니다.
ora-04090     %s는 동일 테이블, 이벤트 그리고 트리거 시간을 %s 로 지정하고 있습니다.
ora-04091     테이블 %s.%s가 변화하고 있어서 트리거/함수가 이를 볼 수 없습니다.
ora-04092     트리거 안에 %s를 할 수 없습니다.
ora-04093     long유형 열 참조는 트리거에서 허용되지 않습니다.
ora-04094     테이블 %s.%s은 부적합함, 트리거는 그것을 수정할 수 없습니다.
ora-04095     트리거 %s가 다른 테이블에 이미 존재함, 치환할 수 없습니다.
ora-04096     트리거 %s는 when 절이 있은데 너무 큽니다 한계치가 2k.
ora-04097     트리거 삭제 또는 수정을 시도시 ddl 대립이 생겼습니다.
ora-04098     트리거 %s 은 부적당하고 재검증에 실패했습니다.
ora-04099     트리거 %s 은 적당하지만 컴파일된 폼에 저장되지 않았습니다.
ora-06000     netasy: 포트 개방 실패
ora-06001     netasy: 포트 셋업 실패
ora-06002     netasy: 포트 읽기 실패
ora-06003     netasy: 포트 쓰기 실패
ora-06004     netasy: 대화 화일의 개방 실패
ora-06005     netasy: 대화 화일의 읽기 실패
ora-06006     netasy: 대화의 수행 실패
ora-06007     netasy: 잘못된 대화 유형
ora-06009     netasy: 대화 화일명이 너무 깁니다.
ora-06010     netasy: 대화 화일이 너무 깁니다.
ora-06011     netasy: 대화가 너무 깁니다.
ora-06017     netasy: 메시지 수신 실패
ora-06018     netasy: 메시지 송신 실패
ora-06019     netasy: 부적절한 로그인(연결) 스트링
ora-06020     netasy: 초기화 실패
ora-06021     netasy: 연결 실패
ora-06022     netasy: 채널 개방 실패
ora-06023     netasy: 포트 개방 실패
ora-06024     netasy: vtm 오류
ora-06025     netasy: 환경설정 오류
ora-06026     netasy: 포트 close 실패
ora-06027     netasy: 채널 close 실패
ora-06028     netasy: 로그인 하기위한 초기화를 할 수 없습니다.
ora-06029     netasy: 포트 할당 실패
ora-06030     netdnt: 연결 실패, 인식할 수 없는 노드명입니다.
ora-06031     netdnt: 연결 실패, 인식할 수 없는 개체명입니다.
ora-06032     netdnt: 연결 실패, 제어정보의 액세스가 거절되었습니다.
ora-06033     netdnt: 연결 실패, 상대편이 연결을 거절했습니다.
ora-06034     netdnt: 연결 실패, 상대편이 예기치않게 종료됐습니다.
ora-06035     netdnt: 연결 실패, 불충분한 자원입니다.
ora-06036     netdnt: 연결 실패, 개체로부터의 응답이 없습니다.
ora-06037     netdnt: 연결 실패, 노드에 도달할 수 없습니다.
ora-06038     netdnt: 연결 실패, 네트워크 드라이버가 로드되지 않았습니다.
ora-06039     netdnt: 연결 실패
ora-06040     netdnt: 부적절한 로그인 스트링입니다.
ora-06041     netdnt: 분리 실패
ora-06042     netdnt: 메시지 수신 실패
ora-06043     netdnt: 메시지 송신 실패
ora-06044     netdnt: 연결 실패, 바이트 갯수 할당량을 초과했습니다.
ora-06102     nettcp: 문맥 영역을 할당할 수 없습니다.
ora-06105     nettcp: 원격 호스트가 불명입니다.
ora-06106     nettcp: 소켓 생성 실패
ora-06107     nettcp: oracle 네트워크 서버가 없습니다.
ora-06108     nettcp: 호스트에 연결 실패
ora-06109     nettcp: 메시지 수신 실패
ora-06110     nettcp: 메시지 송신 실패
ora-06111     nettcp: 분리하는것이 실패
ora-06112     nettcp: 부적절한 버퍼크기입니다.
ora-06113     nettcp: 연결이 너무 많습니다.
ora-06114     nettcp: sid 찾기 실패
ora-06115     nettcp: 논리적인 oracle을 생성할 수 없습니다.
ora-06116     nettcp: orasrv 프로세스를 생성할 수 없습니다.
ora-06117     nettcp: orasrv를 생성할 수 없음: 할당량을 초과했습니다.
ora-06118     nettcp: orasrv와의 교신을 끝낼 수 없습니다.
ora-06119     nettcp: 가짜 클라이언트의 요구
ora-06120     nettcp: 네트워크 드라이버가 로드되지 않았습니다.
ora-06121     nettcp: 액세스 실패
ora-06122     nettcp: 셋업 실패
ora-06123     nettcp: keepalive를 지정할 수 없습니다.
ora-06124     nettcp: orasrv 대기시 시간경과
ora-06125     nettcp: orasrv가 예기치않게 종료했습니다.
ora-06126     nettcp: orasrv가 네트워크 연결을 열 수 없습니다.
ora-06127     nettcp: 사용자명을 변경할 수 없습니다.
ora-06128     nettcp: 우편함을 생성할 수 없습니다.
ora-06129     nettcp: 소켓의 소유권을 orasrv로 옮길 수 없습니다.
ora-06130     nettcp: 호스트의 액세스가 거부되었습니다.
ora-06131     nettcp: 사용자의 액세스가 거부되었습니다.
ora-06132     nettcp: 비밀번호가 틀림, 액세스가 거부되었습니다.
ora-06133     nettcp: 화일이 없습니다.
ora-06134     nettcp: 화일 액세스 권한이 위반되었습니다.
ora-06135     nettcp: 연결이 거절됨; 서버가 중지되고 있습니다.
ora-06136     nettcp: 연결교신중 오류 발생
ora-06137     nettcp: 연결교신중 오류 발생
ora-06138     nettcp: 연결교신중 오류 발생
ora-06140     nettcp: 그런 사용자가 없습니다.
ora-06141     nettcp: 사용자에 대한 권한이 없습니다.
ora-06142     nettcp: 사용자 정보의 획득시 오류
ora-06143     nettcp: 최대 연결수를 초과했습니다.
ora-06144     nettcp: sid (데이타베이스)는 사용할 수 없습니다.
ora-06145     nettcp: orasrv를 수행시킬 수 없음: 이미지가 설치되지 않았습니다.
ora-06200     twotask: 연결 실패, 우편함을 생성할 수 없습니다.
ora-06201     twotask: 연결 실패, 우편함에 연결할 수 없습니다.
ora-06202     twotask: 연결 실패, 서버 태스크를 만들 수 없습니다.
ora-06203     twotask: 연결 실패, 교신 실패
ora-06204     twotask: 연결 실패, orasrv2.com를 액세스할 수 없습니다.
ora-06205     twotask: 연결 실패, 논리명을 생성할 수 없습니다.
ora-06206     twotask: 메시지 수신 실패
ora-06207     twotask: 메시지 송신 실패
ora-06208     twotask: 부적당한 로그인(연결) 스트링
ora-06209     twotask: 연결 실패, 우편함이 이미 존재하고 있습니다.
ora-06210     twotask: 연결 실패, orasrv가 예기치 않게 종료되었습니다.
ora-06211     twotask: 연결 실패, orasrv를 기다리다가 시간 초과 되었습니다.
ora-06212     twotask: 연결 실패, 논리 이름 테이블이 꽉 차있습니다.
ora-06213     twotask: 연결 실패
ora-06214     twotask: 연결 실패, orasrv를 생성하기 위해 충분치 않은 할당량 입니다.
ora-06215     twotask: 연결 실패, orasrv 이미지가 설치가 않되게 보호된 것입니다.
ora-06216     twotask: 연결 실패, orasrv 이미지 화일을 발견할 수 없습니다.
ora-06250     netntt: 송수신 버퍼를 할당할 수 없습니다.
ora-06251     netntt: 주소 화일명을 해석할 수 없습니다.
ora-06252     netntt: 주소 화일을 열 수 없습니다.
ora-06253     netntt: 주소화일에서 인수를 read 할 수 없습니다.
ora-06254     netntt: 큐브로의 연결을 공유할 수 없습니다.
ora-06255     netntt: 원격 프로세스의 pid를 read 할수없습니다.
ora-06256     netntt: 원격 fork 실패
ora-06257     netntt: 섀도(shadow) 프로세스에 명령을 송신할 수 없습니다.
ora-06258     netntt: 문맥 영역을 할당할 수 없습니다.
ora-06259     netntt: 원격 프로세스에서 read 할수 없습니다.
ora-06260     netntt: 원격 프로세스로 write 할수 없습니다.
ora-06261     netntt: nrange() 실패
ora-06262     netntt: nfconn() 실패
ora-06263     netntt: pi_connect에 메모리 부족
ora-06264     netntt: 데이타 프로토콜 오류
ora-06265     netntt: break 프로토콜 오류
ora-06266     netntt: 잘못된 쓰기 길이
ora-06267     netntt: 오류 상태
ora-06268     netntt: /etc/oratab을 read 불가
ora-06300     ipa: 접속분리 실패
ora-06301     ipa: driver context 를 할당할 수 없습니다.
ora-06302     ipa: 원격 호스트에 연결 불가
ora-06303     ipa: 메세지 전송 오류
ora-06304     ipa: 메세지 수신 오류
ora-06305     ipa: 부적절한 메시지 유형
ora-06306     ipa: 메세지 write 길이 오류
ora-06307     ipa: 연결 재설정 실패
ora-06308     ipa: 더 이상 연결 불가
ora-06309     ipa: 이용 가능한 메세지 큐가 없음
ora-06310     ipa: 환경 변수가 지정되지 않았습니다.
ora-06311     ipa: 최대 서버수에 도달 했습니다.
ora-06312     ipa: 지정된 서비스명이 부정확합니다.
ora-06313     ipa: 공유 메모리 초기화 실패
ora-06314     ipa: event 설정 실패
ora-06315     ipa: 콘넥트 스트링 오류
ora-06316     ipa: 데이타베이스 sid 오류
ora-06317     ipa: 로컬 최대 사용자수 초과
ora-06318     ipa: 로컬 최대 콘넥션수 초과
ora-06319     ipa: 원격 최대 사용자수 초과
ora-06320     ipa: 원격 최대 연결 수 초과
ora-06321     ipa: 원격편에 도달할 수 없습니다.
ora-06322     ipa: 심각한 공유 메모리 오류
ora-06323     ipa: 이벤트 오류 발생
ora-06400     netcmn: 지정된 기본 호스트 뮨자열이 없습니다.
ora-06401     netcmn: 부적절한 드라이버 지정자
ora-06402     netcmn: 브레이크 메시지 수신시 오류
ora-06403     netcmn: 문맥 영역을 할당할 수 없습니다.
ora-06404     netcmn: 부당한 로그인 (연결) 스트링
ora-06405     netcmn: 프로토콜 재설정 오류
ora-06406     netcmn: 브레이크 메시지 송신시 오류
ora-06407     netcmn: 브레이크 처리환경을 구축할 수 없습니다.
ora-06408     netcmn: 부정확한 메시지 유형
ora-06413     연결이 개방되지 않았습니다.
ora-06416     netcmn: 테스트시 오류
ora-06419     netcmn: 서버가 오라클을 기동시킬 수 없습니다.
ora-06420     netcmn: sid의 찾기 실패
ora-06421     netcmn: 읽혀질 데이타에 오류가 발견되었습니다.
ora-06422     netcmn: 송신 데이타에 오류가 발견되었습니다.
ora-06423     netcmn: 수신 데이타에 오류가 발견되었습니다.
ora-06430     ssaio: 함수가 잘못된 인수로 요구되었습니다.
ora-06431     ssaio: 부적절한 블록번호
ora-06432     ssaio: 버퍼가 정열되지 않습니다.
ora-06433     ssaio: lseek 오류, 요구된 블록을 찾을 수 없습니다.
ora-06434     ssaio: 읽기 오류, 데이타베이스 화일로 읽을 수 없습니다.
ora-06435     ssaio: 쓰기 오류, 데이타베이스 화일에 기록할 수 없습니다.
ora-06436     ssaio: 비동기 i/o가 틀린 파라미터로 인하여 실패했습니다.
ora-06437     ssaio: 비동기 쓰기는 데이타베이스 화일에 기록할 수 없습니다.
ora-06438     ssaio: 비동기 읽기는 데이타베이스 화일로 부터 읽을 수 없습니다.
ora-06439     ssaio: 비동기 쓰기가 틀린 바이트 수를 리턴했습니다.
ora-06440     ssaio: 비동기 읽기가 틀린 바이트 수를 리턴했습니다.
ora-06441     ssvwatev: 함수 호출에 잘못된 파라미터가 넘겨졌습니다.
ora-06442     ssvwatev: 예기치 않은 오류로 실패했습니다.
ora-06443     ssvpstev: 함수 호출에 잘못된 파라미터가 넘겨졌습니다.
ora-06444     ssvpstev: 예기치 않은 오류로 실패했습니다.
ora-06445     ssvpstevrg: 함수 호출에 잘못된 파라미터가 넘겨졌습니다.
ora-06446     ssvpstevrg: 예기치 않은 오류로 실패했습니다.
ora-06447     ssvpstp: 함수 호출에 잘못된 파라미터가 넘겨졌습니다.
ora-06448     ssvpstp: 예기치 않은 오류로 실패했습니다.
ora-06449     리스트 io 혹은 sysvendor가 설치되지 않았습니다.
ora-06500     pl/sql: 기억 영역 오류입니다.
ora-06501     pl/sql 프로그램 오류
ora-06502     pl/sql: 값(수치) 오류입니다.
ora-06503     pl/sql: 함수가 값을 리턴하지 못했습니다.
ora-06504     pl/sql: result set 변수 또는 질의의 리턴 유형이 일치하지 않습니다.
ora-06508     pl/sql: 호출되는 lib 단위를 발견할 수 없습니다.
ora-06509     pl/sql: 이 패키지(package)에 대한 icd 벡터가 누락됐습니다.
ora-06510     pl/sql: 처리되지 않은 user-defined 예외 상황
ora-06511     pl/sql: 커서가 이미 열려있습니다.
ora-06512     %s줄 %s에서
ora-06513     pl/sql: pl/sql 테이블의 색인이 호스트 언어 배열의 범위를 벗어남
ora-06514     pl/sql: 원격 호출은 서버에 의해서 처리되지 않습니다.
ora-06540     pl/sql: 컴파일 오류
ora-06541     pl/sql: 컴파일 오류 - 컴파일 중지
ora-06542     pl/sql: 실행 오류
ora-06543     pl/sql: 실행 오류 - 실행 중지
ora-06544     pl/sql: 내부 오류, 인수: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]
ora-06550     줄 %s, 열%s:%s
ora-06551     pl/sql: 처리되지 않은 예외상황
ora-06552     pl/sql: %s
ora-06553     pls-%s: %s
ora-06554     패키지 dbms_standard는 pl/sql을 사용하기 전에 생성되야만 합니다.
ora-06555     이 이름은 현재 사용자 sys에 의해 사용되기 위해 예약되어 있습니다.
ora-06556     파이프가 비어 있어 unpack_message 요구를 이행할 수 없습니다.
ora-06557     icd 파이프에 대한 파라미터로 null 값은 허용되지 않습니다.
ora-06558     dbms_pipe 패키지에 있는 버퍼가 꽉 찼음. 더 이상의 항목이 사용될 수 없습니다.
ora-06559     %s로 잘못된 데이타유형이 요구되었습니다, 실제 데이타유형은 %s 입니다.
ora-06560     위치, %s 가 버퍼 크기 %s 보다 크거나 음수 입니다.
ora-06561     명령문이 dbms_sql 패키지에 의해 지원되지 않습니다.
ora-06562     out 인수의 형이 열의 형과 일치되거나 변수와 바인드되어야 합니다.
ora-06563     기술된 최상위 레벨의 프로시저/펑션이 하위레벨을 포함할 수 없습니다.
ora-06564     개체 %s가 존재하지 않습니다.
ora-06565     저장된 프로시저에서 %s를 실행할 수 없습니다.
ora-06566     행의 수 지정이 부적합합니다.
ora-06567     값의 수 지정이 부적합합니다.
ora-06568     폐기된 icd 프로시저가 호출되었습니다.
ora-06570     풀 개체 공유가 존재하지 않습니다.
ora-06571     %s 함수는 데이타베이스에 갱신하는것을 보증할 수 없습니다.
ora-06572     %s 함수는 out 인수를 가지고 있습니다.
ora-06573     %s 함수가 패키지 상태를 변경하는데, 여기서는 사용할 수 없습니다.
ora-06574     %s 함수는 패키지 상태를 참조하는데, 원격적으로 실행할 수 없습니다.
ora-06575     패키지 또는 함수 %s 은 부적당한 상태입니다.
ora-06580     해쉬 결합이 큰 행을 메모리에 보관하는 중에 메모리 부족이 일어났습니다.
ora-06600     lu6.2 driver: sna 소프트웨어가 로드되지 않음
ora-06601     lu6.2 driver: 부적절한 데이타베이스 id 스트링임
ora-06602     lu6.2 driver: 문맥 영역 할당시 오류
ora-06603     lu6.2 driver: 메모리 할당시 오류
ora-06604     lu6.2 driver: 원격 lu와 함께 세션을 할당할 수 없음
ora-06605     lu6.2 driver: 예기치 않은 줄 턴어라운드
ora-06606     lu6.2 driver: sna로 부터의 예기치 않은 응답
ora-06607     lu6.2 driver: 송신상태에서 재설정됨
ora-06608     lu6.2 driver: 수신상태에서 재설정됨
ora-06610     lu6.2 driver: 해제시 실패
ora-06611     lu6.2 driver: 송신 요구오류
ora-06612     lu6.2 driver: 데이타 송신오류
ora-06613     lu6.2 driver: 수신 및 대기오류
ora-06614     lu6.2 driver: 즉시 수신오류
ora-06615     lu6.2 driver: 송신오류
ora-06616     lu6.2 driver: lu로의 첨부에 실패했음
ora-06617     lu6.2 driver: pu로의 첨부에 실패했음
ora-06618     lu6.2 driver: 서브네트워크의 활성화에 실패했음
ora-06619     lu6.2 driver: 활성적인 원격 파트너를 할 수 없습니다.
ora-06620     lu6.2 driver: 부적절한 원격 파트너
ora-06621     lu6.2 driver: 할당 오류
ora-06622     lu6.2 driver: sna에 첨부할 수 없음
ora-06700     tli driver: 호스트로부터의 메시지 유형이 부정확합니다.
ora-06701     tli driver: 틀린 수의 바이트가 기록되었습니다.
ora-06702     tli driver: 문맥 영역을 할당할 수 없습니다.
ora-06703     tli driver: 브레이크 메시지의 송신 실패
ora-06704     tli driver: 브레이크 메시지의 수신 실패
ora-06705     tli driver: 원격 노드가 불명입니다.
ora-06706     tli driver: 서비스가 발견되지 않습니다.
ora-06707     tli driver: 연결실패
ora-06708     tli driver: 메시지 수신실패
ora-06709     tli driver: 메시지 송신실패
ora-06710     tli driver: 송신 인터럽트 브레이크 메시지 실패
ora-06711     tli driver: 바인드시 오류
ora-06712     tli driver: 인수시 오류
ora-06713     tli driver: 연결시 오류
ora-06720     tli driver: sid 찾기 실패
ora-06721     tli driver: 가 클라이언트 요구
ora-06722     tli driver: 연결설정 실패
ora-06730     tli driver: 크론(clone) 디바이스의 열기 실패
ora-06731     tli driver: t_call을 할당할 수 없습니다.
ora-06732     tli driver: t_discon을 할당할 수 없습니다.
ora-06733     tli driver: 분리 수신에 실패했습니다.
ora-06734     tli driver: 연결할 수 없습니다.
ora-06735     tli driver: 잘못된 연결을 닫는데 실패했습니다.
ora-06736     tli driver: 서버가 가동중이 아닙니다.
ora-06737     tli driver: 연결실패
ora-06741     tli driver: 프로토콜 디바이스를 열 수 없습니다.
ora-06742     tli driver: t_bind를 할당할 수 없습니다.
ora-06743     tli driver: t_bind를 할당할 수 없습니다.
ora-06744     tli driver: 리스너(listener)를 바인드할 수 없습니다.
ora-06745     tli driver: 리스너(listener)가 이미 가동중입니다.
ora-06746     tli driver: t_call을 할당할 수 없습니다.
ora-06747     tli driver: 청취(listen) 오류
ora-06748     tli driver: t_discon을 할당할 수 없습니다.
ora-06749     tli driver: 네트워크상에서 옵션이 허용되지 않습니다.
ora-06750     tli driver: sync 실패
ora-06751     tli driver: 번지 범위가 다릅니다.
ora-06752     tli: 시그널 설정시 오류
ora-06753     tli driver: name-to-address를 맹핑하는데 실패했습니다.
ora-06754     tli driver: 지역 호스트 번지를 얻을 수 없습니다.
ora-06755     tli driver: 이동 마감점을 닫을 수 없습니다.
ora-06756     tli driver: oratab을 열 수 없습니다.
ora-06757     tli driver: 서버가 틀린 명령을 취했습니다.
ora-06760     tli driver: 순차릴리스를 읽는 동안 타임아웃됐습니다.
ora-06761     tli driver: 순차릴리스의 송신오류
ora-06762     tli driver: 순차릴리스의 읽기오류
ora-06763     tli driver: 분리 송신오류
ora-06764     tli driver: 분리 읽기오류
ora-06765     tli driver: 순차 릴리즈의 대기오류
ora-06766     tli driver: 릴리스시 닫기실패
ora-06767     tli driver: 릴리즈시 할당실패
ora-06770     tli driver: 버전 송신오류
ora-06771     tli driver: 버전 읽기오류
ora-06772     tli driver: 명령 송신오류
ora-06773     tli driver: 명령 읽기오류
ora-06774     tli driver: 브레이크 모드 송신오류
ora-06775     tli driver: 브레이크 모드 읽기오류
ora-06776     tli driver: 파라미터 송신오류
ora-06777     tli driver: 파라미터 읽기오류
ora-06778     tli driver: ccode 송신오류

Posted by 1010
51.Struts22009. 2. 4. 17:00
반응형

기본적인 struts 어플리케이션 개발의 Quick Start

최종갱신:   번역: April 27, 2007

목차


1. 머리말

이 문서는 Sun JDK 1.4.2. Eclipse 3.2 및 MyEclipse 5.1.1을 이용해 작성되고 있습니다. 모든 스크린 샷은 Eclipse, MyEclipse Enterprise Workbench 및 Windows XP의 Default User Interface 설정에 근거하고 있습니다. 이 문서의 설명으로 불명한 점이 있는 경우 「사용자 피드백」 섹션으로 MyEclipse Document 팀에 피드백하는 방법을 참조해 주세요.




2. 처음

이 튜톨리얼에서는 MyEclipse Enterprise Workbench 를 사용해 단순한 샘플 Struts 어플리게이션의 개발 및 테스트에 대해 설명합니다. Struts 나 MyEclipse 의 사전 지식은 필요없습니다.

체제와 기능 범위가 유사하기 때문에, 이 튜토리얼은「JSF 튜토리얼」과 비슷합니다. 이 두개의 같은 프로젝트 목표 및 개요를 가지기 때문에, MyEclipse에서의 Struts 툴의 사용방법을 이해하면, JSF 와 Struts 를 다음에 비교할 수 있습니다.




3. 요건

아래는 이 가이드로 사용하는 소프트웨어의 리스트입니다.

Sun Java(TM) Development Kit(JDK)5.0

http://java.sun.com/javase/downloads/previous.jsp

Eclipse Platform 3.2.2

http://www.eclipse.org/downloads/index.php

Eclipse Platform 3.2.1 NLpack1

http://download.eclipse.org/eclipse/downloads/drops/L-3.2.1_Language_Packs-200609210945/index.php

Eclipse Java Development Tools 3.2.2

http://www.eclipse.org/downloads/index.php

Eclipse Java Development Tools 3.2.1 NLpack1

http://download.eclipse.org/eclipse/downloads/drops/L-3.2.1_Language_Packs-200609210945/index.php

MyEclipse 5.1.1

https://www.myeclipseide.jp

Tomcat 5.0.x ( 5.0.28 이 바람직하다. 또는 다른 벤더의 서블릿/EJB 컨테이너)

http://tomcat.apache.org/download-55.cgi

이 데모에서는 유저명과 패스워드는「myeclipse」입니다.


주: JDK 를 인스톨해 컴퓨터를 재기동한 후 Eclipse, MyEclipse 및 Tomcat 을 인스톨 해주세요. MyEclipse 의 인스톨에 대한 자세한 것은「MyEclipse 인스톨/언인스톨 퀵 스타트」를 참조해주세요. 모든 소프트웨어를 인스톨하면「어플리케이션 디플로이먼트 및 서버 관리 퀵 스타트」로 설명되고 있듯이, MyEclipse로 Tomcat 5 컨넥터를 셋업하지 않으면, 셈플 어플리케이션을 디플로이 및 실행할 수 없습니다.



4. 신규 프로젝트의 셋업 및 구성

개발물을 작성하려면, MyEclipse로 Struts기능이 추가된 신규 Web프로젝트를 작성해야합니다. Web 프로젝트를 작성하려면, 아래의 그림1에 보이듯이「파일」>「신규」>「프로젝트」>「MyEclipse」>「J2EE 프로젝트」>「Web 프로젝트」의 위저드를 사용합니다.


그림 1 - 「신규 J2EE Web 프로젝트」위저드


그림 2 처럼 신규 프로젝트의 정보를 모두 입력합니다.


그림 2 - Web 프로젝트 설정


Web 프로젝트를 설정하면, Struts 기능을 추가해야 합니다. 이것을 실행하려면, 「패키지 익스플로어」뷰에서 프로젝트의 루트를 오른쪽 클릭하고, 그림 3 처럼「MyEclipse」>「Struts 기능추가」를 선택합니다.



그림 3 - Web 프로젝트에 Struts 기능추가


「MyEclipse Web 프로젝트의 Struts Support」다이얼로그에는, 적절한 Default가 설정되어 있습니다. 다만「신규 클래스용 Base 패키지」를 변경해서, 희망하는 로케이션을 변경시킬 수도 있습니다. 아래의 그림 4 에서는 단순히 Default로 놔둡니다.



그림 4 - Struts 기능 구성


위저드가 완료되면, 프로젝트 구조는 그림 5 처럼 나타나게 됩니다.


그림 5 - 구성 후의 프로젝트 레이아웃


프로젝트를 작성하면, 다음 섹션에서 설명하듯이 Web컨텐츠의 작성을 개시할 수 있습니다.




5. Struts 프로젝트의 개시

이 섹션에서는 단순한 Web사이트 로그인 화면을 닮은 샘플 Struts 어플리케이션을 작성하는 것에 초점을 맞추었습니다. 그래서, 필요한건 유저에게 로그인을 재촉하는 페이지와 로그인이 성공한 것을 나타내는 페이지의 2개 JSP페이지 뿐 입니다. 이러한 페이지는 각각 userLogic.jsp 및 userLoginSuccess.jsp 입니다. 단순화한것이기 때문에, 로그인 시행중 허가 에러가 발생했을 경우, 유저를 userLogin.jsp 페이지에 리다이렉트해 에러 멧세지를 표시합니다.


Struts 프로젝트를 개시할 때는 일반적으로 어플리케이션 전체의 프로우를 레이아웃하는 것이 유용합니다. 개발 팀은 어플리케이션의 개개의 부품을 얼마나 조합하면 좋은가를 충분히 검토할 수 있겠지요. 플로우를 잘라내는 가장 용이한 방법은, Struts 구성 편집자의 그래픽컬 디자인 모드를 사용해 그래픽컬하게 작성하는 방법입니다. Struts구성 편집자에게는 드러그 앤 드롭 툴의 팔레트가 있어서 유저는 디자인 실물모형으로 부터 페이지 플로우를 재빠르게 복사하는 것으로 어플리케이션의 작성을 시작할 수 있습니다. 셈플 로그인 어플리케이션의 플로우는 아래의 그림 6과 같이 됩니다.


주: 어플리케이션 플로우의 스크린샷은 Struts 디자이너를 사용해 작성되었습니다.

    Struts 디자이너의 액세스 방법 및 사용방법에 대해서는 다음 섹션에서 설명합니다.


그림 6 - 셈플 어플리케이션 플로우


이 디자인 레이아웃으로부터 userLogin.jsp 페이지를 표시하는 것으로 어플리케이션은 시작하는 것을 압니다. 로그인 페이지는 userLogin 액션을 호출해 로그인 조작을 실행합니다. 검증에러 또는 문제가 발생했을 경우 userLogin액션은 userLogin.jsp 페이지에 되돌립니다. 다만, 로그인이 성공했을 경우 어플리케이션은 userLoginSuccess.jsp 페이지로 진행됩니다.




5.1 Struts 프로젝트의 컴포넌트

일반적인 Struts 프로젝트는 이하의 개발 결과물의 카테고리로 구성됩니다.

  • JSP
  • Action
  • ActionForward *
  • ActionForm **
  • Struts 디플로이먼트 기술자 : struts-config.xml

* ActionForward 는 struts-config.xml 파일내의 <forward> 엔트리이며, 액션이 완료했을 때에 실행하는 패스를 정의합니다. ActionForward 클래스의 커스텀 임플리멘테이션에 대해서는 말하지 않습니다만, 이것은 가능하고, 확정 유저를 위한 툴로 서포트되고 있습니다.


** ActionForm 는 유저가 구체적인 ActionForm 임플리멘테이션을 작성해 페이지를 랩하는 것을 원하지 않는 경우에 DynaForm의 사용에 옮겨놓을 수 있습니다.


MyEclipse 에서는 이러한 컴포넌트의 언젠가 또는 모든것 (struts-config.xml 파일은 제외하다)을 3가직 방법으로 작성할 수 있습니다.

방법 1

아래의 그림 7 에 보이듯이「파일」>「신규」>「그 외」>「MyEclipse」>「Web-Struts」>「Struts 1.1 (또는 1.0)」메뉴를 사용해 Struts위저드를 선택합니다.


그림 7 - 모든 사용가능한 Struts 위저드


위저드는 단순하고, 지정된 Struts 컴포넌트가 서포트하는 모든값에 대해 prompt를 냅니다. 다만 다른 위저드보다 복잡한 위저드도 있습니다. 예를 들면, 아래의 그림 8 에 보이는「Struts Action」위저드에서는 Struts Action 으로 서포트되는 모든 기능의 포괄적인 범위가 표시됩니다.


그림 8 - 「신규 Struts Action」위저드

방법 2

「아웃라인」뷰를 사용합니다. 이 뷰는 Struts 구성 편집자의 소스 뷰 표시가 액티브한 편집 문맥일 때 사용 가능합니다.「아웃라인」뷰로부터 위저드를 액티브하게 하는 임의의 루트레벨의 노드를 오른쪽 클릭해서 그 타입의 신규 컴포넌트를 작성하는 일도 위저드를 사용해 기존은 컴포넌트를 편집할 수 도 있습니다. 그림 9 는 이러한 문맥의 위저드를 사용하는 예를 나타냅니다.



그림 9 - 「아웃라인」뷰로부터의 Struts 위저드의 기동


이 스크린샷이 주목할 만한 점은 일부의 액션이 실제로 논리적으로 관련한 위저드이며, 플로우 전체의 작성을 가능하게 하는 것입니다. 위저드는 함께 링크되어, 공통의 값을 심리스에 재이용해 수동의 재입력을 최소한으로 합니다.

방법 3

그림 10 에 나타내는 Struts 구성 편집자의 디자인 페이지의 사용도, Struts 성과물을 작성하기 위한 매우 편리한 방법입니다. 디자이너에는, struts-config.xml 파일을 열어 액세스 합니다. 편집자의 하부에서 「디자인」탭을 클릭하면, 디자이너를 실행할 수 있습니다.


그림 10 - Struts 디자이너에의 액세스


디자이너로 전환하면, 아래의 그림 11 과 같은 뷰가 표시됩니다.


그림 11 - Struts 디자이너의 개요


Struts 프로젝트의 다양한 컴퍼넌트의 작성 방법에 대해 설명했습니다. 다음의 섹션에서는, 로그인 데모 어플리케이션의 다양한 부분을 작성합니다.



5.2 어플리케이션의 구축

데모 어플리케이션의 구축은, 우선 JSP 페이지의 작성을 중심으로 실시합니다. 데모 어플리케이션을 Web 사이트의 로그인 화면과 같이 하므로, userLogin.jspuserLoginSuccess.jsp 라고 하는 2 개의 JSP 페이지만 필요하게 됩니다. 대부분의 Struts 어플리케이션과 같게, 로그인중에 문제가 발생했을 경우, 유저를 userLogin.jsp 페이지에 되돌려, 에러를 표시합니다 (loginUserFailure.jsp 페이지를 작성할 필요가 없는 것은 이 때문에입니다).


우선, userLoginSuccess.jsp 페이지를 작성합니다. 최초로 마지막 페이지를 작성하므로 순서가 역과 같이 생각됩니다만, 이렇게 하는 것으로, 「신규 Form, Action 및 JSP」위저드를 사용해 최초의 JSP 페이지를 작성함과 함께, 관련하는 Action 및 ActionForm 를 작성할 수 있습니다.


디자이너 뷰로부터 userLoginSuccess.jsp JSP 페이지를 작성하려면 , "JSP" 팔레트 툴을 사용합니다. 우선 이 툴을 클릭하고 나서, 캔버스를 클릭합니다. 아래의 그림 12 의 설명에 따라 주세요.



그림 12 - 디자이너의 사용에 의한 JSP 의 작성


캔버스를 클릭하면, 그림 13 에 나타내는 것 같은 「신규 JSP 페이지」다이얼로그가 표시됩니다.


:「Struts 1.1 을 사용하는 표준 JSP」템플릿을 선택해 주세요.


그림 13 - JSP 위저드의 구성


종료」버튼을 클릭하면, 그림 14 에 나타나듯이, 디자인 뷰에 신규에 작성된 페이지가 표시됩니다.


: 「위저드 완료 후 파일을 연다」체크 박스를 선택했을 경우, 신규의 JSP 페이지를 추가하면, MyEclipse 는 JSP 편집자내에 신규 JSP 페이지를 엽니다. 아래의 스크린샷에서는, 어플리케이션이 어떻게 표시되는지를 나타내기 위해서 클릭해 디자이너에 돌아오고 있습니다. 이것은 JSP 페이지를 작성할 경우에 표시되는 플로우가 아니기 때문에 잘못되지 않게 해 주세요.


그림 14 - JSP 페이지가 표시된 Struts 디자이너


JSP 페이지를 완성시키기 위한 나머지의 작업은, 유저에게 로그인이 성공한 것을 알리는 메세지의 출력입니다. 완성한 페이지의 소스 코드를, 아래의 그림 14a 에 나타냅니다.


주: 이 가이드를 이해하기 쉽게 하기 위해서 (또, 코드 순이 펫을 짧게하기 위해 ), 이하의 JSP 페이지는, 파일을 처음으로 열었을 때에 표시되는 디폴트의 JSP 템플릿과는 닮지 않았습니다. 여기에 있는 코드를 그대로 카피하거나 신규 JSP 파일의 작성 후에 이 코드를 디폴트의 JSP 템플릿 코드에 거두어 들이거나 해도 상관하지 않습니다.


userLoginSuccess.jsp

<%@ page language= "java"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
  <head>
    <title>My Struts 'userLoginSuccess.jsp' ending page</title>
  </head>
 
  <body>
    Hello <bean:write name="userName" scope="request" />, you successfully logged in!
  </body>
</html:html>

그림 14a - userLoginSuccess.jsp 의 코드


이 페이지는 매우 단순합니다. 여기서의 작업으로 중요한 것은 <body> 태그의 내용뿐이어, 어플리케이션의 request 스코프에 보관되고 있는 변수 userName 의 값을 출력합니다. 따라서, 다음에 작성하는 Action 로, request 스코프내의 userName 의 이름에 의해 속성을 지정할 필요가 있습니다.


여기에서도,userLogin.jsp 페이지, ActionForm, 및 Action 를 작성할 필요가 있습니다. 작업이 많이 있는 것처럼 생각됩니다만, MyEclipse 에서는 「신규 Form」 및 「신규 Form, Action 및 JSP」위저드를 사용하는 것으로, 이 작업을 큰폭으로 간소화합니다.


userLogin.jsp 페이지를 작성할 때는, 이 페이지에 표시하는 필드를 검토해, 그러한 필드를 각각의 ActionForm 에 맵 할 필요가 있습니다. Form 에는 값이 보관되어 적절한 Action 에게 건네집니다. Form 를 생성할 때, 앞서 얘기한 2 개의 MyEclipse 위저드는, Form 와 함께 JSP 페이지를 작성하는 기능을 제공합니다. 이 기능에서는 Form 의 모든 자산이 사용되어 이러한 모든 Form 필드가 이미 존재해 사용 가능한 JSP 페이지가 생성됩니다. 이러한 상황으로, 로그인을 처리하기 위한 Action 도 작성하기 때문에, 단순한「Form」위저드는 아니고「Form, Action 및 JSP」위저드를 사용합니다.


어플리케이션의 작성을 속행하려면 , 그림 15 에 나타나듯이, Struts 디자이너의 흰 캔버스 에리어를 오른쪽 클릭해,「신규」> 「Form, Action 및 JSP」위저드의 순서에 선택합니다.


그림 15 - 디자이너로부터의 「Form, Action 및 JSP」위저드의 기동


최초로「Struts 1.1 Form 선언」위저드가 표시됩니다. 이것이 3 스텝 위저드의 최초의 위저드입니다. 위저드가 적절한 디폴트치를 설정할 수 있도록(듯이), 유스케이스명을 입력해 주세요. 그림 16 에,유스케이스를 입력하면 어떻게 값이 설정되는지를 나타냅니다.



그림 16 - 「Struts 1.1 Form 선언」위저드


다음에, 2 개의 Form 자산, userNamepassword 를 추가할 필요가 있습니다. 「패스워드」필드를 추가하는 경우, 그림 17 에 나타나듯이「JSP 입력 타입」필드의 「password」를 선택합니다.


그림 17 - Form 에의 자산의 추가


그림 18 - Form 자산


「다음」버튼을 선택하기 전에, 「JSP」탭을 클릭해, MyEclipse 로 이러한 값이 설정된 Form 를 가지는 양식 JSP 페이지를 생성하는 것을 위저드에 나타납니다. 아래의 그림 19 에 이것을 나타냅니다.

: 위저드의 디폴트의 행동에서는, 생성된 JSP 는 "/form" 서브 디렉토리에 배치됩니다만, 이 데모 어플리케이션에서는, 모든 JSP 를 webroot 에 배치합니다.


그림 19 - Form 용의 JSP 페이지의 생성을 유효하게 한다


마지막에 「메소드」탭을 클릭해, 위저드가 신규 Form 에 자동 생성할 수 있는 모든 메소드의 체크를 제외합니다. 아래의 그림 20 에 이 구성을 나타냅니다.


: 이 데모를 단순한 것으로 하기위해, reset 메소드나 validate 메소드를 생성합니다만, 일반적으로는 독자적인 어플리케이션을 코딩 할 경우에 이러한 메소드를 사용하는 것은 유리한 계책입니다.


그림 20 - 메소드 생성을 무효로 한다


「다음」버튼을 클릭하면,「Struts 1.1 Action 선언」위저드에 진행됩니다. 이 위저드에서는, 거의 모든 값이 이미 입력되고 있습니다. 여기에서는, 작성 끝난 Form 와 신규 Action 를 묶는 것에 의해 시간이 절약됩니다. 변경은 자유롭게 가 상관하지 않습니다만, 대부분의 경우 (물론 이 데모 어플리케이션에서도), 여기서 유일 주의할 필요가 있는 것은, Action 를 사용할 수 있는 「Forward」를 입력하는 것입니다. 그림 21 에 위저드의 스크린샷를 나타냅니다.


그림 21 - 「Struts 1.1 Action 선언」위저드


「ActionForward」를 지정하려면 , 그림 22 에 나타내도록(듯이)「Forward」탭을 클릭합니다.



그림 22 - Action Forwards 의 셋업


이 Action 에의 Forward 의 추가 후, 「종료」버튼을 클릭하면(자), MyEclipse 로 모든 신규 정보를 사용해 모든 자원을 작성하거나struts-config.xml 파일 ( 및 디자이너)을 갱신하거나 할 수 있습니다. 그림 23 에 갱신된 레이아웃 및 어플리케이션 구조를 나타냅니다.


: 작은 스크린샷에 다이어그램의 모든 엘리먼트를 명시할 수 있도록, 일부가 수동으로 레이아웃 되고 있습니다. 다이어그램을 수동으로 레이아웃 할 때, 변경 내용은 장래의 편집을 위해서 보존됩니다.


그림 23 - Struts 디자이너 및 어플리케이션의 개요


이것으로 어플리케이션 플로우가 정의되었기 때문에, Action 에 논리를 추가해, 이 데모·어플리케이션의 "login" 순서를 처리할 필요가 있습니다. 그림 24 에 나타내도록(듯이), 디자인을 더블 클릭 하면 자원으로 점프 할 수 있습니다.


그림 24 - 디자이너·자원을 더블 클릭 해 편집자를 연다


UserLoginAction.java 파일을 처음으로 열었을 경우,execute 메소드용으로 생성된 코드는 그림 24a 와 같이 됩니다.


UserLoginAction.java
public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;
  // TODO Auto-generated method stub
  return null;
 }

그림 24a - 생성된 execute 메소드


디폴트의 임플리멘테이션에서는 단지 null 를 돌려주고 있을 뿐입니다만, 이것을 제거해, 그림 24b 에 나타내는 것 같은 단순한 로그인 Logic에 옮겨놓습니다.

UserLoginAction.java
 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;
 
  if(userLoginForm.getUserName().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse"))
  {
   request.setAttribute("userName", userLoginForm.getUserName());
   return mapping.findForward("success");
  }
 
  return mapping.findForward("failure");
 }

그림 24b - 수정된 execute 메소드


여기에서는 매우 단순하게,userNamepassword 의 값이 함께 "myeclipse" 일지 어떨지를 체크합니다. "myeclipse" 인 경우,userName 를 request 스코프에 보관해,success forward 를 돌려주므로, userLoginSuccess.jsp 페이지에 사용자 정의의 메세지를 표시할 수 있습니다. 그렇지 않은 경우, 문제가 있으면, failure forward 를 돌려줍니다. 일반적으로 실제의 어플리케이션에서는, 발생한 문제를 설명하기 위해, failure forward 를 되돌리기 전에 ActionMessages 또는 ActionErrors 콜렉션을 request 스코프에 추가합니다.



6. 데모의 실행

이것으로 어플리케이션이 완성했습니다. 「데프로이먼트 관리」다이얼로그를 열어, 이 프로젝트의 신규 데프로이먼트를 셋업 하는 것으로, Tomcat 5 에 데프로이 할 수 있습니다. 그림 25 에 나타내는 관리 다이얼로그를 열려면 , 「패키지 익스플로어」뷰로 프로젝트를 오른쪽 클릭해,「MyEclipse」> 「프로젝트 데프로이먼트의 추가와 제거」를 선택하는지, 툴바의「MyEclipse J2EE 프로젝트를 서버에 데프로이」아이콘을 클릭합니다.


주: MyEclipse 로 Tomcat 5 (또는 그 외의) 어플리케이션 서버 컨넥터를 이미 셋업 하고 있는 것이 전제가 되고 있습니다. 아직 셋업 하고 있지 않고, help가 필요한 경우는,「어플리케이션의 데프로이먼트 및 서버 관리의 퀵 스타트」가이드를 참조해 주세요.



그림 25 - 신규 데프로이먼트의 작성


데프로이먼트의 완료 후에 데프로이먼트 상황을 체크해, 에러가 발생하고 있지 않는 것을 확인하는 것을 추천합니다. 이것을 실시하려면 , 그림 26 의 설명에 따릅니다.



그림 26 - 데프로이먼트가 성공한 것의 확인


마지막으로, 그림 27 에 나타내는 어플리케이션 서버의 시작 버튼을 사용해 Tomcat 를 기동합니다.



그림 27 - 어플리케이션·서버의 개시


서버가 시작되면, 출력이 Eclipse 의 「콘솔」뷰에 송신됩니다. 그림 28 에, 이하의 2 개를 확인할 수 있도록 통상의 Tomcat 의 기동을 나타냅니다.
 1) Tomcat 가 Web 어플리케이션을 정상적으로 데프로이 했다
 2) Tomcat 가 정상적으로 기동했다



그림 28 - 어플리케이션과 서버가 올바르게 기동한 것의 확인


Tomcat 5 가 실행되면(자), 「MyEclipse Web 브라우저」뷰를 열어 테스트할 수 있습니다. 이것을 실시하려면 ,「윈도우」> 「뷰의 표시」> 「그 외...」(을)를 선택해, 「뷰의 표시」다이얼로그에 액세스 해, 「MyEclipse Enterprise Workbench」> 「Web 브라우저」뷰를 선택합니다.


Open
그림 29 - 「Web 브라우저」뷰의 오픈


그림 30 에 나타나듯이 브라우저의 주소·바에 http://localhost:8080/StrutsLoginDemo/userLogin.jsp 라고 입력해, 샘플 어플리케이션을 액티브하게 합니다.


그림 30 - 데모 어플리케이션에의 로그인


이와 같이, 어플리케이션은 사용 가능하다라고 하는 것을 알수있습니다. 이것으로, 유저명과 패스워드를 입력할 수 있습니다.


주: 이 데모의 유저명과 패스워드는, 어느쪽이나 'myeclipse'입니다.


로그인 후, Form 가 검증되어 어플리케이션은 유저를 로그인 성공 페이지에 진행합니다. 그림 31 은, Action 에 의해 유저가 올바르게 진행된 userLoginSuccess.jsp 페이지를 나타내고 있습니다.



그림 31 - 성공한 로그인


주:본 샘플 어플리케이션에의 액세스때는, HTTP 포토로서 8080 을 지정하고 있습니다만, 포토 번호는 사용하시는 서버 설정에 맞추어 적당히 변경해 주세요.




7. 통계

이 데모에서는, MyEclipse Enterprise Workbench 로 사용 가능한 Struts 툴을 사용해, 단순한 Struts 어플리케이션을 작성했습니다.


이것으로, Struts 의 설명은 종료됩니다. Web 프로젝트에서의 작업, 어플리케이션의 데프로이먼트 및 서버 관리에 대한 개요는, 그 외의 퀵 스타트 문서로 입수할 수 있습니다. 자세하게는, 메인 메뉴의문서에 액세스 해 주세요.


8. 사용자 피디백

이 문서에 대해 의견, 제안이 있으면, 서포트 포럼으로 보내 주세요. 

Posted by 1010
02.Oracle/DataBase2009. 1. 30. 20:08
반응형

우선 BLOB, CLOB을 DB에서 SELECT 해서 사용하는

몇가지 용법에 관해서 가장 low level의 코드로 살펴볼게요.

1. Class.forName("oracle.jdbc.driver.OracleDriver");
2. Connection             conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:merong", "admin", "1234");
3. Statement stmt = conn.createStatement();
4. ResultSet rset = stmt.executeQuery("SELECT blob_col, clob_col FROM test_table");
5. while(rset.next())

여기까지는 다 아시는 사항일테고...

이제부터 BLOB과 CLOB을 나누어서 한번 살펴보겠습니다.

1. BLOB 데이터를 읽어서 파일로 생성하는 경우
BLOB blob = ((OracleResultSet)rset).getBLOB(1);
InputStream input = blob.getBinaryStream();
FileOutputStream fOut = new FileOutputStream("C:/temp/xml/test.xml");
byte[] buffer = new byte[10];
int nbytes = 0;
while((nbytes = input.read(buffer)) != -1) {
   fOut.write(buffer, 0, nbytes);
}
fOut.flush();
fOut.close();
input.close();

2. BLOB 데이터를 읽어서 문자열로 처리하는 경우
BLOB blob = ((OracleResultSet)rset).getBLOB(1);
InputStream input = blob.getBinaryStream();
StringWriter strWriter = new StringWriter();
int ch = 0;
while((ch = input.read()) != -1) {
   strWriter.write(ch);
}
input.close();
System.out.println(strWriter.getBuffer().toString());

3. CLOB 데이터를 읽어서 문자열로 처리하는 경우
StringBuffer output = new StringBuffer();
Reader input = rset.getCharacterStream("CLOB_COL");
char[] buffer = new char[1024];
int byteRead;
while((byteRead=input.read(buffer,0,1024))!=-1){
   output.append(buffer,0,byteRead);
}
input.close();
System.out.println(output.toString());

어때요? 간단하죠?

출처 : http://www.fog.pe.kr/ktt/index.php?page=2

Posted by 1010
05.JSP2009. 1. 30. 20:07
반응형
 

InputStream과 OutputStream을 사용하는 경우 파일사이즈가 크면 java.lang.OutOfMemoryError이 발생하는 경우가 생겨, BufferedInputStream과 BufferedOutputStream을 사용하여 문제를 해결해 보았다.


JSP 다운로드 프로그램:


 try {
  String path = WEBConstants.SYSTEM_DOCROOT;
  File file = new File(path + filePath);


  response.reset() ;
  response.setContentType("application/x-octetstream");

  response.setHeader("Accept-Ranges", "bytes");
  response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(), "UTF-8") +"\"" );
  response.setHeader("Content-Length", ""+file.length() );

  BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
  BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());

  int read = 0;
  while((read = in.read()) != -1) {
   os.write(read);
  }
 
  in.close();
  os.close();
 } catch(Exception e) {
  e.printStackTrace();
  out.println("<script language=javascript>");
  out.println("alert('Does not file !');");
  out.println("history.go(-1)");
  out.println("</script>");
 }

Posted by 1010
02.Oracle/DataBase2009. 1. 30. 20:07
반응형
Oracle Clob를 이용한 예제(정민철)
Oracle 9i clob Type  

Oracle 8i 이전 버전에서 대용량 처리는 long 타입으로 처리를 할 수 밖에 없었으며,
이 칼럼은 한테이블에 하나만 사용할 수 있으며 (최대 크기 2GB) 더군다나 검색을 구현
하기가 너무 어려워 포기를 해야 만 했습니다.

그래서 이런 문제를 보안하기 위해 나온 것이 바로 Oracle 8i부터 지원되는 대용량 데
이터 저장 타입인 Lob(Large Object) Type 입니다..
 
Lob 타입은 테이블에 여러개의 컬럼을 생성할 수 있으며 (최대 크기 4GB) 또한 long  
타입보다 훨씬 쉬운 검색기능을 제공합니다.
 
Lob type의 종류로는 이진 바이너리 데이터의 저장시 사용되는 Blob (Binary Large Object)와
문서 데이터의 저장시 사용되는 Clob (Character Large Object) 그리고
외부 파일에 저장된 이진 데이터가 있는 경로의 저장시 사용되는 BFILE 가 있습니다.

 
그럼 이중에서 Clob에 대해 알아보겠습니다.

 
---------------
Clob에 저장하기
---------------

Clob 부연 설명을 한다면, 먼저 다른 데이터들을 먼저 데이터베이스에 넣고 그 다음 clob
타입의 데이터를 update 해주는 방식입니다.
그럼 자세히 알아보겠습니다.

*참고:저는 DBConnect라는 자바빈즈를 사용하여 Oracle에 접속하였습니다.

<jsp:useBean id="dbconn" class="jspBean.DBConnect" scope="application" />

    Connection  conn    = dbconn.getConnection();  
           // 자바빈즈로부터 데이터베이스 커넥션 받기
    conn.setAutoCommit(false);  
          // Clob의 가장 중요한 부분 입니다.
          // 반드시 CLOB column을 업데이트 하는동안 다른 process의 접근을  
          //막기위해 setAutoCommit(false)를 반드시 설정해야 합니다.  
  
    Statement   stmt    = null;  // SQL 구문 실행을 위한 Statement 선언
   
    try {
        stmt    = conn.createStatement();   // 커넥션으로부터 Statement 생성
    } catch(SQLException e) {
    }
    
    query = "INSERT INTO gongzi VALUES (seq_gongzi_id.nextval,";
    query = query + "?,?,?,?,?,sysdate,empty_clob(),0,seq_gongzi_id.currval,?,?,?)";
          // empty_clob() 를 이용하여 공간을 확보하면서 insert 합니다.

    PreparedStatement ps = conn.prepareStatement(query);
       ps.setString(1, subject);
       ps.setString(2, name);
       ps.setString(3, password);
       ps.setString(4, email);
       ps.setString(5, homepage);
       ps.setInt(6, step);
       ps.setInt(7, position);
       ps.setString(8,ip);
   
    try {
       ps.executeUpdate();
    } catch(SQLException e) {
    }
    ps.close();
    
    query = "select contents from gongzi where id = (select max(id) from gongzi)";
          //위에서 Insert한 데이터를 다시 가져옵니다.

    ps = conn.prepareStatement(query);
    rs = ps.executeQuery();
    if(rs.next()) {
       CLOB clob = ((OracleResultSet)rs).getCLOB(1);        
       Writer writer = clob.getCharacterOutputStream();
       Reader src = new CharArrayReader(contents.toCharArray());
       char[] buffer = new char[1024];
       int read = 0;
       while ( (read = src.read(buffer,0,1024)) != -1) {
            writer.write(buffer, 0, read); // write clob.
       }
       src.close();        
       writer.close();
     }
     conn.commit();
          // CLOB column에 데이터을 저장하였다면 commit()을 실행시키고  
     conn.setAutoCommit(true);  
          // conn.setAutoCommit(true)로 다시 설정합니다.  
     
     response.sendRedirect("list.jsp");
  



-------------
Clob 불러오기
-------------

     query = "SELECT * FROM gongzi WHERE id = "+id ;

     try {
rs = stmt.executeQuery(query);
     } catch(SQLException e) {
     }
     rs.next();

     String ip = rs.getString("ip");
     String subject = rs.getString("subject");
     String name = rs.getString("name");
     String email = rs.getString("email");
     String homepage = rs.getString("homepage");
     String created = rs.getString("created");

//----------------------------------------------
     StringBuffer output = new StringBuffer();
     Reader input = rs.getCharacterStream("contents");
     char[] buffer = new char[1024];
     int byteRead;
     while((byteRead=input.read(buffer,0,1024))!=-1){
  output.append(buffer,0,byteRead);
     }
    
     String contents = output.toString();
          //CLOB 데이터를 불러오기 위해서는 위에서처럼  
          //rs.getCharacterStream("content")로  
          //불러서 StringBuffer에 담아야 합니다.  
//----------------------------------------------
     int hit = rs.getInt("hit")+1;
     int ref = rs.getInt("ref");  
     int position = rs.getInt("position");

     rs.close();

글 제목에서 무제한이라고 했지만, 솔직히 무제한은 아닙니다..^^ 아시죠 4GB.  
텍스트로 4GB 넣으시려면 몇일 걸리지 않을까요.  
그럼 지금까지 이종철님의 제자 정민철이었습니다.
Posted by 1010
05.JSP2009. 1. 30. 19:55
반응형

http://www.j2eestudy.co.kr/ 에서 아키 (Archi)라는 분이 작성하신글입니다. 유용하게 쓰일 일이 있을것 같아서 퍼왔습니다.


-------------------------------------------------------------------


안녕하세요.

JSP File Brows입니다. 제가 만든건 아니구요.:-)


저작권은 첨부파일 내에 포함되어 있습니다.
윈도우탐색기(?) 기능과 비슷하구요. 설치가 간편하니까 시간있으신 분들은 한번 사용해 보세요.(추천!)

[설치 방법]
첨부파일 압축을 풀면 아래와 같은 파일이 있습니다.
Browser.jsp
example-css.css

웹서버 루트 아래 특정 디렉토리에 복사하시고 "http://localhost/Browser.jsp" 이런식으로 접근하시면 됩니다.

저는 톰켓에서 테스트해봤는데 잘 되었습니다.

선택된 파일 압축하는 기능도 있네요. ;-)
한글 지원은 안 되나 보네요.

잘 사용하시면 유용한 툴이 될 것 같네요.

 
   
Posted by 1010
98..Etc/Etc...2009. 1. 30. 19:21
반응형

아파치 + 리눅스 + 톰켓 설치(1)

 

JSP에 입문하신 여러분들께 제가 권하고자 하는 JSP엔진은 바로 톰켓입니다.

이 시점에서


'아..네..근데 JSP엔진이뭐죠?'


하고 질문하시는 초강력 울트라 캡숑 나이스 짱 왕초보님이 계실겁니다.

모르는 건 당연합니다. 물론 저도 몰랐었죠.

JSP엔진이라 함은 JSP를 돌리기 위해서 필요한 말 그대로 엔진이라 생각하면 될 겁니다.

자동차가 가려면 자동차엔진이 필요하고, 비행기가 날려면 비행기 엔진이 필요하듯이 말이지요.

ASP가 돌려면 IIS가 필요하고, PHP가 돌려면 PHP를 설치해야 하듯이 말이지요.


' 아니, ASP는 뭐고 IIS는 뭐죠? PHP는 먹는건가요? '


라고 질문하시려 했다면 잠시만 참으세요. 그 정도로만 이해하셔도 충분합니다.

어쨌든 여기서는 JSP엔진으로 톰켓을 설치하게 되는 것입니다.

JSP엔진에도 종류가 여러 가지가 있지요.

Jrun이라든가 resin이라든가, AparchJserv등등등...

참고적으로 Jrun은 돈많이 내고 써야하는 거구요. ApacheJserv는 톰켓의 이전 버전 정도로

생각하시면 될겁니다.

서두가 길었죠? 자, 그럼 설치를 시작해보겠습니다.


1. 리눅스의 설치


여기서 리눅스의 설치는 생략하도록 하겠습니다. 지금은 리눅스보다는 아파치와 톰켓의 설치가

우선적으로 설명이 되어야 하거든요. 어쨌든 시중에 있는 배포본은 매우 설치가 쉽도록

되어있습니다. 많은 분들이 원하신다면 강좌를 올리겠습니다만,

아마도 대부분은 리눅스를 설치하실 수 있으실 겁니다.


2. 아파치의 설치

 제 주위엔 남못지 않은 강력한 초보님들이 꽤나 계시답니다.

한번은 어떤 초보님이 이런 불만을 토하시더군요.
 

'아파치 좀 공부할려고 말이야....., 야후에다가 '아파치'치고 검색했더니,

 맨 무슨 헬기만 나와..!!!

 사오정 검색은 싫어!'


라고 말이지요. 그렇습니다. 우리가 알고 있는 아파치는 탱크잡는 헬기를 말하지요.

그러나 이제부터 여러분께서는 아파치하면 웹서버가 떠올라야 합니다.

인터넷상에서 웹서비스를 하려면 웹서버가 설치되어 있어야 하지요.

지금 바로 그 아파치를 설치하려합니다.


그러면 이제 아파치를 다운 받겠습니다.

http://www.apache.kr.net으로 가시면 Download라고 있을겁니다.

거기서 .tar.gz식으로 끝나는 아파치 최신 버전을 다운받으시기 바랍니다.

.zip으로 끝나는 아파치는 윈도우용이니 여기서는 필요가 없습니다.

리눅스에서 넷스케이프로 받으셨다면 일단 /usr/local/ 밑에 받아놓으시기 바랍니다.

윈도우에서 받으셨다면 ftp로 다른 컴퓨터에 있는 리눅스에 옮기시거나,

리눅스가 본인 컴퓨터에 함께 설치되어 있다면 리눅스에서 mount를 하여

윈도우에 있는 아파치를 리눅스로 옮겨다 놓으시기 바랍니다.


어찌됐던 디리던 디리던던~~

지금까지의 작업으로

리눅스의 /usr/local/ 디렉토리 밑에 apache의 최신버전이 놓여 있어야겠죠?

8월현재 아파치 최신버전은 1.3.12로군요.

자, 이제 리눅스에 root계정으로 들어가시기 바랍니다.

어떻게 들어가냐구요?

login : root

password : ***** (본인 컴퓨터의 root계정 패스워드를 칩니다.)

$>

이런 프롬프트가 뜨면,

$> cd /usr/local

을 칩니다. /usr/local 밑으로 위치를 이동하는 것이지요. 앞에 / 가 붙음에 유의 하세요.

절대경로에는 / 가 붙습니다.

$> ls

치시면 방금 다운받은 aparche가 보이지요.

그럼 아파치의 압축을 풀겠습니다.

$> tar xvzf aparche_1.3.12.tar.Z


치시면 뭐가 쫙 풀리죠? 방금 여러분은 압축되어있던 아파치를 푸신겁니다.

apache_1.3.12라는 디렉토리가 하나 생겼을겁니다.

그러면

$> cd apache_1.3.12

치고 들어가셔셔

$>./configure --prefix=/usr/local/apache  --enable-shared=max  --enable-rule=SHARED_CORE  --enable-module=so


하십니다.(1열로 쫙 붙여쓰세요.) 설치를 위한 환경설정을 하는 것이지요.

앞에 ./치시는거 잊지 마시고요.

./는 현재 경로를 나타내는 말입니다.

그러면 막 환경설정을 알아서 하겁니다.

그럼 이제 설치를 하지요.

$> make

치셔서 컴파일을 하시고

$> make install

치셔서 설치하시면 아파치 설치가 끝납니다.


$> cd /usr/local/apache/conf


로 이동하셔서


$> vi  httpd.conf


파일을 엽니다.

#ServerName을 찾으셔서 앞에 #를 지워서 주석 제거하시고

ServerName localhost

이렇게 씁니다. 혹은 해당아이피나 호스트명을 씁니다.

그런 다음,


$> /usr/local/apache/bin/apachectl start


해서 아파치를 시작하십니다.

브라우저에서 http://localhost 하고 엔터 쳐서 화면이 뜨면 설치 성공입니다.

수고하셨습니다.

그럼 이제 쉬실 분들은 잠시 쉬시고, 톰켓을 설치하도록 하겠습니다.

다 쉬셨으면 다음을 클릭하고 톰켓 설치로 넘어가겠습니다.

다음--> 



아파치 + 리눅스 + 톰켓 설치(2)


잘 쉬셨습니까?

어떤분은 한 하루정도 푹 쉬시고 이 페이지로 오신 분도 계시리라 생각이 듭니다.

아마도 일주일만에 오신 분도 계시겠지요. 쉴땐 팍팍 쉬는겁니다.~

그러면 푹 쉬셨으니 이제 기다리시던 톰켓 설치에 들어가도록 하겠습니다.

 

1. JDK의 설치

 

'톰켓 설치한다며..? 왠 JDK?

라고 말씀하시는 분께는 죄송스런 얘기지만, JDK도 설치를 하셔야합니다.

왜냐? JSP는 아시다시피 JAVA로 이루어진 언어지요. 그런데 그 언어가 돌아가려면

현재의 컴퓨터에 JAVA개발환경이 갖추어져 있어야 합니다.

그래서 필요한 것이 JAVA Development Kit 이라는 것이지요. 줄여서 JDK입니다.


그럼 이제 JDK를 설치하도록 하겠습니다.

http://www.blackdown.org에 가시면 왼쪽에 Download라고 있습니다.

거기로 들어가시면 나라별로 다운로드할 장소가 나오지요.

아무 나라나 선택하셔서 i386이라는 폴더에 들어가셔서

jdk1_2_2-linux-i386.tar.gz를 다운받으시기 바랍니다.

저는 개인적으로 네덜란드를 주로 사용합니다. 우연히 딱 찍은게 네덜란드인데

그런대로 속도가 나오는 것 같더군요.

이래서 괜시리 네덜란드에 대한 이미지가 좋아지게 되는군요.

위치는 역시 /usr/local 밑에 다운받습니다.


$> cd /usr/local/

$> ls


치시면 방금받는 JDK가 보이지요?

역시 압축을 풀도록 하겠습니다.


$> tar xvzf jdk1_2_2-linux-i386.tar.gz


쫙 풀리죠?

전 항상 느끼는 거지만 압축을 풀 때마다 쌓인 스트레스가 해소되는 느낌을 받습니다.

정말 말그대로 쫘~악 하고 풀리니까요.


$> ls


하고 보시면 jdk1_2_2라는 디렉토리가 생겨있는걸 보실 수 있습니다.

사용상의 편의를 위해서 디렉토리의 이름을 바꿉니다.


$> mv   jdk1_2_2   jdk


mv는 이동하라는 명령어인데 jdk1_2_2를 jdk라는 이름으로 이동했으니,

이름바꾸기랑 다를바가 없죠.

이렇게 해서 설치가 끝났습니다. 벌써?

무척 간단하죠? 그냥 다운받고 압축을 푸니 설치가 끝이로군요.

하지만 중요한 것은 jdk를 패스에 추가하는 것입니다.

처음 설치하시는 분께는 여기서부터가 조금 어렵습니다.

부끄럽지만 저도 한 때는 패스라는 개념이 안잡혀서 혼란스러워하던 때가 있었지요.

패스가 path를 말하는 건지 pass를 말하는건지도 헛갈려 했었지요.

'실은 내가 그 수준인데 말이지...'

하시는 분들도 있을겁니다. 제가 여기서 정답을 말씀드리지 않고 넘어가면,

그분께선 남몰래 저를 원망하시겠지요.

그래서 정답을 말씀드리자면, 정답은 path입니다.  패뜨~


자, 일단 현재 권한이 root권한이어야 합니다.

처음에 로긴할 때 root로 로긴했다면 상관이 없구요, 다른 계정으로 로긴했다면


$> su root


를 치시고 패스워드 치셔서 root권한으로 전환하시기 바랍니다.

그럼 이제 위치를 이동하겠습니다.


$>cd /etc


그다음 환경설정을 시작해야겠지요.


$> vi  profile


그럼 파일이 열리지요?

제일 밑에 다음과 같이 적어주시기 바랍니다.

export JAVA_HOME=/usr/local/jdk/
export CLASSPATH=./:$JAVA_HOME/lib/tools.jar:/usr/local/jakarta-tomcat/lib/servlet.jar
export PATH=$PATH:$JAVA_HOME/bin

이렇게 적어주시고
:wq치시고 빠져나오시기 바랍니다.

/usr/local/jakarta-tomcat/lib/servlet.jar

이 부분은 서블릿을 돌리기위해 톰켓의 servlet.jar를 패스에 추가하는 부분입니다.

그럼 이제 지금 바꾼 환경을 적용하도록 하겠습니다.

$> source profile


그럼 환경설정이 끝납니다.

현재 상태에서


$> javac


쳤을 때 뭐라고 쫙 나오면 설치 성공입니다.

명령을 찾을수 없다고 나오면 다시 한번 살펴보시고 설치하시기 바랍니다.

 

2. Tomcat의 설치


드디어 Tomcat을 설치합니다.

이제부터 톰켓이라는 JSP/서블릿 엔진을 설치하도록 하겠습니다.

'서블릿이 모야?'

라고 질문하시겠죠?

간단히 말하자면, 서블릿은 CGI의 자바버전입니다.

'CGI는 또 모냐? 구체적으로 좀 얘기해 달란말이쥐...'

하하... 그래서 제가 준비한 강좌가 또 있습니다.

kimho의 JSP와 서블릿의 개념에 대한 강좌입니다.

지금 너무 궁금해 죽겠다 하시는 분께서는 위 메뉴에서

JSP공부하기를 클릭하셔서 보시구요,

일단 설치부터 마무리 하겠다 하시는 분께서는 남은 설치를 마무리하시고

보시기 바랍니다. 나중에 봐도 늦지는 않거든요.

그럼 이제 톰켓을 다운받으시겠습니다.

http://jakarta.apache.org 에 가시면 왼쪽에 Download가 있습니다.

거기서 Binary를 선택하시고, 오른쪽에 Tomcat3.1이라고 링크되어 있는곳을

클릭하세요. 그런다음 톰켓3.1버전을 다운 받으십니다.

jakarta-tomcat.tar.gz 입니다.

역시 위치는 /usr/local입니다.


그리고 한가지 더..., 다운받는곳의 링크들 밑에 linux와 win32가 있는데, linux로 들어가셔서

mod_jserv.so라는 파일을 받으십니다. 이 파일은 잠시후에 설명하겠지만,

아파치와 톰켓을 붙일 때 사용합니다. 먼소린지 모르시겠죠? 이따 설명이 나옵니다.

만약 다운받은 파일이름이

mod_jserv.so..so

이런식으로 되어 있다면 이름을 제대로 바꾸십니다.


$> mv  mod_jserv.so..so   mod_jserv.so


자, 이제 언제나 그랬듯이 압축을 쫘~악 풀도록 하겠습니다.


$> tar xvzf jakarta-tomcat.tar.gz


오~예~ 해소되는 기분...


그러면 /usr/local 밑에 jakarta-tomcat이라는 디렉토리가 생겼을 것입니다.

디렉토리 이름을 꼭 jakarta-tomcat으로 해주세요. 이 강좌는 이 이름을 바탕으로 썼습니다.

기뻐해 주십시요. 톰켓의 설치가 끝났습니다.

언제나 기쁜일은 부지불식간에 오는 것 같습니다...^^


그럼 이제 테스트를 해볼까요?


$> cd /usr/local/jakarta-tomcat/bin

$> ./startup.sh


이렇게 톰켓을 시동시킨후,

브라우저창에서 http://localhost:8080으로 접속하시기 바랍니다.

톰켓의 기본 포트는 8080입니다.

지금 현재 윈도우에서 리눅스로 텔넷 접속으로 설치중이신 분은

브라우저에서 아무리 http://localhost:8080치셔도 안나오겠죠?

localhost 란 자기 자신의 주소를 가리키는거지깐요.

리눅스상태에서 http://localhost:8080으로 접속하십니다.

혹은 윈도우상에서 리눅스쪽의 상태를 확인하시려면

http://아이피주소:8080이겠죠? 예를들면 http://211.11.11.11:8080 이 되겠죠?

고양이 한 마리가 보이면 성공입니다.

축하드립니다.


아파치와 톰켓을 붙이자

 

아파치와 톰켓을 붙이는 이유

아파치를 설치하지 않고, 톰켓만 설치해도 톰켓의 index페이지는 뜹니다.
다시말해, 톰켓만 설치하고 웹서비스를 하는게 가능하다는 얘기입니다.
그렇다면 어째서 아파치와 연동하는 것일까요?
웹서버의 기능에서 아파치가 월등히 우수합니다.
현재 전 세계적으로 웹서버 시장의 60%를 아파치가 점유하고 있습니다.
그만큼 강력하다는 것이지요.
직접 써보시다보면 아시겠지만, 아파치의 탁월한 기능에 대해 놀라지 않을수가 없습니다.
아파치와 톰켓을 연동했을때 돌아가는 구조는 이렇습니다.
일반적인 웹서비스는 성능이 우수한 아파치를 통해서 합니다.
그런데 그중에서 jsp와 관련된 요청이 들어오면 아파치는 jserv모듈을 이용하여 톰켓과 연동하여 결과물을 가져옵니다.
클라이언트 + 아파치 + 톰켓의 3Tier구조가 되는 것이지요.

웹서비스의 기본포트는 80입니다. 포트번호를 치지 않고

http://www.kimho.pe.kr 이라고 치는 것은 실은

http://www.kimho.pe.kr:80하고 같은 것이지요.

톰켓에서는 아파치와 톰켓을 붙일 때 사용하는 파일로 mod_jserv.so라는 모듈을 제공합니다.

아까 다운받으신 mod_jserv.so라는 파일을

/usr/local/apache/libexec/ 밑으로 옮기십니다.


$> cp /usr/local/mod_jserv.so  /usr/local/apache/libexec/


그런다음


$> cd /usr/local/apahce/conf


로 이동하셔서


$> vi  httpd.conf


이 httpd.conf라는 아파치 설정 파일을 열어서 젤 밑에다가

Include /usr/local/jakarta-tomcat/conf/tomcat.conf

이렇게 쓰십니다. 웹서비스의 환경설정에 tomcat.conf에 있는 환경설정도 함께

적용된다는 뜻입니다.

톰켓의 conf디렉토리의 tomcat.conf도 여셔서

ApJservMount default /root 라고 되어있는 부분 밑에

ApJservMount   /    /root

이렇게 추가시켜주세요.

이제 80포트로 접속시에도 톰켓의 디렉토리를 뒤져서 화면상에 보여주게 됩니다.

테스트를 해볼까요?


$> /usr/local/apache/bin/apachectl start


로 아파치를 스타트 시키시고,

http://localhost/examples

쳐서 내용이 나오면 성공입니다. 8080이라는 포트번호를 쓰지 않아도 결과가 보이니까요.


 '어째서 http://localhost라고 테스트 하지 않는거지?'

하고 의문을 품으시는 상당히 예리하신 분이 계시죠? 정말 예리하십니다.

이유는  http://localhost로 접속시 아파치에서는 디폴트로 index.html이라는

파일을 열도록 설정되어 있는데, 아파치의 웹서비스 디렉토리에 이미 이 파일이 있기 때문에

설정 전이나 후나 결과는 같은 index.html을 보여주기 때문입니다.


이렇게 해서 모든 설치를 마쳤습니다.

이제부터는 본격적으로 프로그램을 짜고, 공부를 해야겠지요.

JSP파일은 톰켓의 ROOT디렉토리 밑에 놓으시면 됩니다.

수고하셨습니다.

Posted by 1010
98..Etc/Tomcat2009. 1. 30. 19:18
반응형

// tomcat - server.xml파일에 DB Connection생성을 위한 설정(<Host>태그 내부에 추가함)


<Context Path="/myapp" docBase="myapp" debug="5" reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

                maxActive="100" maxIdle="30" maxWait="10000"

                username="sys" password="password" driverClassName="com.mysql.jdbc.Driver"

                url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>

</Context>


//내용설명

Context - path : URL 호출시 사용될 이름

            - docBase : 실제 웹 어플리케이션이 위치한 폴더명

            - debug : 로그 작성 레벨

            - reloadable : 톰캣서버의 재시작 없이 수정된 내용을 불러오기 위한 옵션

            - crossContext : myapp이외의 Context에서도 사용 가능하도록 하는 옵션

Resource - name : Resource명칭(JNDI Lookup 시 사용할 명칭)

              - auth : Resource 관리자를 지정. 여기서는 톰캣컨테이너가 관리자임

              - type : Resource 의 형태 지정. 데이타소스 형태를 지정함

              - maxActive : 최대 연결 가능한 Connection 숫자를 지정함

              - maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자

              - maxWait : Connection 재 사용을 위해 대기해야 하는 최대 시간(단위:ms)

              - username : DB접속 계정

              - password : DB접속 암호

              - driverClassName : DB와 접속하기 위한 driver 클래스를 지정. 예에서는 MySql임

              - url : 접속한 DB가 위치한 서버명, 포트명, 사용할 데이타베이스명을 지정



// tomcat - web.xml파일에 DB Connection생성을 위한 설정

<resource-ref>

              <description> DB Connection </description>

              <res-ref-name>jdbc/TestDB</res-ref-name>

              <res-type>javax.sql.DataSource</res-type>

              <res-auth>Container</res-auth>

</resource-ref>


//내용설명

resource-ref - description : 참조할 resource에 대한 설명

                  - res-ref-name : 참조할 resource의 명칭. Server.xml에 정의된 이름과 일치해야함

                  - res-type : 참조할 resource 형태로 여기서는 DataSource를 지정함

                  - res-auth : 참조할 resource를 관리할 주체로 톰캣컨테이너를 지정함

Posted by 1010
61.Linux2009. 1. 30. 12:53
반응형

1.1. SELinux의 이해


Q: SELinux란?

A: 휘도라 코어(Fedora Core)의 SELinux(Security-Enhanced Linux)란 리눅스 보안 모듈 구조체(Linux Security Modules(LSM) framework)를 이용하여 리눅스 커널에 의무 접근 제어(Mandatory Access Control - MAC)를 구현하는 것이다. 표준 리눅스 보안(Standard Linux Security)은 자유재량 접근 제어(Discretionary Access Control – DAC) 모델이다. DAC 모델에서, 파일과 자원에 대한 결정권은 오직 해당 객체(objects)의 사용자(user id)에게 있고 소유권(ownership)에 따라 이뤄진다. 각 사용자와 그 사용자에 의해 실행된 프로그램은 자기에게 할당된 객체에 대해 전적으로 자유재량권을 갖는다. 이러한 상황에서는, 악의 있는 일반 혹은 루트 사용자(예로, setuid와 setgid)가 실행시킨 결함이 있는 소프트웨어를 통해 주어진 객체로 원하는 어떠한 일을 해도 막아낼 방법이 없으며 보안 정책을 시스템 전체에 걸쳐 시행되도록 할 방법이 없다.


MAC 시스템은 위와 같은 빠져있는 요소들을 제공한다. 첫 째, 보안 정책을 모든 프로세스나 객체에 대하여 관리차원으로 규정 지을 수 있다. 둘 째, 커널에 SELinux를 구현하면, 모든 프로세스와 객체를 제어할 수 있다. 셋 째, 결정은 단지 인증된 사용자(user identity)에 의해서가 아니라 이용 가능한(available) 모든 보안 관련 정보에 근거하여 이뤄진다.


SELinux하에서 MAC는 모든 주체(subjects – 사용자, 프로그램, 프로세스)와 객체(파일, 디바이스)에 대해서 국부적으로 허가(granular permissions)해 줄 수 있다. 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에 대해서만 사용 권한을 안전하게 부여한다.


SELinux 구현은 역할과 유형 시행(Type Enforcement - TE)에 기초하여 추상적 사용자 수준 제어(abstracted user-level control)를 제공하는 역할 기반 접근 제어(role-based access control – RBAC)를 사용한다. TE는 접근 제어를 처리하기 위해서 테이블(매트릭스)을 이용한다. 주체는 영역(domain)을 갖고 객체는 유형을 갖으므로, 매트릭스에서 교차조회하여 이들의 상호작용을 규정한다. 이는 리눅스 시스템에 있는 모든 동작자(actor)에 대하여 극단적으로 국부 제어를 가능케 한다.


Q: SELinux 정책이란?

A: SELinux 정책은 사용자, 프로그램, 프로세스 그리고 이들의 동작 대상인 파일과 디바이스를 포함한 시스템 전체, 즉, 모든 주체와 객체에 대한 접근 허가(access permissions)를 기술한다. 휘도라 코아 정책은 관련 소스 패키지와 함께 패키지로 공급된다. 현재 공급되는 정책 패키지는 다음과 같다.

selinux-policy-strict-<version-arch>.rpm and selinux-policy-strict-sources-<version-arch>.rpm

selinux-policy-targeted-<version-arch>.rpm and selinux-policy-targeted-sources-<version-arch>.rpm

설치시 정책 소스는 /etc/selinux/policyname/src/policy에, 바이너리 정책 파일은 /etc/selinux/policyname/policy에 놓인다. 정책 소스는 최소 설치(ultra-minimal installations)에 포함되지 않는다. 유형과 영역에 대한 정책은 주체와 객체에 대한 보안 문맥과 구분해서 별도로 설정된다.


Q: SELinux 목표 정책(SELinux targeted policy)이란?

A: 처음 SELinux가 휘도라 코아에 포함됐을 때, NSA의 엄격한 정책이 시행됐었다. 시험 목적으로, 이는 그 엄격한 정책을 통해서 수백가지 문제점을 찾아낼 수 있었다. 뿐만 아니라, 휘도라 사용자들의 다양한 환경에 단 하나의 엄격한 정책을 적용한다는 것은 실효성이 없다는 것이 명백히 드러났다. 기본 설치 이외의 것에 대해서 단일 엄격한 정책을 적용하는 것은 현지 일반 사용자에게 전문 지식(기술)을 요구하는 것이었다.


이 시점에서, SELinux 개발자들은 사용자들이 선택한 내용을 검토하고, 다른 전략을 시도하기로 결정했다. 특정 데몬들, 특히, 깨지거나 손상(오염)되면 시스템을 황폐화시키거나 공격받기 쉬운 것들을 옥죄는(lock down) 데 초점을 맞추는 정책을 만들기로 했다. 시스템의 나머지 부분은 SELinux가 활성(enabled)이든 아니든 관계없이 똑같이 가동되도록, 즉, 마치 표준 리눅스 보안하에 운영되고 있는 것처럼 동작하도록 허용한다.


목표 정책 하에서, 대부분의 프로세스는 unconfined_t domain(무제한 영역)에서 가동된다. 그 이름이 의미하는 바와 같이, 이 프로세스들은 거의 SELinux 정책에 의한 제한을 받지 안는다. 그러나, 그 프로세스들은 여전히 표준 리눅스/유닉스 보안에 의해 통제된다.


특정 네트워크 데몬들은 전용 정책을 갖고 있어, 응용프로그램이 시작될 때, 무제한 정책(unconfined_t policy)이 전용 정책으로 전이된다. 예를 들면, 시스템 부팅시, init는 무제한 정책하에서 가동하지만, named가 시작할 때, named 영역으로 전이되고 적시에 적절한 정책에 의해 옥죄어진다.


각 구체적인 데몬에 대한 목표 정책을 활성화 혹은 비활성화 시키는 것에 관하여 더 알고 싶으면, system-config-securitylevel의 사용법을 참조하기 바란다.


Q: 어떤 데몬이 목표 정책에 의해 보호받는가?

A: 현재, 데몬 일람표에는 dhcpd, httpd(apache.te), named, nscd, ntpd, portmap, snmpd, squid 그리고 syslogd가 있다. 이 데몬들에 대한 정책 파일은 /etc/selinux/targeted/src/policy/domains/program에서 찾을 수 있다.


향후, 더 많은 데몬들이 목표 정책 보호(targeted policy protection)에 추가될 것이다.


Q: 어느 데몬을 목표 정책에 추가할 것인가? Sendmail, Postfix, MySQL, 혹은 PostgreSQL?

A: SELinux 개발자는 긍극적으로 ftp와 메일 에이젼트를 목표 정책에 추가하고자 한다. 예를 들면, vsftpd는 로그인과 비슷하게 동작한다. 즉, 로그인후 새로운 프로세스가 사용자 문맥(실사용자 혹은 무명씨 문맥)하에 실행된다.


메일 에이젼트가 안고 있는 문제중 하나는 메일 에이젼트는 사용자 홈 디렉토리에 있는 파일을 조작해야 하는 일이 자주 생기는 것이다. 목표 정책의 목적중 하나는 사용자 홈 디렉토리에서 문제들을 분류하지 않는 것이다. 이 생각은 아직도 변함이 없다.


Q: 염격한 정책은 어떤가? 이 정책 조차도 유효한가?(Does it even work?)

A: 엄격한 정책은 휘도라 코아에서 분명히 적용되고 있다. 이는 다른 사용자의 독특한 환경에 의해 문제를 야기시킬 수 있다. 엄격한 정책이 적절하게 운영되려면, 정책과 시스템 둘 다 미세조정(tweak)해야 할 지도 모른다.


엄격한 정책을 사용하는 데 좀더 용이하도록 하려고, SELinux 개발자들은  정책 변경을 더 쉽게 할 수 있도록 노력해왔다. 예를 들면, system-config-securitylevel은 재명명하기(relabel)를 시동 스크립트안에 갖고 있다(build).

Q: 파일 문맥이란?

A: 파일 문맥은 파일이나 디레토리의 보안 문맥을 기술하는 항구적 라벨(꼬리표)(persistent labels)을 만들기 위해 setfiles 명령에 의해 사용된다.


휘도라 코아는 검사, 복구, 재명명(check, restrore, and relabel) 등, 이상 세가지 옵션을 지원하는 명령 스크립트 fixfiles를 갖고 있다. 이는 사용자가 selinux-policy-targeted-sources 패키지를 설치하지 않고도 파일 시스템을 재명명(relabel)할 수 있도록 해준다. 명령 라인 사용법은 표준 setfiles 명령보다 더 친숙하다.


Q: 파일, 사용자, 프로세스의 보안 문맥을 확인하는 방법은?

A: 새 옵션 –Z는 주체나 객체의 문맥을 표시하기 위한 손쉬운 방법이다:


ls -alZ file.foo

id -Z

ps -eZ


Q: 영역과 유형은 어떻게 다른가?

A: 비록 영역이 프로세스의 유형으로 자주 언급될 지라도, 영역과 유형 사이에는 차이점이 없다. 이렇게 볼 때, 영역의 사용은 영역과 유형을 구분하는 전통적 TE 모델에 기인한다.



1.2. SELinux 제어하기



Q: SELinux 설치 및 설치 안하는 방법은?

A: 방화벽 설정 화면에서 선택한 사항에 기초하여 설치자(installer)가 처리한다. 기본 가동 정책(default running policy)은 목표 정책이며, 기본으로(by default) 가동된다.



Q: 사용중인 정책을 교체하는 방법은?

A:


정책 교체는 가볍게 취할 사안이 아니다.

연구 목적으로 시험 장비(test machine)에서 새 정책을 시도하는 이외, 생산 시스템(production system)에서는 다른 정책으로 교체하기 전에 현황을 심각하게 고려해야 한다.

교체 작업은 간단하다. 이는 매우 안전한 방법이지만, 우선 시험 시스템에서 일차 시도해 보는 것이 바람직하다.

한 가지 방법은 system-config-securitylevel을 사용하여 정책을 바꾸고 재명명(relabel)하도록 파일 시스템을 설정하는 것이다.


수작업 절차는 다음과 같다:


1. /etc/selinux/config을 편집하고 SELINUXTYPE=policyname으로 정책 유형을 바꾼다.

1. 재부팅하여 돌아올 수 있는 지 확인하기위해, SELINUX=permissive모드로 설정한다. 이렇게 하면, SELinux는 정확한 정책하에서 가동될 것이지만, 만일 부정확한 파일 문맥 명명(labeling)과 같은 문제가 있으면 로그인하도록 할 것이다.

1. sysadm_r 역할을 갖춘 root로 파일 시스템을 재명명한다(relabel):


id -Z

root:sysadm_r:sysadm_t

fixfiles relabel


옵션 -l /path/to/logfile을 사용하여 표준 출력으로 로그를 볼 수 있고, 옵션 -o /path/to/file을 사용하여 검토(checked)되거나 재명명(relabel ed)된 모든 파일 리스트를 저장할 수 있다.


1. 시스템을 재부팅한다. 새 정책하에서의 재시작은 모든 시스템 프로세 스가 적절한 문맥에서 시작되고 정책 변경으로 인한 모든 문제가 드 러나게 한다.

1. sestatus –v 명령으로 발효된 변경사항을 확인한다. Permissive 모드로 가 동된 새 시스템에서, avc: denied 메시지를 /var/log/messages에서 확인한 다. 이들은 새 정책하에 문제없이 시스템이 가동되도록 해결해 야 할 문제들을 표시해 준다.


1. 새 정책하에서 시스템이 만족스럽게 돌아갈 때, SELINUX=enforcing 으로 바꿔 실행 권한을 부여한다. 실시간에 enforcing을 활성화 시키기 위 해 재부팅하거나 setenforce 1 을 실행한다.


Q: 목표 정책하에서 특정 데몬에 대하여 SELinux protection을 활성화/비활 성화 방법은?

A: 특정 데몬의 부울 값을 제어하려면 system-config-securitylevel을 사용한다. 예를 들어, 만일 apache가 시스템상에서 올바르게 동작하도록 하기위해서는 SELinux를 비활성화시켜야 한다면, system-config-securitylevel으로 해당 값을 비활성화시키면 된다. 이는 apache.te에 정의된 정책으로 전이되는 것을 막고 httpd가 일반 리눅스 보안하에 있도록 한다.


Q: 부팅시 SELinux를 비활성화시키는 방법은?

A: 커널 명령 라인에 selinux=0를 추가한다.


SELinux를 비활성화시킬 때 주의

이 옵션을 사용할 때는 매우 주의해야 한다. 만일 selinux=0로 부팅하면, SELinux가 비활성인 동안 만든 모든 파일은 SELinux 문맥 정보를 갖고 있지 않을 것이다. 적어도 파일 시스템을 재명명(relabel)해야 할지도 모르고, 복구를 위해 단일 사용자 모드로 부팅할 때 필요한 selinux=1로 부팅이 안될 수도 있다.

Selinux=0의 대안으로 /etc/selinux/configSELINUX=disabled을 사용하다.

Q: 부팅시 enforcing을 활성화/비활성화하는 방법은?

A: /etc/sysconfig/selinux 설정 파일을 이용하여 SELinux 모드를 지정할 수 있다.


# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing - SELinux security policy is enforced.

#       permissive - SELinux prints warnings instead of enforcing.

#       disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted - Only targeted network daemons are protected.

#       strict - Full SELinux protection.

SELINUXTYPE=targeted


enforcing에 값을 지정하는 것은 enforcing을 활성화하기 위해 커널을 부 팅할 때 명령 라인에 enforcing=1을 추가하는 것과 같다. 반면에, permis-sive에 값을 지정하는 것은 enforcing을 비활성화하기 위해 enforcing=0 를 추가하는 것과 같다. 명령 라인 커널 인자는 설정파일에 우선한다는 것을 명심하자(Note that the command line kernel parameter overrides the configuration file.).


그러나, disabled에 값을 지정하는 것은 커널 부트 인자 selinux=0을  사용 하는 것과 다르다. 커널에서 SELinux를 완전하게 비활성화시키는 것과 달 리 대신 disabled를 설정하는 것은 enforcing을 비활성화하고 정책 적재를 하지않고 건너뛰는 것이다.


Q: 재부팅하지 않고 enforcing 모드를 임시로 비활성화시키는 방법은?

A: 이 상황은 보통 정책에 의해 금지된 동작를 수행할 수 없을 때 발생한다. 실시간으로 enforcing모드를 비활성화시키기 위해서 sentenforce 0명령을 실행한다. 작업이 끝나서 enforcing 모드로 돌아오기 위해서는 sentenforce 1을 실행하면 된다.


sysadm_r 권한(역할) 필수

sentenforce 명령은 sysadm_r 권한을 갖고 수행해야 한다; 그러기 위해, newrole 명령을 사용하거나, 아니면, su –를 사용하여 root 로 사용자 전환을 하면, 자동으로 sysadm_r 권한을 얻을 수 있다.

Q: 부팅시 시스템콜 auditing 키거나 끄는 방법은?

A: 시스템콜 auditing을 키기위해서는 audit=1을 커널 명령 라인에 추가한다. 끄기위해서는 audit=0을 추가한다.


시스템콜 auditing은 기본적으로 꺼져있다. 켜지면, SELinux가 denied(거부) 메시지가 발생했을 때, 실행중이던 시스템콜에관한 정보를 제공한다. 이는 정책을 디버깅할 때 유용하다.



Q: 재부팅을 하지않고 시스템콜 auditing을 잠정적으로 끄는 방법은?

A: 현재는 지원되지 않고 있다. 향후, auditing을 조정할 수 있는 유틸리티 (utility)가 제공될 것이다.


Q: SELinux 설치에 관한 상태 정보(status info)를 얻는 방법은?

A: root 사용자 권한으로 /usr/sbin/setstatus –v 명령을 실행하라. 더 많은 정보가 필요하면, 매뉴얼 페이지 setstatus(8)을 참조하라.



1.3. 문제 해결하기



Q: 응용프로그램이 기대했던 데로 동작하지않고 avc: denied 란 메시지가 나타나면, 어떻게 이 문제를 해결하는 가?

A: 이 메시지는 현재 실행된 SELinux 정책이 그 응용프로그램의 동작을 허락하지 않기 때문이다. 이러한 일에는 여러 가지 사유가 존재한다.


첫째, 응용프로그램이 접근하려는 파일중 하나가 잘못 명명되어있을 수 있다. 만일 AVC 메시지가 특정 파일을 참조한다면, ls -alZ /path/to/file 을 수행하여 현재 참조하는 파일명(current label)을 조사해 보라. 만일 그것이 잘못되어 보이면, restorecon -v /path/to/file 을 시도해보라. 만일 파일과 관련된 매우 많 은 거부(denials) 상황이 존재하면, fixfiles relabel 을 수행하거나, 반복적으로 디렉토리 경로를 재명명하기 위해서 –R옵션과 함께 restorecon 을 수행하고 싶을 수 있다.


다른 때에는, 거부(denials) 현상은 정책에 의해 거부되도록 프로그램에 설정을 바꿔서 발생될 수 있다. 예를 들면, 만일 Apache를 8800포트로 바꾸면, 보안 정책, apache.te,도 관련하여 바꿔야 할 필요가 생긴다. 정책 작성에 관한 상세한 정보가 필요하면, 외부연결 리스트(External Link List)를 보라.


만일 작동중인Apache와 같이 특정 응용프로그램을 구하는 데 어려움이 있으면, 해당 응용프로그램에 enforcement를 비활성화(disable)시키는 방법에 관하여 How to use system-config-securitylevel를 보라.


Q: 기존 /home 파티션이 있는 시스템에 휘도라 코아를 설치하고 로그인을 할 수 없을 때 해결방법은?

A: /home 파티션이 정확하게 명명(label)되지 않았다. 두 가지 방법으로 이 문제를 쉽게 해결할 수 있다.


만일 /home을 반복적으로 재명명(relabel)하고자 한다면:


/sbin/restorecon -v -R /home


만일 잘못 명명된 기타 파일이 없다고 확인하고자 한다면, 전체 파일 시스템을 재명명할 수 있다.


/sbin/fixfiles relabel


fixfiles를 사용하여 policycoreutils 패키지를 설치할 필요가 있을 것이다.


Q: setfiles fixfiles를 사용하여 /home을 재명명한 후, 여전히 SELinux 비활성 시스템(non-SELinux-enabled system)으로 /home을 읽을 수 있을까?

A: 비 SELinux 배포판(non-SELinux distribution)의 파일이나 SELinux가 비활성화(disabled)된 파일을 읽을 수 있다. 그러나, SELinux 비활성화 시스템에 의해 생성된 파일 또는 삭제나 재생성된 어느 파일도 보안 문맥을 갖고 있지 않을 것이다. 이는 ~/.bashrc와 같은 파일에서 문제가 생길 수 있다. 휘도라 코아로 다시 돌아갈 때 /home을 재명명해야 할 지도 모른다.


Q: 휘도라 코아와 비SELinux 시스템간에 NFS를 사용하여 디렉토리를 공유하는 방법은?

A: NFS가 많은 파일 시스템을 명확하게 지원하기 때문에, SELinux와 비 SELinux 시스템간에 디렉토리를 공유하는데 NFS를 사용될 수 있다.


NFS를 통해서 비 SELinux 파일 시스템을 마운트할 때, 기본적으로 SELinux는 공유영역에 있는 모든 파일을 nfs_t의 문맥을 갖고 있는 것으로 간주한다. Context=옵션 을 사용하여 수작업으로 그 값을 설정하여 기본문맥(default context)을 덮어쓸 수 있다. 예를 들면, NFS로 마운트된 디렉토리의 파일들을 SELinux에 대한 system_u:object_r:tmp_t의 문맥을 갖고 있는 것처럼 보이게 할 것이다(appear to have a context of system_u:object_r:tmp_t to SELinux).


mount -t nfs -o context=system_u:object_r:tmp_t server:/shared/foo /mnt/foo


SELinux가 파일 시스템을 NFS를 경유하여 엑스포트(export)할 때, 생성된 파일은 자기가 만들어진 디레토리의 문맥을 갖을 것이다. 다시 말해서, 원격 으로 마운트된 시스템(remote mounting system)의 SELinux의 출현 (presence)은 현지 보안 문맥(local security contexts)에 영향을 끼치지 않는다.


Q: 적절한 문맥을 갖는 사용자 홈 디렉토리와 함께 새 리눅스 사용자 계정 을 만드는 방법은?

A: 표준 useradd 명령을 사용하여 사용자 계정을 새로 만들 수 있지만, 우 선 sysadm_r의 문맥을 갖는 루트 사용자가 되어야 한다. 이 문맥 교환은 su

명령에 통합되어 있어 자동으로 일어난다.


su - root

id -Z

root:sysadm_r:sysadm_t

useradd auser

ls -Z /home

drwx------  auser   auser   root:object_r:user_home_dir_t /home/auser 


새 사용자 디렉토리에 대한 초기 문맥은 루트의 정체성(identity)을 갖는다. 이후 파일시스템의 재명명은 그 정체성을 system_u로 바꾼다. 이들은 역할(권한)과 유형이 동일하기 때문에 기능적으로 서로 같다 (object_r:user_home_dir_t).


Q: 다른 모든 SELinux 문서는 su이 단지 리눅스 정체성만을 바꾸고 보안 역할(security role)은 아니라고 말한다.

A: 휘도라 개발팀은 기존 SELinux 관례(existing SELinux practice)와는 조금 다른 방향을 취했다. 보안 문맥 전이는 이제 pam_selinux에 의하여 su에 통합되었다. 이는 시스템 사용을 크게 단순화시켰다. 실제로, 이는 전통전인 su와 SELinux  newrole을 두 단계대신 한 단계로 조합한 것과 같다.


setuid(2)와 같이 다른 형식의 Linux/UNIX® 정체성 변화는 SELinux 정체성 변화를 일으키지 않는다.


Q: 특정 프로그램에 대한 로그를 채우는 avc 오류에 골치를 앓고 있다. 어떻게 하면 그것에 대한 접근을 감시하지(audit) 않도록 선택할 수 있는가?

A: 예를 들어, 만일 dmesg를 감시하지 않길 원했다면, /etc/selinux/targeted/src/policy/dmesg.te 파일에 다음사항을 넣으면 된다.


dontaudit dmesg_t userdomain:fd { use };


이는 모든 유저영역(user, staffsysadm)에 대하여 터미널로 출력된 오류를 제거한다.


Q: 비록 허가 모드에서 운행될 지라도(even running in permissive mode), 많은 수의 avc denied 메시지가 나타난다.

A: 비 enforcing 모드에서는 실제 enforcing 모드에 있을 때보다 더 많은 메시지를 받는다. 이는 이전에 enforcing 모드에 있었던 것처럼 커널이 매 접근 거부를 기록하기 때문에 일어난다. 제한을 받지 않기 때문에, 더 많은 실행을 수행할 수 있고, 이는 더 많은 거부가 기록되는 결과를 초래한다.


Q: 오직 SELinux가 enforcing 모드에 있을 때만 특정 허가 거부를 받지만, /var/log/messages에는 어떠한 감시 메시지를 볼 수가 없다. 이들 침묵의 거부(silent denials)의 원인을 밝혀낼(identify) 수 있는 방법은?

A: 침묵의 거부에 대한 가장 공통적인 이유는 정책에 감시 메시지를 억제하 도록 명시적 dontaudit 규칙을 내포하고 있기 때문이다. dontaudit 규칙은 은근한 거부가 감시 기록을 채울 때 이러한 방법으로 종종 사용된다.


특정 거부를 찾으려면, 모든 dontaudit 규칙의 감시(auditing)를 활성화시킬 필요가 있다.

cd /etc/selinux/targeted/src/policy make enableaudit

make load

활성화된 dontaudit 출력은 장황하다

모든 dontaudit 규칙의 감시(auditing)를 활성화하는 것은 다량의 감시 정보를 생산해낼 가능성이 높고, 그 대부분은 찾고자하는 거부와 무관하다.

은근하게 발생하는 거부에 대한 감시 메시지를 구체적으로 찾고자 할 때만 이 기술을 사용하라. 십중팔구(아마) 가능한한 빨리 dontaudit 규칙을 재활성화시키길 원할 것이다.

dontaudit 규칙을 재활성화하려면, 다음을 수행하라.


cd /etc/selinux/targeted/src/policy

make clean

make load


Q: 정책 패키지를 업그레이드할 때(예를 들어, yum을 사용하여), 기존 정책 에 어떤 일이 발생하는가; 자동으로 업데이트되는가?

A: 패키지가 업데이트될 때 정책은 원래데로 재 적재된다. 이는 수작업 make load를 대체한다.


어떤 상황에서, 파일 시스템을 재명명할 필요가 있을 수 있다. 이는 파일 문 맥이 실효성이 없게 된 곳에서 SELinux 버그 수정 과정의 일 부분으로 혹은 정책 업데이트가 file_contexts 으로 변경될 때 발생될 수 있다.


파일 시스템을 재명명한 후, 재부팅이 꼭 필요한 것은 아니지만 모든 프로세 스와 프로그램이 적절한 영역에서 수행되고 있는 지를 확인하는 데 필요하 다. 이는 업데이트된 정책의 변경사항에 크게 영향을 받는다.


만일 정책 소스 패키지(예, selinux-policy-strict)를 설치했다면, 파일 시스템을 재명명하기 위해 다음 명령을 수행한다.


cd /etc/selinux/targeted/src/policy

make

make relabel

reboot


만일 정책 소스를 사용하지 않는다면, 다른 접근법은 fixfiles명령을 사용하는 것이다.

             

fixfiles relabel

reboot 


Q: 만일 응용프로그램 패키지와 함께 보급되는 정책이 재명명이 필요한 방법으로 변경된다면, RPM은 패키지가 소유한 파일들을 재명명을 처리할 것인가?

A: 그렇다. 해당 패키지가 소유한 파일에 대한 보안 문맥은 그 패키지의 헤더 데이터(header data)에 저장되있다. 그 파일 문맥은 패키지 파일이 디스크에 놓여 있으므로  cpio 복사가 된 후 즉시(directly) 설정된다.


Q: 정책과 정책 소스 패키지사이에 어떤 관계가 있는가?

A: selinux-policy-targeted와 같은 정책 패키지는 즉시 적용되는(working) SELinux 설치에 필요 조건인 반면selinux-policy-targeted-sources와 같은 정책 소스 패키지는 기본 정책을 커스터마이즈(customize)하고자 한다면 필요하 다.


정책 패키지는 SELinux 보안 정책을 정의하는 데 필요한 최소한의 파일을 갖고 있다. 최소한의 설치 청사진을 지원하기 위해 크기를 줄였다.


정책 소스 패키지는 /etc/selinux/policyname/contexts/* /etc/selinux/policyname/ policy/policy를 만든 데 필요한 /etc/selinux/policyname/src/policy에 소스 정의를 포함하고 있다. Version은 그 정책의 버전 번호이다.


설치할 패키지 선택은 설치 유형에 달려있다. 만일 휘도라 코아 개발자가 정의한 기본 보안 정책 만을 사용하려면, 정책 패키지를 설치만 하면 된다. 어떤 방법이든 보안 정책을 커스터마이즈하거나 아니면 setools를 실행하려 면, 정책 소스를 설치해야 한다.


정책 패키지를 설치하거나 업데이트하면 파일을 설치한 후 새 정책을 적재한다. 마찬가지로, 정책 소스 패키지를 설치하거나 업데이트하는 것은  policy.version파일 뿐만 아니라 file_contexts파일을 재 구축하고 나서 현재 실효 성 있는 정책으로 그 파일을 적재하는 것이다.


Q: 왜 /etc/selinux/policyname/policy/policy.<version> /etc/selinux/policyname/src/ policy/policy.<version> 파일은 다른 (크기, md5sums, 날짜)를 갖는가?

A: 정책 패키지를 설치할 때, 미리 컴파일된 바이너리 정책 파일이 /etc/ selinux에 직접 들어간다. 정책 소스 패키지가 설치되거나 업데이트될 때, 바이너리 정책 파일이 /etc/selinux/policyname/src/policy에 구축되고, 다시 /etc/selinux/policyname/policy/로 이동한다. 다른 구축 환경은 다른 크기, md5sums와 날짜를 갖는 목표 파일을 만들게 된다.


Q: 새로운 정책 패키지가 시스템을 비활성화시킬(disable) 것인가?

A: 정책 패키지나 응용프로그램 패키지와 함께 배포되는 정책의 변경은 오류, 더 많은 거부 혹은 기타 원인 모를 동작을 유발시킬 가능성이 있다. 문제를 해결하기 위해, 한번에 하나씩 정책과 응용프로그램 패키지를 되돌려가면서 어느 패키지가 문제를 일으키는지 찾아낼 수 있다. 이전 패키 지로 되돌리지 않으려면, 구버젼 설정파일에 .rpmsave확장자(꼬리표)를 붙 여 저장될 것이다. 문제 해결의 도움을 받으려면, 메일링 리스트, 버그질라, 그리고 IRC를 활용하도록 한다. 능력이 있으면, 스스로 정책을 작성하거나 고쳐 문제를 해결할 수 있다.


Q: 정책 작성에 도움을 줄 수 있는 방법은?

A: 도움을 기꺼이 받아들일 것이다. SELinux 메일링 리스트, fedora-selinux-list@redhat.com에 가입하는 것으로 시작할 수 있다; http://www.redhat.com/mailman/listinfo/fedora-selinux-list에 등록하고 관련 문서를 읽을 수 있다. 비공식 FAQ는 HOWTO 정보를 작성하는 일반 정책 (http://sourceforge.net/docman/display_doc.php?docid=14882&group_id=21266#BSP.1) 을 갖고 있다. 또 다른 새 자원은 기록하는 SELinux 정책 HOWTO(Writing SE Linux policy HOWTO)이다 (https://sourceforge.net/docman/display_doc.php?docid=21959&group_id=21266).


/etc/selinux/policyname/src/policy/에 있는 정책 파일을 보고 시험해보는 것이 상책이다. 실마리를 찾기 위해 /var/log/messages에 있는 avc denied 메시지를 관찰하라.


정책 작성자에게 유용한 도구는 /usr/bin/audit2allow 인데 이것은 /var/log/messages  avc 메시지를 SELinux에 의해 사용될 수 있는 규칙으로 번역해준다. 이 규칙들은 십중팔구 정리되어야 할 것이다.


audit2allow명령은 세가지 방법으로 입력을 받을 수 있다. 기본은 표준입력 (stdin)이다. -i 옵션을 사용하면 /var/log/messages 로부터 입력을 읽을 수 있고 –d옵션을 사용하면 dmesg 출력으로부터 입력을 읽을 수 있다.


Q: 콘솔에 메시지가 넘쳐나고 있다. 어떻게 이것을 막아낼 수 있는가?

A: 유용한 제어를 되찾기 위해서는 dmesg -n 1 를 사용하여 콘솔로 나가는 커널 메시지를 끈다.


Q: 정책 소스를 설치하지 않고 기본 정책을 시험할 수 있는가?

A: 단지 selinux-policy-policyname policycoreutils 패키지를 설치하면 SELinux 기본 정책을 시험할 수 있다. 정책 소스를 설치하지 않았으면, fixfiles 명령은 자동으로 파일 시스템 재명명을 처리해준다.


fixfiles relabelmake relabel와 동일하다. 재명명 동안, /tmp에 있는 모든 파일 을 삭제하여, 구 파일 문맥 라벨을 갖고 있는 파일들을 정리한다.


기타 명령으로는 잘못 명명된 파일을 검사하는 fixfiles check이 있고 잘못 명명된 파일을 고치지만 /tmp에 있는 파일을 삭제하지 않는 fixfiles restore이 있다. fixfiles는 전 파일시스템을 재명명하는 것이 목적이므로 인자로서 디렉토리의 리스트를 취하지 않는다. 특정 디렉토리 경로를 재명명하려면, restorecon을 사용하라.


Q: KDE 응용프로그램을 SELinux하에서 작동하는 데 문제가 있다.

A: KDE 실행파일은 항상 kdeinit으로 나타난다. 그런데 이것은 SELinux 정책으로 실행될 수 있는 것을 제한한다. 이는 모든 KDE 응용프로그램이 kdeinit의 영역에서 실행되기 때문이다.


/tmp/var/tmp를 재명명할 수 없기 때문에 SELinux를 설치할 때 문제가 종종 발생한다. 어느 파일이 어느 문맥을 갖어야 하는지 결정하는 좋은 방법 은 없다.


해결책은 KDE를 완전히 로그아웃하고(log out) 모든 KDE 임시 파일을 삭제하는 것이다.


rm -rf  /var/tmp/kdecache-<username>

rm –rf  /var/tmp/<other_kde_files>


다음 로그인에서 문제가 고쳐져야 한다.


Q: SELinux=disabled가 작용하지 않는 이유는?

A: /etc/sysconfig/selinux

파일에 있는 화잍 스페이스를 주의하라. 코드는 비록 끝에 붙은 스페이스일 지라도 화잍 스페이스에 매우 민감하다.



1.4. SELinux 배치하기



Q: SELinux를 사용하기 위해 어떤 파일 시스템을 선택해야 하는가?

A: 파일 시스템이 올바른 security.*이름공간(namespace)에 xattr라벨를 지원해야한다. ext2/ext3뿐 아니라 필요한 라벨을 지원하는 XFS가 최근 추가되었다.


Q: SELinux는 시스템 성능에 어떠한 영향을 미치는가?

A: 이것은 측정하기 힘든 변수이고 SELinux가 실행되고 있는 시스템의 규모에 크게 의존한다. 성능이 마지막으로 측정됬을 때, 그 영향은 완벽하게 조정이 안된 코드(for completely untuned code)의 약 7%였다. 그 이후의 변경은 네크워크와 같이 어떤 경우에 더 악화시킬 가능성이 있다. SELinux 성능 튜닝은 개발팀이 최우선 과제이다.


Q: SELinux를 효과를 제고하기위해(to leverage SELinx in) 첫째로 보아야 할 것은 어떤 유형의 배치/응용프로그램/시스템 등 인가(What types of deployments/applications/systems, etc.)?

A: 초기에는, SELinux는 거의 특별한 기능을 수행하지 않지만 극도로 엄격 한 보안을 유지하는 것이 중대한 인터넷에 접한 서버에서 동작할 것이다. 그 러한 시스템은 전형적으로 모든 특별한 소프트웨어와 서비스를 제외시키고 웹 서버나 이메일 서버와 같은 매우 집중화된 서비스나 서비스 집합을 운영 한다.


이러한 에지 서버(edge servers)에는 정책을 매우 엄격하게 적용할 수 있다 (lock down). 이것은 다른 성분(components)과의 더 작은 수의 상호작용으 로 더 쉽게 이뤄진다. 마찬가지로, 특별한 제삼 응용프로그램을 운영하는 전 용 박스가 좋은 후보이다.


향후, SELinux는 모든 환경을 목표를 둘 것이다. 그곳에 도달하기 위해서, 공동체와 ISVs(independent software vendors)은 필요한 정책을 생산하기 위해 SELinux와 협력할 필요가 있다. 지금까지, 특정 공격받기 쉬운 데몬에 초점을 맞춘 목표 정책뿐 아니라, 매우 제한적인 엄격한 정책이 쓰여졌다.


Q: 어떻게 SELinux가 제삼 응용프로그램에 영향을 끼치는가?

A: 휘도라 코아에서 목표 SELinux 정책을 구현하는 한가지 목적은 제삼 응용프로그램이 수정없이 동작할 수 있도록 하는 것이다. 이것은 목표 정 책이 그 응용프로그램에 대해 투명하므로(transparent) 제어를 하려하지 않 고 실질적으로 표준 리눅스 보안에 의지한다(This works because the targeted policy is transparent to those applications it is not trying to control that it essentially falls back on standard Linux security.). 이 응용프로그램들은 특별한 보안 방법(extra-secure manner)으로 실행되진 않을 것이다. 정책은 이 응용프로그램이 MAC에 의해 보호되도록 작성될 필요가 있다.


아주 많은 변형의 제삼 응용프로그램이 존재하고 이들이 SELinux, 심지어 목표 정책을 기동할 지라도 서로 어떻게 작용하는가(behave with)를 예측 하는 것은 불가능하다. 발생된 문제(issues that arise)은 때때로 정책에서 해결될 수 있다. 응용 프로그램을 SELinux하에서 동작하도록 수정될 필요 가 있는, 미처 알지 못했던 응용 프로그램과 관련된 보안 문제를 SELinux 가 보여줄 수 있다.


휘도라 코아 시험자와 사용자가 공동체에 가져오는 한가지 중요한 가치는 제삼 응용프로그램의 광대한 시험이다. 그러한 마음가짐으로, 토론을 하기 위해 적절한 메일링 리스트(fedora-selinux-list@redhat.com)에 여러분의 경험을 보내주실 것을 바란다.

[출처] SELINUX|작성자 옹이

Posted by 1010
61.Linux2009. 1. 30. 12:47
반응형
setsebool -P ftp_home_dir 1
service vsftpd restart
Posted by 1010
61.Linux2009. 1. 30. 12:38
반응형

출처 : http://develop.sunshiny.co.kr/archive/20090101

 

Fedora Core9에 vsftp를 설치하여 사용하다 보면 외부에서 FTP 접속할 경우

아래  표와 같이 디렉토리 목록만 나오고 파일목록이 안나오는 경우가 있다.

 

230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).

 

이럴 경우 "root" 권한으로

 

SELinux 정책을 일시적으로 끄고 싶을때 (재부팅하면 SELinux의 정책은 원래대로 돌아온다.)

# setenforce 0 

다시 켜고 싶을땐

# setenforce 1

 

영구적으로 SELinux정책을 끄고 싶을때는 아래와 같이 해주면 된다.(이것도 역시 root 권한으로...)

#vi /etc/sysconfig/selinux

 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

위와 같이 "SELINUX="의 값을 "enforcing"에서 "disabled"로 수정 후 저장하면 재부팅 후에도... 쭈욱~ 

 

출처 : http://mrtroll.tistory.com/entry/%ED%8E%98%EB%8F%84%EB%9D%BC%EC%BD%94%EC%96%B4%EC%97%90%EC%84%9C-SELINUX-%EA%B4%80%EB%A0%A8-%EC%84%A4%EC%A0%95FTP%EA%B4%80%EB%A0%A8

 

페도라코어에서 SELINUX 관련 설정(FTP관련)

 

*** SELINUX
# setsebool -P ftp_home_dir 1
페도라 코어 4 까실때 SELinux 로 설정했다면 디폴트로 사용자의 home 디렉토리에 쓰기를 막아놓는다.
SELinux 설정에서 FTP 부분을 변경하자.
# service vsftpd restart
home 디렉토리의 읽고쓰기를 1(True)로 변경하시고 vsftpd 를 재시작.

# setsebool -P ftpd_disable_trans 1
FTP 에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정

 

- 근데 왜 내꺼에선 setsebool -P ftp_home_dir 1 명령어 입력후 먹통일까... -ㅅ-

Posted by 1010
반응형

다양한 옵션을 주어 파일 이름을 바꿀 수 있습니다.

한글 인터페이스를 지원합니다.

사용자 삽입 이미지

Posted by 1010
반응형
한글만 입력받기


<script language='javascript'>
function hangul()
{
if((event.keyCode < 12592) || (event.keyCode > 12687))
event.returnValue = false
}
</script>

<input type="text" name="Name" size="10" maxlength="15" class=ad onKeyPress="hangul();">


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


input text 한영 한글/영문 입력 설정


<FORM>
<input style="ime-mode:active;">
<input style="ime-mode:inactive;">
</FORM>


ime-mode:active 이면 한글입력
ime-mode:inactive 이면 영문입력

익스플로러 6에서만 작동


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


한글 전환 모드 안 되게 하기
 
<input type="text"  style="ime-mode:disabled;">


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


한영 한글/영문 전환 버튼

<html>
<head>

<script language="javascript">
<!--
function Kren(form)
{
        if(form.test.style.imeMode == "active")
                form.test.style.imeMode = "inactive";
        else
                form.test.style.imeMode = "active";
}
//-->
</script>

</head>

<body>

<form name=form1 action="">
<input type="text" name="test">
<input type="button" onClick="Kren(this.form)" value="한/영전환">
</form>
익스플로러 6이상에서만 작동합니다.
</body>
</html>


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


숫자만 입력받기

<script>
function num_only(){
  if((event.keyCode<48) || (event.keyCode>57)){
    event.returnValue=false;
  }
}
</script>
<form name='test'>
<input type=text name='numInputField' OnKeyPress="num_only()" style="ime-mode:disabled">
</form> 


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


전화번호 포맷으로 숫자만 입력하면 (02)123-3423 이런식으로 바꿔줍니다

<SCRIPT LANGUAGE="JavaScript">
<!--
///
var n;
var p;
var p1;
function ValidatePhone(){
p=p1.value
if(p.length==3){
        pp=p;
        d4=p.indexOf('(')
        d5=p.indexOf(')')
        if(d4==-1){
                pp="("+pp;
        }
        if(d5==-1){
                pp=pp+")";
        }
        document.frmPhone.txtphone.value="";
        document.frmPhone.txtphone.value=pp;
}
if(p.length>3){
        d1=p.indexOf('(')
        d2=p.indexOf(')')
        if (d2==-1){
                l30=p.length;
                p30=p.substring(0,4);
                p30=p30+")"
                p31=p.substring(4,l30);
                pp=p30+p31;
                document.frmPhone.txtphone.value="";
                document.frmPhone.txtphone.value=pp;
        }
        }
if(p.length>5){
        p11=p.substring(d1+1,d2);
        if(p11.length>3){
        p12=p11;
        l12=p12.length;
        l15=p.length
        p13=p11.substring(0,3);
        p14=p11.substring(3,l12);
        p15=p.substring(d2+1,l15);
        document.frmPhone.txtphone.value="";
        pp="("+p13+")"+p14+p15;
        document.frmPhone.txtphone.value=pp;
        }
        l16=p.length;
        p16=p.substring(d2+1,l16);
        l17=p16.length;
        if(l17>3&&p16.indexOf('-')==-1){
                p17=p.substring(d2+1,d2+4);
                p18=p.substring(d2+4,l16);
                p19=p.substring(0,d2+1);
        pp=p19+p17+"-"+p18;
        document.frmPhone.txtphone.value="";
        document.frmPhone.txtphone.value=pp;
        }
}
setTimeout(ValidatePhone,100)
}
function getIt(m){
n=m.name;
p1=m
ValidatePhone()
}
function testphone(obj1){
p=obj1.value
p=p.replace("(","")
p=p.replace(")","")
p=p.replace("-","")
p=p.replace("-","")
if (isNaN(p)==true){
alert("Check phone");
return false;
}
}
//-->
</script>
전화번호보단 다른 데 응용하시면 좋을 듯..<br>태그인넷 tagin.net<br>
<form name=frmPhone>
<input type=text name=txtphone maxlength="13" onclick="javascript:getIt(this)" >
</form>


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


입력박스 폼안의 숫자 1000단위로 자동 ,콤마 찍어주기

<SCRIPT LANGUAGE="JavaScript">
<!--
function Number_Format(fn){
      var str = fn.value;
      var Re = /[^0-9]/g;
      var ReN = /(-?[0-9]+)([0-9]{3})/;
      str = str.replace(Re,'');             
      while (ReN.test(str)) {
              str = str.replace(ReN, "$1,$2");
              }
      fn.value = str;
}
//-->
</SCRIPT>

<FORM name=fm METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="money" Onkeyup="Number_Format(this)";>
</FORM>


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


특수문자 입력금지

<center>
<form onSubmit="return false;">
<a href="http://tagin.net">특수문자를 입력 할 수 없습니다: (예 !@#$%^&* etc)<br>
<textarea rows=2 cols=20 name=comments onKeypress="if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97)) event.returnValue = false;"></textarea>
<br>
<br>
홋(겹)따옴표를 입력 할 수 없습니다:<br>
<input type=text name=txtEmail onKeypress="if (event.keyCode==34 || event.keyCode==39) event.returnValue = false;">
<br>
<br>
숫자만 입력가능합니다:<br>
<input type=text name=txtPostalCode onKeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;">
</a></form>
</center>
Posted by 1010
61.Linux2009. 1. 30. 11:10
반응형

Chmod는 권한 설정이다.


리눅스에서 ls - l 혹은 ll을 치게 되면, 자세한 정보가 나온다.


맨 앞줄에 보면


d가 붙은것도 있고 안붙은것도 있는데

d가 붙어 있으면 = 디렉토리(폴더) 라고 하며,

-이렇게 되어 있으면 파일 이라고 한다.


d 다음 rwx 라는 것이 있는데


r = read(읽다) [4 ]

w = Write(쓰다)[2 ]

x = x.어쩌고(실행하다) 라는 것이 있다.[1 ]


첫번째는 Root의 권한, 두번재는 그룹, 세번째는 일반사용자이다.


일반적으로 루트의 권한에선


drwx 이렇게 모든 권한을 다 쥐고 있을 수 있다.

drwx-rwx 그룹은 어떻게 정해주느냐에 따라서 --x, -w- r-- 이렇게 한두가지 권한을 줄 수도 있다.

마지막으로 일반 사용자이다


일반 사용자는 오로지 실행권한만 있게 된다.


rwx 세개의 합은 7이라는 것을 명심해야 한다.


만약 chmod 577 이라고 주었다. 그렇다면 읽기 = 4 쓰다  = 2 실행 = 1 이중에 짜짓기 하여 5가 되는 수.

즉 읽기와 실행만이 루트의 권한이고, 나머지는 다 더한 7, 7 그룹 = 7 일반사용자 = 7


하지만 저건 말이 안된다.


루트는 최강이고 관리자다.


그런데 쓰는 권한이 없다면 살짝 안습이겠지?


ㅋㅋㅋ



1) ls 명령어를 침.

2) touch test 로 빈 파일생성

3) chmod 로 권한 설정

4) 권한이 확인된 것을 확인

 

이것이 chmod의 변환 과정이다.


밑의 그림으로 rwx의 변화과정을 잘 살펴보도록하자.

 


- 는 파일을 의미하고 d는 디렉토리를 의미하는 것을 알고 있다면,


위와 같은 변화는 아주 잘 알 것이라고 생각한다.

Posted by 1010
61.Linux2009. 1. 30. 11:07
반응형
리눅스실무명령어바이블 공개페이지 (37장. chmod )
 

37.  chmod

 

* 클릭하시면 실제 내용을 보실수 있습니다. *

 

37장. chmod                   (책 실제페이지 : 200)

 

실무명령어# 37-1절 : 파일과 디렉토리의 퍼미션(permission) 정복하기

실무명령어# 37-2 : 8진수로 파일의 퍼미션 설정하기

실무명령어# 37-3 : 특정 문자로 퍼미션 설정하기

실무명령어# 37-4 : 여러개의 파일과 디렉토리의 퍼미션 동시에 설정하기

실무명령어# 37-5 : 모든파일과 디렉토리의 퍼미션 한번에 설정하기

실무명령어# 37-6 : 특정디렉토리내의 모든파일과 서브디렉토리퍼미션 한번에 설정하기

실무명령어# 37-7 : 특정파일에 SetUID Bit 설정하기

실무명령어# 37-8 : 특정 파일에 SetGID bit설정하기

실무명령어# 37-9 : 특정 디렉토리에 Sticky Bit설정하는 퍼미션 설정하기

 

자료의 저작권은 수퍼유저코리아” (www.superuser.co.kr) 있습니다 .

본자료는 수퍼유저코리아에서 출판한 리눅스 실무명령어 바이블(1편,2편)』의 실제 내용중 일부분으로서 책의 본문내용을 확인하고자하시는 분들의 요청에 의해 요청횟수가 많았던 부분만을 일부 공개한 것입니다.

ㅇ 본 책자의 자세한 모든 정보는 http://www.superuser.co.kr/linuxcommandbible/ 에서 확인하시기 바랍니다. 

ㅇ 본 자료의 수정 및 편집은 허용되지않습니다.

ㅇ 본 책은 권수 : 2권 (1편, 2편), 페이지수 : 총1,859페이지, 장(chapter): 382장, 절: 1,900개의 절로 구성되어있습니다.

ㅇ 저작권 및 문의전화(사무실) : TEL : 051-583-8128, FAX : 051-583-8130

Posted by 1010
01.JAVA/Java2009. 1. 30. 10:50
반응형

정적 쿼리와 동적 쿼리는 저도 이번에 공부하면서 처음 알게된 것인데 (;;)
사실 닷넷 프레임워크 공부할 때 계속 동적 쿼리를 사용한 것 같군요.
하지만 이게 동적 쿼리인지는 몰랐답니다. 컥 ;;

정적 쿼리 방식 : 변수가 바뀔 때마다 새로운 SQL 을 생성 하여 DB쿼리 수행
동적 쿼리 방식 : 변수가 바뀔 때마다 파싱을 하지 않고 변수 바인딩 과정을 통해 DB 쿼리 수행

insert into person values (null, '홍길동', '888888-1111111', '2002-02-02');
이것이 정적 쿼리입니다.

insert into person values (null, ?, ?, ?);
쿼리문을 이런 식으로 해놓고 ? 부분을 변수 바인딩을 통해 입력받는 것을 동적 쿼리라고 합니다.

정적 쿼리와 동적 쿼리는 각각 장단점이 있습니다.

동적 쿼리문을 사용한 간단한 예제를 보겠습니다.

  1. import java.sql.*;  
  2. import java.util.*;  
  3.  
  4. public class Exam_04  
  5. {  
  6.     public static void main(String[] ar)  
  7.     {  
  8.         try 
  9.         {  
  10.             Class.forName("com.mysql.jdbc.Driver");  
  11.         }  
  12.         catch( ClassNotFoundException e ) {}  
  13.           
  14.         Connection conn = null;  
  15.         Statement stmt = null;  
  16.         PreparedStatement pstmt = null;  
  17.         ResultSet rs = null;      
  18.           
  19.         String name = "fff";  
  20.         String jumin = "555555-5555555";  
  21.         String birth = "2003-06-15";  
  22.           
  23.         String query = "insert into person values (null, ?, ?, now())";  
  24.           
  25.         try 
  26.         {  
  27.             conn = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "abc123");  
  28.             //stmt = conn.createStatement();              
  29.             //stmt.executeUpdate(query);  
  30.             //stmt.close();  
  31.             pstmt = conn.prepareStatement(query);  
  32.             pstmt.setString(1, name);  
  33.             pstmt.setString(2, jumin);  
  34.             pstmt.executeUpdate();  
  35.             conn.close();  
  36.             System.out.println("업데이트 성공");  
  37.         }  
  38.         catch( SQLException e )  
  39.         {  
  40.             System.err.println("error = " + e);  
  41.         }  
  42.     }  
  43. }  
사용자 삽입 이미지
Posted by 1010
61.Linux2009. 1. 30. 10:40
반응형

   퍼미션(권한)이란?

Owner

Group

Other

Owner와 Group은 파일소유자자신과 자신이 속한그룹. Other은 제3자, 웹사이트 방문객은 제3자로 nobody로 취급.

r

w

x

r

w

x

r

w

x

r은 파일 읽기(4), w는 파일 쓰기(2), x는 파일 실행(1)

7

5

5

파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제3자는 읽고 실행만 시킬 수 있다.

7

7

7

제3자도 쓰기 권한이 주어진다.

*.html  *.cgi, *.pl *.txt등의 파일은 업로드시 반드시 ascii로 하고 나머지 그림(*.gif *.jpg)이나 자바 애플릿(*.class), 실행파일(*.exe *.zip *.rar)등은 binary mode로 업로드 할 것.

   리눅스 기본명령어

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념  설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다. 

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
    (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l  : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t  : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al  
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin     : 하부 디렉토리인 cgi-bin으로 들어감.
# cd  ..             : 상위디렉토리로 이동
# cd 또는 cd ~  : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker     : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
                          아닌 다른 디렉토리(webker)로 이동하려면 /로
                          시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
     : index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.*  .
     : test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
     : index.htm 화일을 index.html 로 이름 변경

$ mv file  ../main/new_file
     : 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download  : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
     : a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put  guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get  guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x   guestbookt.html
rwx  :처음 3개 문자 = 사용자 자신의 사용 권한
r-x  :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x  :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666  guestbook.html
     : test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766  guestbook.html
     : 자신은 모든 권한을 그룹사용자와,전체사용자에게는
       읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile :  vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile  : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename         : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename     : n줄 만큼 아래에서부터 보여줌


   압축명령어 사용법

압축 명령어

사 용 법

tar .tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

# tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리): 묶을때
# tar xvf [파일명(.tar, _tar)]  :  풀 때
   (cf) cvfp/xvfp 로 하면 퍼미션 부동
compress 확장자 .Z 형태의 압축파일 생성

# compress    [파일명]     : 압축시
# uncompress [파일명]    : 해제시
gzip 확장자 .gz, .z 형태의 압축파일 생성

#  gzip     [파일명]    : 압축시
#  gzip -d [파일명]   : 해제시
기타 .tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
# zcat  [파일명].tar.Z  : 해제시

.tar.gz또는 .tar.z
# gzip -cd [파일명]    : 해제시

.tar.gz 또는 .tar.z .tgz
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나,
하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.

# gzip -cd 파일.tar.gz | tar xvf -  또는
# tar xvzf 파일.tar.gz
# tar xvzf 파일.tgz

   리눅스 필수명령어

Linux/Unix 명령어

설 명

MS-DOS 비교

./x

x 프로그램 실행
(현재 디렉토리에 있는 것)

x

/

이전에(↑) / 다음에(↓) 입력했던 명령어

doskey

cd x (또는 cd /x)

디렉토리 X로 가기

cd

cd .. (또는 cd ../ 또는 cd /..)

한 디렉토리 위로 가기

cd..

x 다음 [tab] [tab]

x 로 시작하는 모든 명령어 보기

-

adduser

시스템에 사용자 추가

/

ls (또는 dir)

디렉토리 내부 보여주기

dir

cat

터미널 상의 텍스트 파일 보기

type

mv x y

파일 x를 파일 y로 바꾸거나 옮기기

move

cp x y

파일 x를 파일 y로 복사하기

copy

rm x

파일 지우기

del

mkdir x

디렉토리 만들기

md

rmdir x

디렉토리 지우기

rd

rm -r x

디렉토리 x를 지우고 하위도 다 지우기

deltree

rm p

패키지 지우기

-

df (또는 df x)

장치 x의 남은 공간 보여주기

chkdsk ?

top

메모리 상태 보여주기(q는 종료)

mem

man x

명령어 x에 관한 매뉴얼 페이지 얻기

/

less x

 텍스트 파일 x 보기
(리눅스에서는 더 많은 필터 적용 가능)

type x | more

echo

어떤 것을  echo 화면에 인쇄한다.

echo

mc

UNIX를 위한 노턴 커맨더

nc

mount

장치 연결(예: CD-ROM, 연결을 해제하려면 umount)

-

halt

시스템 종료

-

reboot ([ctrl] + [alt] +[del])

시스템  다시 시작하기

[ctrl] + [del] + [del]

    고급명령어

 고급 명령어

 

chmod <권한> <파일>

파일 권한(permissions) 변경

ls -l x

파일 x의 자세한 상황을 보여줌

ln -s x y

 x에서 y로 심볼릭 링크를 만들어 줌

find x -name y -print

디렉토리 x안에서 파일 y를 찾아서 화면에 그 결과를 보여줌

ps

지금 작동중인 모든 프로세스들을 보여줌

kill x

 프로세스 x를 종료 (x는 ps 명령으로 알 게 된 PID)

[alt] + F1 - F7

 터미널 1-7까지 바꾸기 (텍스트 터미널에서; F7은 X-윈도우(시작될때))

lilo

 부트 디스크를 만듦

 

용어


symlink

다른 파일이나 디렉토리로 심볼릭 링크. 윈도유98의 바로가기 같은 것

shell script

여러 명령어들을 차례로 수행하게 한 것. MS-DOS의 배치 파일 같은 것

     팁!!

 - 웹에서 생성한 노바디파일 삭제 하는방법..

기본적으로 웹서버는 nobody 권한으로 동작이 되게 됩니다.
고객님께서 FTP 로 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드 한 경우나 웹상에서 생성된 파일의 경우 삭제가 되지 않는 경우가 있을 수 있습니다.

웹서버의 동작 권한은 nobody 이고 웹상에서 생성된 파일이므로 해당 파일이 nobody 소유권으로 시스템에 생성이 되게 됩니다.

아래와 같이 웹상에서 실행시키면 됩니다.

1. 메모장을 열어 아래 소스를 붙여넣기 하신후..

<?

//폴더/파일 삭제시

$cmd = `rm -rf 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "폴더가 삭제 되었습니다.";

?>

-- 위에까지..
-- **위에서 수정할 사항은 "노버디로된파일혹은폴더명"을 삭제하시고자 하는 파일명으로 바꿔주세요..

2. 파일 -> 다른이름으로저장 -> 아래 탭에서 파일형식을 "모든파일"로 선택후

   -> "원하는파일명.php" 로 저장 (ex: del.php)

3. ftp를 통해 고객계정에 파일업로드를 하시고 웹에서 파일을 불러주시면 됩니다

   ex: html폴더안에/temp 안에 삭제하고자하는 파일이 있을경우 / html폴더/temp안에 del.php를 업로드하고..

       브라우저에서 http://고객도메인/temp/del.php 를 하면 됩니다

4. 실행하시면 삭제되고 nobody 권한의 폴더만 남습니다.(폴더안의화일들만 지워짐)

   그후 ftp 접속후 폴더를 삭제하시면 됩니다.

ex)

<?

퍼미션 변경시

$cmd = `chmod -R 777 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "퍼미션 변경되었습니다.";

?>

Posted by 1010
98..Etc/Etc...2009. 1. 29. 17:29
반응형

내가 가진 도메인을 이용하여 독립적인 이 메일주소를 만들어 보자.

포털에 등록하여 사용하는 개성없고 똑같은 이메일 주소보다 내 개성이 물씬 풍기는 partner@, my@, ceo@ 등과 같은 메일주소는 좀더 '있어' 보이지 않는가? -_-

사실 자기 도메인으로 만들어진 고유한 이메일 주소를 갖는 건 모든 네티즌의 꿈이다. 물론 간단히 가질 수도 있다. 유료 이메일 서비스를 이용하면 된다. 그러나 우리가 원하는 것은 돈 들이지 않고 이용하는 것이다.

이제 돈 걱정 하지 않고도 자신만의 독특한 이메일 주소를 공짜로 가질 수 있게 되었다. 구글이 제공하는 어플리케이션 중에서 이메일 기능을 이용하면, 무료이면서도 웬만한 유료 웹메일보다 더 강력한 이메일 서비스를 구축할 수 있다. (다른 기능도 공짜인 게 많다. 알아서 사용하시길.. ^^)

다음은 구글 어플리케이션의 메일 기능이 갖는 장점이다. 

- 완전 무료다.
- 웹메일이라 사용이 쉽다.
- 메일 footer에 쓸데없는 꼬리표가 붙지 않는다.
   공짜 메일에 덕지덕지 붙는 꼬리표 없이 깨끗한 이메일을 보낼 수 있다.
- 구글이 제공하는 gmail 과 동일한 기능과 성능을 보여준다.


이제 이 공짜 이메일을 사용해보도록 하자. 

참고로, 이 글은 '완전초보'를 위한 설명임을 밝혀둔다. '파워유저' 분들은 패스~해주시길. ^^
이 글에서는 편의상 exmydo.com 이라는 도메인을 사용하여 설명을 하겠다.


1. 구글 어플리케이션 홈페이지에 접속하여 가입절차를 진행한다

1-1. 접속주소 : https://www.google.com/a/
1-2. 오른쪽 상단에 있는 [버전 비교 및 가입] 을 누른다

뉴스로그


1-3. 무료로 사용할 것이므로 표준형 [가입하기]를 클릭한다.

1-4. 도메인 이름 선택 (3단계 중 1단계)

사용할 도메인을 입력하고 [내 도메인 사용]을 선택한다

뉴스로그


정상적인 소유 도메인이면 다음 단계로 진행되지만, 미등록 도메인이면 도메인 등록가능 페이지를 보여주고, 이미 신청된 다른 사람 소유의 도메인이라면 에러 메세지를 보여준다.

1-5. Google 표준형 애플리케이션에 가입하십시오. (3단계 중 2단계)

정보란에 적당한 내용들을 입력한다

이메일 주소는 현재 정상적으로 사용하는 메일주소를 적는다.
혹시 계정을 분실하거나 했을 때 확인 가능한 비상용이라 보면 된다.

뉴스로그


1-6. 설정 - 첫 관리자 계정을 만드십시오. (3단계 중 3단계)

접속시 관리자로 설정할 메일주소를 결정한다.
예를 들어 my@exmydo.com 을 exmydo.com 의 관리 계정으로 사용한다면 my 라고 입력한다.

뉴스로그


아래의 동의 버튼을 누른다.

1-7. 가입 마무리




자동 접속되면서 해당 도메인의 소유권 검증과 각 서비스 설정 화면이 나타난다.
메일 뿐만 아니라 웹페이지, 캘린더, 오피스 등 여러가지 무료 서비스를 함께 사용할 수 있다.

도메인의 소유권증명 절차를 진행한다.

뉴스로그



2. 도메인 소유권 증명 및 네임서버 변경

2-1. 도메인의 소유권 증명

위의 1-7. 에서 계속 진행한다. 혹시 창을 모두 닫아 버렸다면 다시 접속한다.

https://www.google.com/a/cpanel/exmydo.com/Dashboard 

혹시 접속이 안되는 경우  
https://www.google.com/a/exmydo.com/ 으로 접속하면 로그인 페이지가 나온다. 

앞서 관리자로 가입했던 계정으로 접속

해당 도메인의 관리 페이지가 나타난다. 

네임서버를 직접 관리하거나 관리자가 있거나 하는 경우 아래의 방법을 이용한다. 

뉴스로그


도메인 소유권을 확인하십시오 를 누른다.

뉴스로그


여기서는 도메인이 실제 본인의 소유(또는 본인이 도메인의 정보 수정 권한이 있다)라는 것을 증명해야 한다.
확인 방법은 두가지가 있다.


2-1-1. HTML 파일 업로드로 소유권 증명하기

뉴스로그

화면에 보이는 파일명으로 파일을 만들어서 그 아래 지정된 텍스트를 이 문서의 가장 위에 입력한 다음, 이파일을 해당 도메인의 디렉토리에 업로드한다. (파일명, 텍스트 등은 위의 예와 다를수 있다.)

위의 방법은 웹사이트을 운영하고 있는 경우 편리하게 확인할 수 있는 방법이다. 정리하면,

- 파일을 생성한다. googlehostedservice.html
- 파일을 메모장 등으로 열어 제일 위에 한줄 추가 google8ffca4c5464de85f
- 저장한 다음 이 파일을 exmydo.com 의 사이트 첫페이지가 열리는 곳(index 문서가 존재하는곳)에 업로드
- [확인] 을 누른다.

뉴스로그

 
위와 같이 텍스트로만 된 문서를 만들어서 업로드 한다.


2-1-2. CNAME 레코드 변경을 통한 확인 방법

뉴스로그


이 방법은 화면에 나타나는 고유문자로 된 접속 레코드를 zone 파일 설정에 추가 하는 방식이다.

- 해당 도메인의 DNS 설정하는 zone파일에 아래의 내용을 추가 합니다.
   google8ffca4c5464de85f . exmydo.com
   예를 들면
   google8ffca4c5464de85f.exmydo.com. IN CNAME google.com.

- 편리한 접속을 위해 아래의 내용도 추가해 준다.
   (mail.exmydo.com 으로 접속가능하게 된다)
   mail  IN  CNAME  ghs.google.com.
- 네임서버를 재시작 한다.
- [확인]을 누른다.

위의 둘 중 하나를 지정한 후 아래의 [확인]을 누르면 구글에서 자동으로 확인을 하며,
즉시 확인 되지 않는 경우에는 48시간 정도가 걸린다는 메세지가 나타난다.


2-2. 무료 DNS 관리 서비스를 이용한 손쉬운 네임서버 변경 및 수정, 소유권 증명하기

이 방법은 네임서버를 보유하고 있거나 시스템에 대해서 잘 알거나 관리자가 있거나 하는 경우에 사용한다. 만일 이같은 조건에 부합하지 않다면, 무료로 DNS 관리 서비스를 제공하는 곳을 이용하여 몇가지 조치를 해주어도 동일한 효과를 얻을 수 있다.

웹호스팅을 받고 있는 경우라면, 해당 호스팅 회사에 dns 를 수정해 달라고 요청하면 된다.
호스팅업체에 특별히 미움을 받거나 한 경우가 아니라면 필요한 부분을 수정해줄 것이다. ^^


2-2-1. [참고] 무료 DNS 서비스 가입하기

아래 사이트에 가입하면 무료 DNS 서비스를 이용할 수 있다.
(당연히 나와는 아무런 관련 없는 사이트다).  
http://kr.dnsever.com/ 

이곳 말고도 무료 DNS 서비스를 제공하는 업체는 더 있다. 꼭 이곳이 아니어도 된다.
이곳의 사용법은 해당 사이트에서 살펴 보시고 여기서는 필요한 부분만 간단히 설명한다.

- 가입하신후 도메인을 추가 한다. exmydo.com 을 추가
- 도메인의 네임서버를 dnsever 에서 요구하는 것으로 먼저 변경
- 메일서버(MX) 관리 메뉴에서 메일서버를 추가
- 고급기능 메뉴에서 도메인별명(CNAME) 관리에서 위의 CNAME 레코드 변경 등의
   수정이 가능하다.
   (자세한 내용은 2-3-3 참조)



2-3. 메일서버 지정

도메인소유권 증명이 끝나면 메일을 정상적으로 사용하기 위해 메일서버를 설정해야 한다.
위의 작업들과 중복되는 게 있으므로, 네임서버 수정 등을 할 때 아래 작업까지 한꺼번에 처리하면 편리할 것이다. 메일서버 설정 작업은 도메인소유권 증명이 완료되는 것과는 상관없이 미리 처리해 두는 것이 좋다.

- 다시 서비스 설정메뉴로 접속 (위의 2-1. 참고)

뉴스로그


- 이메일 항목에서 [이메일 활성화]를 누른다.

메일서버를 어떻게 지정하여야 하는지에 대한 자세한 설명이 나타난다.
이미 서버관리자 또는 이에 대한 이해가 가능한 경우에는 이때 나오는 설명을 참고하여 처리하면 된다.
아래는 이에 대한 필요한 부분만을 단순히 정리하여 열거한 것이다.

2-3-1. zone 파일을 직접 수정할수 있다면 아래 처럼 수정한다.
(위에서 가입한 dnsever.com 을 이용하려면 아래 2-3-2 를 참고 한다)

뉴스로그


예컨대, zone 파일에 아래와 같이 내용을 추가한다.

exmydo.com. IN MX 1 ASPMX.L.GOOGLE.COM.
exmydo.com. IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
exmydo.com. IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
exmydo.com. IN MX 10 ASPMX2.GOOGLEMAIL.COM.
exmydo.com. IN MX 10 ASPMX3.GOOGLEMAIL.COM.
exmydo.com. IN MX 10 ASPMX4.GOOGLEMAIL.COM.
exmydo.com. IN MX 10 ASPMX5.GOOGLEMAIL.COM.

뉴스로그



2-3-2. 위에서 소개한 dnsever.com 을 이용하는 경우 아래와 같이 조치하면 된다.

- dnsever.com 에 접속한다.
- 해당 도메인을 선택한다(아직 추가하지 않았다면 사용할 도메인을 추가한다).
- 메일서버(MX)관리 메뉴에 접속
- [도메인(또는 호스트이름)] 항목은 그대로 두고 [메일서버] 와 [우선순위]에 아래와
같이 차례로 추가한다.

뉴스로그


그러면 아래와 같은 방식이 된다.

뉴스로그


이상을 마치면 보통 늦어도 하루 정도가 지나면 정상적으로 적용된다.


2-3-3. dnsever 에서 CNAME 레코드 추가

- dnsever.com 에 접속한다.
- 해당 도메인을 선택한다.(아직 추가 안했다면 사용할 도메인을 추가한다)
- 고급기능 메뉴에서 도메인별명(CNAME)관리 선택
- 도메인 소유권 확인을 위해
   [도메인별명]에 google8ffca4c5464de85f 입력후
   실제도메인은 [직접입력] 선택.
   별명(CNAME)추가.
   도메인은 google.com 입력
- 메일서버 편리한 접속을 위해
   [도메인별명]에 mail 입력후 
   실제도메인은 [직접입력] 선택.
   별명(CNAME)추가.
   도메인은 ghs.google.com 입력

뉴스로그



모든 설정이 마무리 되었다.
여기까지 정상적으로 진행했다면 이제 멋지게 이메일을 사용하는 일만 남았다.


3. 구글 메일 사용하기

이상과 같이 지정된 경우 mail.exmydo.com 으로 접속 가능하다.
아니면 www.google.com/a/exmydo.com 으로 접속 한다.

관리계정을 입력하고 접속 한다. 처음 만든 계정이 관리 계정으로 설정되어 있다.
메일은 계정 생성 후 즉시 발송이 가능하다.
수신은 메일 계정이 활성화된 후(zone 파일 수정이 적용된 후) 가능하다.
* 수신과 발송 기능을 반드시 테스트해 보시기 바란다.

모든 서비스가 정상이 되면 [운영중] 이라는 메세지가 나타난다.


사용자 삽입 이미지




위와 같은 화면이 나타났는가? 그렇다면 성공한 것이다.

인터넷 즐겁게 사용하시고,
가.끔.씩.(빵상 아줌마 버전으로 읽어주세요~ ^^) 뉴스로그에도 들러주시길.. ^^  



P.S. 이상을 성공적으로 수행한 유저라면
캘린더, 오피스를 비롯한 구글의 다른 어플리케이션들도 한번씩 관심을 가져봄직하겠다.


Posted by 1010
05.JSP2009. 1. 29. 17:01
반응형
  웹개발언어>>JSP



  웹개발언어>>JSP>>Mail관련

      JavaMail 설치
      JavaMail 메일링 리스트
      JavaMail 기본 설치
      JavaMail 기본설치 -사용예제
      JavaMail 파일첨부메일


  웹개발언어>>JSP>>기타

      Jakarta 프로젝트의 Regexp(정규식) 패키지 사용하기
      J2EE(Java 2 Enterprise Edition)환경 소개
      오라이온 서버(Orion Server)설치 및 J2EE 애플리케이션의 배치
      CVS 사용
      XT를 이용한 XML/XSL 사용
      jsp에서 log()이용하기
      JspSmartUpload 설치
      JspSmartUpload FAQ
      Servlet 한글출력
      package 선언된 java 컴파일하기
      동적이미지 생성
      리눅스와 JAVA


  웹개발언어>>JSP>>Beans

      Beans 사용하여 회원제 사이트를 만들자
      JSP에서 Beans 사용하기
      useBean
      session bean
      beans 활용
      bean 한글처리


  웹개발언어>>JSP>>기본강좌

      클래스변수와 환경변수
      자바 기반의 웹 개발, Servlet과 JSP
      JSP 맛보기
      웹인증(Form study)
      jsp 에러잡기
      File Upload
      한글처리
      include 집중분석
      jsp tag library기초강좌


  웹개발언어>>JSP>>DB관련

      JDBC를 익히자
      Database 접속을 Pool로 관리하자
      JNDI로 jdbc 사용하기
      Mysql 설치
      MySQL 인증설정
      MySQL 테이블 생성
      MySQL 자료입력
      MySQL 자료조회
      MS Access ODBC연결
      procedure 사용하기
      CallableStatement 사용하기
Posted by 1010
98..Etc/PHP2009. 1. 29. 16:54
반응형
Posted by 1010
61.Linux2009. 1. 29. 16:44
반응형

콘솔에서 구현되고 Single Game와 Network Game를 지원하는 ttetris게임을 아래와 같이 다운로드 후 압축을 풀고 Configure 후 make 와 make install 을 하여 설치해 보자.

설치 스크립트

cd /usr/local

wget http://firewolf.co.kr/download/linux/PUB/ttetris-0.1.4.tar.gz

tar xvfpz ttetris-0.1.4.tar.gz

cd ttetris-0.1.4

./configure

make && make install

앞축을 풀고 확인하는 것까지의 테스트 한 것을 캡쳐 한 것이다.



위의 이미지처럼 ttetris-0.1.4 디렉토리가 생겨져 있는지 확인한다.

다음으로 ttetris-0.1.4 안으로 이동하여 ls 를 하여보자.

아래 이미지처럼 컴파일 할 수 있도록 내용이 보일것이다.

위와같이 cd /ttetris-0.1.4 라고 하여 이동한 다음 옵션없이 그냥 ./configure 해주면 컨피귤러가 끝난다.

마지막으로 make 와 make install 하면 설치가 끝나며 미리 해본결고

금방끝나므로 연결하여 두 명령어를 같이 실행한다.

make && make install 이라고 하면된다. 아래의 이미지를 참고한다.

위와같이 실행되어 설치가 완료되면 마지막 라인에서 ttetris 라고 입력하고 실행하면 게임의 첫 화면이 나온다.
(엄밀히 말하면 첫 텍스트들이 나오는 것이지만 ^^).

첫화면은 아래와 같다.

위의 화면같이 나왔다면 설치는 모두 잘 끝났고 게임의 첫화면인 메뉴화면을 보고있는 것이다.

여기서 간단하게 키 조작법을 알아보면 다음과 같다.

우선 테스트를 위해 1번 메뉴인 single모드로 들어가면 다음과같은 메뉴들이 나온다.

[Single Game]

1) Start New Game

2) High Score

3) Back

Select the Number(1-3) : 1


다시 1번을 누르면
Input Your Start Level(Default: 1):
시작 레벨을 입력하라는 메세지가 나오며 기본은 1부터 시작한다.

Enter키를 치면 게임이 시작된다.

[게임 실행시 시작화면]



여기서의 조작키는 5개이고 방향키로 좌우를 움직이고 아래쪽 화살표 방향키는 속도를 빠르게하여 블록을 내린다. 많이 해봐서 알겠지만 스페이스키는 바로 최고 아래까지 블록을 내룬다.

게임방법은 해당레벨의 점수까지 블럭을 가로롤 일직선으로 만들면 그 라인이 없어지면서 점수가 올라간다.
만약 블록을 잘못 쌓아서 제일 윗단까지 쌓이면 게임이 종료 된다.

종료되면 다음과 같은 글들이 나옵니다.

[New Record]

Enter Your Name(Max 12 Characters): test02

You Entered "test02". OK?(y/n): y

[High Score]

No. Score Level Name

1 800 1 test02

2 0 0 No Name

3 0 0 No Name

4 0 0 No Name

5 0 0 No Name

6 0 0 No Name

7 0 0 No Name

8 0 0 No Name

9 0 0 No Name

10 0 0 No Name


Press Any Key...


이버전에서는 약간의 버그도 찾아냈는데 터미널에서 접속하여 게임을 할때 도중에 창 사이즈를 줄인후에
블럭을 좌.우로 움직이면 블럭의 모양이 변하는 것을 보았다. 하지만 콘솔에서 간단히 설치하여 해볼수 있다는 점에서 한번은 해 볼만하다.

다음에는 X상에서하는 게임을 소개하도록 하겠다.


 
Posted by 1010
01.JAVA/Java2009. 1. 29. 15:56
반응형
자바로 0에서 100까지 숫자의 팩토리얼 값을 구하는 소스입니다.

작은 숫자라도 팩토리얼 값을 구하면 어마어마한 숫자가 나오기 때문에, 자바의 long 형 즉 64비트 정수로는 팩토리얼 값을 제대로 담을 수가 없습니다.

그래서 사실상 무한대의 정수를 저장할 수 있는 BigInteger 를 사용합니다.


팩토리얼 값 얻기 예제: factorial Method Example


소스 파일명: Foo.java
import java.math.BigInteger;

public class Foo {
  public static void main(String[] args) {

    for (int i = 0; i <= 100; i++)
      System.out.format("%3d! = %d%n", i, factorial(i));

  }




  public static BigInteger factorial(int n) {
    BigInteger fac = BigInteger.ONE;

    for (int i = 1; i <= n; i++)
      fac = fac.multiply(BigInteger.valueOf(i));

    return fac;
  }


}


factorial()이라는 메소드(함수)에서 팩토리얼을 계산하여 반환합니다.


BigInteger.ONE 은 1이라는 뜻입니다.

multiply 는 곱하기라는 뜻이고,

BigInteger.valueOf(i) 이것은, int(32비트 정수)인 i의 값을 BigInteger 로 변환하는 것입니다.



컴파일 및 실행 결과 화면:
(숫자가 너무 커서 일부만 실었습니다.)
D:\Z>javac Foo.java && java Foo
  0! = 1
  1! = 1
  2! = 2
  3! = 6
  4! = 24
  5! = 120
  6! = 720
  7! = 5040
  8! = 40320
  9! = 362880
 10! = 3628800
 11! = 39916800
 12! = 479001600
 13! = 6227020800
 14! = 87178291200
 15! = 1307674368000
 16! = 20922789888000
 17! = 355687428096000
 18! = 6402373705728000
 19! = 121645100408832000
 20! = 2432902008176640000
...
이하 별첨


위와 같이 나옵니다. (0! 은 1 로 간주됨)

출력 결과에는 100까지 나오지만 숫자가 너무 크기에 모두 표현하기 힘듭니다. 다음 게시물에 100까지의 모든 결과가 있습니다: ▶▶ 수학] 팩토리얼 계산 표; Factorial Table 1~100 (0에서 100)까지 계승(階乘)



▶▶ 팩토리얼 구하기(Factorial) 프로그램 소스, 팩토리얼(계승)이란? [수학



BigInteger 로 거대 정수 사칙연산하는 법: ▶▶ Java/자바] 거대 무한 정수 사칙연산, BigInteger 클래스 사용 법; Big Int Plus Minus

자바 강좌와 각종 예제
Posted by 1010
61.Linux2009. 1. 29. 13:57
반응형
# /etc/rc.d/init.d/vsftpd restart
Posted by 1010
56. Eclipse Etc.../Eclipse2009. 1. 29. 13:36
반응형


Workspace in use or cannot be created, choose a different one. 이라는 메시지가 나타나면서, 이클립스에서는 다른 workspace를 선택하라는 화면이 나온다.

이 경우에는 평소에 사용하는 workspace를 변경해야만 이클립스가 기동되는데, 대부분의 개발자분들이 그런 짓(?)을 하기는 싫을 것이다.


가장 쉬운 해결책
윈도우 작업 관리자를 열어서 eclipse.exe 프로세스를 죽인다.


두번째 해결책
자기가 정해놓은 workspace 디렉토리로 이동해서, .metadata 라는 디렉토리에 있는 .lock 파일을 지운다.


둘중 한 방법을 사용하면 정상적으로 이클립스가 기동된다.

Posted by 1010
98..Etc/Tomcat2009. 1. 29. 13:13
반응형
ache Load balancing && Terracotta Sessions Clustering


Apache 2.2.11 + (proxy_ajp, proxy_balancer) + Tomcat 5.5.27 + Terracotta 2.7.2

어제 오늘 열라 삽질한 결과물 입니다.

상용와스 사용하며 개발만 하다보니...

아파치 톰켓 제대로 세팅할 일도 없었고...

Load balancing 할 일은 더욱이 없었고..

Sessions Clustering 할 일은 더더욱 없었는데...


이번에 고객이 와스를 구입 하지 않는 데다..

사이트 두개의 세션을 공유시켜 달라고 해서...

이참에 한 번 세팅해보자 해서.. 시도해봤습니다...


짧은 실력에 더 짧은 영어 실력까지 함께하다 보니...

삽질의 연속.. -_-;;


삽질 해서 돌아가게는 했는데...

저도 이해하고 한게 아니라서... 뭐라 설명 드리긴 뭐 하구요...

혹시 필요하신 분들 있으실까봐...

올려 봅니다...

나~ 중에 어느분이 더 나은 세팅법을 공유해 주시길 바라며.. 이만.. ^^;;



=========================== 설치파일 ===========================
jdk-1_5_0_17-windows-i586-p.exe
apache_2.2.11-win32-x86-no_ssl.msi
apache-tomcat-5.5.27.zip
terracotta-generic-2.7.2.tar.gz



=========================== 설치 디렉토리 ===========================
C:\Program Files\Java\jdk1.5.0_17
D:\test\Apache2.2
D:\test\apache-tomcat-5.5.27
D:\test\terracotta-2.7.2



=========================== System Path 설정 ===========================
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_17
TC_INSTALL_DIR=D:\test\terracotta-2.7.2
CATALINA_HOME=D:\test\apache-tomcat-5.5.27



=========================== 호스트파일에 추가 ===========================
C:\WINDOWS\system32\drivers\etc\hosts

127.0.0.1   server1.example.com
127.0.0.1   server2.example.com



=========================== 아파치 설정 ===========================
D:\test\Apache2.2\conf\httpd.conf

# LoadModule -- 주석을 푼다.
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule rewrite_module modules/mod_rewrite.so

# Virtual hosts -- 주석을 푼다.
    Include conf/extra/httpd-vhosts.conf


=========================== 아파치 가상호스트 설정 ===========================
D:\test\Apache2.2\conf\extra\httpd-vhosts.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin server1@example.com

    ServerName server1.example.com
    ServerAlias server2.example.com

    ErrorLog "logs/server1.example.com-error.log"
    CustomLog "logs/server1.example.com-access.log" common

    DocumentRoot "D:/test/sample/WebContent"

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Location /*>
        ProxyPass balancer://tomcat_cluster stickysession=JSESSIONID
    </Location>

    ## mod_proxy_balancer
    ## 필요한 만큼 BalancerMember를 추가하면 자동으로 분산 요청
    ## 아래 주소는 단지 예시일 뿐
    ##
    <Proxy balancer://tomcat_cluster>
        BalancerMember ajp://127.0.0.1:9071 route=tomcat1 loadfactor=50
        BalancerMember ajp://127.0.0.1:9072 route=tomcat2 loadfactor=50
    </Proxy>

    <Directory "D:/test/sample/WebContent">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all

        ## jsp 파일도 index 파일로 추가
        ##
        DirectoryIndex index.html index.jsp

        ## Rewrite를 이용해서 jsp 파일을 proxy_ajp로 Tomcat으로 넘기기
        ##
        RewriteEngine On
        RewriteCond %{REQUEST_URI} /servlet* [OR]
        RewriteCond %{REQUEST_FILENAME} .jsp
        RewriteRule (.*) balancer://tomcat_cluster/$1 [P]
    </Directory>

</VirtualHost>



=========================== 테라코타 설정파일 수정 ===========================

D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5\tc-config.xml

server host 에 테라코타 서버가 설치된 아이피 입력

...
  <servers>
    <server host="127.0.0.1" name="sample">
      <data>data/server-data</data>
      <logs>logs/server-logs</logs>
    </server>
    <update-check>
      <enabled>true</enabled>
    </update-check>
  </servers>
...

...
      <web-applications>
        <web-application>ROOT</web-application>
        <!--
        <web-application>Cart</web-application>
        <web-application>DepartmentTaskList</web-application>
        <web-application>Townsend</web-application>
        -->
      </web-applications>

...


D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5\start.bat

세션을 공유할 도메인 입력(server1.example.com 과 server2.example.com 이 세션을 공유해야 하는 경우에만 필요함)

...
set OPTS=%TC_JAVA_OPTS% -Dwebserver.log.name=tomcat-%1
set OPTS=%OPTS% -Dcom.sun.management.jmxremote
set OPTS=%OPTS% -Dproject.name=Configurator
set OPTS=%OPTS% -Dcom.tc.session.cookie.domain=.example.com
set JAVA_OPTS=%OPTS% %JAVA_OPTS%
...


=========================== 톰켓 server.xml 수정 ===========================

D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5\9081\conf\server.xml

<Server port="9051" shutdown="SHUTDOWN">
  <Service name="Catalina">

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="9081" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="9071"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/" reloadable="true" docBase="D:\test\sample\WebContent" workDir="work" />
      </Host>
    </Engine>
  </Service>
</Server>


D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5\9082\conf\server.xml

<Server port="9052" shutdown="SHUTDOWN">
  <Service name="Catalina">

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="9082" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="9072"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/" reloadable="true" docBase="D:\test\sample\WebContent" workDir="work" />
      </Host>
    </Engine>
  </Service>
</Server>


=========================== 셈플소스 복사 ===========================

D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5\9081\webapps\Cart

하위의 소스를 아래 디렉토리로 복사

D:\test\sample\WebContent


=========================== 테라코타 서버 실행 ===========================
D:\test\terracotta-2.7.2\bin>start-tc-server.bat

=========================== 아파치 서버 실행 ===========================
Apache Service Monitor [start] 버튼 클릭

=========================== 톰켓 서버(테라코타 클라이언트) 실행 ===========================
D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5>start.bat 9081
D:\test\terracotta-2.7.2\tools\sessions\configurator-sandbox\tomcat5.5>start.bat 9082


=========================== 잘 돌아가는가 확인 ===========================
http://server1.example.com/carts.jsp
http://server2.example.com/carts.jsp


=========================== 끝!!! ===========================



참고 사이트들....


http://www.javaservice.net/~java/bbs/read.cgi?m=&b=qna2&c=r_p&n=1224247277&p=7&s=d

http://okjsp.pe.kr/seq/127429

http://www.ibm.com/developerworks/kr/library/opendw/20071231/

http://www.terracotta.org/web/display/orgsite/Tomcat+Integration#TomcatIntegration-SessionContinuityAcrossServers

http://www.terracotta.org/web/display/orgsite/Sessions+Quick+Start#SessionsQuickStart-UnclusteredWebApplications


http://judy98.tistory.com/116

http://wiki.kldp.org/wiki.php/Apache2Tomcat5Howto2

http://openframework.or.kr/Wiki.jsp?page=Apache_tomcat_using_modproxy_on_windows#section-Apache_tomcat_using_modproxy_on_windows-_EB_AA_A8_EB_93_88_ED_99_95_EC_9D_B8

http://www.okjsp.pe.kr/seq/130244

http://www-128.ibm.com/developerworks/kr/library/opendw/20061017/#main

http://www.javamania.pe.kr/zbxe/?sort_index=voted_count&order_type=desc&mid=qna&comment_srl=4920&listStyle=webzine&document_srl=2895

http://sakuragis.egloos.com/4590029

http://hmjkor.tistory.com/tag/Apache2

http://theeye.pe.kr/entry/Proxt-AJP-mod_rewrite%B8%A6-%C0%CC%BF%EB%C7%CF%BF%A9-Apache-22-Tomcat-%BF%CF%BA%AE-%BF%AC%B5%BF%C7%CF%B1%E2

http://www.superuser.co.kr/home/edu/offline/gnu3/?doc=bbs/gnuboard.php&bo_table=review_sw&mode=body&page=1&wr_id=33&mode=body

http://leadingkorea.kr/62

http://forcemax.tistory.com/69

외 다수~~~~~~~~

Posted by 1010
반응형

DIV에 스크롤바 나타내기

overflow-x                     x축(가로)

overflow-y                     y축(세로)

overflow:visible             레이어 크기를 키워서 보여준다 (* 디폴트)

overflow:hidden             레이어 크기만큼만 보여준다

overflow:auto                내용에 따라 자동으로 스크롤을 만든다

overflow:scroll               무조건 스크롤바를 생성한다

 

스크롤바 꾸미기

<style type="text/css">

scrollbar-face-color:#FFFFFF;                      스크롤바 전체 색상
scrollbar-track-color: #FFFFFF;                    스크롤바가 없는 스크롤바 아래에 위치한 부분의 색상

scrollbar-arrow-color: #666666;                     위 아래 화살표 색상
scrollbar-highlight-color: #FFFFFF;               왼쪽과 위쪽의 하이라이트 색상
scrollbar-3dlight-color: #cfcfcf;                     입체감을 위한 왼쪽 위 색상
scrollbar-shadow-color: #FFFFFF;                오른쪽과 아래쪽의 그림자 색상
scrollbar-darkshadow-color: #cfcfcf;             바의 오른쪽, 밑쪽에 들어가는 얇은 색

</style>

 

==================================================================================================================

 

 

 

div Style속성

 

overflow: ######;

          visible : 레이어 크기를 키워서 출력.

          hidden : 레이어 크기만큼 출력.

          auto : 내용에 따라 자동 스크롤.

          scroll : 스크롤바 생성.

     ex) overflow-x:값; overflow-y:값; overflow:값;

 

position: ######;

          static : 기본값.

          relative : 하위에 div가 있을 경우엔 하위의 div를 absolute 배열.

          absolute : div에 top, right, bottom, left 값을 지정해서 원하는 위치에 고정.

          fixed : 스크롤에 상관없이 지정한 위치에 고정.

          inherit : 상위에서 지정한 값을 상속.

 

visibility: ######;

         visible : 보임.

          hidden : 감춤.

 

z-index: #;         :: #값에 따라 우선순위 정의.

 

left: ##px;

top: ##px;

width: ###px;

height: ###px;

text-align: center;

          center , left, right ...

background-color: #######;

border-style: ######;

          solid , dotted .....

border-color: ######;

border-width: ##px;

border: ###px;

 

==================================================================================================================

 

 

div 상하로 정렬 하기 (상단, 중앙, 하단)

 


   div가 상단, 중앙, 하단으로 있을 때 하단 div를 bottom으로 붙이는 방법

   







------------------------------------------------------------------------------------------


<style type="text/css">

#Box {position:relative; width:300px; height:300px;}
#head {float:left; width:300px; height:50px;}
#body {clear:left; float:left; width:300px;}
#foot {position:absolute; clear:left; float:left; width:300px; height:50px; left:0; bottom:0px;}

</style>


<div id="Box">
    <div id="head">상단</div>
    <div id="body">중앙<br />내용1<br />내용2</div>
    <div id="foot">하단</div>
</div>


------------------------------------------------------------------------------------------

겉에 감싸는 div에 position을 relative로 주고

하단으로 붙이고 싶은 div의 position을 absolute로 주면 하단 div는 겉의 div안에서 움직이게 된다.

하단 div에 left:0과 bottom:0으로 주어야 하단으로 딱 붙게 된다.

 

==================================================================================================================

 

 

div 가운데 정렬

 

테이블을 사용할 때는 td에 align을 center로 주면 그 안에 들어가는 내용이 딱딱 가운데 정렬이 됐었는데..

div를 가운데 정렬하려니 도통 안되는 것이다..

몇번의 검색과 이것 저것 찾다보니 알게 된 것이 margin:0 auto 를 사용하면 된다는 것..

align의 center가 되는 것은 block레벨이 아닌 것에만 적용이 된다고 한다.

div는 block 레벨이니 당연히 div 자체에는 align이 먹히지 않는 것..

------------------------------------------------------------------------------------------

<style type="text/css">
#BoxCenter {margin:0 auto; width:300px; height:100px; background-color:#33CCFF;}
</style>


<div id="BoxCenter">div 중앙 정렬</div>

------------------------------------------------------------------------------------------

 

==================================================================================================================

 

 

레이어 길이 능동적으로 변환하기(style.height)

 

body 레이어의 onresize 이벤트에서 처리 해주시면 됩니다..


간단하게 예제 올립니다.


스타일정의 - 레이어의 외곽선을 보이기 위해 정의 했습니다.

<style>

.Layer{

position:absolute;

BORDER-BOTTOM: 1px solid;

BORDER-LEFT: 1px solid;

BORDER-RIGHT: 1px solid;

BORDER-TOP: 1px solid;

FONT-FAMILY: "돋움"; FONT-SIZE: 20pt

}

</style>


자바스크립트 정의 - LayerBody 의 onresize 이벤트에서 처리 했습니다.

그리고 window.onload 이벤트에서 LayerBody의 Height를 변경하여

테스트 하였습니다.


<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>

<!--

function LayerBody_onresize() {

              //LayerLeft 의 height 를 변경된 LayerBody의 height의 값을 대입

             document.getElementById("LayerLeft").style.height = document.getElementById("LayerBody").style.height;

              //LayerRight 의 height 를 변경된 LayerBody의 height의 값을 대입

             document.getElementById("LayerRight").style.height = document.getElementById("LayerBody").style.height;

             //LayerBottom의 top 을 LayerBody의 (top + height)을 대입하여 LayerBody의

             //끝부분에 위치하게 한다.

            document.getElementById("LayerBottom").style.top = document.getElementById("LayerBody").offsetTop + document.getElementById("LayerBody").offsetHeight;


}


function window_onload() {  //테스트를 위해 window객체의 onload 이벤트에서 LayerBody의 height를 1000px로 변경 하였다.

           document.getElementById("LayerBody").style.height = "1000px";

}

//-->

</SCRIPT>


body 부분 정의


<body onload="return window_onload()">

<div id="LayerLeft" class=Layer style="width:133px; height:325px; z-index:1"></div>

<div id="LayerBody" class=Layer style="width:301px; height:325px; z-index:2; left: 145px; top: 15px;" onresize="return LayerBody_onresize()"></div>

<div id="LayerRight" class=Layer style="width:188px; height:325px; z-index:3; left: 448px;"></div>

<div id="LayerBottom" class=Layer style="width:629px; height:115px; z-index:4; left: 9px; top: 341px;"></div>

</body>


 

==================================================================================================================

 

 

DIV를 이용하여 페이지의 특정 부분만 인쇄하는 방법

 

웹 페이지가 상당히 길 때 사용자로 하여금 특정 부분만 인쇄할 수 있는 인터페이스를 제공해 주고 싶은 경우들이 종종 있다. 하지만 일반 브라우저는 페이지의 특정 부분만을 인쇄할 수 있는 메쏘드를 제공하고 있지 않다. 물론, 브라우저의 인쇄 대화 상자에서 일부 페이지를 인쇄할 수 있기는 하지만 우리가 원하는 것은 그런 기능이 아니다.

백문이 불여일견! 아래 있는 "소스실행하기"버튼을 클릭한 후 나타난 화면에서 원하는 인쇄 영역을 선택한 다음 "특정 부분 인쇄" 버튼을 클릭해 보기 바란다.


<DIV> 태그를 잘 이용하면 특정 DIV 영역만 인쇄할 수가 있다.

인 터넷 익스플로러는 window.onbeforeprint와 window.onafterprint 이벤트 핸들러를 지원하는데, 이들은 인쇄 전과 후의 웹 페이지 내용을 변경할 수 있도록 도와준다. 이 기능을 이용하여 특정 DIV 영역은 보이게 하고 나머지 영역은 숨길 수가 있다. (불행히 넷스케이프는 이 이벤트 핸들러를 지원하지 않는다. 하지만 여기서는 약간의 제약이 있긴 하지만 넷스케이프에서도 약간의 보이기 속성을 조절하여 비슷하게 구현해 보기로 한다.)



<HTML>
<HEAD>
<STYLE>
DIV { position: relative; }
</STYLE>
<SCRIPT>
var div2print;
function printDiv (id) {
  if (document.all && window.print) {
    div2print = document.all[id];
    window.onbeforeprint = hideDivs;
    window.onafterprint = showDivs;
    window.print();
  }
  else if (document.layers) {
    div2print = document[id];
    hideDivs();
    window.print();
  }
}
function hideDivs () {
  if (document.all) {
    var divs = document.all.tags('DIV');
    for (var d = 0; d < divs.length; d++)
      if (divs[d] != div2print)
        divs[d].style.display = 'none';
  }
  else if (document.layers) {
    for (var l = 0; l < document.layers.length; l++)
      if (document.layers[l] != div2print)
        document.layers[l].visibility = 'hide';

  }
}
function showDivs () {
  var divs = document.all.tags('DIV');
  for (var d = 0; d < divs.length; d++)
    divs[d].style.display = 'block';
}
</SCRIPT>
</HEAD>
<BODY>
<DIV>
<FORM>
<SELECT NAME="divSelect">
<OPTION>첫 번째 영역만 인쇄
<OPTION>두 번째 영역만 인쇄
<OPTION>세 번째 영역만 인쇄
</SELECT>
<INPUT TYPE="button"
       ONCLICK="var s = this.form.divSelect;
                var divID = s.options[s.selectedIndex].text;
                printDiv(divID);"
       VALUE="특정 부분 인쇄"
>
</FORM>
</DIV>
<DIV ID="d1">
<b>[첫 번째 영역]</b><br>
첫 번째 영역입니다!<br><br>
</DIV>
<DIV ID="d2">
<b>[두 번째 영역]</b><br>
두 번째 영역입니다!<br>
두 번째 영역을 선택하여 인쇄해 보세요!<br><br>
</DIV>
<DIV ID="d3">
<b>[세 번째 영역]</b><br>
세 번째 영역입니다!<br>
세 번째 영역을 선택하여 인쇄해 보세요!<br>
From 코리아인터넷닷컴
</DIV>
</BODY>
</HTML>



출처 : 코리아인터넷닷컴

 

==================================================================================================================

 

 

div는 무엇일까? 어떻게 사용해야 할까?

 

HTML에서의 div는 Division Marker의 줄임말로서 영역을 구분짓거나 무리(구분)지어주는 엘리먼트이다.
div는 div를 열고 닫은 앞뒤로 줄바꿈이 되는 블럭 레벨 항목 block level element이다.
div의 앞 뒤에 있는 항목들이 가로줄로 흐르지 않고, 엔터값을 입력한 것 처럼 아래로 줄 지어진다는 말이다.

div로 레이아웃이나 박스를 구성하기 위해, CSS에서 가장 많이 쓰는 속성인 position 값으로는 static, relative, absolute, fixed, inherit가 있다.

Position 속성

static

CSS로 특별한 값을 지정해 주지 않아도 적용되는 기본값이다.
HTML 파일에서 중첩되지 않은 여러개의 div를 작성하면, 위에서 부터 차곡 차곡 쌓이는 기본적인 형태이다.
relative
한개의 div가 있고 relative로 설정할 경우엔 static과 큰 차이는 없다. 하위에 div가 있을 경우엔 하위의 div를 absolute 배열 할 수 있다.

absolute

흔히 레이어라는 개념으로 알고 있는 값이다. div에 top, right, bottom, left 값을 지정해서 원하는 위치에 고정되게 띄울 수 있다.

fixed

기본적으로 absolute와 같다. absolute는 canvas의 스크롤에 따라 올라가고 내려가지만 fixed의 경우는 스크롤에 상관없이 지정한 위치에 고정된다.

inherit

상위에서 지정한 값을 상속한다.

 

div를 설명하자면, 레이아웃layout 또는 박스모델 boxmodel을 빼놓고 말할 수 없다.
위에도 적었듯이 컨텐츠를 묶어주는 역할을 하는데, 컨텐츠를 묶어서 배열 하는 것이 곧 레이아웃layout이기 때문이다.

 

컨텐츠 안에서의 div는 사용자가 사용하기 나름일테고, 컨텐츠를 묶어주는 역할의 div는, 위치를 지정함(positioning)으로써 자신의 진정한 역할을 하게 된다.
여기서는 컨텐츠를 묶어주는 가장 크고 바깥의 영역을 담당하는 div에 대해 얘기하도록 하자.

 

positioning하는 것은 div를 float 시키거나 절대값으로 위치absolute positioning 하는 등 사용자가 원하는 위치에 위치시키는 것을 말한다.
positioning하기 위해서는 위에 나열한 position 속성을 사용하거나, float를 사용하여야 한다.

 

기본 적인 형태의 Layout


 

 

XHTML code
<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" >
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
 <title> New Document </title>
 <link rel="stylesheet" type="text/css" href="css/left.css">
</head>

<body>
 <div id="header">헤더</div>
 
 <div id="container">
  <div id="contents">컨텐츠</div>
  <div id="sidebar">사이드바</div>
 </div>

 <div id="footer">푸터</div>
</body>
</html>

 


CSS code (float 사용)

body {
 margin: 0;
 padding: 10px;
 background-color: #FFF;
}
#container {
 width: 380px;
}
#header {
 background-color: #FF4A4D;
 height: 50px;
}
#contents {
 float: left;
 background-color: #FFC64A;
 width: 290px;
 height: 214px; /* 임의 지정 */
}
#sidebar {
 float: right;
 background-color: #85C69D;
 width: 90px;
 height: 214px; /* 임의 지정 */
}
#footer {
 clear: both;
 background-color: #3B83B1;
 height: 40px;
}

 

 


boxmodel의 예제는 Little Boxes에서 자세히 살펴볼 수 있다. 하단에 몇 개 더 소개하도록 하겠다.

절대값 위치absolute positioning에 대한 개념은 좌표를 지정하여 div를 배열하는 방식이기 때문에 기존의 레이어layer 개념을 알고 있다면 정확하게 익히는 것이 어렵지 않을 것이라고 본다.

그럼 float에 대해 좀 더 알아보자.
float의 값으로는 left, right, none, inherit가 있다.

float 속성
left
left로 설정된 엘리먼트가 HTML 코드에서 바로 다음 엘리먼트의 왼쪽에 위치하게 된다.
right
right로 설정된 엘리먼트는 바로 다음 엘리먼트의 우측에 위치하게 된다.
none
float 하지 않는다.static의 상태로 자연스럽게 박스가 쌓이는 형태라고 보면 된다.
inherit
상위에서 지정한 값을 상속한다.
float를 사용할 때는 clear에 대해서도 알아야 하겠다.
위에서 어떠한 항목에 대해 float:left; 혹은 float: right;를 설정하였을 경우 그 아래에 있는 것들도 영향을 받게 된다. 그것들에 대해 다시 초기화를 시켜주는 것이 clear이다.
left, right 각각 해당 정렬에 대한 영향을 없애주고 both는 둘 다 없애준다.

 

div의 width, height


특별히 width나 height를 정해주지 않으면 컨텐츠의 길이와 넓이에 따라 자동적으로 늘어나고 줄어든다.

만약에 width를 지정했는데, 끊기지 않는 텍스트나 커다란 이미지 혹은 링크로 인해 고정한 width보다 컨텐츠가 넓어질 경우에는 overflow 속성을 지정해서 해결 할 수 있다.
(FF에서는 박스는 고정되어 있고 컨텐츠만 삐져나오고, IE에서는 컨텐츠에 따라 박스가 함께 넓어 지기 때문에 레이아웃이 엄청 깨지는 것을 볼 수 있다. height를 고정한 경우에는 height에도 함께 적용 된다.)

overflow에 지정할 수 있는 속성으로는 visible, hidden, scroll, auto등이 있다.

visible
내용을 자르지 않고 블럭 밖까지 가도록 허용한다.
hidden
박스를 넘어갈 경우, 넘어가는 부분을 감추어 버린다. (잘림부분의 크기와 모양은 ‘clip’ 속성에 의하여 결정된다.)
scroll
박스에 기본적으로 scroll을 제공하게 된다. - print나 projection CSS에서 해당 div안의 넘치는 컨텐츠도 인쇄 해준다.
auto
박스는 고정해 두고, 박스보다 컨텐츠가 커질 경우 스크롤을 만들어 준다.
만약에 height를 지정했는데 FF에서 컨텐츠가 삐져나온다면, min-height를 이용하여 해결 할 수 있다.
고정된 값을 지정했다면, 컨텐츠가 많이 지더라도 div의 높이 값은 고정되어 있는 것이 맞다.
IE 는 자체지능적;으로 컨텐츠에 따라 높이를 마음대로 높혀 버리는데, IE처럼 컨텐츠에 따라 div의 높이가 변해주길 바란다면 min-height라는 속성을 지정해 주면 된다. IE에서는 적용되지 않으므로 * html #id { height: 200px; } 같은 hack도 함께 써주어야 한다.

결론적으로 layout을 위해 div를 사용할 때에는 position, float에 대해서는 기본적으로 알아야 하고, 부가적으로 overflow를 알아두면 더욱 적절히 사용할 수 있겠다.

 

 

 

Posted by 1010
반응형

Mysql 자동 백업 하기 - Rsync와 연계하면 좋음

/root아래에 backup.sh 이라는 파일을 만들어 놓고 백업 명령어를 다음과 같이 주었다.

#!/bin/bash
/usr/local/mysql/bin/mysqldump -uroot -p***** mysql > mysql_db_bak_$(date +%Y%m%d).sql
/usr/local/mysql/bin/mysqldump -uyanemone -p***** yanemone > yanemone_db_bak_$(date +%Y%m%d).sql
mv *.sql /backup
tar cvfpz /backup/html_bak.tar.gz /var/www/html
tar cvfpz /backup/yanemone_html_bak.tar.gz /home/yanemone/public_html
tar cvfpz /backup/dichang_html_bak.tar.gz /home/dichang/public_html

WEEKAGO=`date -d "-30 days" +%Y%m%d`

rm -f /backup/*${WEEKAGO}.sql

귀찮으니까 한달 지난건 지워버리죠.

백업할 내용이라던지 파일 이름은 자신의 상황에 맞게 주면 되겠다.

이렇게 하고 나면 backup.sh파일을 chmod 100 backup.sh로 단단히 무장하라.

그리고 crontab -e 명령으로 cron 작업을 명시하자
그럼 vi가 열리면서 편집이 가능하다

00 06 * * * /root/backup.sh

를 추가하고 :x 로 저장하고 나오자.
위의 작업은 매일 새벽 6시에 /root/backup.sh을 실행하라 라는 말이다.

그리고 /var/spool/cron/root가 있는지 확인해보자. 있다면 정상적으로 수행할 것이다.

Crontab 의 메일 안받기

/etc/crontab이라는 파일을 열어보자
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ROOT
HOME=/

부분이 있다. MAILTO=ROOT를 다음과 같이 고쳐보자
MAILTO=""

크론에 등록시 아래와 같이 하면 메일이 날아오지 않는다.
위에꺼는 전체 메일이 다 날아오지 않으므로 주의 해야 한다.
그러므로 아래꺼 사용하믄 된당...
00 06 * * * /root/backup.sh >/dev/null 2>&1



저장할 파일의 크기가 클경우 분할하여 압축할수 있다.
백업을 하다보면 기가단위가 넘을때가 많습니다.
그때는 분할백업(CD 1장 단위가 좋겠죠...)
tar -zcvpf - /압축할dir | split -b 670mb - 압축파일.tar.gz

그러면 압축파일.tar.gzaa
압축파일.tar.gzab순으로 파일이 생깁니다.

-b 670mb는 압축파일을 670mb단위로 분할 하라는 옵션입니다.

압축풀라고 할때는 (쿠쿠 바로 답해 주셔서 캄솨함다.)
cat test.tar.gza* > test.tar.gz
로 하여 tar.gz파일로 만들어서 풀면 된다.

Posted by 1010
98..Etc/shell script2009. 1. 28. 18:01
반응형
제1장 Bash Shell 들어가기

 

                    제1.1장 쉘 스크립트 파일을 만들기

 

                    제1.2장 기본 문법

 

                    제1.3장 디버깅

 

            제2장 기존 쉘 스크립트 파일의 분석

 

                    제2.1장 crond(/etc/rc.d/init.d/crond)

 

                    제2.2장 httpd(/etc/rc.d/init.d/httpd)

 

            제3장 로그인 과정에서의 쉘 스크립트

 

                   제3.1장 로그인 과정

 

                   제3.2장 ~/.bash_profile

 

                    제3.3장 ~/.bashrc

 

                    제3.4장 /etc/bashrc

 

                    제3.5장 /etc/profile

 

            제4장 FTP 접속 스크립트

 

            제5장 메일링리스트를 이용하여 메일 보내기

 

            제6장 파일 관리

 

                    제6.1장 파일이름을 한 번에 변경하기

 

                    제6.2장 원하는 부분의 내용만 변경하기

 

                    제6.3장 디렉토리별로 파일 목록 정리하기

 

            제7장 자동 백업 스크립트

 

                    제7.1장 단순 백업

 

                    제7.2장 백업 기능의 확장

 

                    제7.3장 MySQL 백업

 

            제8장 웹 호스팅 계정 자동 추가 스크립트

Posted by 1010
반응형

예전에 만들어진 페이지들을 보면 스크립트부분을

//<!--
//-->


로 묶어 놓은 것을 볼 수 있다. 솔직히 이게 필요하게 느껴본적은 전혀 없지만(그땐 개발도 안했긴 하지만..) 이건 오작동을 막는다는 개념으로 알고 있다. 스크립트가 안먹는 곳에서 스크립트 때문에 오작동을 막기 위해서 html태그로 묶어 놓은 것이다. 하지만 실제로 저게 필요한 경우가 이제는 거의 없는 것 같고 안해도 되기 때문에 요즘은 거의 쓰지 않는 것 같다.

대신 요즘에는

//<![CDATA[
     스크립트.....
//]]>


로 묶어준다. 먼가 있어 보여서 쓰긴 했는데 이것에 대해서 정확한 이해를 한지는 얼마 되지 않았다. 이건 DOCTYPE를 XHTML로 사용할 때 써주는 것이다. (내가 HTML 4.01 Tranditional을 거의 쓰지 않아서 그쪽은 잘 모르겠다.) CDATA... XML을 해본 사람은 많이 보던 거란걸 느낄것이다.

XHTML은 기본적으로 형식이다. 스크립트 부분을 CDATA 속성으로 넣어줌으로써 XHTML 파서가 스크립트 부분에 들어간 html부분을 파싱하지 않도록 막아주는 것이다. 물론 대개의 경우 없어도 되지만 이렇게 함으로써 완전히 차단하는 것이다.

유효성검사를 통과하려면 반드시 CDATA로 스크립트를 묶어 주어야 한다. 저 형식은 왠지 잘 외워지지가 않아서... ㅋㅋ CDATA로 묶어 주는데 이부분은 스크립트 문법에 맞지 않지 때문에 //로 주석표시를 해준 것이다.


ps. //<![CDATA[를 제목에 썼더니 리스트에서 깨져버려서 별수없이 제목을 수정 2008.7.28

ps2. 앞쪽에 //<!-- //-->에 대해서 약간은 추측형으로 작성했었는데 이건 쓸 필요가 없다. 이것은 자바스크립트가 생긴지 얼마되지 않았을 때 웹브라우저가 <script>태그를 이해하지 못했기 때문에 화면에 자바스크립트 코드 자체를 화면에 출력해 주기 때문에 이걸 막기위해서 스크립트 부분은 html주석인 <!-- -->로 가려준 것인데 이젠 쓸 필요가 없다.

Posted by 1010