출처 : 유닉스 쉘 바이블 (엘리 퀴클리 지음)에서 발췌.
3.1 grep 명령어


grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정규표현식의 메타문자도 일반 문자로 취급한다.


3.2 정규표현식을 사용하는 grep의 예제
# grep NW datafile
# grep NW d* (d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
# grep '^n' datafile (n으로 시작하는 모든 행을 출력한다.)
# grep '4$' datafile (4로 끝나는 모든 행을 출력한다.)
# grep TB Savage datafile (TB만 인자이고 Savage와 datafile은 파일 이름이다.)
# grep 'TB Savage' datafile (TB Savage를 포함하는 모든 행을 출력한다.)
# grep '5.' datafile (숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
# grep '.5' datafile (.5가 나오는 모든 행을 출력한다.)
# grep '^[we]' datafile (w나 e로 시작하는 모든 행을 출력한다.)
# grep '[^0-9]' datafile (숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
# grep '[A-Z][A-Z] [A-Z]' datafile (대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
# grep 'ss* ' datafile (s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)
# grep '[a-z]{9}' datafile (소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
# grep '(3).[0-9].*1 *1' datafile (숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을 출력한다.)
# grep '(north로 시작하는 단어가 포함된 모든 행을 출력한다.)
# grep '' datafile (north라는 단어가 포함된 모든 행을 출력한다.)
# grep '<[a-z].*n>' datafile (소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)


3.3 grep에 옵션 사용
# grep -n '^south' datafile (행번호를 함께 출력한다.)
# grep -i 'pat' datafile (대소문자를 구별하지 않게 한다.)
# grep -v 'Suan Chin' datafile (문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.
# grep -v 'Suan Chin' datafile > black
# mv black datafile
# grep -l 'SE' * (패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
# grep -w 'north' datafile (패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가 포함된 행만 출력한다.)
# grep -i "$LOGNAME" datafile (환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)


3.4 egrep
egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원  한다. grep와 동일한 명령행 옵션을 지원한다.

3.4.1 egrep 예제
# egrep 'NW|EA' datafile (NW나 EA가 포함된 행을 출력한다.)
# egrep '3+' datafile (숫자 3이 한 번 이상 등장하는 행을 출력한다.)
# egrep '2.?[0-9]' datafile (숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
# egrep ' (no)+' datafile (패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
# egrep 'S(h|u)' datafile (문자 S 다음에 h나 u가 나오는 행을 출력한다.)
# egrep 'Sh|u' datafile (패턴 Sh나 u를 포함한 행을 출력한다.)


3.5 고정 grep 과 빠른 grep
fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지 않는다.
# fgrep '[A-Z]****[0-9]..$5.00' file ([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)


 출처 : empas blog 시스템 뽀사불기 ~~^=,.=^~~ (syk1000)

안녕하세요.. 그동안 너무 변화가 없었던 것 같아서 2005년 봄을 맞아 예전의 약간은 칙칙한 분위기를 벗고 거의 완벽하게 블로그를 지원하도록 바꿔봤습니다.

  도움주신분들
           zog 블로글 - http://www.zog.co.kr
           웹피스 님  - http://webpeace.uu.st/
                        제가 웹피스님의 구성이 넘 맘에 들어서 이분 꺼를 많이 따라했습니다. 웹피스님 홈피에도 글을 남겼는데요..제가 조그는 지금 시작인지라 잘 몰라서 참고로 했습니다. 좀 쓰다 저에게 맞게 수정토록 하겠으니 너그러이 이해해주시길...
           Fudagy 님 - 스킨을 올려주셨는데 지금은 홈피가 안들어가지는군요...
           알릭  님     - http://alik.bo.to
           그외 여러 플러그인, 유용한 팁을 제공해주신 분들께 감사드립니다.

앞으로 많이많이 사용해주세요....
안녕하세요
제가 아침에 극동방송 듣고 오다가 들은 설교인데요 아주 은혜가 많이 되었던지라 여기에 올립니다.

-------------------------------------------------------------------------------------------
대체로 국경일이나 공휴일이 되면 많은 사람들은 쉬고 또 가족과 함께 휴가를 가서 즐겁게 보내려는
생각을 하고 있습니다. 절기는 쉬는 것으로 모두 생각합니다. 그래서 너무 쉬는 날이 많은 것은 좋지
않습니다. 우리나라에서도 공휴일이 너무 많아서 식목일과 제헌절은 공휴일에서 제외한다고 발표하
기도 했습니다. 실제로 로마가 멸망한 것은 공휴일이 너무 많았다고 합니다. 일년에 백 칠십 며칠을
놀았다고 합니다. 그리고 법이 너무 까다롭고 많아서 로마가 망했다고 합니다. 세 번째는 도덕적으로
너무 타락해서 로마가 망했다고 말하고 있습니다. 노는 것, 이것은 일을 하기 위해서 잠깐 휴식이 필
요합니다. 너무 노는 것이 지나치게 되면 나태하게 되고 또 타락하게 되고 방황하게 되는 것입니다.
기독교의 절기는 노는 절기가 아닙니다. 쉬는 절기가 아닙니다. 우리를 새롭게 하는 절기입니다. 기독
교의 절기는 육적인 쾌락을 위해서, 육적인 안식을 위해서 주는 것이 아니라 우리에게 영적인 충전과
우리에게 새로운 새 생명으로, 능력으로 무장하는 것이 기독교의 절기인 것입니다.
  기독교의 절기 가운데 가장 큰 절기는 두말 할 것도 없이 부활절입니다. 예수님께서 이 땅에 오셔서
우리를 위하여 죽으시고 우리를 위해 살아나신 이 고난주간과 함께 있는 이 부활절은 우리에게 생명
줄 과도 같은 것입니다. 고난주간과 부활절에 우리는 주 예수 그리스도와 함께 고난에 참여하고 부활
의 영광을 누려야 하는 것입니다. 기독교는 감상의 종교가 아닙니다. 기독교는 명상의 종교가 아닙니
다. 지식의 종교가 아닙니다. 지식으로 아무리 기독교에 대한 교리를 다 이해했다고 할지라도 예수 그
리스도를 십자가에 못 박히신 주님을 나의 구주로 영접한 경험이 없으면 그것은 생명이 없는 성도인
것입니다. 우리는 성령으로 거듭나고 예수 그리스도의 보혈의 은총을 내 뼛속 깊이깊이 이해하고 주
의 피가 내 안에, 주의 살이 내 생명 안에 있어야 하는 것입니다. 예방주사를 맞은 사람은 모든 전염병
이나 모든 병에서 자유함을 받듯이 예수 그리스도의 부활에 대한 고난에 대한 생명을 얻은 사람은 이
세상에 있는 어떤 저주와 불행이 그를 넘어뜨릴 수가 없는 것입니다. 일년에 한 번씩 찾아오는 이 고
난주간과 부활절에 주님을 만나는 경험, 십자가에 대한 이 새로운 경험만이 우리의 인생을 새롭게 하
고 삶의 새로운 능력을 가져다주는 것입니다.
  예수께서 이 땅에 오셨습니다. 십자가를 지셨습니다. 이 사건 하나가 우리에게 가장 소중한 우리 교
회의 자랑이며 우리의 힘이며 우리의 생명이 되는 것입니다. 그래서 어떤 분들은 기독교의 탄생을 성
탄절 12월 25일이라고 하는데 그 말도 어렴풋이 맞기는 맞습니다. 그러나 확실한 것은 기독교의 생일
은 부활절입니다. 고난주간입니다. 마치 어머니가 새 생명을 낳은 것처럼 주님이 십자가에 피 흘려 죽
으심으로 교회가 탄생되고 성도가 탄생된 것입니다. 그래서 12월 25일은 예수님의 탄생일을 정한 것
이지 그 날이 확실한 것은 아닙니다. 그러나 부활절은 확실한 것입니다. 예수님께서 33년 동안 계시다
가 이 부활절에 이르는 이 모든 하루하루 시간 시간에 대한 것은 성경이 세밀하게 기록하고 있습니
다. 오늘 예수님은 예루살렘에 나귀를 타고 입성하셨습니다. 내일 월요일은 주님께서 성전에 들어가
셔서 깨끗하게 청소하시는 사건이 나옵니다. 화요일은 많은 바리새인들과 성전에서 질문을 받고 거기
에 대한 대답을 하셨습니다. 그리고 수요일에는 가룟 유다가 배반합니다. 목요일에는 겟세마네 동산
에서 기도하시고 제자들과 성만찬을 베풀고 붙들려 가셔서 금요일에 로마 총독 빌라도에게 재판을 받
고 제사장에게 재판을 받아서 아홉시에 십자가를 지시고 오후 네 시에 운명하시게 되는 것입니다. 무
덤에 묻히셨다가 주일날 아침에 부활하신 것 이것은 정확하게 역사요, 놀라운 하나하나의 사건으로
기록되어 있습니다. 그렇습니다. 예수님은 이 땅에 오셔서 우리를 위하여 죽으시고 우리를 위하여 살
아나셨습니다. 주님이 죽으심으로 우리가 살게 되고 주의 십자가로 말미암아 우리는 죄 용서함을 받
은 것입니다. 우리가 아무리 용서함을 받아서 인간관계의 죄악이 화해가 되고 감옥에서 자기가 지은
죄의 대가를 다 받았다 할지라도 그리스도께서 우리 죄를 위하여 씻어 주신 보혈의 은총이 아니면 그
죄악은 내 몸 안에 깊이 뿌리 박혀 있는 것입니다. 그 흔적을 지울 수가 없습니다. 그 죄는 영원히 내
것인 것입니다. 하나님 앞에 해결함을 받아야 죄악의 완전한 자유와 정결함을 얻게 되는 것입니다. 주
님이 십자가를 지심으로 우리 인간의 모든 저주와 질고를 주님은 다 해결하여 주셨습니다. 십자가는
우리를 치료하는, 우리를 바로 세우는, 우리를 모두 살려 주는 생명이 되는 것입니다. 저희가 몇 년 전
에 필리핀에 선교여행을 간 일이 있습니다. 갔다가 해수욕장에서 우리 모든 장로님들과 집사님들, 안
수집사님들과 함께 수영을 하는데 옆에 신혼여행 온 한국사람 부부가 부인을 안고 그 신랑 되는 분이
당황하면서 의사를 찾고 살려달라고 했습니다. 알고 보니 노를 젓다가 잘못 무리를 해서 신부 팔이 빠
져나간 거예요. 그래서 팔이 허수아비처럼 흔들리면서 안았는데 흔들흔들 하면서 고통스럽게 소리를
지르고 사람을 찾았어요. 마침 우리 교회에 김철수 산부인과 원장이 같이 갔습니다. 나는 산부인과가
이럴 때 뭐 할 수 있겠냐? 했는데 놀라운 일이 일어났습니다. 집사님께서 딱 안더니만 팔을 가지고 틀
면서 딱 집어넣으니까 제 자리에 들어가는 거예요. 뼈가 떨꺼덕 하면서 들어가더니 돌려보라고 하니
까 그냥 한 순간에 회복이 되는 거예요. 그렇습니다. 기독교는 명상이 아닙니다. 주님을 직접 만나는
것입니다. 내 모든 못쓰게 된 내 몸과 마음을 십자가에 피 흘리신 주님의 손으로 우리를 제 자리에 넣
어주시고 치료하여 주시고 용서하여 주시고 회복하여 주시고 탕감하여 주시고 살려 주시는 분이 바
로 예수 그리스도인 것입니다. 모든 부끄러움과 죽음과 저주와 멸망에서 우리를 건져주시는 손이 십
자가의 손이요 우리 주 예수 그리스도의 구원의 손이 되는 것입니다.
  사람은 세 가지가 중요하다고 합니다. 하나는 잘 태어나는 것입니다. 하나는 잘 사는 것입니다. 출세
