이 블로그 검색

2010년 1월 7일 목요일

소스버전 Install configure 옵션

 

소스버전의 MySQL설치 시, 필요한 configure 옵션에 대해 알아보자.

(소스버전 MySQL5.1.38기준)

다운로드한 소스압축파일을 풀게 되면, configure라는 파일이 생성되는데,

./configure --help로 configure에 대한 옵션 설명을 볼 수 있다.

옵션 중, 대표적인 것만 설명한다.

 

◆ --prefix=PREFIX : MySQL이 설치되는 디렉토리, 기본값은 /usr/local/mysql

◆ --localstatedir=DIR : 데이터 및 로그파일이 저장되는 디렉토리, 기본값은 PREFIX/var

◆ --enable-assembler : 어셈블러 함수 지원

◆ --enable-thread-safe-client : 쓰레드 지원

◆ --with-charset=CHARSET : 기본 CHARSET 지정(utf8, euckr, sjis 등등)

◆ --with-collation=COLLATION : 기본 COLLATION 지정

◆ --with-extra-charsets=CHARSET,CHARSET,... : 추가 CHARSET 지정

      (none, complex, all, utf8, euckr, sjis 등등)

   • none : 추가 설치 안함

   • complex : 정적인 CHARSET 추가 설치

   • all : binary를 포함한 모든 CHARSET 추가 설치

◆ --with-unix-socket-path=SOCKET : unix계열의 소켓 경로 지정, 기본값은 /tmp/mysql.sock

◆ --with-mysqld-user=username : MySQL데몬 실행 계정 지정

◆ --with-mysqld-ldflags=-all-static : MySQL데몬 실행 파일 생성 시 라이브러리 포함, 정적으로 컴파일

◆ --with-client-ldflags=-all-static : 클라이언트 실행 파일 생성 시 라이브러리 포함, 정적으로 컴파일

◆ --with-plugins=PLUGIN[[[,PLUGIN..]]] : plugin 설치, 기본값은 none

       (max, max-no-ndb, mandatory)    

   • MyISAM전용 : mandatory 설치

   • InnoDB전용(Cluster 없음) : max-no-ndb 설치

   • InnoDB전용(Cluster 있음) : max 설치

 

2010년 1월 6일 수요일

Install(Linux환경)

1.설치환경

OS : CentoOS5.3(32bit,64bit)

MySQL버전 : MySQL-community Server 5.1.38(소스버전)

 

2.설치순서

: 설치는 리눅스환경을 기준으로 한다. 윈도우는 간단해서 설명할 가치가 없다 -_-;

설치순서는 다음과 같다.

소스 다운로드 -> 압축해제 -> configrure -> make, install -> 기본 DB생성 -> 유저생성 및 권한 설정

 ->my.cnf 설정 -> MySQL실행 설정 -> 자동실행 설정 -> mysql/bin의 PATH설정

 

다음은 Install.sh파일내용이다. vi편집기를 이용해서 적당히 붙여넣고, 자신의 환경에 맞춰, 적절히(?) 수정해서 사용하자.

리눅스 명령어나 configure옵션 등은 다른 강좌란을 참고하시길~``

 

InstallMySQL.sh

*************************************************************************************************************

#InstallMySQL Script
#You have to set this file's permission
#shell> chmod -R 755 InstallMySQL.sh
#!/bin/bash

 

#Variable
VERSION="mysql-5.1.38"
DOWNLOADDIR="/download/"
SOURCEDIR=$DOWNLOADDIR$VERSION
PREFIX="/usr/local/mysql"
BASEDATADIR="/data/mysql"
LOCALSTATEDIR=$BASEDATADIR"/data"
IBDATADIR=$BASEDATADIR"/ibdata"
LOGDIR=$BASEDATADIR"/logs"
PRECONFFILE="/data/script/my.cnf"
CONFFILE="/etc/my.cnf"
LINKTARGET="/etc/rc.d/init.d/mysqld"

 

#Stop MySQL
service mysqld stop

 

#Delete Installed MySQL
rm -rf $SOURCEDIR*
rm -rf $PREFIX
rm -rf $BASEDATADIR
rm -rf /var/lib/mysql
rm -rf $CONFFILE
rm -rf $LINKTARGET
mkdir $BASEDATADIR
mkdir $IBDATADIR
mkdir $LOGDIR
userdel mysql

 

#Move to Download Directory
cd $DOWNLOADDIR

 

#Download Source Version
wget ftp://ftp.momo-i.org/pub/db/$VERSION.tar.gz

 

#Uncompress
tar xzvf $VERSION.tar.gz

 

#Move to Source Directory
cd $SOURCEDIR

 

#Configure
./configure --prefix=$PREFIX --enable-assembler --localstatedir=/data/mysql/data --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=complex --with-mysqld-user=mysql --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-thread-safe-client --with-plugins=max

 

#make
make

 

