Linux Oracle 설치와 활용(Ⅰ)
출처: http://www.lug.or.kr/docs/LINUX/others/7-4.htm
이수준 (dislevel@newhuman.org)
|
서 론
목 적
http://technet.oracle.com http://kldp.org</p><p>참고 한 글-오라클 매뉴얼 </p> 시스템에서는 2배 크기의 스왑영역이 권장된다.</p><p>디스크 : 최소한 4개(At least four devices) : Oracle 소프트웨어 설치를 위해 하나, 나머지 세개는 OFA호환 데이터베이스를 생성하기 위해 사용된다. - 활용의 목적이 아닐 경우 한 개의 디스크라도 상관없다. - 활용의 목적이라면 최소 2개의 물리적 디스크 추천 (리눅스, 오라클 ) - 다운로드 받은 파일과 압축을 풀고 설치할 용량으로 최소 1기가 이상이 필요하다.</p><p>Operating System : Linux 2.0.34 - 오라클의 리눅스 팀은 실제 2.0.33 이상이라고 한다. - 필자는 참고로 국내에서 유명한 알짜 리눅스 5.2를 사용하였으며 커널은 2.0.36을 사용하였다.</p><p>System Libraries : GNU C Library, version 2.0.7 - 문서상에서는 2.0.7이상을 요구하고 있으나 오라클의 리눅스 개발 팀으로부터의 설명으로는 실제 2.0.6이상이면 된다고 한다. GLIBC 2.1.x 용으로는 패치 파일이 따로 나와 있다. 아직 테스트는 해보지 못했다.</p><p>Window Manager : 어떤 X 윈도우 시스템도 가능 -솔라리스에서는 X-window 상에서 관리할 수 있는 svrmgrm 이 있지만 Linux에서는 현재 커맨드 라인 모드에서만 작동하는svrmgrl 만이 존재한다.</p>
가. root 로 하여야 할일
/usr/src/ora 상에 다음과 같은 파일과 디렉토리가 생성되었을 것이다.</p><p> # ls DST.LST network/ plsql/ nlsrtl/ precomp/ RELDESC.TXT ocommon/ rdbms/ bin/ oemagent/ slax/ oracore/ sqlplus/ jdbc/ orainst/ svrmgr/ lib/ ord/ unix.prd otrace/ unixdoc/</p><p>3. Create Mount Points 이제 오라클을 설치할 위치를 정하는 단계이다. 여기서는 /home/oracle에 오라클을 설치 하는 것으로 가정하겠다. 이 위치에 오라클을 설치할 하드 디스크 파티션을 마운트 시켜야 한다. - 대부분의 사용자가 하나의 파티션에 리눅스를 설치할 것이다. 그렇지만 만일 두개 이상의 하드디스크 파티션을 이용할 것이라면 /etc/fstab의 내용을 적합하게 고쳐야 한다. 각 파티션의 내용을 다음에 설명하도록 하겠다.</p><p>4. DBA group 생성 /etc/group 파일에 dba라는 그룹을 생성한다.</p><p> # groupadd dba 혹은 직접 vi edit로 /etc/group을 편집할 수도 있다.</p><p>5. 리눅스 커널 설정 오라클8 서버의 SGA 구조를 수용하기 위해 리눅스 커널의 Interprocess Communication (IPC) 파라메터들을 설정해야 한다. 시스템이 SGA를 수용하기에 충분한 shared 메모리를 가지지 않았다면 데이터베이스를 실행할 수 없을 것이다.</p><p>다음에 상응하는 커널 파라메터를 설정한다.</p><p>maximum size of a shared memory segment(SHMMAX) maximum number of shared memory segments in the system(SHMMNI) maximum number of shared memory segments a user process can attatch(SHMSEG) maximum amount of shared memory that can be allocated system-wide(SHMMNS) SHMMAX*SHMSEG에 의해 허용되는 전체 shred 메모리 크기가 결정된다.</p><p>ㄱ) SHMMAX = 4294967295 : 단일 공유 메모리 세그먼트의 최대크기(바이트단위) ㄴ) SHMMIN = 1 : 단일 공유메모리 세그먼트의 최소크기(바이트) ㄷ) SHMIMNI = 100 : 공유메모리 지시자(identifiers)의 갯수 ㄹ) SHMSEG = 10 : 각 프로세스에 부여될 수 있는 공유메모리 세그먼드의 최대 갯수 ㅁ) SEMMNS = 200 : 시스템 내의 세마포어 갯수 ㅂ) SEMMNI = 70 : 세마포어 지시자(identifiers)의 갯수. SEMMNI은 동시에 생성될 수 있는 세마포어 갯수를 결정한다. ㅅ) SEMMSL = PROCESSES 초기화 파라메터의 값과 같거나 크도록, 하나의 세마포어 안에 존재할 수 있는 세마포어들의 최대 갯수. 오라클 프로세스들의 최대 갯수와 같아야 한다.</p><p>솔라리스의 경우에는 다음의 값들을 /etc/system 파일에서 설정해 주어야 하지만, 설정을 하지 않아 문제가 발생한적은 없었다. 기본 커널 상태로 놓고 인스톨하여도 무방하다. (레드헷의 디폴트 커널이든 다시 컴파일한 커널이든)</p><p>6. 오라클 관리자 계정 생성 adduser 혹은 useradd 로 dba그룹에 속하는 유저 oracle을 생성한다.</p>
# adduser oracle ㄴ) vi /etc/passwd 명령을 사용하여 oracle user 의 설정 값을 위에서 설명한 것대로 바꾼다. - dba gid와 같아야 한다.</p> 오라클 인스턴스에 대한 정보는 oracle 소유의 oratab 파일에 저장된다. 하지만 이 스크립트를 root로 실행해서 /etc 디렉토리에 oratab 파일이 생성되도록 한다.</p><p> 실제 인스톨과정에서 oratab.sh을 실행하면 ORACLE_OWNER환경변수가 설정되어 있는지 묻고 있다. 따라서 ORACLE_OWNER을 다음과 같이 설정한다.</p>
나. oracle user 로 할 일
( sh을 사용할 경우 .profile을 수정한다. redhat 리눅스를 기준으로 설명한다.) oracle로 접속하여 다음과 같이 .profile을 만든다. RedHat에서는 .bash profile 이다. </p>
ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib export ORACLE_SID=linux export ORACLE_TERM=386 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data export PATH=$PATH:$ORACLE_HOME/bin export TMPDIR=/tmp export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip umask 022 (위에서 export 다음의 줄을 export 뒤에 나와야 한다.)</p> 각 설정에 대한 설명
오라클을 /home/oracle에 설치하기로 하였으므로 /home/oracle/app/oracle/product/8.0.5로 지정된다.</p><p>LD_LIBRARY_PATH : 오라클의 동적/정적 라이브러리의 경로를 나타내는 환경변수로 Pro*C나 PHP등을 사용할 때 중요하게 적용된다.</p><p>ORACLE_SID : 오라클 인스턴스의 이름이다. 영문자로 3-4글자로 정해준다. 필자는 인스턴트의 이름을 linux 라고 지었다.</p><p>그 외의 환경변수는 예제에 나와 있는 데로 하면 된다.</p><p>지역언어설정 환경변수 NLS_LANG은 모든 인스톨이 끝나고 설명하도록 하겠다.</p> 환경변수 갱신
# source .bash_profile 하여 환경변수 내용을 업데이트한다. 또는 oracle계정으로 다시 로그인한다.</p>
다. 실제적인 Oracle 의 설치
</p>
ㄴ) oracle 설치 디렉토리로 이동 # cd /usr/src/ora/orainst ㄷ) orainst를 실행한다. # ./orainst 를 실행한다.</p> /home/oracle로 설정한다.</p><p>6. .bash_profile에서 설정한 것처럼 $ORACLE_HOME 디렉토리를 설정한다.</p><p>7. ORACLE_BASE 와 ORACLE_HOME을 설정한다.</p><p>8. log 파일이 남을 위치를 설정한다.</p><p>9. Install from CD-ROM을 선택하여야 한다.</p><p>10. ORACLE_SID를 .bash_profile에서 설정한 것과 같이 linux로 선택한다.</p><p>11. NLS 의 설정 - 여기에서는 일단 ALL language를 선택한다.</p><p>12. install 이 끝이 난 후 root.sh을 실행하라는 메시지가 출력된다. 반드시 install 후에는 root.sh을 실행하여야 한다.</p><p>13. Software Asset Manager에서 설치한 부분을 선택한다.여기에서는 모든 부분을 설치 한다고 가정을 한다.</p><p>14. 13)에서처럼 Install을 선택한 후 몇 가지 사항에 대하여 OK를 한 후 OSOPER group (dba) 를 설정한다.</p><p>15. 생성할 DB Object를 선택한다. - Filesystem-Based Database을 선택한다. </p><p>16. Database Mount Points를 정한다. 설치도중에 3개의 mount points를 기입하라고 하는데 물리적으로 분리된 하드가 3개 존재하면 가장 좋지만 실제 PC에서는 힘든 일이다. 이렇게 3곳으로 데이터를 분리하는 이유는 데이터베이스가 하드 디스크로의 읽기/쓰기를 하는 과정에서 경합을 줄이고 에러 및 문제의 발생시 자연스런 복구를 위한 것이다. 하지만 오라클 프로그램과 동일한 하드디스에 밖에 인스톨 할 공간이 없다면 여기에 모두 동일한 경로를 적어주면 된다.</p><p> 필자도 오라클을 설치할 때 /home/oracle에 오라클 프로그램을 설치하고 데이터 파일을 위한 3개의 마운트 포인트도 /home/oracle로 설정하였다.</p><p>17. Character Set 설정 - 한글을 쓰기 위해서KO16KSC5601로 설정한다.</p><p>18. National Character Set 설정</p><p>19. System password 의 설정 (보통 manager라고 password를 입력한다. )</p><p>20. sys password 의 설정 ( manager로 password를 설정. )</p><p>21. dba password 의 설정 ( no라고 설정한다. )</p><p>22. TNS Listener Password 의 설정</p><p>23. Configure MTS and start SQL*Net listener 설정은 no로 한다.</p><p>24. Control files 의 위치 확인.</p><p>25. 기본적인 데이터베이스 관련 파일의 위치와 용량의 확인</p><p>26. JDBC 셋의 선택 (default로 선택을한다.)</p><p>27. CTX Temporary Tablespace을 선택한다.</p><p>28. CTX demo table을 설치할 것을 선택한 후에, Oracle Document를 설치할 것에 대하여 셋팅한다. 디렉토리를 설정한 후 pdf, html, both 어떤 형식으로 설치할 것인지 묻는데 그때에는 자신이 원하는 항목 중에서 한가지를 선택하면 된다.</p><p>29. 이제 인스톨이 시작되기 시작하고 그래프가 올라가기 시작한다. 하염없이 기다리자 -_-;</p><p>30. 설치완료 화면. </p><p>31. 설치 검증 설치가 모두 끝났다면 $ORACLE_HOME/orainst 디렉토리에 생성된 root.sh을 root 계정 으로 실행 시킨다. </p><p> ㄱ) root로 로그인한다. ㄴ) cd $ORACLE_HOME/orainst ㄷ) ./root.sh</p>
- /etc/oratab 아래에 다음과 같은 내용이 추가되었다.</p><p>*:/home/oracle//app/oracle/product/8.0.5:N linux:/home/oracle/app/oracle/product/8.0.5:N</p>
라. Oracle Database 의 구동
Connected. Oracle Server Manager Release 3.0.5.0.0 - Production</p><p> (c) Copyright 1997, Oracle Corporation. All Rights Reserved.</p><p> Oracle8 Release 8.0.5.0.0 - Production PL/SQL Release 8.0.5.1.0 - Production</p><p> SVRMGR> connect internal - internal 접속 Connected.</p><p> SVRMGR> startup; ORACLE instance started. Total System Global Area 4754704 bytes Fixed Size 48400 bytes Variable Size 4222976 bytes Database Buffers 409600 bytes Redo Buffers 73728 bytes Database mounted. Database opened.</p><p> SVRMGR> exit - svrmgrl 의 종료 Server Manager complete.</p><p>3. lsnrctl 명령을 이용하여 Oracle listener을 가동시킨다. - lsnrctl start : Oracle listener 의 가동 - lsnrctl stop : Oracle listener 의 멈춤 $ lsnrctl start</p><p>LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 21:56:51 (c) Copyright 1997 Oracle Corporation. All rights reserved.</p><p>Starting /home/oracle/app/oracle/product/8.0.5/bin/tnslsnr: please wait...</p><p>TNSLSNR for Linux: Version 8.0.5.0.0 - Production System paramete rfile is /home/oracle/app/oracle/product/8.0.5/network/admin/ listener.ora Log messages written to /home/oracle/app/oracle/product/8.0.5/network/log/ listener.log Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=6)(KEY=linux)) Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=PNPKEY)) Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=11)(HOST=192.168.1.1)(PORT=1521))</p><p>Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=linux)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 8.0.5.0.0 - Production Start Date 26-APR-99 21:56:56 Uptime 0 days 0 hr. 0 min. 1 sec Trace Level off Security OFF SNMP OFF Listener Parameter File /home/oracle/app/oracle/product/8.0.5/network/admin/ listener.ora Listener Log File /home/oracle/app/oracle/product/8.0.5/network/log/ listener.log Services Summary... extproc has 1 service handler(s) linux has 1 service handler(s) The command completed successfully</p><p>- 오라클 리스너가 제대로 실행이 되지 않을 경우 listener.ora, tnsnames.ora을 알맞게 편집한다. (/home/oracle/app/oracle/product/8.0.5/network/admin 위치하여 있다.)</p><p>다음은 tcp/ip 프로토콜을 기준으로 하여서 listener.ora를 알맞게 편집한 것이다.</p><p># # Installation Generated Net8 Configuration # Version Date: Jun-17-97 # Filename: Listener.ora # LISTENER = (ADDRESS_LIST = (ADDRESS= (PROTOCOL= IPC)(KEY= linux)) (ADDRESS= (PROTOCOL= IPC)(KEY= PNPKEY)) (ADDRESS= (PROTOCOL= TCP)(Host= 192.168.1.1) (Port= 1521)) - database 가 설치되어 있는 ip를 적어준다. ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME= 192.168.1.1.) - database 가 설치되어 있는 ip를 적어준다. (ORACLE_HOME= /home/oracle/app/oracle/product/8.0.5) (SID_NAME = linux) - linux sid , 설치도중 적어준 sid를 적어준다. ) (SID_DESC = (SID_NAME = extproc) (ORACLE_HOME = /home/oracle/app/oracle/product/8.0.5)</p><p> (PROGRAM = extproc) ) ) STARTUP_WAIT_TIME_LISTENER = 0 CONNECT_TIMEOUT_LISTENER = 10 TRACE_LEVEL_LISTENER = OFF</p><p># # Installation Generated Net8 Configuration # Version Date: Oct-27-97 # Filename: Tnsnames.ora # extproc_connection_data = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = linux)) (CONNECT_DATA = (SID = extproc)) ) linux = - oracle alias (DESCRIPTION = (ADDRESS = (PROTOCOL= TCP)(Host= 192.168.1.1) (Port= 1521)) - database 가 설치되어있는 database 의 ip (CONNECT_DATA = (SID = linux)) - oracle sid )</p><p>linux_BEQ = (DESCRIPTION = (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = /home/oracle/app/oracle/product/8.0.5) (argv0 = oraclelinux) (args = ‘(DESCRIPTION = (LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))’) (envs = ‘ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5,ORACLE_SID=linux’) ) )</p><p>4. 이제 다시 lsnrctl start 명령으로 실행하여 Oracle listener을 실행한다. 이제 sqlplus을 실행하여 접속이 되나 확인을 하자. test 용으로 id : scott password : tiger 가 제공됨을 알 수 있다. 이미 설치 중에 system과 sys의 password는 직접 입력하였으므 로, system 혹은 sys로 접속이 가능한지 확인할 수 있다.</p><p>5. sqlplus로 접속이 확인되었으면 이제 listener을 종료한 후 database를 종료시켜 보자.</p><p>- listener 의 종료 $ lsnrctl stop</p><p>LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 22:18:35</p><p>(c) Copyright 1997 Oracle Corporation. All rights reserved.</p><p>Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=linux)) The command completed successfully</p><p>- oracle database 의 shutdown $ svrmgrl Oracle Server Manager Release 3.0.5.0.0 - Production</p><p>(c) Copyright 1997, Oracle Corporation. All Rights Reserved.</p><p>Oracle8 Release 8.0.5.0.0 - Production PL/SQL Release 8.0.5.0.0 - Production</p><p>SVRMGR> connect internal Connected. SVRMGR> shutdown Database closed. Database dismounted. ORACLE instance shut down. SVRMGR> exit Server Manager complete.</p><p>$</p>
마. Oracle Database 의 사용자 등록
Oracle8 Server Release 8.0.5.0.0 - Production Release PL/SQL Release 8.0.5.0.0 - Production</p><p>SQL> create user <user> identified by <psw> 2 default tablespace users 3 temporary tablespace temp;</p><p>User created. SQL> grant connect, resource to <user></p><p>Grant succeeded.</p><p>SQL> exit</p><p>Disconnected from Oracle8 Server Release 8.0.5.0.0 - Production Release PL/SQL Release 8.0.5.0.0 - Production</p><p>시스템에 새로운 사용자계정을 생성하였기 때문에 새로운 계정을 가지고 시스템에 로그인 할수 있다. Oracle 데이터베이스에 로그인 하기 위해서는 다음과 같다.</p><p>$ sqlplus <user>/<password></p><p>이 부분이 에러 메시지 없이 수행된다면, 성공적으로 Oracle 데이터베이스를 설치한 것이다.</p>
바. Oracle 데이터 베이스의 자동 실행
설정 예
# This file is used by ORACLE utilities. It is created by root.sh # and updated by the Oracle8 and SQL*Net install procedures. # # A colon, ‘:’, is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, ‘#’, are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third field indicates # to the dbstart utility that the database should, “Y”, or should not, # “N”, be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # linux:/oracle8/app/oracle/product/8.0.5:Y</p><p>init.d & rc.d</p><p>리눅스 시스템의 시작과정이나 종료과정을 변형하여 데이타베이스를 시작시키고 종료 시킬 수 있다. 이것은 매우 쉽지만, 어떠한 Linux(slackware, debian, redhat, etc)시스템을 사용하느냐에 따라 변경될 수 있다는 것을 필자는 지적한다. 이 문서에서는 Redhat Linux 5.2 에서 동작하는 예를 보여줄 것이다. 자신의 Linux 시스템에 따라 수정하기 위해서는 자신의 Linux 시스템 문서 자료를 참고한다. 우선, 우리는 /etc/rc.d/init.d 디렉토리에 있는 dbshut와 dbstart를 실행할 스크립트를 생성할 필요가 있다.</p><p>#!/bin/sh # # /etc/rc.d/init.d/oracle # Description: Starts and stops the Oracle database and listeners # See how we were called.</p><p>case “$1” in start) echo -n “Starting Oracle Databases: “ echo “----------------------------------------” >> /var/log/oracle date +”! %T %a %D : Starting Oracle Databases as part of system up.” >> /var/log/oracle echo “--------------------------------------------” >> /var/log/oracle su - oracle -c dbstart >> /var/log/oracle echo “Done.” echo -n “Starting Oracle Listeners: “ su - oracle -c “lsnrctl start” >> /var/log/oracle echo “Done.” echo “” echo “--------------------------------------------” >> /var/log/oracle date +”! %T %a %D : Finished.” >> /var/log/oracle echo “--------------------------------------------” >> /var/log/oracle touch /var/lock/subsys/oracle ;; stop) echo -n “Shutting Down Oracle Listeners: “ echo “-----------</p><p>---------------------------------” >> /var/log/oracle date +”! %T %a %D : ShutDown Oracle Databases as part of system down.” >> /var/log/oracle echo “--------------------------------------------” >> /var/log/oracle echo “Done.” rm -f /var/lock/subsys/oracle echo -n “Shutting Down Oracle Databases: “ su - oracle -c dbshut >> /var/log/oracle echo “Done.” echo “” echo “--------------------------------------------” >> /var/log/oracle date +”! %T %a %D : Finished.” >> /var/log/oracle echo “-------------------------------------------” >> /var/log/oracle ;;</p><p>restart) echo -n “Restarting Oracle Databases: “ echo “-------------------------------------------” >> /var/log/oracle date +”! %T %a %D : Restarting Oracle Databases as part of system up.” >> /var/log/oracle echo “-------------------------------------------” >> /var/log/oracle su - oracle -c dbstop >> /var/log/oracle su - oracle -c dbstart >> /var/log/oracle echo “Done.” echo -n “Restarting Oracle Listeners: “ su - oracle -c “lsnrctl stop” >> /var/log/oracle su - oracle -c “lsnrctl start” >> /var/log/oracle echo “Done.” echo “” echo “--------------------------------------------” >> /var/log/oracle date +”! %T %a %D : Finished.” >> /var/log/oracle echo “-------------------------------------------” >> /var/log/oracle touch /var/lock/subsys/oracle ;; </p><p>*)</p><p>echo “Usage: oracle {start|stop|restart}” exit 1 esac</p><p>이 파일이 실제적으로 정확히 당신의 시스템에서 데이터베이스를 중지하고 실행시키는지를 확인해야 한다. 에러메세지를 위한 /var/log/oracle인 log 파일을 확인하라. 다음 명령들은 실행수준 2,3,4에 해당하는 데이테베이스를 실행시는 것을 확인 시켜줄 것이다.</p><p>$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle $ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle</p><p>시스템을 재 부팅하거나, 재 실행 시킬 때에 데이터베이스를 중지시키기 위해서 우리는 다음과 같은 연결(link)이 필요한다.</p><p>$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # Halting $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting</p>
마치는 글
그림과 함께 좀 더 명확한 설치법을 소개해 줄 수도 있었지만, 이제 간단한 설치법 정도는 기타 책이나 오라클사 세미나에 가면 쉽게 구할 수 있으므로 기본 설치법에 사용자 등록, 자동 시작/종료를 추가해 첫 글을 마친다. 다음에는 간단한 sqlplus 사용법, Oracle SQL, pro-c 에대해서 알아보고 마지막으로 PHP3와 연동하는 것으로 이 글을 마칠까 한다.</p> |
반응형
'DB > Oracle' 카테고리의 다른 글
| 정기적으로 실행되는 이벤트 처리 쉘 (0) | 2016.02.04 |
|---|---|
| 집합 연산자(UNION, UNION ALL, INTERSECT, MINUS) 사용 예제 (0) | 2016.02.04 |
| 펌 오라클 관리 명령어 요약 (0) | 2016.02.04 |
| 오라클 log, trc 등 관리 정책 및 쉘 스크립트 예시 (0) | 2016.02.04 |
| oracle 11g -ADR 에 관해 (alert log와 tracefile 관리) (0) | 2016.02.04 |