해서 성공하여 잘 사는 것입니다. 하나는 잘 죽는 것입니다. 세 가지가 다 소중하다고 말합니다. 그러
나 예수 그리스도는 이 세 가지가 다 모두 보통 우리들의 삶보다도 비교할 수 없는 정말 불쌍한 삶을
사셨습니다. 태어나신 것은 마구간에 태어나셨고 사신 것은 목수로 사셨고 마지막은 십자가에 가지가
지의 욕을 얻어먹고 침 뱉음을 받고 옷이 다 벗겨져서 엄청난 부끄러움으로 양 손, 양발에 못이 박히
고 옆구리에 창이 찔려서 모든 피를 흘리시면서 주님은 마지막 운명하셨습니다. 이러한 예수 그리스
도를 오늘 우리는 주님을 나의 구주로 믿고 주님을 처참하게 못 박았던 그 로마의 황제가, 로마의 총
독이 예수를 나의 구주로 영접하고 기독교 국가가 되었습니다. 그렇게 죄인으로 하나의 비참한 사람
으로 짓밟았던 하나의 생명을 로마는 기독교국이 되어서 그 예수 그리스도를 오늘까지 증거 하는 하
나님의 백성이 되었습니다. 오늘 온 세계에 있는 가장 능력 있는 왕들이 가장 지성인들이 가장 최고
의 문화인들이 최고로 잘 사는 분들이 2천년 동안 예수 앞에 무릎을 꿇고 수많은 왕의 왕들이 그의 십
자가의 보혈의 은총을 받아서 살아가고 있는 것입니다. 예수 그리스도 그는 우리를 위하여 마구간에
오셨고 우리를 위하여 낮아지시면서 가난하게 사셨고 그는 우리를 위하여 십자가에 비참하게 피 흘
려 돌아가신 것입니다.
[#!_보이기..|숨기기.._!#]  우리는 주 예수 그리스도로 말미암아 생명을 얻었습니다. 살아났습니다. 우리는 주님의 오신 그 모
든 삶과 걸어가신 삶과 마지막 우리를 위하여 돌아가신 그 죽음으로 말미암아 우리는 죽음의 문제가
해결된 것입니다. 이제 우리는 죽지 않습니다. 죽음을 두려워하지 않습니다. 죽음이 없습니다. 우리
는 천국으로 갈 뿐인 것입니다. 그래서 우리는 죽음의 문제에 대해서 두려워하거나 불안하거나 걱정
하지 않습니다. 이렇게 사는 자가 이 세상에서도 잘 삽니다. 예수님의 십자가의 죽음을 생각하고 살아
야 사는 것도 잘 삽니다. 오늘 많은 사람은 사는 데에 맞추어져 있습니다. 행복에 맞추어져 있습니다.
그렇기 때문에 행복할 수도 없고 그렇기 때문에 잘 살 수도 없습니다. 우리는 항상 십자가를 지신 주
님을 바라보고 살기 때문에 사는 것에 맞추지 않고 죽음에 맞추기 때문에 우리는 사는 것도 잘 살 수
있고 죽음도 잘 죽을 수 있고 우리는 이 모든 일에 승리할 수 있는 것입니다. 우리가 행복한 것은 예
수 그리스도의 죽음에서 온 것입니다. 그리스도와 함께 죽는 자 만이, 죽음을 이긴 자 만이 행복하게
살 수 있습니다. 우리는 걱정하지 않고 살아갈 수 있는 사람, 오직 예수 그리스도가 나의 구주가 되어
서 그의 보혈로 씻음 받은 자 뿐인 것입니다. 우리는 주님의 죽음을 생각하면서 항상 우리의 죽음을
준비하고 있고 우리 주 예수 그리스도의 십자가를 늘 바라보면서 우리는 최후 승리의 죽음도 주님과
함께 하나님의 나라에 갈 줄로 믿고 우리는 하루하루 한 발걸음 한 발걸음을 걸어가신 골고다의 길로
걸어가는 것이 성도들의 삶인 줄로 믿습니다.
  오늘 많은 사람들이 사는 데에 맞추면 못삽니다. 실패의 삶이 됩니다. 항상 잘 죽으려고 살아야 됩니
다. 예수님의 십자가의 죽음을 생각하고 살아야 이 세상에서 부끄러움 당하지 않습니다. 오늘 한국교
회가 힘이 없고 능력이 없는 것은 교인은 그전보다 엄청나게 많아졌는데도 모두 사는 데에 맞추어져
있기 때문에, 죽음 앞에 벌벌 떨고 안 죽으려고 하기 때문에 비겁하게 죽고 불행하게 죽고 우리의 사
는 삶도 부끄럽게 살아가는 것입니다. 삼일 독립운동이 일어났을 때에 우리 한국 교회는 교인이 겨우
3%, 5%로 안 되었는데 일본이 두려워서 쩔쩔매었습니다. 이겨 낼 수 없었습니다. 교인이 30%가 되어
도 오늘 한국교회가 힘이 없는 것은 모두 죽음에 대한, 고난에 대한 아무 의미가 없기 때문입니다. 십
자가 없는 교인은 두렵지 않습니다. 마귀가 갖고 노는 것입니다. 죽으면 사는 것 이 확실한 진리 위에
우리가 바로 서야 할 줄로 믿습니다. 오늘 이 시대는 너무 고난에 대해서 의미를 모른다고 합니다. 오
늘 젊은 사람들 큰 소리 치는 사람들도 고난에 대해서 너무 모릅니다. 한국교회가 십자가를 모르면 죽
은 것처럼 사람은 고난을 알아야 됩니다. 그래서 요사이 386세대를 우리 교회 오신 어떤 분이 그렇게
말씀했습니다. 386은 ‘3’ 삼일절을 모르고, ‘8’ 팔 일 오 모르고, ‘6’ 6.25 모르고 그러니까 이거 우리가
세상에 어떻게 지나왔는지 이 나라의 뿌리인 3.1절, 6.25 이 공산주의의 이 엄청난 처참한 고통당한
이 나라 슬픔과 이 불행을 모르는 거예요. 우리는 과거를 모르면 안 됩니다. 그래서 기독교의 절기는
행사하는 절기가 아닙니다. 참여하는 절기입니다. 십자가에 대해서 정확하게 경험하는 절기가 성도들
의 삶이 되어야 성도는 살아나는 것입니다. 삼일절, 노래 부르고 끝납니다. 기미년 삼월 일일 정오 그
러고 다 끝납니다. 우리는 그렇지 않습니다. 예수님의 십자가의 고난을 경험해야 합니다. 한국교회의
능력이 지난날에 얼마나 순교자가 많았습니까? 얼마나 감옥에서 고문당하고 돌아가신 분들이 얼마
나 많았습니까? 어떤 어려움도 이 분들은 천국 생각하고 예수님 십자가 바라보고 이겨냈습니다. 제
일 어려운 분들이 가족들이 아기들 밖에 와서 엉엉 울고 부인과 부모들이 엉엉 울 때 거꾸로 매 달려
매 맞으면서 너 예수를 한 마디만 여기서 안 믿는다고 그러고 나가서 믿으라고 그래도 그렇게 못합니
다. 그럴 수 없습니다. 예수님이 그렇게 안 사셨는데 그럴 수 없습니다. 하고 기꺼이 순교한 분들이 얼
마나 많습니까? 죽음, 그 분들은 살았습니다. 그 자손들도 살았습니다. 영원히 영원히 삽니다. 오늘
모두 고난을 피해 살다보니 자살 해 죽습니다. 값어치 없는 죽음들이 너무 많습니다. 우리 모두 예수
그리스도와 함께 십자가에 고난당하신 주님을 바라보고 살아가는 성도들 되기를 바랍니다. 지난날의
우리 고난을 잊으면 안 됩니다. 눈물 젖은 빵을 잊어버리면 안 됩니다. 개떡을 먹었던 지난날을 잊으
면 안 됩니다. 나뭇잎 가져다가 곡식을 먹지 못하고 온 몸이 퉁퉁 붓고 학교 가면 애들 배가 아이 밴
것같이 다 튀어나왔었습니다. 다 90%가 영양실조였습니다. 저도 소나무 껍질을 얼마나 먹었는지 모
릅니다. 6.25사변이 나고 막 망치로 두들겨서 밀가루를 조금 넣어 가지고 소나무 껍질만 계속 먹으면
화장실에 가서 이게 안 나오는 거예요. 그래서 손으로 껍질을 잡아 당겨서 꺼낸 일이 한 두 번이 아니
었습니다. 여러분, 고난을 우리가 너무 쉽게 잊어버립니다. 그러니까 일본이 우리를 우습게 알고 고난
을 잊어버린 민족을 다시 삼키려고 하고 있고 중국도 우리를 우습게 알고 다시 넘어뜨리려고 하는 것
입니다. 어제 일인데, 우리가 어찌 잊을 수 있습니까? 우리 모든 사랑하는 성도들 이 땅에 사는 날 동
안 한 순간도 긴장을 잃지 않고 살아가는 성도들 되기를 바랍니다.
  한국교회가 사는 길은 오직 십자가입니다. 오늘 많은 교회들이 십자가가 없다보니 신학을 지원하는
신학생들도 아 목사가 되면 좋은 에쿠스 타고 다니는구나, 야 당회장실이 장관실보다 낫구나, 야 당회
장 되니까 온갖 대접받고 야 저렇게 영광스럽게 사는 길이 없구나. 그래서 모두 다른 길 가다가도 목
사로 들어오는 길이 너무 많습니다. 목사는 그런 것 아닙니다. 목사의 길은 고난의 길이에요. 눈물의
길이에요. 십자가 지는 길이에요. 마지막에 어려운 일을 당하면 순교하는 길이에요. 앞장서서 교회 살
리고 양떼 살리고 십자가의 죽음의 길로 가는 게 목사의 길이에요. 오늘 한국교회가 이런 각오가 없
고 희생이 없고 헌신이 없고 십자가가 없는 이러한 주의 종들이 너무 한국교회를 어렵게 하고 있습니
다. 예수 따라가면 승리합니다. 예수님이 십자가 지시고 하나님 보좌 우편에 앉듯이 십자가 짊어지고
가는 자가 하나님 보좌 우편에 앉는 영광이 주어질 줄로 믿습니다.
  톨스토이의 ‘왕과 청소부’라는 그런 책이 있습니다. 이 이야기에 보면 왕이 잔치를 베풀어서 많은 사
람을 초청을 했는데 이 우편에 왕이 있는 자리에 누구를 앉게 하느냐? 신하들에게 말했습니다. 손이
제일 험한 분을 내 옆으로 데려오너라. 그래서 모두 손을 만져 인사하고 악수 해 보면 전부 손이 반들
반들 핸드크림 발라 가지고 전부 반들반들했습니다. 다 안되었어요. 나중에 보니까 한 분이 들어오는
데 손이 짐승의 손 같아요. 발과 같아요. 얼마나 거치른지 아 누구십니까 어디서 오셨습니까? 얘, 저
는 청소부입니다. 청소하다가 늘 흙 만지고 돌 만지고 쓸다가 손이 얼마나 거칠어졌는지 이리 따라오
세요. 폐하가 부르십니다. 그래서 왕의 옆에 앉았습니다. 여러분, 예수님은 두 개의 십자가가 있다고
하잖아요. 땅에 오셔서는 열심히 목수 일을 하신 한 편에 못 박힌 목수의 못, 또 한편으로는 우리 인류
를 위해서 흘리신 보혈의 못이 박힌 이 양 손으로 우리를 구원하신 거예요. 오늘 교회에 사랑하는 성
도들 예수 믿어서 이 세상 살 때에 예수님 십자가 생각하고 험한 일 하시고 고난을 피하지 말고 담대
하게 주님 십자가 생각하고 참고 나아갈 때 주님 보좌 우편에 앉는 축복이 주어질 줄로 믿습니다.
  예수님은 어머니를 보시고 “여자여 보소서 아들이니이다.” 저를 보시라고 말했습니다. 주님은 오늘
도 나를 향하여 보라고 말씀하고 있습니다. 김 목사 나를 바라보라. 김 집사 나를 보라고 말하고 있습
니다. 내가 너를 위하여 진 이 십자가, 내가 너를 위하여 흘리는 피, 내가 너를 위하여 흘리는 이 고난
과 이 부끄러움과 고통을 보라고 주님은 말씀하고 있습니다. 주님을 만나야 합니다. 골고다의 주님 나
를 위해서 십자가에 피 흘려 돌아가신 주님을 이렇게 경험해야 하는 것입니다. 누구든지 이 경험을 하
지 아니하면 천국 시민이 될 수 없습니다. 러시아의 작가 도스토예프스키도 9년 동안 시베리아 유배
생활에서 십자가 지신 주님을 바라보았습니다. 그 이후에 그는 ‘죄와 벌’이라고 하는 세계적인 작품
이 나올 수가 있었습니다. 헨델은 반신불수가 되어서 감옥에 갇힌 후 예수님을 만났습니다. 그래서 세
계적인 명곡 헨델의 ‘메시아’가 나올 수 있었습니다. 렘브란트라고 하는 네덜란드의 세계적인 화가가
있습니다. 잘 살고 행복할 때는 주님을 만날 수 없었습니다. 십자가 없는 삶, 주님을 만날 수 없었습니
다. 그는 가난해졌습니다. 실패했습니다. 부인도 죽었습니다. 한없는 외로움과 허전함과 죽고 싶을
때 그도 주님을 만나서 그 이후에 작품은 영혼을 그리는 대표적인 작품이 ‘야경’이라는 작품이 아닙니
까? 새로운 그림을 그렸습니다. 새로운 작품이 나왔습니다. 새로운 음악이 되었습니다. 새로운 정치
인이 되었습니다. 미국의 부시 대통령도 방탕의 길로 가다가 십자가 지신 주님을 만나서 새 사람 되
지 않았습니까? 제가 이번에 국가조찬기도회에 참석을 했는데 상원의원이 말했습니다. 설교를 상원
의원이 하더라고요. 여러분, 저는 예수 믿지 않았습니다. 나는 하나님 믿지 않았습니다. 그러나 내 열
여섯 살 된 아들이 교통사고로 생명을 잃고 나는 이 아들을 살리기 위해서 이 아들 때문에 몸부림치
고 있을 때 십자가를 지신 주님을 만났다고 했습니다. 저도 청년 때에 주님을 만났습니다. 나는 이 세
상에 내가 잘난 줄 알았더니 예수님이 나를 위해 죽으셨다는 것을 알고 나는 그 이후로 통곡하며 주님
을 사랑하게 되었습니다. 주님, 당신이 나 위하여 죽으셨군요. 당신이 나를 위하여 십자가에 피 흘려
죽으셨군요. 나는 이 세상에 가장 큰 죄인입니다. 주님 앞에 울며불며 주님을 사랑했습니다. 그래서
어떤 어려움이 있고 이 세상에 고난이 있어도 저는 오늘날까지 주님을 따라간 이유가 주님이, 십자가
지신 주님이 나를 보라 내가 너를 위하여 피 흘렸다고 하는 주님을 만나게 된 것이기 때문입니다. 오
늘 현대인들은 만나야 할 예수를 만나지 않고 너무 헛된 세속문화 온갖 음란과 퇴폐와 불의와 우상숭
배와 물질문화와 만나서 정신적으로 도덕적으로 방황하고 타락하고 있는 것입니다. 십자가 지신 주님
을 만나야 새로워집니다. 담대해집니다. 깨끗해집니다. 세상을 이깁니다. 가족과 민족을 구원해 낼 줄
로 믿습니다. 인간이 인간답게 살아가는 길이 인간을 창조하신 인간을 구원하러 오신 주 예수 그리스
도를 만나야 만이 우리 안에 새 생명이, 새로운 삶이, 그 안에 행복이 있는 것입니다.
  우리는 세상을 어떻게 살아야 합니까? 십자가를 지신 주님을 바라보면서 이제 우리는 주님과 함께
남을 위해서 헌신하는 삶도 살아야 합니다. 예수 잘 믿으면, 우리교회 부흥하고 큰 교회 되면 뭐하지
요? 왕이 될까요? 용이 될까요? 하늘에 올라갈까요? 아닙니다. 예수 잘 믿으면 남을 위해서 봉사하는
거예요. 헌신하는 거예요. 이 십자가는 우리에게 희생과 헌신이 얼마나 귀하다는 것을 가르쳐주는 자
리입니다. 잘 믿으십니까? 축복 받으셨어요? 모두 집에서나 밖에서나 교회에서나 남을 잘 섬기시기
를 바랍니다. 여러분 자녀만 사랑하지 마십시오. 소년 소녀 가장 불쌍하지 않습니까? 부모 없는 자녀
들 불쌍하지 않습니까? 여러분만 생각하지 마십시오. 이 세상에 이렇게 상처 많은 사람들이 수없이
많은데 여러분, 뭐하십니까? 우리 모두 그들을 사랑하며 섬겨야 할 줄로 믿습니다. 신앙생활도 꼭 큰
교회, 큰 교회에 나와서 예배드리는 것도 사치입니다. 성가대 장엄하고 말씀이 여러분을 만족하게 하
는 것 같은데 이것은 교만입니다. 약한 교회, 작은 교회 도와주어야 합니다. 적은 목사님들 개척교회
목사님들 도와드려야 합니다. 선물도 큰 교회 목사에게 선물하지 마세요. 저한테 선물하지 말아요. 나
는 먹을 것 많아요. 그리고 또 어지간한 것 갖다 주어봐야 좋지도 않아요. 이미 나는 타락했어요. 적
은 교회 목사님은 고등어 한 손도 커요. 쌀 한 톨, 밥 한 수저도 그 분들은 귀한 거예요. 큰 교회 목사
대접해 봐요. 돈 많이 들어요. 적은 교회 목사는 냉면 한 그릇도 얼마나 귀한지 알아요? 주변에 개척
교회 있으면 외면하지 말고 도와드려요. 가서 기도해 드리고 위로해 드려요. 그래야 하늘나라에 가서
상이 큰 거예요. 땅에 맞추지 말고 하늘에 맞추고 살아요. 죽음에 맞추고 살아요. 죽으면 다 끝나는데
살아 있는 것은 하나도 없이 다 사라지는데 언제까지 그렇게 살 거예요? 얼마 안 있으면 다 가는 건
데 언제까지 그렇게 살 거예요? 모두 가난하고 불쌍한 사람 멸시하지 마십시오. 적은 교회 목사가 적
은 목사인줄 아십니까? 큰 목사예요. 20명, 30명 데리고 50명 데리고 20년, 30년 목회 하는 것 그것
큰 일군들이에요. 천국에 큰 자들이에요. 우리 모두 사랑해야 할 줄로 믿습니다. 오늘 너무 모두 세상
사람이나 한국교회나 너무 내 만족, 이기주의 나 하나만 생각하는 거예요. 그래서 얼마나 큰 위기가
오는지 지금 1년에 아이들이 우리 인구가 이대로 유지되려면 85만 명이 태어나야 된대요. 해마다 85
만 명이 태어나야 이 인원이 유지가 된대요. 그런데 49만 명밖에 안 태어난대요. 시골에 한 면에 애 울
음소리가 하나도 안 들리고 어떤 마을에는 7년 만에 첫 울음소리가 들렸대요. 이래가지고 되겠어요?
앞으로 초, 중, 고등학교가 1/3이 다 없어져요. 얼마 안 있으면 2/3가 다 없어져요. 우리나라 노인들
만 남게 되는 거예요. 일할 사람이 없어져요. 아이들이 없으니까요. 둘이 한 명을 낳아도 반으로 줄어
드는데 또 한 명도 안 낳는 사람이 너무 많으니 어떻게 될 거예요? 도대체 뭐하세요? 애 안 낳고 뭐 하
냐 말이에요? 저는 앞으로 우리 교회도 그렇게 생각해요. 아이들 세 명 안 낳으면 권사 시키지도 않아
요. 아예 금년부터 결혼하는 사람은 권사가 되려면 아이 셋, 장로님들은 아이 다섯 안 낳으면 장로 안
시켜요. 이제는 아예 정해 놓으려고 해요. 안수집사? 애들 셋 안 낳으면 안수집사 안 돼요. 하나님이
주신, 성경에 첫째가 뭐예요? 생육하고 번성하라는 건데 어디에 초점을 맞추는 거예요? 하나님을 기
쁘시게 하고 십자가 짊어지고 가면 자녀들도 다 사랑스러워지는 거예요. 귀한 거예요. 자녀 없이 둘
이 먹고 가만히 깊은 밤에 둘 이만 있어 봐요. 귀신 나와요. 집안에 애가 북적북적 그래야죠 노인들만
둘이 있어 봐요. 곧 데려갈 귀신들이 찾아온다고요. 되겠어요? 안 되는 거예요. 이기적인 것 버려야
합니다. 희생해야 합니다. 그러면 축복이 옵니다. 열매가 옵니다. 우리 인류를 위해 다 주신 주님 앞
에 온 인류가 다 모여서 경배하지 않습니까? 우리 모두 남은 생애를 하나님의 나라 위하여, 주님 위하
여, 이웃 위하여 우리 모두 서로 사랑하며 나누어주며 욕심 부리지 말고 살아가는 거예요. 그러면 안
되느냐? 잘된다는 거예요. 예수님을 보라는 거예요. 하나님이 하늘 문을 여시고 축복해 주실 줄로 믿
습니다.[#!_END_!#]
  한 가지만 이야기를 드리고 마치겠습니다. 옛날 초나라에 장왕 이라고 하는 아주 어진 임금님이 있
었습니다. 이 임금님은 얼마나 어진지요. 하루는 신하들과 저녁에 잔치를 베풀어서 식사를 하는데 아
불이 꺼졌어요. 바람 때문에. 그런데 왕비가, 중전이 얼마나 예쁜지 사모하던 한 신하가 불이 꺼진 틈
에 와 가지고 그 얼굴에 입을 맞추고 탁 바디터치를 하고 가는 거예요. 그런데 이 왕비는 아주 덕이 없
었어요. 그래 가지고 그 신하의 갓 끈을 딱 잡아 당겼어요. 어디 이런 놈이 있냐 해서 갓 끈을 딱 잡았
어요. 폐하, 불 꺼진 사이에 어떤 놈이 내 볼에다 입을 맞추었습니다. 이런 놈이 어디 있습니까? 갓 끈
을 내가 잡았습니다. 그러니까 이 장왕이 아 그러냐고, 이 좋은 자리가 큰일이 나겠거든요. 여봐라 이
안에 있는 신하들은 모두 갓 끈을 잡아 당겨서 앞에다 갖다 놓아라. 그래서 다 갖다 놓았어요. 그러니
까 갓 끈이 다 없어졌어요. 범인이 누구인지 몰라요. 그래서 잔치를 잘 마쳤어요. 2년 후에 진나라와
초나라와 싸움이 일어났어요. 이것은 실제로 일어났던 일입니다. 큰 전쟁이 일어났는데 이 전쟁에 초
나라가 질 수밖에 없었는데 한 장군이 전체 참모총장이 진두지휘를 해서 진 나라와 싸워 승리를 해서
돌아온 거예요. 큰 잔치를 베풀고 물었어요. 어떻게 해서 이 용맹을 가지고 진 나라와 싸워 이길 수 있
었냐? 이 참모총장이 이렇게 말했어요. 2년 전에 잔치를 베풀 때 갓 끈을 뜯은 것을 기억하십니까? 제
가 그 때 중전인 국모 님을 너무너무 흠모해서 내가 잠깐만 이렇게 얼굴을 댄 것입니다. 그 때 그대로
두었더라면 저는 죽었을 텐데 저를 임금님이 살려 주셨어요. 나는 이미 2년 전에 죽을 몸인데 그래서
생명을 바쳐서 전쟁에 참여하여 승리하게 된 것입니다. 저를 죽여주십시오. 기독교는 바로 이거예요.
주님이 아니면 나는 벌써 죽었어야 하는데. 아무것도 아닌데. 예수님이 아니면 저는 30년 전에 폐병
걸려 가지고 죽었어야 하는데. 피 흘리고 내가 죽었어야 하는데 주님의 은혜로 나를 살려주신 거예
요. 그래서 항상 속상해도 잘 참는 거예요. 힘들어도 잘 참는 거예요. 어려워도 왜? 그때 저는 죽었어
야 됐는데 모두 감사, 그 때 제가 죽었어야 하는데 주님 은혜를 생각하면 너무 감사한 거예요. 우리가
어떻게 이 세상을 살아야 하지요? 주님이 아니면 나는 벌써 죄인이 되어서 벌써 나는 나쁜 놈이 되고
망했어야 하는데 주님의 은혜로 내가 이렇게 살았습니다. 나를 구원해 주신 십자가 지신 주님을 사랑
하며 남은 여생 십자가 증거하고 이웃을 위하여 헌신하다가 천국 가서 주님과 함께 영원히 살겠습니
다. 아멘
  하나님 아버지 은혜를 감사합니다. 고난주간입니다. 우리 모두 주님과 함께 고난주간에 골고다 걸어
가신 주님, 십자가 지시고 여자여 나를 보라 하신 것처럼 우리 모두 주님 만나게 하여 주옵소서. 주의
음성 들어서 이 완악하고 거짓되고 불의하고 강팍하고 잘못된 우리의 삶이 돌아서게 하여 주옵소서
예수 그리스도의 이름으로 기도하옵나이다. 아멘

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:07)


10/40창 선교지도입니다.
저는 북한의 자강도 희천시 청상동과 온듀라스를 위해 기도하고 있습니다.
당신은 어디를 놓고 기도하시나요?


* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:17)
//코딩하고나서 500 오류가 날 경우 코딩을 바꾸기 전에 먼저 해당 jsp와 연관된 java를 재 생성시키고나서 다시 한번 해보고
//그리고 나서도 오류가 나면 그때 코딩을 수정해야한다.