#make install
make install

 

#Install DB
/usr/local/mysql/bin/mysql_install_db

 

#Setting User && Directory Permission
useradd -M mysql
chown -R mysql.mysql $LOCALSTATEDIR
chown -R mysql.mysql $IBDATADIR
chown -R mysql.mysql $LOGDIR

 

#Copy my.cnf
cp $PRECONFFILE $CONFFILE

 

#Create Link
ln -s $PREFIX/share/mysql/mysql.server $LINKTARGET

 

#Start MySQL
$LINKTARGET start

 

#Registry Service
chkconfig --level 2345 mysqld on

 

#Stop MySQL
$LINKTARGET stop

 

#Setting mysql path
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

 

************************************************************************************************************

 

InstallMySQL.sh 파일작성이 끝나면, InstallMySQL.sh 파일이 있는 디렉토리로 이동하여,

다음과 같이 실행해서 MySQL을 설치한다.

[root@localhost /]# chmod -R 755 InstallMySQL.sh

[root@localhost /]# sh ./InstallMySQL.sh

 

도중에 에러가 없이 설치가 끝났으면, OS를 리부팅~ 고고~``

설치에러에 관해서는 【Error정보】를 참고하시길~``

2009년 11월 15일 일요일

STARTUP과 SHUTDOWN - 이론

STARTUP과 SHUTDWON에 대해 알아보기 위해 한 가지 기억하자.
STARTUP의 순서다.
STARTUP은 간단히 설명하면 다음과 같은 순서로 움직이고 있다.


SHUTDOWN -> NOMOUNT -> MOUNT ->OPEN

1. STARTUP
오라클에 접속해서 help startup을 입력해보자.

SQL> help startup

 STARTUP
 -------

 Starts an Oracle instance with several options, including mounting,
 and opening a database.

 STARTUP options | upgrade_options

 where options has the following syntax:
    [FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] |
    [ OPEN [open_options] [dbname] ] |
    NOMOUNT ]

 where open_options has the following syntax:
    READ {ONLY | WRITE [RECOVER]} | RECOVER

 and where upgrade_options has the following syntax:
    [PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]


<options>
1) FORCE
 ① 현재 instance를 강제 SHUTDOWN하고 RESTART시킴.
 ② SHUTDOWN ABORT후, STARTUP OPEN한 것과 동일.
  일반적으로 사용하지 않는다.

2) RESTRICT
 ① RESTRICTED SESSION 권한을 가진 사용자만 데이터베이스에 접속 가능

3) PFILE=filename
 ① default parameter file이외의 parameter file을 읽어 instance 구성

4) QUIET
 ① instance를 STARTUP할 때 SGA(System Global Area) 정보를 보여주지 않음

5) NOMOUNT
 ① instance가 시작되나, 디스크 그룹의 마운트는 이루어지지 않음
 ② parameter file을 읽어들인다.(pfile 혹은 spfile)
  (spfile<SID>.ora ->spfile.ora -> init<SID>.ora 순으로 읽는다.)
 ③ SGA구성
 ④ BG(BackGround) Process 기동
 ⑤ alert<SID>.log 읽는다.
 ⑥ 주로 오라클 DB를 생성하거나, control file을 재생성할 때 사용된다.


6) MOUNT

 ① 디스크 그룹의 마운트가 이루어짐
 ② control file을 읽어들임
 ③ data file, log file 이름 변경 가능
 ④ database recovery 수행은 MOUNT 단계에서만 가능하다.
 
7) OPEN
 ① data file, redo log file을 읽어들임
 ② instance Recovery 단계(Roll Forward ~ Roll Back) : SMON가 담당
 ③ default option(STARTUP = STARTUP OPEN)


2.SHUTDOWN
 

오라클에 접속해서 help shutdown을 입력해보자.

SQL> help shutdown

 SHUTDOWN
 --------

 Shuts down a currently running Oracle Database instance, optionally
 closing and dismounting a database.

 SHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL [LOCAL]]

<options>
1) ABORT
 ① 새로운 접속 허가(X)

 ② 현 세션이 끝날 때까지 대기(X)

 ③ 현 트랜잭션이 끝날 때까지 대기(X)

 ④ check point를 수행(X)

 ⑤ 처리 중인 모든 SQL문을 abort(취소)시킴

 ⑥ commit, rollback 둘 다 안 시킴

 ⑦ 오라클 재기동 시에 instance가 자동복구됨


2) IMMEDIATE
 ① 새로운 접속 허가(X)

 ② 현 세션이 끝날 때까지 대기(X)

 ③ 현 transaction이 끝날 때까지 대기(X)

 ④ check point를 수행(O)

 ⑤ 처리 중인 SQL문 모두 중지

 ⑥ commit되지 않은 transaction가 있을 땐 모두 rollback시킴

 ⑦ 일반적으로 사용되는 option임


