2007년 12월 22일 토요일

2007년 12월 15일 토요일

datafile + redo log 파일 위치 변경하기.

- 데이터 파일의 위치를 변경하여 오라클을 올려보겠다.

- 이동파일은 데이터 파일 + redo log 파일이다.

- 테스트 환경은 : redhat9 + oracle 9.2.0.4 / vmware 상에서 실시

- 현재 dbf 파일들이  OS 영역에 위치하고 있으므로 디스크 하나 추가후 oradata로 마운트하고 datafile 과 redolog 파일의 위치를 바꾸어 오라클을 정상 가동 시키겠다.

 

- 현재상황

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              14G  8.4G  4.6G  65% /
/dev/sda1              99M  9.3M   85M  10% /boot
/dev/sdb1             5.0G  2.1G  2.6G  45% /backup
none                  147M     0  147M   0% /dev/shm

- 데이터 파일 위치

SQL> select name from v$datafile ;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/orcl/system01.dbf
/oracle/oradata/orcl/undotbs01.dbf
/oracle/oradata/orcl/cwmlite01.dbf
/oracle/oradata/orcl/drsys01.dbf
/oracle/oradata/orcl/example01.dbf
/oracle/oradata/orcl/indx01.dbf
/oracle/oradata/orcl/odm01.dbf
/oracle/oradata/orcl/tools01.dbf
/oracle/oradata/orcl/users01.dbf
/oracle/oradata/orcl/xdb01.dbf

10 rows selected.

- redo log 파일 위치

SQL> col member format a45
SQL> select * from v$logfile ;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ---------------------------------------------
         3         ONLINE  /oracle/oradata/orcl/redo03.log
         2         ONLINE  /oracle/oradata/orcl/redo02.log
         1         ONLINE  /oracle/oradata/orcl/redo01.log

- controlfile 위치

SQL> col name format a40
SQL> select * from v$controlfile ;

STATUS  NAME
------- ----------------------------------------
        /oracle/oradata/orcl/control01.ctl
        /oracle/oradata/orcl/control02.ctl
        /oracle/oradata/orcl/control03.ctl

- 모두 /oracle/oradata/orcl/ 밑에 위치해 있음을 알수 있다.

- datafile 들은 /oradata/datafile 밑에 위치시키고

- redolog file은 /oradata/redolog 밑에 위치시키고

- control file 은 현재의 디렉토리와 /oradata/controlfile/ 밑에 하나를 위치시켜겠다.

 

- 오라클을 정상종료 시킨다.

[oracle@oracle oracle]$ sh oracle_stop.sh

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Mar 16 09:55:26 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 16-MAR-2007 09:55:33

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
The command completed successfully

SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
###################################################################
###################### oracle daemon check ########################
###################################################################
oracle    1473  1472  0 09:37 pts/0    00:00:00 -bash
oracle    1604  1473  0 09:55 pts/0    00:00:00 sh oracle_stop.sh
oracle    1608  1604  0 09:55 pts/0    00:00:00 ps -ef
oracle    1609  1604  0 09:55 pts/0    00:00:00 grep ora

 

- 시스템(리눅스)상에서 디스크 추가 후 /oradata 로 마운트시킨다.(생략)

- 마운트 하고 나서의 정보

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              14G  8.4G  4.6G  65% /
/dev/sda1              99M  9.3M   85M  10% /boot
/dev/sdb1             5.0G  2.1G  2.6G  45% /backup
none                  147M     0  147M   0% /dev/shm
/dev/sdc1             5.0G   33M  4.7G   1% /oradata  <-- 추가된것

 

- 시스템 명령을 이용하여 dbf 파일과 redolog 파일과 controlfile 을 copy한다(copy할것, 괜히 move 했다가 안올라오면 원복시켜야함으로)

[oracle@oracle oracle]$ more move.sh

#!/bin/bash

cp /oracle/oradata/orcl/system01.dbf /oradata/datafile
cp /oracle/oradata/orcl/undotbs01.dbf /oradata/datafile
cp /oracle/oradata/orcl/cwmlite01.dbf /oradata/datafile
cp /oracle/oradata/orcl/drsys01.dbf /oradata/datafile
cp /oracle/oradata/orcl/example01.dbf /oradata/datafile
cp /oracle/oradata/orcl/indx01.dbf /oradata/datafile
cp /oracle/oradata/orcl/odm01.dbf /oradata/datafile
cp /oracle/oradata/orcl/tools01.dbf /oradata/datafile
cp /oracle/oradata/orcl/users01.dbf /oradata/datafile
cp /oracle/oradata/orcl/xdb01.dbf /oradata/datafile