//string형을 int형으로
<%=st.getWon(Integer.parseInt(rs[i][11]))%>

//int형을 string형으로
pRowPage1 =  Integer.toString( ROW_PER_PAGE ) ;
tyear = Integer.toString(Integer.parseInt(ryear)-1);

//checkNull 사용하기
String syear =  st.checkNull(request.getParameter("syear"));

//항목별 합계
                        int totalamt = 0;
                        for (int i=0;i<rs.length;i++)
                        {
                                int amount = Integer.parseInt(rs[i][11]);
                                totalamt +=amount;
                        }

//날짜 포맷변경
        Date mydate = new Date();
        SimpleDateFormat m_today = new SimpleDateFormat("yyyy/MM/dd");
        String today = m_today.format(mydate);

//select문에 검색된 값 적용
                                  <SELECT NAME="jh_name" onChange="javascript:openPage(this.value);" class="text">
                                        <option value="" selected>특별장학금 선택 </option>
                                        <%
                                                        for(int i=0; i<num ; i++)
                                                        {
                                                                if (jhData[i].getJh_name().startsWith("<font "))
                                                                        continue;
                                        %>
                                        <option value="<%=jhData[i].getJh_name()%>"><%=jhData[i].getJh_name()%></option>
                                        <%         }          %>
                                </SELECT>

