달력

42025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

MySQL 캐릭터셋 설정

DB 2005. 12. 10. 21:17

종래에는 홈페이지가 자국인들만 이용할 것을 예상하고 제작하므로써 외국인 즉, 비한글 사용자들에 대한 서비스를 미쳐 염두에 두지 못하므로써 한글이 ?????$%^&( 처럼 깨져 보이는 무지함을 보였던 것이 사실입니다.
이제는 홈페이지 제작도 유니코드(UTF-8) 인코딩 방식이 세계적 추세이며 이러한 추세에 맞추어 MySql도 기본언어를 utf8(UTF-8 인코딩) 방식으로 변경하였으므로, 홈페이지를 종래 euc-kr 등 한글로만 표기하던 방식도 UTF-8 인코딩 방식으로 업데이트해야 할 때 입니다. UTF-8 인코딩 방식은 한국어, 일어, 중국어, 태국어, 아랍어 등 만국어 표기가 가능한 방식입니다.

APM에서 UTF-8을 구현하려면 꽤 많은 부분을 수정해야 합니다 .
다음은 APM에서 UTF-8 구현 방법과 소스코드를 첨부합니다.
적용 환경
----------------
OS : WinXP SP2
Apache : httpd-2.0.52-3
PHP : php-5.0.3
MySQL : mysql-4.1.11
----------------
* 아래 내용 말고도 OS와 브라우저가 지원해 주어야 하지만, OS는 Win98 부터 지원하고 있으며 많이 쓰는 익스플로러도 역시 지원하고 있으니 손쉽게 설정을 변환할 수 있습니다.


1. apache 환경파일 편집 (httpd.conf)
2. php 환경파일 편집 (php.ini)
3. mysql 환경파일 편집 (my.cnf)
4. apache, mysql 서비스 재시작
5. mysql에서 캐릭터셋 확인 및 디비생성
6. php 소스코드에 mysql_query("set names utf8;"); 함수 추가
7. php 소스에 한글문자열이 있으면 파일저장할때 UTF-8 파일형식으로 저장
8. 웹브라우즈의 보기-인코딩-UTF-8로 선택
9. 아웃룩 익스프레스 : 도구->옵션->읽기->글꼴->인코딩:유니코드(UTF-8)->


   기본설정 클릭. 국가별 설정->"모든 받는 메시지에 기본 인코딩 사용"에는 체크를 해제.
   (여기에 체크하면 EUC-KR 이나 다른 언어로 작성된 메일은 깨지게 됨)

1. apache/conf/httpd.conf 에서 캐릭터셋 수정
/*------------
AddDefaultCharset UTF-8

2. etc/php.ini 에서 캐릭터셋 수정
/*------------
;default_charset = "iso-8859-1"
default_charset = "utf-8"

3. etc/my.cnf (또는 my.ini) 에서 캐릭터셋 수정
/*------------
[client]
#password = your_password
default-character-set=utf8

[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysql]
default-character-set=utf8

4. 환경변수를 모두 수정후 apache 및 mysql 서비스 재시작
/*------------

5. mysql에서 캐릭터셋 확인
/*------------
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 247 to server version: 4.1.10a

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test
Database changed
mysql> show variables like 'c%';
+---------+-----------+
| Variable_name | Value |
+---------+-----------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| concurrent_insert | ON |
| connect_timeout | 5 |
+---------+-----------+
12 rows in set (0.00 sec)

* MySql에서 데이터베이스 생성
mysql>CREATE DATABASE 디비명 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 가장 좋은 방법

********************************************
my.ini   or my.cnf

[mysqld]

init_connect=SET collation_connection =euckr_korean_ci
init_connect=set names euckr
character-set-server=euckr
collation-server=euckr_korean_ci

character-set-client-handshake = FALSE
********************************************

alter table TABLE default character set euckr collate euckr-korean-ci;
alter table fp_board default character set euckr;

mysql -u xxx -p --default-character-set=euckr DB명 < 새파일

mysqldump -u xxxx -p --default-character-set=utf8 DB명 > 파일
conv -c -f utf-8 -t euckr dump한파일 > 새파일명
즉.. utf8 된 파일을 갖다가 euckr 성향으로 바꾸게 하는 것입니다

Posted by 알 수 없는 사용자
|

DATABASE 한글문서

DB 2005. 12. 7. 14:23

Posted by 알 수 없는 사용자
|

Primary Key 생성시 인덱스 테이블스페이스를 따로 지정하고 싶으면..
USING INDEX TABLESPACE tablespace_name 을 추가한다.

ALTER TABLE emp
ADD CONSTRAINT emp_PK PRIMARY KEY (empno)
USING INDEX TABLESPACE tablespace_name

'DB' 카테고리의 다른 글

nls_database 세팅보기(캐릭터 셋 보기)  (0) 2006.01.06
캐릭터셋 변경  (0) 2006.01.06
MySQL 캐릭터셋 설정  (0) 2005.12.10
DATABASE 한글문서  (0) 2005.12.07
리스너의 start 시 UNKOWN 발생  (0) 2005.11.28
Posted by 알 수 없는 사용자
|

K사 프로젝트 시

LSNRCTL> start
Starting /oracle/app/oracle/bin/tnslsnr: please wait...

TNSLSNR for Solaris: Version 9.2.0.1.0 - Production
System parameter file is /oracle/app/oracle/network/admin/listener.ora
Log messages written to /oracle/app/oracle/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.7.209)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Solaris: Version 9.2.0.1.0 - Production
Start Date                28-NOV-2005 11:28:10
Uptime                    0 days 0 hr. 3 min. 44 sec
Trace Level               off
Security                  OFF
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.7.209)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "minwon" has 1 instance(s).
  Instance "minwon", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>


* 상황
1. 갑자기 DB접속이 안되는 현상 발생. 리스너를 start 했는데 되지 않음.
2. 디비가 다운되어 있다고 생각하고 시작하기 위해 sqlplus에서 DBA계정으로 start 를 함. 마운트, 오픈이 정상적으로 이루어짐.
3. 리스너를 start 함. 위의 로그 발생. inteliJ 에서 쿼리를 보냄. 접속은 성공적으로 되고 sql 도 결과를 리턴한다. 하지만 사이트에서 프로그램으로 접속시 Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) 에러 발생.

관련 글 : http://database.sarang.net/?criteria=oracle&keyword=status+UNKNOWN%2C+has+1+handler%28s%29+for+this+service...

* database.sarang.net
status가 UNKNOWN이라고 뜨는 것은 listener.ora 파일에 SID_LIST_LISTENER부분의 상태를 나타내는 것입니다.

제가 알기론, 에러가 아니고, tnslsnr이 찾지를 못해서 unknown이라고 뜬다고 합니다...  REDAY는 접속가능한 상태를 나타냅니다.
RAC환경이 아니시라면, SID_LIST_LISTENER 부분은 없어도 괜찮습니다.

* James's
스레드에서 억세스할 수 있는 파일의 갯수가 정해져 있다. ulimit -a 해서 filesdescriptor 의 갯수.
현재 서버의 갯수가 256으로 잡혀 있음. 그렇기때문에 사용할 수 있는 스레드의 갯수가 한정되어 있는데...
oracle의 해당 인스턴스를 잡고 있어야 할 스레드가 뜨지 못해서, 인스턴스를 찾지 못할 수도 있다.

'DB' 카테고리의 다른 글

nls_database 세팅보기(캐릭터 셋 보기)  (0) 2006.01.06
캐릭터셋 변경  (0) 2006.01.06
MySQL 캐릭터셋 설정  (0) 2005.12.10
DATABASE 한글문서  (0) 2005.12.07
[QUERY] Primary key 생성 시 - 데이터가 있는 상태에서도 가능  (0) 2005.12.07
Posted by 알 수 없는 사용자
|