cp /oracle/oradata/orcl/redo03.log /oradata/redolog
cp /oracle/oradata/orcl/redo02.log  /oradata/redolog
cp /oracle/oradata/orcl/redo01.log  /oradata/redolog


cp /oracle/oradata/orcl/control03.ctl /oradata/controlfile

- 왠만하면 스크립터를 간단히 만들어서 수행하기 바란다. 나중에 내가 멀했는지 모르는건 골치아프다.

- 자 이제 pfile(pfile 로 오라클 가동중이였으므로) 을 고쳐서 controlfile 의 위치를 수정해주고 오라클을 마운트 단계까지 올린다.

[oracle@oracle dbs]$ vi initorcl.ora

*.aq_tm_processes=1
*.background_dump_dest='/oracle/admin/orcl/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl','/oradata/controlfile/control03.ctl'

 

SQL> startup mount
ORACLE instance started.

Total System Global Area  236000356 bytes
Fixed Size                   451684 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL>

 

- 데이터베이스 이름을 rename 한다. 이것도 간단한 script 를 만들어서 수행한다.

[oracle@oracle oracle]$ more rename.sh

alter database rename file '/oracle/oradata/orcl/system01.dbf' to '/oradata/datafile/system01.dbf' ;
alter database rename file '/oracle/oradata/orcl/undotbs01.dbf' to '/oradata/datafile/undotbs01.dbf';
alter database rename file '/oracle/oradata/orcl/cwmlite01.dbf'to '/oradata/datafile/cwmlite01.dbf' ;
alter database rename file '/oracle/oradata/orcl/drsys01.dbf' to '/oradata/datafile/drsys01.dbf' ;
alter database rename file '/oracle/oradata/orcl/example01.dbf' to '/oradata/datafile/example01.dbf' ;
alter database rename file '/oracle/oradata/orcl/indx01.dbf' to '/oradata/datafile/indx01.dbf' ;
alter database rename file '/oracle/oradata/orcl/odm01.dbf' to '/oradata/datafile/odm01.dbf' ;
alter database rename file '/oracle/oradata/orcl/tools01.dbf' to '/oradata/datafile/tools01.dbf' ;
alter database rename file '/oracle/oradata/orcl/users01.dbf' to '/oradata/datafile/users01.dbf' ;
alter database rename file '/oracle/oradata/orcl/xdb01.dbf' to '/oradata/datafile/xdb01.dbf' ;

alter database rename file '/oracle/oradata/orcl/redo03.log' to '/oradata/redolog/redo03.log' ;
alter database rename file '/oracle/oradata/orcl/redo02.log'  to '/oradata/redolog/redo02.log';
alter databsse rename file '/oracle/oradata/orcl/redo01.log'  to '/oradata/redolog/redo01.log';

 

 

SQL> @rename.sh

Database altered.

.

.

.

..


SQL> alter database open ;

Database altered.

 

- 자 이제 다 잘돼서 올라왔다. 정보를 확인해보고 기존의 dbf 파일과 redolog 파일은 지우든지 내버려두든지 알아서 하면 된다(내버려두면 cold 백업본이 되는 셈이다.)

 


SQL> select name from v$datafile
  2  ;

NAME
--------------------------------------------------------------------------------
/oradata/datafile/system01.dbf
/oradata/datafile/undotbs01.dbf
/oradata/datafile/cwmlite01.dbf
/oradata/datafile/drsys01.dbf
/oradata/datafile/example01.dbf
/oradata/datafile/indx01.dbf
/oradata/datafile/odm01.dbf
/oradata/datafile/tools01.dbf
/oradata/datafile/users01.dbf
/oradata/datafile/xdb01.dbf

 

SQL> select * from v$logfile ;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ---------------------------------------------
         3 STALE   ONLINE  /oradata/redolog/redo03.log
         2         ONLINE  /oradata/redolog/redo02.log
         1         ONLINE  /oracle/oradata/orcl/redo01.log

- 들고갈때 덧글.. 출처를 명시해 주기 바랍니다.

2007년 12월 1일 토요일

12월 휴가테르메덴에서

테르메덴으로 출발하는 모습... 현서가 무거운 가방을 들고 차로 가는 모습..(아파트 주차장에서 출발..)

아빠랑 점심을 기다리며 이야기하는 모습.. "저기 번호가 보이면 가서 가져오면되 현서야.." (2층식당에서 점심식사)