//Substring 사용하기
        regdate = yjData.getRdate();
        String ryear = regdate.substring(0,4);
        String rmonth = regdate.substring(5,7);
        String rday = regdate.substring(8,10);
        String ryear2 = ryear+"0301";
        String rtoday = ryear+rmonth+rday;

//Substring
<%=rs[i][6].substring(0,4)%>.<%=rs[i][6].substring(4,6)%>월~<%=rs[i][7].substring(0,4)%>.<%=rs[i][7].substring(4,6)%>월

//자바스크립트 삽입하기
<script language="javascript" src="../js/adm.js"></script>

//자바스크립트 변수값 확인
<script language="javascript">alert(<%=pageStr%>)</script>

//jsp 변수값 확인
out.print("Page: "+pageStr+"<br>");

//jsp에서 bean 배열값을 사용하는 for문 사용하기
        FormData[] FList = logic.getFList(sUserCode,fOrder,fOrderBy);
        int num = logic.getNdisPlayNum();
        
        int row = 0;
        for(int i=0; i<num ; i++) {
                row++;

//배열 값 jsp에서 사용하기
        FormData[] FList = logic.getFList(sUserCode,fOrder,fOrderBy); 일 경우
        
          FList[i].getUColNm() 등과 같이 사용

//jsp에서 java bean을 호출하여 사용할 때 sql insert 또는 update 문을 사용할 때는 pk값 처리에 주의해야 한다.

//[자바스크립트] 체크박스를 한꺼번에 선택/해제 하기
아래의 자바스크립트 코드는 게시판이나 이메일 에서 많이 보아왔을겁니다...
체크박스를 한꺼번에 선택하거나 해제하는 스크립트 소스입니다.

<script>
function selectAll()
{

for(i = 0 ; i < document.memo_frm.elements.length ; i++)
{
var ele = document.memo_frm.elements[i];
for(j = 0 ; j < document.memo_frm.elements.length ; j++)
{
if(ele.name == "del["+j+"]")
ele.checked = !ele.checked;
}
}
}
</script>

<form name=memo_frm>
<table align='center' border="0" cellspacing="0" cellpadding="3">
<tr>
<td>
<a href='javascript:selectAll()'>전체선택</a></td>
</tr>
<tr><td><input type='checkbox' name='del[0]' value='on'></td></tr>
<tr><td><input type='checkbox' name='del[1]' value='on'></td></tr>
<tr><td><input type='checkbox' name='del[2]' value='on'></td></tr>
<tr><td><input type='checkbox' name='del[3]' value='on'></td></tr>
<tr><td><input type='checkbox' name='del[4]' value='on'></td></tr>
</table>
</form>

//jsp 안에서 사용되는 자바 스크립트 안에 jsp 함수를 사용할 경우
  자바스크립트 시작과 끝에 일반적으로 삽입하는 " <!--      //-->" 캐릭터를 삭제해야 한다.

//자바 컴파일시     javac -classpath ../../../ TableDev.java

//자바 스크립트 즐겨찾기 :  http://happyscript.net/happyboard/_htmdb/src_form/index-src_form.htm
1. 우선, httpd.conf에서 원하는 디렉토리를 정의하십시오.

           <Directory /usr/local/apache/htdocs/test>
             AllowOverride All  혹은 AllowOverride Limit
             혹은 AllowOverride AuthConfig
            </Directory>

2. ........./test 디렉토리에 .htaccess 파일에 아래 내용을 넣습니다.
   -------------------------------------------------------
   AuthName \"Auth TEST\"
   AuthType Basic
   AuthUserFile /usr/local/apache/htdocs/test/.htpasswd
   AuthGroupFile /dev/null
   ErrorDocument 401

   require valid-user  aaa

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

3. 패스워드 파일 생성.  패스워드 파일은 htpasswd라는 프로그램을 써서 만듭니다.  
   소스컴파일로 설치하셨다면, /usr/local/apache/bin/htpasswd 라는 프로그램이 존재합니다.
   이 프로그램은 기본적으로 패스워드파일에서 패스워드부분을 encrypt해 줍니다.

   패스워드를 만들어둘 .................../test 디렉토리에서 /usr/local/apache/bin/htpasswd -c .htpasswd aaa 라고 입력
   ID aaa에 대한 패스워드를 입력. 패스워드만 입력해주면 .htpasswd 파일이 생성


4. 아파치 재시작
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
자료 입력 및 검색하기
교재명 : MySQL(Advanced Class)
출판사 : 베스트북
저자명 : 허정수  


1.  MySQL Server 기동 및 Mysql 프로그램 실행하기

# /usr/local/mysql/share/mysql/mysql.server  start  [Enter]  : mysql server 기동
또는
#/usr/local/mysql/bin/safe_mysqld  nbsp; [Enter]
mysql server를 기동하는 방법

# ps  -ef  | grep mysqld  [Enter]        : 프로세스 확인
mysqld 데몬 실행 여부를 확인합니다

#/usr/local/mysql/bin/mysql  [Enter]     : mysql 프로그램 실행

Welcome to the MySQL monitor.   Commands  end  with  ;  or  \g.
Your  MySQL  connection  id  is  2  to  server  version: 3.23.49

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

mysql>_


2. MySQL 버전 및 기본 데이터베이스 보기

mysql>select  version();            ☜  MySQL 명령문(쿼리문)끝에는 세미콜론.
mysql>show databases;


3. 데이터베이스(Database)  만들기

형식)

CREATE  DATABASE  데이터베이스명 ;

실습)
student 라는 데이터베이스를 만들어 보자.

mysql> CREATE  DATABASE  student;
mysql> SHOW DATABASES ;


4. 테이블(Table) 만들기

형식)
CREATE  TABLE  데이블명 ;

실습)
grade라는 테이블을 만들어 보자.

mysql> USE  student;
mysql> CREATE TABLE grade (
    →student_no  int,
    →student_name  varchar(15),
    →korean   int,
    →math     int,
    →english  int                   ☜  마지막 필드에서는 ","를 입력하지 않음
    →);
Query  Ok,  0 rows offected(0.07 sec)

- 테이블 보기

mysql> SHOW TABLES ;

- 테이블의 구조 보기

mysql> EXPLAIN  grade ;
mysql> DESC  grade ;


5. 테이블에 자료 입력하기

형식)

INSERT INTO 테이블명  VALUES(값1, 값2, .....값n) ;

실습)

mysql> INSERT INTO  grade  VALUES(200101, '강봉춘', 90, 85, 87);


6. 테이블에 저장된 자료 검색

형식)

SELECT  필드명1, 필드명2, ...  FROM  테이블명 ;

실습)

- 테이블 전체 자료 검색하기

mysql> SELECT *  FROM   grade ;          ☜  * 는 전체 필드를 대상으로 검색하겠다는 의미

- 특정한 필드만 대상으로 검색하기

mysql> select  student_name , korean  from  grade ;

- 필드 이름 바꿔 검색하기

mysql> select  student_name  as   '성명' , korean  as  '국어 점수' from  grade ;

- 연산자 사용하여 검색하기

mysql>select  student_name, korean + math + english  as  '총점' from   grade ;


- 함수 사용하기

mysql> select  avg(korean)  from  grade;

mysql> select  sum(korean)  from  grade;

mysql> select  max(korean)  from  grade;

mysql> select  min(korean)  from  grade;


- 정렬하여 검색하기

mysql> select student_name, korean+math+english  as  '총점' from  grade  order  by  '총점'  desc;

mysql> select  student_name , korean  from  grade  order  by  korean  asc;

※ desc 는 내림차순,  asc는 오름차순으로 정렬됨.

- 조건문 사용하기

mysql> select *  from  grade  where  student_name = '허혜선' ;

mysql> select  student_name, korean, math, english  from  grade  where  korean < 90 ;


7. 테이블의 자료 수정하기

형식)

UPDATE  테이블명  SET  필드명 = 새로운값  WHERE  조건 ;

실습)

mysql> update  grade  set  english = 85  where   student_no = 200102 ;

mysql> update  grade  set  korean = 90 ;      //  ※ 주의 모든 레코드가 변경됨


8. 테이블의 자료 삭제하기

형식)

DELETE  FROM   테이블명  WHERE  조건;

실습)

mysql>  delete  from  grade  where  student_no = 200105 ;

mysql>  delete  from  grade ;        //  ※ 주의 모든 레코드가 삭제됨



* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:05)
게시물 입력날짜 수정하기

ㅡmysql zboard에 들어가서 올라온 글을 보면 reg_date 필드에 날짜가 기록되어 있는데 다음과 같이 하면 됩니다.

-----------------------------------------------------------------------
안녕하세요?
밍키아빠입니다.

사이트를 관리하다보면 회원들의 글쓴 날짜를 수정해야 할일이 생깁니다.
생기지 않으면 더욱 좋지만 말입니다.
(특히 사고등 보드의 내용을 복구할때...)

날짜를 DB에서 그냥 수정해 주면 되는데
"1013640853"이라는 식으로 나와서 정확하게 날짜를 알기가 어렵습니다.

음 이것은 유닉스 시간이라서 그런데요
1970년 1월 1일 0시 0시 0분 0초에서 출발해서
오늘까지 초단위로 누계로 계산을 해온 것입니다.

그래서 오늘이 그때로 부터 1013640853흘렀다는 이야기가 되는 것이지요
그래서 특정 날짜로 수정하려면 기간에 해당하는 초만큼 오늘 날짜에서
빼주면 됩니다.

오늘 날짜는 그냥 보드에 기록하면 나오구요.
예를 들어서 오늘 기록한 것을 어제 기록한 것으로 변경하고 싶다면

1013640853  ->  2002년 02월 14일

여기에다 하루에 해당하는 초를 빼주면 됩니다.
하루는 60초*60(분)*24(시간)=86400초가 되는 것이지요

그래서
1013640853에서 86400을 빼주면 어제 날짜가 되는 것입니다.

