#sudo vi /etc/mysql/my.cnf
#bind-address = 127.0.0.1 (이 라인을 주석 처리)
mysql>mysql -u root -p
mysql>use mysql
mysql>update user set host='%' where user='root';
mysql>commit
mysql>exit
#sudo /etc/init.d/mysql restart
#sudo vi /etc/mysql/my.cnf
#bind-address = 127.0.0.1 (이 라인을 주석 처리)
mysql>mysql -u root -p
mysql>use mysql
mysql>update user set host='%' where user='root';
mysql>commit
mysql>exit
#sudo /etc/init.d/mysql restart
Ubuntu Server 9.04 에서 테스트
#sudo vi /var/lib/locales/supported.d/ko (하단에 아래 추가)
ko_KR.EUC-KR EUC-KR
#sudo dpkg-reconfigure locales
#sudo vi /etc/environment (하단에 아래 추가)
LANG="ko_KR.EUC-KR"
LANGUAGE="ko_KR.EUC-KR"
LC_CTYPE="ko_KR.EUC-KR"
LC_MESSAGES="ko_KR.EUC-KR"
오늘 하루종일 물고 늘어져서 간신히 설치했다..ㅋ;
시스템 설치가 다 그렇듯이.. 간만에 닭질 좀..ㅎㅎ
다음에 똑같은 실수를 하지 말아야겠다는 생각에 정리하는데..
아.. 이미지 뜨기 귀찮군.. 그래서 텍스트로 대충..ㅋㅋㅋ
subversion의 공식 사이트는 아래와 같다.
http://subversion.tigris.org/getting.html
또한 solaris용 subversion 및 관련 프로그램들은 아래에서 다운받을 수 있다.
http://www.sunfreeware.com/programlistsparc10.html
현재 subversion의 버전은 1.4.6이지만 sunfreeware 사이트에서 솔라리스로 패키징된건 1.4.5까지만 나와있다.
subversion 1.4.5를 설치하려면 다음 프로그램이 먼저 설치되어 있어야만 한다.
- apache 2.2.6
- openssl-0.9.8h
둘 다 sunfreeware 사이트에서 구할 수 있으며, sunfreeware 사이트에서 제공하는 프로그램은 모두 솔라리스용으로 컴파일 & 패키징이 되어 있기 때문에 다음과 같이 하기만 하면 쉽게 설치할 수 있다..ㅎㅎ
# gzip -d openssl-0.9.8h-sol10-sparc-local.gz
# pkgadd -d openssl-0.9.8h-sol10-sparc-local
1. openssl 설치
openssl은 위와 같이 pkgadd하면 아주 간단히 설치할 수 있다..ㅋ;
2. apache 2.2.6 설치
(1) apache 설치
apache도 위와 같이 pkgadd하면 디폴트로 /usr/local/apache2에 설치된다.
그 다음에 다음과 같이 httpd.conf를 수정한다.
- User와 Group을 nobody로 설정
- ServerName에 서버 아이피 또는 도메인 설정
- DirectoryIndex 지시자에 index.jsp 추가
- <Directory />에 보면 "Deny from all" 라인이 있다. 이걸 주석 처리한다. (이게 왜 디폴트로 되어 있는지 모르겠군..ㅎㅎ)
# /usr/local/apache2/bin/apachectl start 하면 apache가 뜬다.
# /usr/local/apache2/bin/apachectl stop 하면 종료
이렇게 하면 간단히 되는데.. 나한테는 tomcat하고 연동해야 하는 문제가 있었다..ㅡㅡ
(2) apache와 tomcat 연동
apache와 tomcat을 연동하기 위해서는 apache tomcat connector (http://tomcat.apache.org/connectors-doc/) 가 필요하다.
현재 1.2.26버전이 나와 있는데.. 이걸 컴파일하면 mod_jk.so 라는 모듈이 생성된다.
검색하다보면 mod_jk2.so라는 것도 나오는데 첨에는 2라는 것 때문에 이게 최신일줄 알고 컴파일하는데 잘 안되서 한참 애먹었다. 하지만 나중에 알고보니 이건 옛날 버전이라고..ㅡㅡ;
암튼.. 압축풀고 들어가서 jk 디렉토리 밑에 native 디렉토리로 간다.. (이건 또 왜이리 깊어..)
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
인스톨까지 끝내면 /usr/local/apache2/modules에 mod_jk.so 파일이 복사된다.
이제 httpd.conf를 열어 LoadModule들이 있는 부분에 다음 줄을 추가한다.
LoadModule jk_module modules/mod_jk.so
그리고 나서 /usr/local/apache2/conf/extra 디렉토리에 httpd-mod_jk.conf 파일 생성한다.
(예제) (아래에서 적당히 자신의 환경에 맞게 수정해야 합니다..ㅎㅎ; 간단하니 다 아실듯)
Alias /test TOMCAT_HOME/webapps/test
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/extra/httpd-workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /test/servlet/* ajp13
JkMount /test/*.jsp ajp13
또한 httpd-mod_jk.conf에서 참고하는 httpd-workers.properties 파일도 생성한다
(예제)
workers.tomcat_home=TOMCAT_HOME
workers.java_home=JAVA_HOME
ps=/
worker.list=ajp12, ajp13
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stder
이제 이 파일을 httpd.conf 에서 로딩한다.
httpd.conf 파일 아무데나.. 마지막 줄도 되고 다음과 같이 추가한다.
Include conf/extra/httpd-mod_jk.conf
다 되었으면 아파치와 톰켓을 재시작하고 아무 jsp를 실행해본다..
사실 처음에는 httpd-mod_jk.conf하고 httpd-workers.properties 파일을 생성 안했었다.
그래도 apache와 tomcat 모두 잘 뜬다..
그런데 jsp를 호출하면 브라우저에 jsp가 실행되는 것이 아니고 jsp 소스 코드가 그냥 텍스트로 떡하니 나온다.. 헐..
이것 때문에 http 소스를 다운받아 컴파일도 하고 멀쩡한 httpd.conf를 몇시간 동안 만지작거리다가 알고보니 이 파일들을 생성 안해서 생긴 문제였다..
3. subversion 설치
(1) subversion 인스톨
subversion-1.4.5-sol10-sparc-local.gz 파일을 다운받아 1,2번의 경우처럼 설치한다.
# gzip -d subversion-1.4.5-sol10-sparc-local.gz
# pkgadd -d subversion-1.4.5-sol10-sparc-local
pkgadd할때 apache2 모듈과 중복된다고 하는데.. 과감히 yes ㅎㅎ
그럼 파일 몇개가 apache2에 덮어 써진다.
(2) httpd.conf 수정
httpd.conf 파일을 열어서 LoadModule들이 있는 줄에 다음줄 추가
LoadModule dav_svn_module modules/mod_dav_svn.so
맨 마지막 줄에는 다음을 추가한다.
이는 svn 저장소가 /data2/svn/repository 이고 접속 주소는 http://서버IP/svn 이며
/data2/svn/password 파일에 있는 아이디와 패스워드로 인증한다는 의미가 된다.
<Location /svn>
DAV svn
SVNPath /data2/svn/repository
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data2/svn/password
Require valid-user
</Location>
(3) svn 저장소 생성
# cd /data2/svn
# svnadmin create --fs-type fsfs repository
# chmod -R g+w repository
# chown -R nobody repository
# chgrp -R nobody repository
# /usr/local/apache2/bin/htpasswd -c password username
New password:
Re-type new password:
(사용자를 추가할 경우에는 /usr/local/apache2/bin/htpasswd password username)
이제 svn에 접속하면 끝.. 추가로 나는 eclipse에서 접속하기 때문에 eclipse에서 사용법을 간단히..ㅎㅎ
(4) eclipse svn 연동
- Help -> software updates -> find and install 을 선택하면 창이 뜨는데 search for new features to install를 체크하고 next
- new remote site를 클릭하고 다음을 입력한다음에 next
Name : subclipse
URL : http://subclipse.tigris.org/update
- next, ..., next해서 다 설치하고 eclipse를 다시 부팅하면 SVN Repository perspective가 생성됨
- 서버 접속 및 사용..ㅎㅎ; 뭐 이건 svn을 한번쯤 사용해본 사람은 다 알테니 생략..
4일동안 XML문서를 UTF-8로 처리하도록 수정하면서 얻은 테스트 결과입니다..ㅡㅡ;
이 결과를 얻도록 도움을 준 진광형한테 감사..ㅋㅋ
만약 UTF-8로 선언되지 않고 euc-kr로 선언되었다면 모두 문제 없습니다.
테스트 환경 : AIX5.2, WebLogic 8.1.6, IBM JDK 1.4.2
서버 file.encoding : IBM-eucKR
아래의 방법들 모두 InputSource에 setEncoding("UTF-8")을 해도 영향이 없음
1. UTF-8로 선언 / euc-kr로 인코딩된 XML의 경우
- 읽기
FileInputStream로 읽으면 에러발생 (java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence) (getParsedDocument()의 경우)
FileReader로 읽으면 성공 (getParsedDocument2()의 경우)
- 쓰기
FileOutputStream를 이용하면 UTF-8 쓰기 성공 (getParsedDocument()의 경우)
FileWriter를 이용하면 UTF-8 쓰기 안됨 (시스템 file.encoding으로 쓰기가 됨) (getParsedDocument2()의 경우)
2. UTF-8로 선언 / UTF-8로 인코딩된 XML의 경우
- 읽기
FileInputStream로 읽으면 성공 (saveXML의 경우)
FileReader로 읽으면 에러 (sun.io.MalformedInputException at sun.io.ByteToCharEUC.convert(ByteToCharEUC.java(Compiled Code)))
(saveXML2의 경우)
- 쓰기
FileOutputStream를 이용하면 UTF-8 쓰기 성공 (saveXML의 경우)
FileWriter를 이용하면 UTF-8 쓰기 안됨 (시스템 file.encoding으로 쓰기가 됨)
(saveXML2의 경우)
UTF-8 처리를 하는게 장난이 아니군..ㅡㅡ;
여기저기 보면서 다양한 케이스마다 UTF-8 처리를 하는 다양한 방법을 모았습니다. (워낙 다양한 곳을 보다보니 출처 정리조차 힘듬을 이해해주시길.. 뭐 그대로 복사한건 아니니까..ㅋ)
UTF-8 처리를 위해 아래를 모두 해야 하는건 아니고 맘에 드는 걸 고르면 되겠습니다..^^;
1. export LANG=ko 또는 export LANG=ko_KR 와 같은 환경 설정
서버의 쉘을 설정하는 부분인데 LANG=UTF-8로 해야하나 이건 다른 프로그램에 영향을 줄 수 있기 때문에 가능한 안하는게 좋음..ㅋ
2. 서블릿 엔진의 file.encoding 값이 UTF-8, EUC_KR, KSC5601 중 하나가 되도록 함
서버 시작 스크립트에서 "java ... -Dfile.encoding=UTF-8 ..." 라고 지정
톰켓의 경우 catalina.sh(또는 bat)에 4군데 정도 있음
3. 서블릿에서 다음과 같은 request, response 인코딩 지정
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
4. JSP 첫째줄에 다음 라인 추가
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
5. GET 방식에서는 URL 인코딩 수행 (이것이 RFC 표준에 따르는 것이라고 함)
자바스크립트에서는 encodeURIComponent()
자바에서는 java.net.URLEncoder의 encode()
자바스크립트의 경우 다음 사이트 참고 http://mwultong.blogspot.com/2006/05/javascript-tools-decodeencode-uri.html
6. UTF-8 변환 함수 호출
public static String Kor2UTF8(String str) {
if (str== null) {
return null;
}
try {
return new String(str.getBytes("8859_1"), "UTF-8");
} catch (Exception e) {}
}
7. UTF-8로 파일 저장
울트라에디트 : 파일 -> 변환 -> ASCII를 UTF-8으로 (Unicode 편집)
에디트플러스 : 파일 -> 새이름으로 -> 인코딩을 UTF-8로 지정 또는
문서 -> 인코딩 변경 로드 -> 인코딩 선택을 UTF-8로 지정
이클립스 : Windows->General->Workspace 에서 Text file encoding을 UTF-8로 지정 또는 파일을 선택하고 오른쪽 버튼 클릭->Properties에서 Text file encoding을 UTF-8로 지정
이 때 한글이 깨지는 경우가 있음. 백업을 받아놓아야 함
서버에 올릴때는 바이너리로 올림
8. native2ascii -encoding UTF-8 test.xml test.xml
native2ascii는 자바에 내장된 명령어로 위와 같이 하면 test.xml 파일을 UTF-8로 인코딩해줌
단, 한글은 \u001 ... 이런식으로 깨짐
따라서 에디터로 열어서 수정해주어야 함
9. HttpURLConnection을 이용한 HTTP 통신
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
10. 웹로직에서 UTF-8 처리
web.xml 에서 다음 추가
<web-app>
...
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>UTF-8</param-value>
</context-param>
...
</web-app>
weblogic.xml 에서 다음 추가
<weblogic-web-app>
...
<jsp-descriptor>
<jsp-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</jsp-param>
</jsp-descriptor>
...
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
...
</weblogic-web-app>
11. 톰켓에서 UTF-8 처리
web.xml 에서 다음 추가하고 첨부 파일을 %CATALINA_HOME%/common/classes/filters 복사하면 된다고 함..ㅎㅎ
<web-app>
...
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
트리거란?
◆ INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 입니다.
◆ Trigger는 TABLE과는 별도로 DATABASE에 저장됩니다.
◆ Trigger는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있습니다.
- BEFORE : INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행됩니다.
- AFTER : INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행됩니다.
- trigger_event : INSERT, UPDATE, DELETE 중에서 한 개 이상 올 수 있습니다.
- FOR EACH ROW : 이 옵션이 있으면 행 트리거가 됩니다.
-- 행 트리거 : 컬럼의 각각의 행의 데이터 행 변화가 생길때마다 실행되며, 그 데이터 행의 실제값을 제어할수 있습니다.
-- 문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 컬럼의 각 데이터 행을 제어할수 없습니다.
간단한 행 트리거 예제
SQL>CREATE OR REPLACE TRIGGER triger_test
BEFORE
UPDATE ON dept
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || :old.dname);
DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.dname);
END;
/
SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)
-- UPDATE문을 실행시키면..
SQL>UPDATE dept
SET dname = '총무부'
WHERE deptno = 30
-- 트리거가 자동 실행되어 결과가 출력됩니당.
변경 전 컬럼 값 : 인사과
변경 후 컬럼 값 : 총무부
1 행이 갱신되었습니다.
간단한 행 트리거 예제2 (PLSQL BLOCK이 있는 트리거)
SQL>CREATE OR REPLACE trigger sum_trigger
BEFORE
INSERT OR UPDATE ON emp
FOR EACH ROW
DECLARE
-- 변수를 선언할 때는 DECLARE문을 사용해야 합니다
avg_sal NUMBER;
BEGIN
SELECT ROUND(AVG(sal),3)
INTO avg_sal
FROM emp;
DBMS_OUTPUT.PUT_LINE('급여 평균 : ' || avg_sal);
END;
/
트리거가 생성되었습니다.
SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)
-- INSERT문을 실행합니다..
SQL> INSERT INTO EMP(EMPNO, ENAME, JOB, HIREDATE, SAL)
VALUES(1000, 'LION', 'SALES', SYSDATE, 5000);
-- INSERT문을 실행되기 전까지의 급여 평균이 출력됩니다.
급여 평균 : 2073.214
1 개의 행이 만들어졌습니다.
출처
================================================
* Oracle Community OracleClub.com
* http://www.oracleclub.com
* http://www.oramaster.net
* 운영자 : 김정식 (oramaster _at_ empal.com)
================================================
시스템에 생성된 테이블 보기
select * from sysobjects where type='U'
버전 알아내기
select @@version
백업
backup database pubs to disk='C:\temp\pubs' with init
복원
restore database pubs from disk='C:\temp\pubs'
DB의 리스트 보기
select * from master..sysDatabases
테이블정보 보기
sp_tables;
sp_columns 테이블이름
select a.* from syscolumns a join sysobjects b on a.id = b.id where b.name = '테이블이름'