현서와 잠자는 모습... 현서 많이 피곤했나보다.. (2층 휴게소에서 취침)

아빠와 같이 휴게실에서 음료수한잔...

수영 후 집에가기전 ..

저녁 이천 쌀밥집에서... 맛있는 저녁이었당... 정일품에 갈려고 했는데... 아쉽게 못찾고 ..담에 갈땐 ^^

저녁 식사한곳에서 휴대폰을 잊어버려 어쩔수 없이 엔젤 서비스 받아 휴대폰 빌림

2007년 11월 21일 수요일

왕벌의 비행 악보

 

Rimsky Korsakov - 왕벌의비행 Maksim Ver.

 

막심므라비차 (Maksim Mrvica) 왕벌의 비행 악보

 

왠지 Rimsky Korsakov보다 Maksim Ver.이 더 유명해진...

2007년 11월 17일 토요일

컨트롤키 사용 못하게 하는 KeyCode 및 KeyCodeList

1.컨트롤키 사용 못하게 하고 function 키도 사용 못하게 하는 자바스크립트

<script language="javascript">
function processKey()
{
    if((event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82)) ||

           (event.keyCode >= 112 && event.keyCode <= 123) || event.keyCode == 8)
    {
       event.keyCode = 0;
       event.cancelBubble = true;
       event.returnValue = false;
    }
}
document.onkeydown = processKey;
</script>

2.키코드 알아내는 스크립트

<html>
<head>
<script>
function key_check(){
alert("키번호는 [" +event.keyCode+ "] 입니다.");
}
</script>
</head>
<body onKeyDown='key_check();'>
알고싶은 키패드를 꽉! 눌러주세요...ㅡㅡ;
</body>
</html>

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

event.KeyCode 리스트

←(백스패이스) = 8
TAB = 9
ENTER = 13
SHIFT = 16
CTRL = 17
ALT = 18
PAUSEBREAK = 19
CAPSLOOK = 20
한/영 = 21
한자 = 25
ESC = 27

스패이스 = 32
PAGEUP = 33
PAGEDN = 34
END = 35
HOME =36

←(중간) = 37
↑(중간) = 38
→(중간) = 39
↓(중간) = 40

INSERT = 45
DELETE = 46

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57

A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 76
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
Z = 90

윈도우(왼쪽) = 91
윈도우(오른쪽) = 92
기능키 = 93

0(오른쪽) = 96
1(오른쪽) = 97
2(오른쪽) = 98
3(오른쪽) = 99
4(오른쪽) = 100
5(오른쪽) = 101
6(오른쪽) = 102
7(오른쪽) = 103
8(오른쪽) = 104
9(오른쪽) = 105


.(오른쪽) = 110
/(오른쪽) = 111
*(오른쪽) = 106
+(오른쪽) = 107
-(오른쪽) = 109

F1 = 112
F2 = 113
F3 = 114
F4 = 115
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
F10 = 121
F11 = 122
F12 = 123