------------------------------------------------------------
>mysql -u [username] -p[passwd] [db name]
>select * from zetyx_board_[게시판 이름] where no=[변경할 게시물 번호] ;   게시물이 맞는지 확인
>select reg_date from zetyx_board_[게시판 이름] where no=[변경할 게시물 번호] ;

  reg_date 값에서 원하는 시간만큼 뺀 값을 계산함

>update zetyx_board_[게시판 이름] set reg_date= [변결할 값]  where no=[변경할 게시물 번호] ;



* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:05)

'프로그래밍Tips' 카테고리의 다른 글

mysql 사용하기 - 자료 입력 및 검색하기  (0) 2005.04.08
mySQL 기본사용방법 2  (0) 2005.03.26
mySQL 기본사용방법 1  (0) 2005.03.25
MySQL 관련

root암호변경설정
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
/usr/bin/mysqladmin -u root -p password 'new-password'
/usr/bin/mysqladmin -u root -h ns.dbakorea.pe.kr -p password 'new-password'

쉘에서는 mysql이 되는데 PHP에서 mysql.sock error를 내면서 MySQL이 안되는 경우
mysql.sock은 /tmp 아니면 /var/lib/mysql에 생기게 된다.
나의 경우, /var/lib/mysql에 mysql.sock파일이 있는데 PHP에서는 /tmp에서 찾으려하면서 에러를 발생했다.
/usr/bin/safe_mysqld파일에서 다음과 같이 수정한다.
주석(#)이 달린 것이 원래것이고 그 밑에 있는것이 수정한 것이다.

# MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/var/lib/mysql/mysql.sock}
MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/tmp/mysql.sock}

위와 같이 하니 /usr/bin/mysql이 /var/lib/mysql/mysql.sock에서 소켓파일을 찾으려 했다.
socket file을 지정하는 --socket이라는 옵션으로 다음과 같이 지정하면 된다.

mysql --socket=/tmp/mysql.sock -u dbakorea -p db_test

하지만 mysql실행시마다 이렇게 써줘야한다는 것이 상당히 귀찮다. 옵션이 바로 적용되게 설정하자.
mysql은 설정사항을 다음 3가지 파일에서 검색한다.

/etc/my.cnf            global options(MySQL 전체적으로 사용되는 옵션 정의)
mysql-data-dir/my.cnf  특정 DB에 적용되는 option (/var/lib/mysql/my.cnf)
~/.my.cnf              사용자 각각의 설정('~'문자는 사용자의 홈디렉토리는 의미)

/usr/share/mysql디렉토리에 예제가 있으므로 참고한다.
소켓파일의 지정은 다음줄을 넣어주면 된다.

socket          = /tmp/mysql.sock


== /etc/my.cnf예 ==
# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock


# root암호설정
% mysqladmin -u root password '변경암호'  root로 로그인하여 해야함
or
% mysqladmin -u root -p기존암호 password '변경암호'  root로 로그인하여 해야함

DB생성
mysql> create database DB명 ( or % mysqladmin -u root -p create DB명 )

DB삭제
mysql> drop database DB명

MySQL 연결
mysql -u 사용자 -p DB명 ( or % mysqladmin -u root -p drop DB명 )

데이터파일 실행(sql*loader기능)
mysql>load data local infile "데이터파일" into table 테이블명 ;
데이터파일에서 컬럼구분은 탭문자, Null값은 /n로 입력

질의 파일 실행
쉘프롬프트상에서
mysql -u 사용자 -p DB명 < 질의파일
or
mysql프롬프트상에서
mysql> source 질의파일

쉘프롬프트상에서 질의 실행
dbakorea@lion board]$ mysql mysql -u root -pxxxx -e \
>            "INSERT INTO db VALUES(
>            'localhost', 'aaa', 'aaa',
>            'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y')"


사용자 생성 & 사용자에게 DB할당
shell> mysql --user=root -p mysql

mysql> INSERT INTO user VALUES('localhost','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y');

mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES ('localhost','DB명','사용자','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES('%','DB명','사용자','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES; (or shell prompt: mysqladmin -u root -pxxxx reload)


DB, 테이블목록보기
mysql> show databases;
mysql> show tables;

사용 DB선택
mysql> use DB명

테이블구조
mysql> describe 테이블명

인덱스 보기
show index from 테이블명

테이블명 변경
mysql> rename table test to test2;

접속
mysql {-h 접속호스트} -u 사용자 -p 사용DB
-h로 다른 서버에 존재하는 MySQL접속시 다음과 같이 MySQL DB에 설정해줘야 한다.
mysql> INSERT INTO user VALUES('접근을 허용할 호스트ip','사용자',PASSWORD('비밀번호'),'Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES('접근을 허용할 호스트ip','사용DB','사용자','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES; or 쉴프롬프트상에서 % mysqladmin -u root -p flush-privileges

버전체크
mysql> select version();

검색조건(where)
regular expression을 지원하다니 신기하군..
mysql> select * from work where 열명 regexp "정규표현식";

컬럼의 추가, 삭제(오라클과 동일)
alter table 테이블명 add 컬럼명 데이터타입;
alter table 테이블명 del 컬럼명;


백업 & 복구
mysqldump {-h 호스트} -u 사용자 -p DB명 > 백업파일
mysql {-h 호스트} -u 사용자 -p DB명 < 백업파일

mysqldump -u root -p --opt db_dbakorea > dbakorea.sql
mysqldump -u root -p --opt db_board | mysql ---host=remote-host -C database (상이한 머쉰)
mysql -u dbakorea -p db_dbakorea < dbakorea.sql      


mysqldump -u root -p --opt db_dbakorea | mysql ---host=ns.dbakorea.pe.kr -C db_dbakorea

테이블 검사
isamchk

오라클 sysdate와 동일
insert into test values('12', now());

유닉스 time()함수 리턴값 사용
FROM_UNIXTIME(954788684)
UNIX_TIMESTAMP("2001-04-04 :04:04:04")

MySQL 디폴트 DB&로그파일 위치
/var/lib/mysql
/var/lib디렉토리는 여러 프로세스들이 사용하는 데이터를 저장하는 일종의 파일시스템상의 데이터베이
스라고 볼 수 있다.

replace
해당 레코드 존재하면 update하고, 존재하지 않는다면 insert한다.(insert문법과 동일)
replace into test values('maddog','kang myung gyu')'

explain
explain 질의문: 지정한 질의문이 어떻게 실행될 건지를 보여줌
mysql> explain select u.uid, u.name, a.name from sm_user u, sm_addr a where u.uid=a.uid;    
+-------+------+-----------------+-----------------+---------+-------+------+-------+
| table | type | possible_keys   | key             | key_len | ref   | rows | Extra |
+-------+------+-----------------+-----------------+---------+-------+------+-------+
| u     | ALL  | PRIMARY         | NULL            |    NULL | NULL  |  370 |       |
| a     | ref  | sm_addr_uid_idx | sm_addr_uid_idx |      11 | u.uid |   11 |       |
+-------+------+-----------------+-----------------+---------+-------+------+-------+
2 rows in set (0.01 sec)

temporary table
크기가 큰 테이블에 있는 subset에 대한 질의라면 subset을 temporary table에 저장한 후
질의하는 것이 더 빠를 경우가 있다.
create temporary table (...);
create temporary table (...) type=heap;        디스크가 아닌 메모리에 테이블 생성

==============================================================================
MySQL 특성정리
==============================================================================
primary key지원
index 지원(15개컬럼, 256byte까지)
foreign key, check, references기능 지원하지 않음(형식상 있음)

mysql> CREATE TABLE test (
        id INT NOT NULL,
        last_name CHAR(30) NOT NULL,
        first_name CHAR(30) NOT NULL,
        PRIMARY KEY (id),
        INDEX name (last_name,first_name));
        
MySQL에서의 Stored Script개념 => SQL server language
commit-rollback개념 => lock tables


* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:05)
mySQL 기본사용

    ■ MySQL Server의 실행과 종료
            MySQL Server을 실행 시키거나 종료시키려면 다음의 명령을 root 가 사용하면 된다.
               mysql.server start      --> mysql Server의 시작
               mysql.server stop       --> mysql Server의 종료
       MySQL Server가 실행시 두개의 프로세서가 실행되므로 확인해 보기 바란다.
           < 실행중인 두개의 프로세서 >
              /usr/local/bin/safe_mysqld
              /usr/local/libexec/mysqld

        #######################################
        #                                     #
        #     MySQL 설치후 기본적인 사용법과  #
        #          root의 암호설정            #
        #                                     #
        #######################################


        1. MySQL 사용하기

    1.1 MySQL 서버 시작하기

MySQL이 정상적으로 설치 되었다면 그리고 디폴트 옵션으로 설치
하였다면 /usr/local/bin/ 디렉토리에 관련 실행 파일이 설치 되었
을 것이다. 먼저 MySQL 서버를 실행하는 명령은 다음과 같다.
물론 root 아이디로 실행해야 한다.(다른방법이 있으면 알려주세요)

    mysql.server start

위와 같이 입력하면 서버가 실행된다.  두개의 프로세서가 데몬상태로
실행되는데, safe_mysqld, mysqld 이렇게 두개이다.
이 두개의 프로세서가 실행되고 있다면 이제 MySQL을 사용할수 있다.
MySQL 두번째 강좌에서 보면 위의 두 프로그램에 대한 설명이 나와 있다.
이 상태에서 아래와 같이 MySQL을 사용할수 있는 가상 터미날을 실행시킨다.

    mysql -u root mysql

MySQL이 처음 설치되면  DB admin user 는 root 이다. 몰론 이것은 변경
할수도 있다. 디폴트로 설치한 경우 암호가 처음에는 생성되어 있지 않으
므로 위와 같이 하면 실행이 된다. 위의 명령에 대한 설명은 다음과 같다.

  mysql       -u          root               mysql
실행파일  유저선택     root db 유저     사용할데이타베이스

그외 몇가지 간단한 옵션이 있으나 필요하면 mysql -h 하여 내용을 참고
하기 바란다. 그리고, root 유저에 암호를 설정한 후 부터는 -p 옵션을
하나더 추가하여 실행하기 바란다. 이 옵션은 패스워드를 입력받는 옵션이다.


    1.2 mysql 프로그램의 사용

  mysql을 실행하여 간단한 동작을 하여보자.
mysql은 일반 유저로 실행하여도 되는 프로그램이다.

$ mysql -u root mysql                        ---> DB 사용을 위한 실행
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.21.27-gamma-log

Type 'help' for help.

mysql>

위와 같이 연결된다. 여기서 몇가지 간단한 테스트용 명령을 적는다.

mysql> show databases                  --> 데이타베이스 종류보기
    -> \g
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.00 sec)

mysql> show tables from mysql          --> mysql상의 테이블 정보 보기
    -> \g
+-----------------+
| Tables in mysql |
+-----------------+
| db              |
| func            |
| host            |
| user            |
+-----------------+
4 rows in set (0.00 sec)

mysql> show columns from db            --> db table 칼럼정보 보기
    -> \g
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| Host        | char(60)      |      | PRI |         |       |
| Db          | char(32)      |      | PRI |         |       |
| User        | char(16)      |      | PRI |         |       |
| Select_priv | enum('N','Y') |      |     | N       |       |
| Insert_priv | enum('N','Y') |      |     | N       |       |
| Update_priv | enum('N','Y') |      |     | N       |       |
| Delete_priv | enum('N','Y') |      |     | N       |       |
| Create_priv | enum('N','Y') |      |     | N       |       |
| Drop_priv   | enum('N','Y') |      |     | N       |       |
+-------------+---------------+------+-----+---------+-------+
9 rows in set (0.00 sec)

mysql> show index from db              --> db table의 인덱스정보기
    -> \g
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part |
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
| db    |          0 | Host     |            1 | Host        |
A         |     4 |     NULL |
| db    |          0 | Host     |            2 | Db          |
A         |     4 |     NULL |
| db    |          0 | Host     |            3 | User        |
A         |     4 |     NULL |
| db    |          1 | User     |            1 | User        |
A         |  NULL |     NULL |
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
4 rows in set (0.00 sec)

mysql> show status                     --> MySQL의 상태정보 보기
    -> \g