3) TRANSACTIONAL
 ① 새로운 접속 허가(X)

 ② 현 세션이 끝날 때까지 대기(X)

 ③ 현 transaction이 끝날 때까지 대기(O)

 ④ check point를 수행(O)

 ⑤ instance recovery 필요없음


4) NORMAL

 ① 새로운 접속 허가(X)

 ② 현 세션이 끝날 때까지 대기(O)

 ③ 현 transaction이 끝날 때까지 대기(O)

 ④ check point를 수행(O)

 ⑤ instance recovery 필요없음

 ⑥ default option(shutdown = shutdown normal)

 ⑦ 각종자료에서는 default option이라고 하나, 실제로 shutdown만 했을 때 무한대기 상태로 빠져버린다.

   (아, 왜 그럴까.... 하루종일 자료를 찾아봐도 안나오네;;;T_T)


※ 정상 종료와 비정상 종료의 차이는 check point 발생여부이다.

※ startup과 shutdown에 관한 로그는 bdump의 alert<SID>.log에서 확인 가능하다.


NLS_LANG 및 CHARACTER SET 설정 변경

NLS_LANG(언어설정)은 CHARACTER SET(문자설정)이 아니다!!
CHARACTER SET은 DB의 테이블에 입력 가능한 언어를 의미하고,
NLS_LANG은 오라클에서 표시하는 메세지 및 각종 SQL문에 입력가능한 언어를 의미한다.!!


1. NLS_LANG 변경
:언어설정 변경은 OS레벨과 DB레벨 둘 다 수정해야 한다.

1) OS레벨에서 변경(ORACLE 10g 기준)
- WINDOWS
:실행 창 -> regedit -> HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
에서 NLS_LANG값을 AMERICAN_AMERICA.KO16KSC5601로 변경한다.
(변경 값을 JAPANESE_JAPAN.JA16SJIS로 설정하면 일본어로 표시됨)

- LINUX
:오라클 설치 시, 지정해주었던 .bash_profile에서 오라클 언어 환경변수를 다음과 같이 변경한다.
export NLS_LANG = AMERICAN_AMERICA.KO16KSC5601
(리눅스도 마찬가지로, 변경 값을 JAPANESE_JAPAN.JA16SJIS로 설정하면 일본어로 표시됨)

2) DB레벨에서 변경
:먼저 현재 DB의 언어설정을 다음 SQL문으로 확인해보자.

SQL> COL name FORMAT a20
SQL> COL value$ FORMAT a40
SQL> SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_LANGUAGE';

NAME                       VALUE$
-------------------- ----------------------------------------
NLS_LANGUAGE         AMERICAN_AMERICA.KO16KSC5601


NLS_LANGUAGE의 값이 AMERICAN_AMERICA.KO16KSC5601아니라면 다음 SQL문으로
AMERICAN_AMERICA.KO16KSC5601로 변경한다.


SQL> UPDATE sys.props$ SET value$ = 'AMERICAN_AMERICA.KO16KSC5601'
  WHERE name = 'NLS_LANGUAGE';

1 행이 갱신되었습니다.

SQL> commit;

커밋이 완료되었습니다.


2. CHARACTER SET 변경

현재의 문자설정을 다음 SQL문으로 확인해보자.


SQL> COL name FORMAT a35
SQL> COL value$ FORMAT a35
SQL> SELECT name, value$ FROM sys.props$ WHERE name LIKE '%CHARACTERSET%';

NAME                                              VALUE$
----------------------------------- -----------------------------------
NLS_CHARACTERSET                       KO16KSC5601
NLS_NCHAR_CHARACTERSET           KO16KSC5601

SQL>

NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET 의 값이 KO16KSC5601아니라면
다음 SQL문으로 KO16KSC5601로 변경한다.


SQL> UPDATE sys.props$ SET value$='KO16KSC5601' WHERE name='NLS_CHARACTERSET';

1 행이 갱신되었습니다.

SQL> UPDATE sys.props$ SET value$='KO16KSC5601' WHERE name='NLS_NCHAR_CHARACTERSET';

1 행이 갱신되었습니다.

SQL> commit;

커밋이 완료되었습니다.

참고로, NLS LANG과 CHARACTER SET을 일본어로 변경하고자 하는 경우엔
다음 SQL문을 실행하면 된다.

--NLS LANG 변경
UPDATE sys.props$ SET value$ = 'JAPANESE' WHERE name = 'NLS_LANGUAGE';

--CHARACTER SET 변경
UPDATE sys.props$ SET value$='JA16SJIS' WHERE name='NLS_CHARACTERSET';
UPDATE sys.props$ SET value$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET';


2009년 11월 14일 토요일

ORACLE 10g(Release 2) ARCHITECTURE

오라클10g 아키텍처다.

아키텍처만 전부이해해도 오라클 실력이 많이 늘텐데 ㅠ.ㅠ

아~ 어렵다;;;