NUMLOCK = 144
SCROLLLOCK = 145
=(중간) = 187
-(중간) = 189
`(왼쪽콤마) = 192
\(중간) = 220

 

출처:http://phpschool.com/bbs2/inc_view.html?id=9722&code=tnt2&start=0&mode=search&field=title&search_name=&operator=or&period=all&category_id=&s_que=event

2007년 11월 15일 목요일

apache+tomcat 5 사용시 get 한글깨짐 해결

[Apache HTTPD] 한글 URL 해석문제 mod_url 사용
Apache를 웹 서버로 쓰면서 서버 인코딩이 EUC-KR로 설정되어 있고, 그 상태에서 웹 브라우저에서 URL 인코딩이 안 된 상태의 한글 URL을 보내면 서버 측에서 인식을 못하는 문제가 있다.

그리고 사실 이 문제는 IE에서만 나타난다. FireFox는 한글이 들어오면 현재 설정 인코딩에 따라 URL인코딩을 변경해서 보내기 때문이다. 그렇지만 IE는 UTF-8로 보낸다. 그렇다고 IE탓을 할 수만도 없다.

현재 내가 관리해야 할 서버는 Apache 2, Solaris 8 이며 아파치는 SunFreeware에서 받아서 깔았다.

mod_url 홈페이지의 CVS Viewer를 통해서 Apache 1.3 혹은 Apache 2 에 해당하는 mod_url.c 파일을 다운로드 한다. 정확한 버전을 받아야만 한다.

나의 경우 Solaris 에 SunFreeware로 부터 받은 gcc 등이 모두 깔려 있는 상태였다.

그 파일을 컴파일 한다.


$ apxs -i -a -c mod_url.c



apxs 가 실행되지 않는다면 perl의 주소가 잘 못됐기 때문일 수 있다. apxs 파일을 열고 perl의 경로를 확인하고 그 경로에 perl의 링크를 걸어주면 된다.(나의 경우 cd /usr/local/bin;ln -s /bin/perl 을 해야만 했다)
아래를 httpd.conf 에 추가한다.


<IfModule mod_url.c>
  CheckURL On
  ServerEncoding EUC-KR
  ClientEncoding UTF-8
</IfModule>



클라이언트(웹 브라우저)가 UTF-8로 보낸 URL을 아파치가 EUC-KR로 재해석한다.

그리고 또 다른 문제가 있는데, 아파치를 거쳐서 JSP로 전달되는 파라미터들은 필히!! URLEncoding을 해야만 한다.
URL인코딩을 안하면 한글 파라미터들을 아파치가 UTF-8 인코딩으로 간주하고 엉뚱한 문자로 바꿔버린 상태로 JSP에 전달되고 JSP는 그걸 EUC-KR로 가정해버리게 되기 때문이다.

아파치를 사용하던 안 하던 무조건 URLEncoding을 해서 파라미터를 넘기는 것은 필수이다!!


추가 : URLEncoding을 하는 것이 필수라는 사실은 변함이 없지만, 아파치 + mod_url을 사용할 경우 JSP에 넘기는 파라미터에 한글등이 들어가 있을 때 URLEncoding이 된 값 조차도 인코딩을 마음대로 변경시켜버리는 문제가 있다. 현재 해결책을 찾는 중.

Apache가 GET 방식의 파라미터 값의 인코딩을 변경하는 문제 해결
이 문제는 사실 아파치의 문제가 아니라 Tomcat 5.x 의 문제였다. server.xml의 mod_jk 로 연결하는 커넥터 설정 부분에다가도 URIEncoding="euc-kr"이 필요하다.
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" URIEncoding="euc-kr"/>


참조 :
 http://kltp.kldp.org/stories.php?story=01/01/29/5413242

2007년 11월 3일 토요일

큐브공식

<색배치1>
▶ 인쇄용 다운로드(한글97)



※ 기호 설명
큐브를 돌릴때 어떤 면을 어떻게 돌린다라는 것을
다음의 기호로써 약속한다. (외국의 여러 솔루션들도 동일한 기호 사용)
빨간색을 정면으로 두고 회전시키는 그림이다.

Right face
R : 오른쪽면을 시계방향으로 90°돌린다.



R' : 오른쪽면을 반시계방향으로 90°돌린다.



R2 : 오른쪽면을 180°돌린다.



Left face
L : 왼쪽면을 시계방향으로 90°돌린다.



L' : 왼쪽면을 반시계방향으로 90°돌린다.



L2 : 왼쪽면을 180°돌린다.



Front face
F : 정면을 시계방향으로 90°돌린다.



F' : 정면을 반시계방향으로 90°돌린다.



F2 : 정면을 180°돌린다.



Back face
B : 뒷면을 시계방향으로 90°돌린다.



B' : 뒷면을 반시계방향으로 90°돌린다.



B2 : 뒷면을 180°돌린다.



Up face
U : 윗면을 시계방향으로 90°돌린다.



U' : 윗면을 반시계방향으로 90°돌린다.



U2 : 윗면을 180°돌린다.



Down face
D : 밑면을 시계방향으로 90°돌린다.



D' : 밑면을 반시계방향으로 90°돌린다.



D2 : 밑면을 180°돌린다.



※ 기호이해 확인용 패턴 만들기









동영상 보기


위에 설명된 기호들을 이해했다면 다음 단계로 진행한다.
※ 맞추는 순서























1단계 - 한면 십자 맞추기




처음 시작하는 한면을 십자(+)모양으로 맞추는 단계이다.
십자로 맞추되 위 그림처럼 이웃한 네면의 중앙조각의 색에 각각 일치되게 맞춘다.
다음은 여러상황에서 맞추는 방법들인데 한가지만 있는 것은 아니다.
공간지각력을 이용해서 다른방법들도 찾아보자















































































2단계 - 네 귀를 맞춰 첫째줄 완성하기




네 귀를 제자리에 맞게 한면을 맞춰서 첫째줄을 완성하는 단계이다.
우선 밑의 그림처럼 윗면의 색이 밑줄에서 옆을 바라보는 기본형의 귀퉁이 조각을 찾는다.









밑줄을 돌려서 귀퉁이 조각을 들어갈 자리 밑에 놓고 다음과 같은 방법으로 맞춘다.
















기본형이 아닌 경우는 다음과 같은 방법으로 기본형으로 만들어 준다.

































3단계 - 둘째줄 완성하기 (맞춘면을 밑으로 둔상태에서 두줄완성)




둘째줄의 네 모퉁이를 맞춰서 두줄을 완성하는 단계이다.
우선 셋째줄의 모서리 중앙 조각(두가지색이 붙어있는 조각)중에서 윗면의 색(노란색)이 없는 조각을 찾는다.
그 조각을 기준으로 밑에 두줄을 돌려서 그림처럼 옆면의 중앙조각의 색과 일치되게한다.
그 다음 그 조각이 왼쪽 모퉁이로 들어가야 맞는지 오른쪽 모퉁이로 들어가야 맞는지를 파악한 후
A,B결합중 해당하는 결합의 방법으로 맞춘다.
















동영상 보기
이 방법으로 맞출때 이동되는 자리의(화살표가 가리키는) 조각은 셋째줄로 이동 되어진다.
그래서 셋째줄에 윗면의색이 없는 조각이 없을 때 즉, 윗면의 색이 없는 조각이
둘째줄 모퉁이에 들어가 있을 때 이 방법으로 맞춰서 셋째줄로 빼낸다.








4단계 - 셋째줄의 윗면을 십자로 맞추기




셋째줄 윗면의 색(노란색)을 십자(+)모양으로 맞추는 단계이다.







기본형에서 밑의 방법대로 맞추면 십자로 완성된다.







A의 경우도 같은 방법으로 맞춘다. 그러면 'ㅡ'형태가 되는데 옆으로 돌려서
B의 형태로 만들어주고 한번더 같은 방법으로 맞추면 기본형이 된다.







5단계 - 셋째줄의 모서리 중앙 네조각을 제위치에 넣기




십자로 맞춘 네조각들의 위치를 바꿔 제위치에 넣는 단계이다.
윗면(노란색)을 십자로 맞췄는데 네조각 모두가 제위치가 아닌상태는
밑의 두가지 경우처럼 두면만 맞는 경우 뿐이다.
(만일 한면의 색만 일치한다면 윗면을 시계방향이나
반시계방향으로 90°회전하면 A의 형태처럼 이웃한 두면의 색이 일치된다.)











모서리 중앙의 네조각중 이웃한 두조각이 맞는 A의 경우는
이웃한 두면중 왼쪽면을 정면으로 두고 다음의 방법으로 맞춘다.











서로 반대편의 두조각이 일치하는 B의 경우는 C의 방법으로 맞추면
이웃한 두조각이 일치하게된다. 만약 일치되는 조각이 없을경우 윗면을
180°회전하면 두조각이 일치하게된다.







6단계 - 셋째줄의 윗면 완성하기




셋째줄 귀퉁이 네조각 윗면의 색을 맞춰서 윗면을 완성하는 단계이다.































기본형의 경우 밑의 방법대로 하면 윗면이 완성된다.









C,D,E,F의 경우 위와 같은 방법을 사용하면 기본형이되고
A,B의 경우 같은 방법을 사용하면 각각 D,E의 형태가 된다.









7단계 - 셋째줄 네귀를 제자리에 넣어 완성하기




네귀를 제자리에 넣어 여섯면을 완성하는 마지막 단계이다.









A의 경우와 같이 한 개의 맞은 조각이 있을 때 다음의 방법으로 맞추어 완성한다.




















틀린 세 개의 조각이 반시계방향으로 이동돼야 할 때는 맞은조각을 오른쪽 뒤로 놓고
C의 방법으로 맞추고 시계방향으로 이동돼야 할 때는 맞은조각을 왼쪽 뒤로 놓고
D의 방법으로 맞추면 완성된다.
특히 C의 밑줄친 기호는 6단계의 방법과 같음을 알 수 있다.
D의 방법도 C의 방법에 좌,우가 대칭되는 방법이다.
하나도 맞은 조각이 없는 B의 경우는 노란색면을 윗면으로 하고
아무면이나 정면으로 두고 CD의 방법을 사용하면 한조각이 맞게된다.