+--------+-----------------+-----------+---------------+---------
+-------------+
| Uptime | Running_threads | Questions | Opened_tables | Reloads
| Open_tables |
+--------+-----------------+-----------+---------------+---------
+-------------+
|   1493 |               1 |        26 |             4 |       1
|           4 |
+--------+-----------------+-----------+---------------+---------
+-------------+
1 row in set (0.00 sec)

mysql> show variables                  --> MySQL 환경변수보기
    -> \g
+--------------------+---------------------------------+
| Variable_name      | Value                           |
+--------------------+---------------------------------+
| back_log           | 5                               |
| basedir            | /usr/local/                     |
| datadir            | .                               |
| join_buffer        | 131072                          |
| key_buffer         | 1048568                         |
| language           | /usr/local/share/mysql/english/ |
| max_allowed_packet | 65536                           |
| max_connections    | 90                              |
| max_join_size      | 4294967295                      |
| max_sort_length    | 1024                            |
| net_buffer_length  | 8192                            |
| port               | 3306                            |
| record_buffer      | 131072                          |
| skip_locking       | 1                               |
| socket             | /tmp/mysql.sock                 |
| sort_buffer        | 2097144                         |
| table_cache        | 64                              |
| thread_stack       | 65536                           |
| tmp_table_size     | 1048576                         |
+--------------------+---------------------------------+
19 rows in set (0.00 sec)

mysql> select * from db                  --> db 테이블의 데이타 가져오기
    -> \g
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
| Host      | Db       | User       | Select_priv | Insert_priv |
Update_priv |Delete_priv | Create_priv | Drop_priv |
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
| %         | test     |            | Y           | Y           |
Y           |Y           | Y           | Y         |
| %         | test\_%  |            | Y           | Y           |
Y           |Y           | Y           | Y         |
| localhost | binggo   | binggo     | Y           | Y           |
Y           |Y           | Y           | Y         |
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
3 rows in set (0.00 sec)

mysql>


위의 명령은 기본적인 명령으로서 실제 mysql 을 사용할때
자주 사용될 명령이라고 생각된다. 기타 sql문은 강좌 3에서
정리하였으므로 생략하기로 한다.


        2. MySQL DB admin user 암호걸기

  MySQL 을 설치후 가장 먼저 해야 할 일은 MySQL의 admin 인
root (DB user 임)의 암호를 설정하는 일이다. 이것은 서버가
인터넷상에 접속되어 있을경우 보안을 위하여 가장 먼저해야
하는 일이라고 생각된다. 암호를 설정하는 방법은 다음과 같다.
먼저 admin 유저인 root 아이디의 암호를 설정하기로 한다.

mysql> update user
    -> set password = password('testpass')
    -> where user = 'root'
    -> \g
Query OK, 2 row affected (0.00 sec)

mysql>

위를 실행하면 일반적으로 user 테이블상에 root 아이디가 두개가 root
아이디가 등록 되어 있으므로 2 row 의 비밀번호가 변경이 된다.
여기시 확인을 위하여 아래의 명령을 실행해 본다.

mysql> select * from user
    -> \g
  . . . .
  . . . .

테이블상에 저장된 내용이 출력될 것이다.

자 이제부터는 admin 유저인 root로 mysql에 접속할 경우 꼭 password를
입력해야 한다. 즉 아래와 같이 실행하여야 한다.

$ mysql -u root -p mysql
Enter password:

암호를 물을때 암호를 입력하면 mysql을 사용할수 있다.


        3. 새로운 데이타 베이스 생성과 사용자 연결

    3.1 데이타 베이스의 생성

데이타베이스 생성의 방법은 두가지가 있다. mysqladmin 프로그램을
이용하여 root 아이디로 shell 상에서 생성하는 방법과 또하나 mysql
프로그램 상에서 생성하는 방법이다.

먼저 mysqladmin 프로그램을 이용하는 방법이다.

mysqladmin create soonhg     --> 이경우 soonhg 라는 데이타베이스 생성

admin 인 root 에 암호를 설정한 경우 다음과 같이 실행한다.

mysqladmin -u root -p create soonhg

이 경우 디폴트로 설치한 경우 /usr/local/var/soonhg 라는 디렉토리가 생성
된다. 이 디렉토리가 데이타 베이스 공간으로 이용될 곳이다. 즉 soonhg 라는
데이타 베이스 공간에 테이블을 생성할 경우 soonhg 라는 디렉토리로 관련된
파일이 생성되며 데이타가 저장된다.

*******************************************************************
중요한 tip......
*******************************************************************
MySQL과 주고 밍는 각종 내용은 /usr/local/var 상의 full도메인명.log
파일상에 모두 저장된다. 만일 동작 상태를 알고 싶다면 터미날을 하나 더
열어서 tail -f full도메인명.log 하여 MySQL과의 주고받는 내용을
모니터링 할 수 있다.
*******************************************************************

두번째 방법으로 mysql을 이용하는 법이다. mysql 실행상태에서 아래와 같이
한다. (admin 인 root 아이디로 mysql 에 접속)

mysql> create database soonhg
    -> \g
Query OK, 1 row affected (0.00 sec)

mysql>

위의 두가지 방법중 어느 방법을 사용하여도 무관하다. 개인적으로는 mysql
상에서 데이타베이스를 생성하는것을 권장한다. 왜냐하면 계속하여 작업을
해야할것들이 있기 때문이다.


    3.2 데이타베이스와 mysql 관리 테이블과의 연결 및 사용자등록 및 특권정의

자 이제 생성된 데이타베이스와 데이타베이스 관리및 엑세스 권한등을 정의
하고 있는 mysql 상의 db, user 테이블에 방금 생성된 soonhg 테이블의 내
용을 정의 하자.

먼저 이 soonhg 데이타베이스는 모든 호스트 상에서 접근이 가능하도록 만들
기로 한다. 그리고 사용자는 id 로 park 라는 DB user 를 생성한다고 하자.
sql 문은 다음과 같다.

mysql> insert into db
    -> (host,db,user,select_priv,insert_priv,update_priv,delete_priv,
    -> create_priv,drop_priv)
    -> values ('%','soonhg','park','Y','Y','Y','Y','Y','Y')
    -> \g
Query OK, 1 row affected (0.00 sec)

mysql>

위의 sql문에서 보면 park 이라는 사용자는 soonhg 데이타베이스에 대하여
select,insert,update,delete,create,drop 권한이 모두 주어졌다. 이것은
하나의 soonhg 데이타 베이스에 대하여 각 sql 명령에 대한 권한을 개별적
으로 줄수 있다는 것을 의미한다.
select * from db 라는 sql 문을 이용하여 정상적으로 insert 되었는지
확인해 보기 바란다.

자 이제 park 라는 db 사용자에 대한 등록을 할 차례이다.
다음과 같은  sql 문을 만들어 실행한다.


mysql> insert into user
    -> (host,user,password,select_priv,insert_priv,
    -> update_priv,delete_priv,create_priv,drop_priv,
    -> reload_priv,shutdown_priv,process_priv,file_priv)
    -> values ('localhost','park',password('park'),'N',
    -> 'N','N','N','N','N','N','N','N','N')
    -> \g
Query OK, 1 row affected (0.00 sec)

mysql>

위와 같이 하여도 되고 간단히 아래와 같이 하여도 무방하다.

mysql> insert into user
    -> (host,user,password)
    -> values ('localhost','park',password('park'))
    -> \g
Query OK, 1 row affected (0.00 sec)

mysql>

host,user,password  이외의 칼럼들은 모두 디폴트로 'N' 으로 설정
되어 있으므로 위와 같이 하면된다. 여기서 db 테이블과 user 테이블은
특권상에서 약간의 차이점이 있다.  db 테이블 상에서 설정되지 않고
user 테이블 상에만 설정되어진 DB 사용자는 user 테이블 상에서 설정
된 권한을 존재하는 모든 데이타베이스에 대하여 인정받는다.
이러한 이유로 일반 사용자인 경우는 user 테이블 상에는 모든 권한을
'N' 로 설정하여야 하고 각 DB user 가 사용할 데이타베이스에 대한
권한을 DB 테이블에 다시 정해주는 것이다.
즉, 데이타베이스가 여러개 존재한다고 가정하자.  aaa, bbb, ccc 라는
세개의 데이타베이스가 존재할때, park 이라는 DB 사용자는 aaa 라는
데이타베이스만 이용하게 하려고 설정하려고 한다고 하자.

이경우는  user 테이블에는 모든 권한을 'N' 상태로 설정하고 db 테이블
에는 aaa 라는 테이블에 대하여 모든 권한을 'Y' 라고 설정하면 이 park
라는 db 사용자는 aaa 라는 데이타베이스에 대하여 사용권한이 주어질
것이다. 잘 이해가 가지 않는다면 몇번 더 자세히 읽어보고 test 해본다면
쉽게 이해할 수 있을것이다.

*******************************************************************
중요한 tip......
*******************************************************************
user 테이블에 사용자를 insert, update  한 경우 MySQL을 꼭 재기동
시켜 주어야만 한다. 명령은 다음과 같다.
     myaqladmin -u root -p reload
이 명령은 user 테이블에서 사용자 정보를 다시 읽어서 MySQL 을 다시
실행시켜준다.
*******************************************************************


        4. 테이블의 생성

테이블의 생성은 일반적인 sql 문장이므로 간단히 테이블 하나 생성하는
예제를 적는것으로 대신하겠다.
위에서 생성한 사용자와 사용자를 위한 테이블을 이용하여 작업을 하여보자

먼저 mysql을 실행한다. 실행은 그냥 일반 계정 사용자로 한다.

$ mysql -u park -p soonhg
Enter password: ****          <-- 여기서 password 인 park을 입력한다.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 3.21.27-gamma-log

Type 'help' for help.

mysql>


자 MySQL에 접속되었다. 이제 table을 생성하여 보자. 아래는 individual
테이블 생성을 위한 SQL 문장이다.

create table individual(
empno  char(16)   primary key,
name   char(20)   not null,
sex    char(2),
addr   char(80),
tel    char(15)
)

위의 테이블은 개인정보 테이블로 간단히 만든것이다. empno 가 키가 되어
저장된다. 물론 index 테이블이 하나 생성되며 empno 가 인덱싱 되어진 테
이블이 생성될것이다. not null 은 말그대로 name 칼럼은 null 값은 받지
않겠다는 것이고.....

자 그럼 insert 문장을 하나 작성해 보자

insert into individual
values ('1','박순행','1','서울시 중랑구 상봉동 LG apt.','02-777-7777')

위의 sql문을 실행하면 한 row의 데이타가 insert 된다. 그럼 이제
select 문을 이용하여 읽어보자.

mysql> select *
    -> from individual
    -> \g
+-------+--------+------+------------------------------+-------------+
| empno | name   | sex  | addr                         | tel         |
+-------+--------+------+------------------------------+-------------+
| 1     | 박순행 | 1    | 서울시 중랑구 상봉동 LG apt. | 02-777-7777 |
+-------+--------+------+------------------------------+-------------+
1 row in set (0.00 sec)


위와 같이 출력 될 것이다. 여러가지 sql문장을 테스트 해보면 될것이다.

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:05)

'프로그래밍Tips' 카테고리의 다른 글

mySQL 기본사용방법 2  (0) 2005.03.26
UTP RJ 45 랜선 케이블링 방법  (0) 2005.03.03
오라클 원격 DB 접속 설정하기  (0) 2005.02.22


자녀를 위한 요일별 축복기도

자녀들은 무릎을 꿇으십시오.
부모님은 자녀의 머리에 손을 얹으십시오.
자녀들은 “저를 위해 축복기도 해주세요”라고 말하세요.
부모님은 말씀 속 쫜쫜안에 자녀이름을 넣어 축복기도 해주세요.
7일 동안 한 말씀씩 사용하시면 됩니다.


월. 여호와는 쫜쫜에게 복을 주시고 쫜쫜를 지키시기를 원하며 여호와는  그 얼굴로 쫜쫜에
게 비취사 은혜 베풀기를 원하며 그 얼굴을 쫜쫜에게로 향하여 드사 평강 주시기를 원하노
라(민 6:24-26)

화. 환난 날에 여호와께서 쫜쫜에게 응답하시고 야곱의 하나님의  이름이 쫜쫜를 높이 드시
며 성소에서 쫜쫜를 도와주시고 시온에서 쫜쫜를 붙드시며 네 마음의 소원대로 허락하시고
모든 도모를  이루시기를 원하노라.  여호와께서 네  모든 기도를  이루시기를 원하노라(시
20:1-2, 4-5)

수. 여호와를 경외하며 그 계명을 크게 즐거워하는  쫜쫜는 복이 있도다. 그 후손이 땅에서
강성함이며 정직자의 후대가 복이 있으리로다.  부요와 재물이 쫜쫜에게 있음이여  그 의가
영원히 있으리로다. 정직한 자에게는 흑암 중에 빛이 일어나니  쫜쫜는 어질고 자비하고 의
로운 자로다.  쫜쫜가  영영히 요동치   아니함이여 의인은  영원히 기념하게   되리로다(시
112:1-4:6)

목. 평강의 하나님이 친히 쫜쫜으로 온전치 거룩하게 하시고 또 쫜쫜의  온 영과 혼과 몸이
우리 주 예수 그리스도 강림하실 때에 흠없이 보존되기를  원하노라. 쫜쫜를 부르시는 이는
미쁘시니 그가 또한 이루시리라. 우리 주  예수 그리스도의 은혜가 쫜쫜에게 있을지어다(살
전 5:23~24,28)

금. 이러므로 내가 하늘과 땅에 있는 각 족속에게 이름을 주신 아버지 앞에 무릎을 꿇고 비
노니 그 영광의 풍성을 따라 그의  성령으로 말미암아 쫜쫜의 속사람을 능력으로 건강하게
하옵시며 믿음으로 말미암아 그리스도께서 쫜쫜의 마음에 계시게 하옵시고 쫜쫜가 사랑 가
운데서 뿌리가 박히고 터가 굳어져서 능히 모든 성도와 함께 지식이 넘치는 그리스도의 사
랑을 알아 그 넓이와 길이가 어떠함을 깨달아 하나님의 모든 충만하신 것으로 쫜쫜에게 충
만하게 하시기를 구하노라(엡 3:14-19)

토. 여호와는 쫜쫜를 지키시는 자라. 여호와꼐서  쫜쫜의 우편에서 쫜쫜의 그늘이 되시나니
낮의   해가 쫜쫜를 상치 아니하며 밤의 달도 쫜쫜를 해치 아니하리로다.  여호와께서 쫜쫜
를 지켜 모든   환난을 면케하시며 또 네 영혼을 지키시리로다.  여호와께서 쫜쫜의 출입을
지금부터 영원까지 지키시리로다(시 121:5-8)

주일. 우리 주 예수 그리스도와 쫜쫜를 사랑하시고 영원한 위로와 좋은 소망을 은혜로 주신
하나님 우리 아버지께서 쫜쫜의 마음을 위로하시고 모든 선한 일과 말에 굳게 하시기를 원
하노라. 평강의 주께서 친히 때마다 일마다  쫜쫜에게 평강주시기를 원하노라. 주는 쫜쫜의
모든 사람과 함께 하실지어다(살후 2:16-17, 3:16)


* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:17)


HUB-to-PC연결
Direct cable을 만들면 된다.
즉, UTP 케이블을 RJ-45 connector와 연결 할 때 RJ-45 connector를 뒤집어서 편편한 면이 위로 오게 했을 때(볼록한 부분이 아래로 향하게) 왼쪽부터가 1번이 되며,양 끝 단이 똑같이 1번부터 8번까지 순서대로 꼬임 없이 핀 순서대로 연결한다.
-1(흰주),2(주),3(흰녹),4(파),5(흰파),6(녹),7(흰갈),8(갈)

HUB-to-HUB, PC-to-PC 연결
Cross cable을 만들면 된다.
즉, 한쪽은 direct cable과 같이 핀 순서대로 연결하고 다른 한쪽은 1번2번과 3번6번을 바꿔주기만 하면 된다. 다른 한쪽의 핀 번호 및 색깔은 다음과 같이 한다.
- 1(흰녹),2(녹),3(흰주),4(파),5(흰파),6(주),7(흰갈),8(갈)
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
일단 기본적인 DB 사용법을 한번 확인하는 의미에서

기동하기
    >svrmgrl
            connect internal
            startup
멈추기
   >svrmgrl
           connect internal
           shutdown

리스너 기동 - 서버측에서 외부에서의 원격 접속을 받아들이기 위해 필요함
   >lsnrctl start

-----------------------------------------------------------------------
원격지에 있는 컴터(PC든 유닉스든, 서버든 DB 서버와 다른 곳)에서 DB 서버에 접속하려면

1. 원격지 컴터(현재 내가 사용하고 있는 곳)에 적절한 오라클 클라이언트를 설치한다.

2. 설치 후 아래의 예를 참조하여 tnsnames.ora 파일 설정함

# TNSNAMES.ORA Network Configuration File: /data/oracle/OraHome1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

HAKSA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 원격DB서버IP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = 원격DB서버SID)
      (SERVIE_NAME = haksa.ok.ac.kr)
    )
  )
#

3. sqlplus 접속 확인

         sqlplus  ID/PW@원격DB서버SID


* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
junggon 님의 글입니다.
----------------------------------------------------------------------------
썬머신의 솔라리스 8에서 오라클 817버전을 인스톨하는 방법에 대한 내용입니다.


하두 고생고생 해서 다른 분들도 고생하실까봐 올려봅니다.
------------------------------------------------------------
Sun Solaris8 (intel 플랫폼) 에서 Oracle 8i 설치
글쓴이 : 노상근 sknho@deskpia.com , 추가 배중곤 cgv1004@hanafos.com

=== 배중곤 추가 부분 ===
Sun Solaris 8 오라클 설치시 먼저 해둘 일 !!!!!

root로 해야하는 작업이 있다. 아래 나오는 파일을 수정해줘야 한다.
/etc/system 파일에 아래를 추가해 쓴다.
vi system

------------------------------------------------------------
#* 오라클용 공유메모리,세마포어 세그먼트,식별자 세그먼트 설정.
#* 우리 회사 Ultra 80 ( 2cpu , 256MB ram , 30GB 스카시하드 ) 모델의 설정값.
set noexec_user_stack=1
set noexec_user_stack_log=1
forceload:sys/shmsys
forceload:sys/semsys
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=70
set semsys:seminfo_semmsl=160
set semsys:seminfo_semmns=310
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
============================================================================================
설치작업을 할 oracle 이라는 계정을 만들어 준다.
그룹은 그냥 dba 하나로만 한다.
계정이 만들어지면 계정 홈디렉토리 안에있는 프로파일 화일인 " .profile " 에 아래와 같이 추가한다.
아래는 본쉘을 사용하는 것을 기준으로 한다.

ORACLE_SID=ADSVC; export ORACLE_SID
ORACLE_HOME=/export/home/ora817; export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin; export PATH
ORACLE_TERM=vt100; export ORACLE_TERM
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/openwin/lib:/usr/bin:/usr/lib; export LD_LIBRARY_PATH
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
ORACLE_OWNER=oracle; export ORACLE_OWNER
#DISPLAY=211.38.1.164:0.0; export DISPLAY
NLS_LANG=American_America.KO16KSC5601; export NLS_LANG
#LANG=en; export LANG

alias ls='ls -p'
alias ll='ls -al'
alias l='ls -l'
alias c='clear'

PS1='[\u@\H:\W]\$'

umask 022
============================================================================================


[ 예제 1 ]  Solaris 2.3/2.4    

 1. SQLDBA 에서 :    
  SQLDBA> shutdown    
  SQLDBA> exit    
 
 2. Superuser(root)로 login 하고 :    
  # cd /etc
 
 3. /etc/system file 에 다음을 추가 한다.
(저 위의 값을 추천한다.) 왜 이런 값을 넣어야 하는지에 대한 이유를
정확이 아는바가 없음이 죄송스럽습니당. 아래는 울회사 서버의 값입니다. 그대로 써두 될듯.
set noexec_user_stack=1
set noexec_user_stack_log=1
forceload:sys/shmsys
forceload:sys/semsys
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=70
set semsys:seminfo_semmsl=160
set semsys:seminfo_semmns=310
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
    
 4. Kernel을 reconfigure 한다:    
  # touch /reconfigure    
    
 5. Machine 을 reboot 한다:    
  #init 6    
    
 6. SQLDBA 에서 :    
   SQLDBA> startup    
   SQLDBA> exit    
    
Oracle의 init<SID>.ora Parameters 에는 SGA 의 영향을 주는 Parameters가 있다. OS의 Shared Momory 와 Semaphore Parameter 에 연결된 이 Parameter의 Setting 은 System 과 Oracle의 Performance에 영향을 미친다.   
   

### 다음은 oracle 계정의 생성 및 프로파일 설정..
[#] groupadd -g 5000 dba
[#] useradd oracle -g dba
기존사용자를 바꿀땐 : usermod -g dba oracle



vi .profile 로 아래 부분 추가.
--------------------------------------
ORACLE_SID=원하는SID값; export ORACLE_SID
ORACLE_HOME=/export/home/ora817; export ORACLE_HOME
#ORACLE_BASE=/export/home/ora817; export ORACLE_BASE
PATH=$PATH:$ORACLE_HOME/bin; export PATH
ORACLE_TERM=vt100; export ORACLE_TERM
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/openwin/lib:/usr/bin:/usr/lib; export LD_LIBRARY_PATH
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
ORACLE_OWNER=oracle; export ORACLE_OWNER
# DISPLAY=:0.0; export DISPLAY
NLS_LANG=American_America.KO16KSC5601; export NLS_LANG
#임시디렉토리는 오라클 홈 밑에 tmp 디렉토리를 만들어준다.
TMDIR=/export/home/ora817/tmp; export TMDIR
#TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

#아래 언어설정은 혹시나 인스톨시 디비생성을 바로 못하고 스크립트로 남긴 후 수동으로
## dbassist 명령어로 생성하려고 할때엔 언어설정을 풀어서 환경을
## 영어로 재적용(리부팅 등의 방법을 써서~) 해주고 해야 잘 됩니다.
#LANG=en; export LANG

alias ls='ls -p'
alias ll='ls -al'
alias l='ls -l'
alias c='clear'

PS1='[\u@\H:\W]\$'
umask 022
#------------------------


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


Sun 솔라리스 8 (intel 플랫폼)을 처음 받았을 때 함께 들어있는 Oracle 8i 데이터베이스 CD를 보노라면 웬지 뿌듯한 느낌을 받게 된다. 전세계 DB시작을 석권한 오라클에서 리눅스용에 이어 선 솔라리스 사용자들을 위한 제품까지 만들어서 서비스를 시작한 것이다. 사실 오라클 DB의 가격은 결코 만만치 않다. 선 엔터프라이즈용 오라클 DB의 가격을 아는 이들이라면 이렇게 운영체제와 함께 제공되는 오라클 CD에 대해 묘한 감정을 느낄 것이다.
동봉된 오라클 DB는 개발자용이다. 그러나 서버용 DB로도 훌륭히 수행된다.
한가지... 처음 DB를 다루는 분들께는 오라클 이외에 다른 제품을 권하고 싶다. 설치부터가 만만한 제품이 아니기 때문이다. 필자의 개인적 경험상 사용하기 무난한 제품으로는 MS의 MS-SQL Server 7.0을 권하고 싶다. 그러나 이미 어느정도 DB에 대한 지식을 쌓은 분이라면, 그래서 SQL문법에 능통한 분이라면 오라클은 결코 지나칠 수 없는 제품이리라.
작년 (1999년) 초, 리눅스용 오라클을 설치했을 때 몇시간을 헤매던 생각이 났다. 잡지에 나온 대로 설정을 시도했으나 몇 번의 실패끝에 결국은 나름대로의 방식대로 설정하여 겨우 DB가 startup 되는 모습을 볼 수 있었다. 이에 반해 NT용 오라클 서버는 그리 까다롭지 않은 설치방식을 제공한다. 운영체제에 따라 설치방식이 극과 극을 달리는 듯 하다.
사실 이번 솔라리스용 오라클 8i 역시 몇 번의 시행착오를 거친 끝에 설치를 할 수 있었다. 특히 환경변수 설정이 무엇보다 중요하다. 유닉스나 리눅스에 대한 기본 지식이 없이는 시도하지 말 것을 당부한다.
자 준비가 되었으면 설정에 들어간다. 아래 글은 읽는 이들이 어느정도 유닉스나 리눅스에 대하여 기본 지식이 있음을 전제로 작성하였다.


1. 설치를 위한 기본 환경
- 메모리 권장 : 128 MB 이상
- HDD : 1 GB정도의 빈 공간.
- CPU : Celeron 366 혹은 펜티엄 II 350 이상 .
위의 사양은 말 그대로 설치를 위한 최소사양이다. 위 내용중 메모리는 256MB를 장착하면 쾌적하게 오라클을 설치하여 사용할 수 있다. 128MB와 256MB의 차이점은 오라클 설치에 필요한 소요시간에서도 명확히 나타난다.
2. ROOT 권한하에서 할 일.
가. ORACLE 계정 등록
- 오라클 설치 및 운영을 위한 USER 계정을 새로 만든다. (admintool을 이용하는 것이 편하다) 아래와 같이 설정해주면 된다.
* 사용자명 : oracle (임의로 설정가능)
* Primary Group : dba
* Secondary Group : oinstall
* 홈 디렉토리 : / OraHome1 (임의로 설정 가능. 단 오라클 사용자 자체의 계정의 홈 디렉토리와는 절대로 일치시키지 말 것. 과거 리눅스용은 오라클 홈 디렉토리로 사용자 홈 디렉토리를 설정하였으나 솔라리스용은 다르다)
* Login Shell : Bourne shell (/bin/sh)
나. 솔라리스 커널 Parameter 설정
/etc/system 파일 맨 밑부분에 아래 내용을 삽입한다.
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=100
set semsys:seminfo_semmns=200
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
** 상기 사항을 입력할 때 주의하세요. 오타가 나면 부팅시 에러메시지가 나타납니다.




다. 환경변수 설정
- oracle user의 환경변수를 설정해준다. oracle user의 홈 디렉토리안에 있는 .profile을 수정해주면 된다.
문서 맨 위 .profile 적용사항을 보시고 하세요.!!!
** 주의사항 : oracle 계정은 위에 언급한 대로 Bourne shell을 사용한다. C shell과는 달리 Bourne shell이나 Korn shell에서는 환경변수를 지정한후에는 반드시 export 명령을 주어야만이 변수가 적용된다.
예를 들어 위에서 설정한 ORACLE_HOME=/export/home/OraHome1 의 경우에도 밑줄에 export ORACLE_HOME 을 추가로 설정해 주어야 된다.
여기까지는 oracle을 인스톨하기 전에 만들어준다.
라. oracle 홈디렉토리의 사용권한 설정
- oracle user가 새로이 생성될 오라클 홈디렉토리에 쓰기권한을 가질 수 있도록 해주는 것이다. 만일 오라클 홈디렉토리가 위에 지정한 것처럼 /export/home/OraHome1이라면..
# chown oracle:dba /export/OraHome1
이렇게 지정해주면 된다.




3. oracle 사용자로서 할 일
root 권한하에서 할 일을 마쳤으면 이제 새로 생성한 oracle user로 다시 login하여 다음 작업을 수행해주자.
가. umask 값 확인
- umask라고 쉘에서 입력했을 때 0022값이 나오면 된다. 다른값이 나왔다면 .profile에서 umask 설정을 잘못해준 것이다.
4. oracle 데이터베이스 설치
아래 내용은 모두 oracle 사용자로 로긴하여 수행해야 하는 일이다. 절대 root로 login하지 말기 바란다.
가. 로긴시 언어설정
가장 애를 먹은 부분이다. 이제껏 기본적으로 한글 (Korean) 환경에서 솔라리스를 수행하여 왔을 것이다. 그러나 Oracle database를 설치할 때 만큼은 영어환경에서 설치를 해주도록 하자. 그 이유는.... 한글환경에서 설치를 해보면 안다. Oracle Database Configuration Assistant를 수행할 때 나오는 원인모를 에러.. 그리고 멈춤. 이것 때문에 며칠을 허송세월하였다. 결국 오라클 사용자모임의 게시판에서 해답을 얻을 수 있었다.
나. Oracle 8i CD 삽입
다 아는 내용이겠지만 솔라리스는 CD를 삽입함과 동시에 자동으로 CD를 마운트해준다. 오라클 CD를 넣으면 CD의 루트 디렉토리에 있는 파일들이 파일관리자 화면에 보일 것이다. 여기서 아래에 흰색으로 표시된 runInstaller 파일을 수행시키면 된다. 마우스로 더블클릭해보자. JAVA를 기반으로 한 멋진 GUI환경의 Universal Installer Program이 실행된다.

오라클 CD를 넣었을 때 나타나는 파일매니저


다. Oracle 8i 설치
설치 프로그램 화면을 따라가면서 설치를 수행하자.
설치도중 tmp/OraInstall/orainstRoot.sh 스크립트 파일을 root 권한으로 수행하라고 나온다. (물론 새로 root로 로긴하라는 것이 아니고 잠시 su를 이용 root권한을 가지고 하면 된다)
File location 지정화면은 특별한 이유가 없는 이상 시스템에서 기본적으로 지정하는 위치에 설치하면 된다.
설치하는 유형을 선택하는 메뉴는 다음 3가지로 나뉜다.
1) Oracle Enterprise Edition 8.1.5 : Oracle db server와 관련된 모든 프로그램
2) Oracle 8i Client 8.1.5 : client용 프로그램
3) Oracle Programmer 8.1.5 : 기본적인 클라이언트 프로그램 (Net8, SQL*Pluse) 및 프리 컴파일러, 도움말등.
위에서 자신에게 알맞는 사항을 선택후 Next 버튼을 누르면 설치유형 선택화면이 나온다. 여기서 Custom을 선택하여야만 프로그램 및 데이터베이스에서 사용할 언어를 선택할 수 있다.
다음 화면은 설치가 가능한 각 프로덕트가 박스안에 나열된다. 상단의 'Product Language'를 클릭하면 설치할 언어를 선택할 수 있다. 기본적으로는 'English'로 되어있겠지만 이것을 'Korean'으로 변경한다.
Java Runtime Applicaiton의 경로설정 및 보안인증방법 (Authentification Methods) 설정부분은 그냥 Next 버튼을 누르면 기본값으로 설정된다.
Oracle Home Directory는 기본적으로 export/home/OraHome1으로 되어있을 것이다. 설정된 기본값 그대로 하면 된다.
오라클 소프트웨어를 갱신할 수 있는 UNIX 그룹을 지정하라고 나오면 oinstall을 입력한다.
설치에 필요한파일이 복사되는 과정이 진행된다.
라. Net8 Configuration
네트웍 설정부분이다. 이곳을 click하면 자세한 사항이 나온다.

** 설치중 정해주어야 할 값.
Oracle SID: 4-5자정도의 짧은 알파벳 이름을 지어준다. 이값은 추후 .profile에도 설정해주어야 하므로 잊지 않도록 한다. (Default : ORCL)
DB 명 : 역시 자기마음에 드는 이름을 지어준다

.

마. 데이터베이스 생성
설치 후반부로 가면 자동으로 수행에 필요한 데이터베이스 생성으로 들어간다. (Oracle Database Configuration Assistant) 데이터베이스 생성 옵션으로서는 설치 CD에 있는 데이터베이스 파일 복사를 선택하면 된다. 데이터베이스 생성작업에 소요되는 시간은 시스템 메모리 크기에 따라 차이가 있을 것이다. (메모리가 클수록 소요시간은 짧아진다)



바. root.sh 실행
필요한 파일 설치가 끝나고 링크작업이 완료되면 Oracle Home 디렉토리에 있는 root.sh를 root권한으로 실행하라는 메시지가 나온다. 이것을 실행시켜도 실행이 되지 않을 경우에는 chmod 명령을 사용하여 root.sh의 속성을 실행가능 파일로 바꿔준다.
실행후 ORACLE_OWNER, ORACLE_HOME, ORACLE_SID의 설정값이 나오면 이것을 확인해둔다. local bin 디렉토리의 full path명은 자신의 시스템에 설정된 값으로 고쳐준다. (예. /usr/bin)
모든 설치가 끝나게 되면 아래와 같은 엔딩 화면을 보게된다. 이걸 보기위하여 얼마나 많은 노력을 하였는가.... 라고 생각하면 안된다. 아직 확인해야 할 일이 많다.

5. 설치후 해야할 일
가. 환경변수 추가 설정
- oracle user의 환경변수를 추가로 설정해준다. 설치하기 전과 마찬가지로 oracle user의 홈 디렉토리안에 있는 .profile을 수정해주면 된다.
* ORACLE_SID= 아까 설정한 값을 넣어준다. (예 : ORCL등)
* CLASSPATH=/export/home/jre/1.1.7/bin:$ORACLE_HOME/jlib
* LD_LIBRARY_PATH=$ORACLE_HOME/lib
** 참고로 필자의 oracle 계정에 설정한 .profile값을 공개한다. 여기서 DISPLAY 변수에 나오는 서버명(deskpia)은 여러분의 시스템에 맞게 수정해야 한다. 나머지 사항은 대체로 동일하게 설정해도 되는 사항들이다.

tty istrip
DISPLAY=deskpia:0.0
export DISPLAY
ORACLE_HOME=/export/home/OraHome1
export ORACLE_HOME
PATH=/usr/bin:/usr/ccs/bin:/usr/ucb:/etc:$ORACLE_HOME/bin:/bin:/opt/bin
export PATH
TMDIR=/var/tmp
export TMDIR
umaks=022
export umask
ORACLE_OWNER=oracle
export ORACLE_OWNER
ORACLE_SID=ORCL
export ORACLE_SID
CLASSPATH=/export/home/jre/1.1.7/bin:$ORACLE_HOME/jlib
LD_LIBRARY_PATH=/usr/java/lib:$ORACLE_HOME/lib
이제 시스템을 rebooting후 oracle user로 새로이 login한다.
6. 오라클 구동 확인
가. 이미 path가 지정되어 있으므로 곧바로 아래와 같이 쉘에서 입력해보자.
$ svrmgrl
아래와 같이 화면이 나타나면 1차 성공이다.
Oracle Server Manager Release 3.1.5.0.0 - Production
(c) Copyright 1997. Oracle Coprporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production
with the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 - Production
SVRMGR>
나. 이제 데이터베이스에 연결해본다.
SVRMGR> connect internal
Connected 라고 나오면 된다. 여기서 Connected라는 메시지와 함께 어떤 error 메시지가 나온다면 오라클 db가 정상적으로 설치되지 못한 것이다.
다. 다음으로는 데이터베이스를 구동시킨다.
SVRMGR> startup
잠시후 아래와 같이 메시지가 나오면 성공적으로 데이터베이스가 구동되고 있는 것이다.
** 아래 수치는 시스템에 따라 다를 수 있음 **
Oracle instance started
Total System Global Area 35028368 bytes
Fixed Size 64912 bytes
Variable Size 18014208 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database Opened.
라. 내친김에 데이터베이스에 있는 테이블들을 살펴보자.
SVRMGR> select * from tab;
수많은 테이블들이 주욱 나오면서 마지막에 다음 메시지가 나올 것이다.
1433 rows selected.
이제 오라클 데이터베이스 설치라는 기나긴 여정이 끝났다. 남은 일은 dba로서 해야 할 일이다. 항상 끝마칠 때 shutdown을 잊지 않으면 아무런 문제없이 oracle DB를 사용할 수 있을 것이다.

p.s. http://technet.oracle.com으로 가면 오라클 데이터베이스에 관한 아주 많은 자료들이 체계적으로 정리되어 있다. 이것을 이용하려면 회원으로 가입하면 된다. 회비는 무료이다. 물론 모든 자료는 영어로 되어 있다.

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)


제가 예전에 어딘가에서 받았는데 - 진짜로 어디서 받았는지 누가 만들었는지 모르겠군요... 마지막에 "Axion"이라는 로고가 나오긴 하는데 거기가 어딘지는 모르겠습니다. - 꽤 경각심을 일깨워주는 자료라 한번 올려보았습니다.

여러분 모두 안전벨트 꼭 하고 다니세요....
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:21)

+ Recent posts