Lyric2009. 10. 11. 08:54
반응형

발해를 꿈꾸며

진정 나에겐 단 한가지
내가 소망하는 게 있어
갈려진 땅의 친구들을
언제쯤 볼 수가 있을까
망설일 시간에 우리를 잃어요

한민족인 형제인 우리가
서로를 겨누고 있고
우리가 만든 큰 욕심에
내가 먼저 죽는걸
진정 너는 알고는 있나
전 인류가 살고 죽고
처절한 그날을 잊었던 건 아니었겠지

*우리 몸을 반을 가른 채
현실 없이 살아갈 건가
치유할 수 없는 아픔에
절규하는 우릴 지켜줘
시원스레 맘의 문을 열고
우리와 나갈 길을 찾아요
더 행복할 미래가 있어 우리에겐

언젠가 나의 작은 땅에
경계선이 사라지는 날
많은 사람이 마음 속에
희망들을 가득 담겠지
난 지금 평화와 사랑을 바래요
젊은 우리 힘들이 모이면
세상을 흔들 수 있고
우리가 서로 손을 잡은 것으로 큰 힘인데

갈 수 없는 길에 뿌려진
천 만인의 눈물이 있어
나에겐 갈 수도 볼 수도 없는가

저 하늘로 자유롭게 저 새들과 함께
날고 싶어

우리들이 항상 바라는 건
서로가 웃고 돕고 사는 것
이젠 함께 하나를 보며 나가요


아이들의 눈으로

나에겐 꿈이 있어요 모두를 사랑하지요

지금 아이들의 두 눈 속에서
나는 느끼고 있어
다시 아이들의 맘으로 돌아가고 싶어
한 살 한 살 나이를 먹어가네
새삼 두려운 건 무엇일까
그리운 어린 시절
내가 뛰놀던 그 앞마당과
포근했던 엄마의 가슴과
든든한 아빠의 목소리 귀여운 친구들

*즐거웠었어 내가 작던 그때가
조그만 일에도 내 눈엔 눈물이 흐르던
아련하던 기억인데
뒤돌아보면 너무 빨랐던 시간
파랗게 맑았던 마음들을 찾고 싶은데

이제라도 내가 가진 시간은
많이 남아있지만
나의 지나온 시절엔 왜 이리
후회가 많은지
네게 다시 돌아가고 싶어
모든 것이 처음이고 싶어
해맑게 웃고 싶어
마음으로 너를 보고싶어
모든 것을 사랑하고 싶어
더 이상 변하긴 싫지만 머물 수가 없어

나에겐 꿈이 있어요 모두를 사랑하지요
우리와 함께 있어요 모두를 사랑하세요
사랑을 주세요


교실이데아

*됐어 (이제) 됐어
이제 그런 가르침은 됐어
그걸로 족해 족해

매일 아침 일곱시 삼십분까지
우릴 조그만 교실로 몰아넣고
전국 구백만의 아이들의 머리 속에
모두 똑같은 것만 집어넣고 있어
막힌 꽉 막힌 사방이 막힌 널
그리곤 덥석 모두를 먹어 삼킨
이 시커먼 교실에서만
내 젊음을 보내기는 너무 아까워

**좀더 비싼 너로 만들어 주겠어
네 옆에 앉아있는 그 애 보다 더
하나씩 머리를 밟고 올라서도록 해
좀 더 잘난 네가 될 수가 있어

***왜 바꾸진 않고 마음을 조이며
젊은 날을 헤맬까
바꾸지 않고 남이 바꾸길 바라고만 있을까

국민학교에서 중학교로 들어가며
고등학교를 지나 우릴 포장센터로 넘겨
겉보기 좋은 널 만들기 위해
우릴 대학이란 포장지로 멋지게 싸버리지
이젠 생각해봐
대학 본 얼굴은 가린 채
근엄한 척 할 시대가 지나버린 건
좀더 솔직해 봐 넌 알 수 있어


내맘이야

그런데 지금 나는 TV를 껐어
급해서 화장실로 달려갔었어
한숨을 크게 쉬면 날이 밝아와
치마를 둘러 입고 나가볼 꺼야
말하지도 마 당장 끊어!

난 신문을 오래 보면 눈이 뒤로 돌아가
내가 이루려던 꿈에 니가 깔리진 마
날 행복하게 만들 거라면
그러면 난 마당에 나가
잡초나 뽑아야지 예-
말 시키지 마

집에서 놀고 먹어라
내 머릴 잡고 흔들지 마라
날 두고 밥 먹지 마라
자꾸 나를 자꾸 웃기지 마라

밥! 항아리를 보고 있었어
밥! 불고기가 먹고 싶은데
밥! 또 그렇다면 냄새가 배겨
밥! 또 누군가가 놀려 댈 꺼야
밥이나 말아서

TV를 꿰뚫어 봐라 잠 잘 땐 깨우지 마라
라해로꾸꺼은말이
자꾸 나를 자꾸 웃기지 마라
말하지도 마

집에서 놀고 먹어라
내 머릴 잡고 흔들지 마라
날 두고 밥 먹지 마라
자꾸 나를 자꾸 웃기지 마라

이렇게 다 내 맘이야


지킬박사와 하이드

내 마음을 철저하게
속이고 살아온 내 인생엔
가슴깊이 존재했던 불만이 있어
너무나도 달랐었던
두 맘을 갈라놓기 위해서
어렵지만 난 과감하게 선택했었네

*언제까지라도 자신을
속이고 살아야 하는데
끝없는 내 마음의 갈증은
저주 받은 이 인류가 풀지 못할 숙제인가
난 언제라도 꿈틀거릴 내 본성이 두려웠어

**그대가 내 생각과 같다면
그대 자신을 지켜주고
오그라든 내 몸을 본다면
그대가 깨달을 수 있다면

매번 내 혼을 팔아버렸어
다시 난 고약하게 변했어
캄캄한 밤에 나는 누군가에게
길을 묻다가 내리쳤어
그 안개 속을 난 뛰고있어 날 망쳤어

내가 먹던 약은 이제
내 말을 듣질 않게 됐었네
저주 받은 내 선택에 끝이 보였어
이 세상은 나를 이제
붙잡아 가두려 하고 있어
살인자로 목 매달린 내가 보였지

*언제까지라도 자신을
속이고 살아야 하는데
끝없는 내 마음의 갈증은
저주 받은 이 인류가 풀지 못할 숙제인가
왜 생에 대한 이 욕망은
간절하게 남아 있나


영원

내가 멀리 있다 느껴져도
그대여 슬퍼하지 마세요
나의 그리움이 항상 너를 지켜요 날마다

함께 했었던 그 시간들이
내 눈앞엔 아른거리지만
소중한 추억으로 남아서
미련 없이 나는 이 세계를 떠나요

그댈 이젠 다시 볼 순 없겠지만
내겐 가장 소중했던 널 기다릴게

오늘도 나의 무덤 옆에서
그냥 그렇게 앉아있네요
내 생전에 쓰던 일기장을 꼭 쥐고 앉아서

자, 두 눈을 감고 날 느껴봐요
두 손을 내밀어 날 안아요
이 세상이 나를 외면해도
그대가 있음에 난 잠시 머물 수 있어요

그댈 이젠 다시 볼 순 없겠지만
따스히 널 안아주던 날 기억해요


널 지우려해

우연히 길을 걷다
마주친 그 모습에 너무 놀랬어
작고 귀엽고 깨물어 주고 싶던
그녀의 모습 너무 닮았어
“널 잊었다고 생각 했었어”
너를 본 건지 넌 어디 있는지
너도 가끔씩은 내 생각을 하는지
쓸데없는 걱정으로 한숨만 짓네
이제는 너를 지우려고 해

*두 번 다시 너를 떠올리지 않아
가슴 아픈 일이지만
네 생각에 눈물짓진 않을 거야
내 마음을 찾고 싶었어

생각하면 마음만 아픈데
아직까지 널 잊지 못하나
짓궂었던 너의 목소리가
내 귓가에서 들릴 것 같아
슬픈 일들도 좋은 추억도
이 눈물과 함께 담아 날려버리고
이젠 나도 나를 찾아 떠나가겠어
이제는 너를 지우려고 해

내가 너를 처음 본 곳
마지막 한 번 가보고 싶었어
비가 오는 이 밤길을
정신없이 그냥 걷고 있네
한도 없이 걷다 보면
너를 잊을 수 있을 것 같아
얼마나 더 가야 하는가
언제나 언제나 (너를 지울 수 있나)
소리쳐 (너를 부르고 있어)...
큰 소리쳐 (너를 부르고 있어)

반응형

'Lyric' 카테고리의 다른 글

서태지 6집 가사  (0) 2009.10.11
서태지 5집 가사  (0) 2009.10.11
서태지 4집 가사  (0) 2009.10.11
서태지 2집 가사  (0) 2009.10.11
서태지 1집 가사  (0) 2009.10.11
Posted by [PineTree]
Lyric2009. 10. 11. 08:53
반응형

하여가

너에게 모든 걸 뺏겨 버렸던 마음이
다시 내게 돌아오는 걸 느꼈지
너는 언제까지나
나만의 나의 연인이라
믿어왔던 내 생각은 틀리고 말았어
변해버린 건 필요가 없어
이제는 너를 봐도 아무런 느낌이 없어
나에겐 항상 시선을 멈췄던
예전의 네 모습과
나를 바라보던 네 미소와 너만의 목소리
모든 게 그리워진 거야 지금 나에겐

*너를 볼 때마다 내겐
가슴이 떨리는 그 느낌이 있었지
난 그냥 네게 나를 던진 거야 예-
나홀로 있을 때조차
너를 기다린다는 설레임에
언제나 기쁘게 마음을 가졌던 거야 예-
부풀은 내 마음 속엔 항상 네가 있었어
하얀 미소의 너를 가득 안고서
이제는 너를 위해 남겨둔 것이 있어
해맑던 네 미소가 담긴 사진

**난 그냥 이대로 뒤돌아 가는가
넌 그냥 이대로 날 잊어 버리나
난 그냥 이대로 뒤돌아 가는가
널 그냥 이대로 보내긴
내 가슴이 너무나

너에게 많은 걸 바라는 게 아니지
그 전처럼 바로 그 때처럼 말이야
정성이 가득히 있었지
언제나 나를 너무 따뜻하게 대해주었지
이제는 전화를 네게 거는 것 마저
난 이제 모두가 두려워졌어
넌 아닌 척 하고는 있지만
너의 목소리가 너무도 차갑지
난 이제 알 수가 있어
너도 많이 아파하고 있었다는 것만을
진실을 숨기지마 넌 왜 그리 모르지

이렇게 떠나가 버릴
너를 보려 한 것이 아니야
하지만 나는 기다려
네가 다시 돌아올 날까지
이곳에서


우리들만의 추억

한결같은 너희들의 정성이
우리에겐 너무 커다란 힘이 되었지
편지 속에 수많았던 사연들
예쁜 마음 모두다 느낄 수가 있었어

Devastating Taiji in the place to be
with Ju-no and Hyun-suk
right beside me
Creating the sound to the fullest effect
Pumping it hard to gain the respect
Art to the Truth and Truth the Art
Coming to you straight from the heart
We're rocking the mike as never before
So to all the freaks in the house
move to the dance floor

*소리쳐 주던 예쁘게 웃었던
아름다운 너희들의 모습이 좋았어
함께 기뻐하고 모두 다같이 웃고
서로를 걱정했던 우리들만의 추억들

우리들이 힘든 일을 겪을 땐
그 곁에는 아무도 있어주질 않았어
다만 우리가 견딜 수 있던 건
너희들의 크나큰 사랑이었어

Dance to the music and move
Move to the sound and groove
To the soft MC's, I'm a lyrical poet
Listen to my rhymes and you'll surely know it
A hard hiphopper there is none higher
sucka MC's they call me sire
T to the A to the I to the J to the I

Why… Cause we want you to funk !

T is for the talent that I possess
A is for attention I get from the rest
I is for my intellect, style, and my grace
J is for the joy I bring to my race
I is for identity, visions I see
We'll rock you till the twenty first century!
So united we stand divided we fall in
this year of 93 we're taking it all!

우린 약하지 않아 어린 애가 아니야
마음을 서로 합하면 모든 해낼 수 있어
난 더 잘 하겠어 우리 모두를 위해
우리 역시 영원토록 너희들을 사랑할거야


죽음의 늪
시커먼 먹구름이 날 가린다
곧 비가 내리겠지
비에 날 씻을 수 있을까
(우- 쓸데없는 소리)
여긴 어디라고 말했지 (죽음의 늪)
어디든 좋지 널 택했으니
넌 나만의 새로운 친구야

난 행복에 빠졌어 나를 쳐다보지 말아줘
알 수 없는 무엇이
계속 날 잡아 끌어 아프게

*벗어나려 해도 이제 소용없어
늦어버린 거야
다가오는 것은 지저분한 것들
피하진 않겠어
내가 가는 길은 어딜까
앞이 막혀 있는 것 같아
난 또 주저앉고 마는가
누가 나의 손을 좀 잡아줘

BANG! 난 듣고야 말았었어
그게 무슨 소리인지
난 귀를 기울이고 있어 한번 더 들렸지
BANG! 나는 밖으로 나가 봤어
아무도 없는 새벽거리에서
쓰러져 있는 그를 보고있네
그는 바로 나였지
난 예전에 꿈꾸던 작은 소망 하나가 있어
널 두 팔에 안고서
내 마음을 전해주려 했었어


너에게

니가 아무리 지금 날 좋아한다 그래도
그건 지금 뿐일지도 몰라
왜냐하면 그건 말이야

너의 말들을 웃어 넘기는
나의 마음을 너는 모르겠지
너의 모든 걸 좋아하지만
지금 나에겐 두려움이 앞서

너무 많은 생각들이 너를
가로막고는 있지만
날 보고 웃어주는 네가
"그냥 고마울 뿐이야"
너는 아직 순수한 마음이
너무 예쁘게 남았어
하지만 나는 왜 그런지 모두가 어려운 걸

*세상은 분명히 변하겠지
우리의 생각들도 달라지겠지
생각해봐 어려운 일 뿐이지
나에게 보내는 따뜻한 시선을
때로는 외면하고 얼굴을 돌리는 걸
넌 느끼니 너를 싫어해서가 아니야

너를 만난 후 언젠가부터
나의 마음 속엔 근심이 생겼지
네가 좋아진 그 다음부터
널 생각하면 깊은 한숨 뿐만

사랑스런 너의 눈을 보면
내 맘은 편안해지고
네 손을 잡고 있을 때면
"난 이런 꿈을 꾸기도 했어"
나의 뺨에 네가 키스할 땐
온 세상이 내 것 같아
이대로 너를 안고 싶어 하지만 세상에는

아직도 너무 많은 일이
네 앞에 버티고 있잖아
생각해봐 어려운 일 뿐이지
네가 접하게 되는 새로운 생활들과
모두가 너에게 시선을 돌리게 되는 것을
알 수 있니 너는 이런 내 마음 아는지
조그마한 너의 마음 다치게 하긴 싫어
이러는 것 뿐이지
어른들은 항상 내게 말하지
넌 아직도 모르고 있는 것이 더 많다고


수시아

이 세상 그 누구도 나를 닮을 순 없네
나를 세상에 알릴 거야
나 역시 그 누구를 따라 하진 않겠어
나의 유일함을 위해
내세워요 신께서 주신 당신을
과감하게 모든 걸 부숴 버려요
실패해요 쓰러지세요
당신은 일어설 수가 있으니
다음에야 쓰러져있던 널 볼 수 있어


마지막 축제

언제나 함께 했던 시간들을 접어두고서
이제 너는 떠나가네
즐거웠던 시간만을 기억해 줄래
해맑은 네 두 눈에 반했던 게 어제 같은데
이제 너는 떠나가네
우리의 따뜻했던 마음 기억해줘

*신비한 채로 가려져있던 널 알기도 전에
우리가 헤어지는 일은 없을 거라
난 믿었는데
너를 보내기 위한 춤을 추고 있어
짧은 시간만이 남았어

**내 친구야 창 밖을 봐 눈이 오잖아
모두 너를 위한 거야 느낄 수 있니

내겐 언제나 짜릿함으로 다가왔던
너의 따뜻한 미소
우린 언제나 다 함께 나누었던
웃음과 눈물
신비롭던 너의 몸짓이 하나하나가
나의 기억 속엔 언제나 매일매일
생각나겠지

어쩌다 너의 길이 힘겨워 걷다가 지칠 땐
주저앉아 잠시 울어
언젠가 다시 만날 그날을 생각해
친구야 하루가 다 지나가고 잠들기 전에
우리들을 기억해줘
다시 만날 땐 너를 꼭 안아 주겠어

**내 친구야 창 밖을 봐 눈이 오잖아
모두 너를 위한 거야 느낄 수 있니
아침 해가 뜨기 전에 널 보내 줄게

반응형

'Lyric' 카테고리의 다른 글

서태지 6집 가사  (0) 2009.10.11
서태지 5집 가사  (0) 2009.10.11
서태지 4집 가사  (0) 2009.10.11
서태지 3집 가사  (0) 2009.10.11
서태지 1집 가사  (0) 2009.10.11
Posted by [PineTree]
Lyric2009. 10. 11. 08:52
반응형

난 알아요

난 알아요
이 밤이 흐르고 흐르면
누군가가 나를 떠나 버려야 한다는
그 사실을 그 이유를
이제는 나도 알 수가 알 수가 있어요
사랑을 한다는 말을 못했어
어쨌거나 지금은 너무 늦어 버렸어
그때 나는 무얼 하고 있었나
그 미소는 너무 아름다웠어

*난 정말 그대 그대만을 좋아했어
나에게 이런 슬픔 안겨주는 그대여
제발 이별만은 말하지 말아요
나에겐 오직 그대만이 전부였잖아

**오 그대여 가지 마세요
나를 정말 떠나가나요
오 그대여 가지 마세요
나는 지금 울잖아요

난 알아요
이 밤이 흐르면 Yo!
그대 떠나는 모습을 뒤로하고
마지막 키스에 슬픈 마음
정말 떠나는가

사랑을 하고 싶어 너의 모든 향기
내 몸 속에 젖어있는 너의 많은 숨결
그 미소 그 눈물 그 알 수 없는
마음에 마음
그리고 또 마음에 마음
그 어렵다는 편지는 쓰지 않아도 돼
너의 진실한 모습을 바라보고 있어요
아직도 마음 속엔 내가 있나요
나는 그대의 영원한


환상속의 그대

결코! 시간이 멈추어 줄 순 없다 Yo!
무엇을 망설이나 되는 것은
단지 하나 뿐인데
바로 지금이 그대에게 유일한 순간이며
바로 여기가 단지
그대에게 유일한 장소이다

*환상 속엔 그대가 있다
모든 것이 이제 다 무너지고 있어도
환상 속엔 아직 그대가 있다
지금 자신의 모습은
진짜가 아니라고 말한다

단지 그것 뿐인가 그대가 바라는 그것은
아무도 그대에게 관심을 두지 않는다
(하나 둘 셋 Let's go!)
그대는 새로워야 한다
아름다운 모습으로 바꾸고
새롭게 도전하자

그대의 환상 그대는 마음만 대단하다
그 마음은 위험하다
자신은 오직 꼭 잘 될 거라고
큰소리로 말하고 있다
하지만 지금 그대가
살고 있는 모습은 무엇일까

세상은 Yo! 빨리 돌아가고 있다
시간은 그대를 위해
멈추어 기다리지 않는다
사람들은 그대의 머리 위로 뛰어다니고
그대는 방 한 구석에 앉아
쉽게 인생을 얘기하려 한다


너와 함께한 시간 속에서

너와 함께한 시간 속에서
너를 처음 만난 그 때를
자세하게 말해 줄 수는 없지만
무엇인가 정말 따뜻하고
너무 포근해서 좋은 그런 느낌이 있었지

나에게 기억 나는 것은
커피 한 모금에 수줍던 이야기
까만 밤 아주 까만 밤
너와 내가 사랑했던 아름다운 밤

*오랜 친구 같아 한없이 행복해
너와 함께 한 시간 속에서
아픔은 사라지고
나의 마음이 포근해지네

그대와 나 슬픈 얘기도 많았지
그대가 또 내가 서로에게 바라던
수많은 이야기 많은 사연들
이젠 아무 것도 아닌 것을 알게 됐어.

아주 오랜 시간을 우리 함께 보냈지
작은 시련도 이제 다 지나가고
흐르는 노래 함께 들으며
너는 내 맘 속에 오랫동안 남겠지

*오랜 친구 같아 눈물이 흐르네
너와 함께 한 시간 속에서
아픔은 사라지고 나의 마음이 포근해지네
이렇게 까만 밤 너와 함께 한 까만 밤
너에게 무슨 말을 하고 싶어
내 맘은 내 맘은 그댈 아


이밤이 깊어가지만

옛 생각에 카페 문을 열고
지난 추억을 기억하려 했지
부드러운 음악소리 마저
내 마음을 아프게 해

*비마저 내린 그날을 생각하네
내 욕심과 자만에 슬픈 너의 표정

텅 빈 카페에 홀로 기대어
나도 모르는 눈물 흘리네
난 두 눈을 꼭 감고 있지만
너의 모습이 있을 뿐

**이 밤이 깊어 가지만
지금 전화를 걸어 너를 볼 수 있을까
두려워

넌 지금도 울고 있을 거야
이슬비처럼 여린 너의 마음
그대 제발 슬퍼하지 말아요
너의 마음을 알아요

허전한 마음을 감추며
비 내리는 이 밤을 걸어가네
내가 본 창백한 그 얼굴
그것이 마지막일까

**이 밤이 깊어 가지만
지금 전화를 걸어 너를 볼 수 있을까
다시 만나고 싶어


내 모든 것

그렇게도 힘들었던 수많은 사연들을
이제 사랑으로
그대 앞에 나의 모습 보이리라
나의 진실을 말해 주고파
하지만 나는 네 흐르는 눈물을
차마 볼 순 없어

*내 모든 걸 당신께 말해 주고 싶어
작은 마음 드리리라
나는 항상 그대의 마음 곁에 있어
소중한 건 너이기에

난 Yo!
언제나 너에게 말은 하지 못하고
그대 눈빛이 마주 칠 땐
고개 돌리며 다른 얘길 하네
내 Yo!
마음을 주고 싶어도 줄 수 없는
나의 이 아픈 가슴을 너는 아는지
나의 진실을 이해하는지 기타!

소리없이 울다 지친 슬픈 내 모습을
그저 바라보는
그대 앞에 나의 모습 보이리라
애써 미소를 내게 보이는
슬픈 너의 눈빛을 이제는 다시
바라볼 순 없어


이제는

짙은 어둠에 서 있을 때
너의 뒷모습을 보았네
가는 너를 잡지 못했어
너무나도 소중했기에

*내게 돌아온 그대를 맞이하며
기쁨에 눈물을 보였지만
이제 다시는 울지는 않을 거야
좋은 너를 위해서
이제는 모든 것을 잊고 살아가고파
너의 눈빛만 바라보고 싶어
이제는 너의 작은 마음 안아 줄 거야
너를 위해선 아파해도 좋아

사랑은 아니라 느꼈지
너의 진한 향기마저도
너의 애틋한 그 눈빛도
내겐 의미 없을 거라고

이제 작은 정성을 다해
나의 그대만을 사랑하리라


Rock and roll dance

내 마음대로 춤을 춰도
아무도 뭐라 하지 않는 그런 춤을
그대는 알고 있는가
그것은 바로 Rock'n Roll Dance

큰 소리로 노래를 부르고
힘차게 뛰어 몸을 부딪혀
어떤가 신나지 않는가
이것이 바로 Rock'n Roll Dance

* Rock'n Roll Dance! Dance !
Rock'n Roll Rock'n Roll Dance !

무슨 생각을 하고 있나
그대의 말을 들어보면은
그런 건 지금 걱정할 게 아니지
지금은 바로 지금일 뿐
락 앤 롤! 헤비메틀!
재즈! 클래식! 펑키! 블루스!
어떤 리듬에도 우리는 춤추고 싶네

Rock'n Roll Dance

 

Blind love

I once met a lady she was all so fine
and the only thing I wanted was to make her mine
I was all so sweet and all so kind
and like a man whose in love I was all so blind
Cause from the first time I was her I become obsessed
and the only thing I wanted was her sweet carress
she had the pretties eyes and the smoothest skin
but she left me on the outside trying to get in

Listen to what I say I'm going to be your friend
more precious thing some where by me I never forget you truly
you don't know my heart from the moment at first sight
you make only me so sorrowful never say forget me

Please wait for me listen to my words
Babe I love you (I can't understand)
Please wait for me listen to my words
Think about you all the time

I thought she really cared so I gave her my heart
and when thing were looking up she played the port
but when my downs came around the girl skipped town
she left my face to baring a frown
so to all you casinnobas out there or who want to be
take it from me Taiji the one and only
love can always be kind but when a
girls all waked love is all so blind

반응형

'Lyric' 카테고리의 다른 글

서태지 6집 가사  (0) 2009.10.11
서태지 5집 가사  (0) 2009.10.11
서태지 4집 가사  (0) 2009.10.11
서태지 3집 가사  (0) 2009.10.11
서태지 2집 가사  (0) 2009.10.11
Posted by [PineTree]
ORACLE/ADMIN2009. 10. 9. 21:38
반응형

기존에는 테이블을 새로 작성(reorg)  작업을 통해

커진 테이블 스페이스 크기를 복구 가능하였으나

10g 부터는 shrink 기능을 이용하여 손쉽게 테이블을 줄일수 있게 되었다.

Shrink 기능은 HWM(High Water Mark)를 줄일수 있는 기능이다.


- 사전 확인 사항

init.ora 파일내에 compatible = 10.2 이상인것을 확인

ASSM (Automatic Segment Space Management) 테이블 스페이스여만 가능

각 테이블 조회 방법은

SELECT obj.owner
,obj.table_name
,(CASE WHEN NVL(idx.cnt, 0) < 1 THEN 'YES' ELSE 'NO' END) shrinkable
FROM dba_tables obj,
(SELECT table_name, COUNT(rownum) cnt
FROM dba_indexes
WHERE index_type LIKE 'FUN%'
GROUP BY table_name) idx
WHERE obj.table_name = idx.table_name(+)
AND obj.tablespace_name = upper('&1')

쿼리를 통해 (테이블 스페이스 명을 인자값으로)

확인 가능하다.

1. 테이블 검색 방법

SELECT * FROM TABLE(DBMS_SPACE.ASA_RECOMMENDATIONS());

아래와 같이 테이블의 DBA_SEGMENTS에서 볼수 있는 크기와

축소 가능 크기가 조회된다.

SEGMENT_OWNER SEGMENT_NAME SEGMENT_TYPE PARTITION_NAME ALLOCATED_SPACE USED_SPACE RECLAIMABLE_SPACE
MAX_TI SMR_IF_LOG TABLE
6761793074 5910149080 851643994
MAX_TI SMR_IF_LOG_I01 INDEX
478455081 420139142 58315939
MAX_TI SMR_IF_LOG_I02 INDEX
411921243 398204079 13717164


2. 축소하기

가장 먼저 행들을 이동 가능하도록 변경한다.

위의 SMR_IF_LOG 테이블을 기준으로 설명하겠다.

ALTER TABLE SMR_IF_LOG ENABLE ROW MOVEMENT;

--> 반대로는 ALTER TABLE SMR_IF_LOG DISABLE ROW MOVEMENT; 이다..

이제 SHRINK 기능을 수행할수 있으며

다음 3가지 형태로 가능하다

① ALTER TABLE SMR_IF_LOG SHRINK SPACE; 
    -- SMR_IF_LOG 테이블의 공간만 TABLESPACE로 환원

② ALTER TABLE SMR_IF_LOG SHRINK SPACE CASCADE;
    -- 모든 관련 OBJECT까지 TABLESPACE으로 공간 환원

③ ALTER TABLE SMR_IF_LOG SHRINK SPACE COMPACT;
   -- 행들만 이동시킴.



※ SHRINK 를 적용 시킬  없는 테이블
UNDO segments
temporary segments
clustered tables
tables with a column of datatype LONG
LOB indexes
IOT mapping tables and IOT overflow segmnets
tables with MVIEWS with ON COMMIT
tables with MVIEWS which are based on ROWIDs.


SELECT --*
       'ALTER TABLE '||SEGMENT_NAME||' ENABLE ROW MOVEMENT;   '||CHR(10)||CHR(13)||
       'ALTER TABLE '||SEGMENT_NAME||' SHRINK SPACE COMPACT;  '||CHR(10)||CHR(13)||
       'ALTER TABLE '||SEGMENT_NAME||' SHRINK SPACE ;         '||CHR(10)||CHR(13)||
       'ALTER TABLE '||SEGMENT_NAME||' SHRINK SPACE CASCADE;  '||CHR(10)||CHR(13)||
       'ALTER TABLE '||SEGMENT_NAME||' DISABLE ROW MOVEMENT;  '||CHR(10)||CHR(13)
  FROM USER_SEGMENTS a
 WHERE 1=1
   AND a.segment_type = 'TABLE'


select * from table(dbms_space.asa_recommendations());

select job_name, program_name
from dba_scheduler_jobs
where job_name like '%SPACE%';


select program_name, program_action
from dba_scheduler_programs
where program_name = 'AUTO_SPACE_ADVISOR_PROG';
반응형
Posted by [PineTree]
DBMS2009. 10. 7. 15:55
반응형

 

오라클 자료형과 MSSQL 자료형 변환시 참고하세요.

 

Oracle data type SQL Server data type Alternatives

BFILE

VARBINARY(MAX)

Yes

BLOB

VARBINARY(MAX)

Yes

CHAR([1-2000])

CHAR([1-2000])

Yes

CLOB

VARCHAR(MAX)

Yes

DATE

DATETIME

Yes

FLOAT

FLOAT

No

FLOAT([1-53])

FLOAT([1-53])

No

FLOAT([54-126])

FLOAT

No

INT

NUMERIC(38)

Yes

INTERVAL

DATETIME

Yes

LONG

VARCHAR(MAX)

Yes

LONG RAW

IMAGE

Yes

NCHAR([1-1000])

NCHAR([1-1000])

No

NCLOB

NVARCHAR(MAX)

Yes

NUMBER

FLOAT

Yes

NUMBER([1-38])

NUMERIC([1-38])

No

NUMBER([0-38],[1-38])

NUMERIC([0-38],[1-38])

Yes

NVARCHAR2([1-2000])

NVARCHAR([1-2000])

No

RAW([1-2000])

VARBINARY([1-2000])

No

REAL

FLOAT

No

ROWID

CHAR(18)

No

TIMESTAMP

DATETIME

Yes

UROWID

CHAR(18)

No

VARCHAR2([1-4000])

VARCHAR([1-4000])

Yes

반응형
Posted by [PineTree]
ORACLE/ADMIN2009. 10. 7. 14:16
반응형
1. REDO
 - 모든 변경사항을 REDO로그에 기록한다.
 - REDO로그는 Online REDO와 Archuved REDO로그로 구성된다.
    Online REDO 로그는 2개 이상의 파일로 구성되어 있어,
    현재 사용중인 로그 파일이 꽉 차면 다음 로그 파일로 스위칭
    이때 꽉 차여진 로그 파일을 다른 위치로 백업래 준 파일을 Archived REDO로그 이다.
 - 목적 3가지
  - 데이타 복구 : Archived REDO이용
  - 버퍼캐시복구 : 인스턴스가 비정상적종료시 그떄까지 작업내용이 잃어버리게 됨.
                          재기동 되면 Online REDO로그에 저장된 기록사항을 읽어와 마지막
                          채크포인트와 사고발생직전까지 수행한 트랜젹션을 재현
  - Fast Commit(IO속도 차 극복) : 데이타 버퍼 블록을 디스크에 기록하는 작업은 Random엑세스 방식,
                                              Append방식 Append방식이 상대적으로 빠르게 때문에 우선 변경사항을
                                              Append방식으로 기록하고 동기화는 후에 배치방식으로 일괄수행.
 - REDO로그 버퍼를 REDO로그에 기록하는 시점
  - 3초마다 DBWR프로세스부터 신호흫 받을때
  - 로그 버퍼의 1/3이 차거나 기록된 REDO레코드량이 1MB를 넘을떄
  - 사용자 커킷 또는 롤백 명령이 날릴때
  
2. UNDO
 - 각 트랜지션별로 UNDO세그먼트를 할당해주고 그 트랜지션이 발생시킨 테이블과 인댁스에
    대한 변경사항을 UNDO레코드 단위로 UNDO세그먼트 블록에 기록.
 - 목적 3가지
  - 트랜지션 롤백
  - 트랜지션 리커버리(인스턴스 리커버리시 롤백단계)
  - READ Consistency(읽기 일관성)
  타 DBMS는 Lock를 통해 일기 일관성을 구현하지만,
  오라클에서는 UNDO데이타를 이용해서 읽기 일관성을 구현한다.  
             읽기 일관성이란 Transaction이 진행되는 동안 Database의 다른 사용자는 이 Consistent Read에 의해
             Commit되지 않은 변경 사항을 볼 수 없는 기능 입니다.  
 - UNDO레코드에 기록되는 내용
  - Insert : 추가된 레코드의 rowid
  - Update : 변경되는 컬럼에 대한 before image
  - Delete : 지워지는 로우의 모든 컬럼의 대한 before image
------------------------------------------------------------------------------------
REDO 와 UNDO를 차이점에서 바라본 관점.
------------------------------------------------------------------------------------
REDO 는 UNDO를 포함 합니다.
REDO 는 시스템 장애시 복구를 위해 사용 합니다.
복구시에 UNDO 데이터도 같이 복구하구요. Commit 되지 않은 데이터를 Rollback 하게 됩니다.
UNDO 는 Rollback 시에도 사용 되지만 Read Consistency(읽기 일관성) 을 위해서 도 사용 됩니다.
REDO 는 모든 변경사항(UNDO 포함)을 기록 합니다.
복구는 UNDO 를 통해서 복구를 하게 됩니다. 즉, ROLLBACK을 한다는 말이죠.
시스템 장애가 발생하게 되면 UNDO 데이터도 모두 날아가게 되겠죠.
결국 시스템 장애시 REDO 데이터를 이용해서 마지막 CHECK POINT 부터 장애까지의 DB BUFFER CACHE 를 복구하게 됩니다.
이게 완료가 되면 UNDO DATA 를 이용하여 COMMIT 되지 않은 데이터를 모두 ROLLBACK 함으로써 복구를 완료하게 됩니다.
결국 REDO 가 UNDO 를 복구하고 최종적으로 UNDO가 복구를 하게 됩니다.
UNDO(안한것 처럼)는 되돌리는 것 이라고 보시면 될거에요.
어떤 세션에서 DML을 발생시키면 commit이나 rollback을 날리기 전까지 이전 정보를 저장하기 위해서
UNDO 블럭에 해당 정보를 기록하죠.. 해당 세션이 트렌젝션 중에 비정상적으로 종료가 되었다면,
안한것 처럼(UNDO) 다시 원복해야 되니까요.
REDO(다시 함)는 위에 설명에도 있듯이 인스턴스 실패시(DB가 내려감) 데이터 파일에 쓰여지지 않은 커밋된 데이터를 복구한다고 되어 있습니다.
좀 더 설명을 해드리자면 커밋을 날릴 경우 LGWR가 로그 파일에 변경된 정보를 기록하게 되고
그 다음에 DBWR이 버퍼캐쉬에 있는 변경 사항에 대해서 데이터 파일에 내려 쓰게 됩니다.
이는 복구 정보가 더 중요해서 그런 것이라고 이해하시면 됩니다(복구 정보가 있으면 재적용이나 되돌릴 수 있으므로).
DB가 비정상적으로 내려가면, 데이터 파일에 쓰여지지 않은 정보들이 리두로그에 기록되어 있으므로
리두로그에서 정보를 가져와 다시 적용(REDO)하는 것입니다.
반응형
Posted by [PineTree]
OS/UNIX 공통2009. 10. 7. 14:05
반응형

저자 - Sheryl Calish

가장 강력하면서도 한편으로는 혼란스러운 유비쿼터스 명령어인 find 명령어에 대한 개요.

게시일 : 2008년 7월

Linux find 명령어는 모든 Linux 명령어 가운데 가장 유용하면서도 혼란스러운 명령어 가운데 하나입니다. 다른 Linux 명령어의 표준 구문과 다른 구문을 가지고 있다는 점에서 어렵습니다. 하지만, 파일명, 파일 유형, 사용자, 더 나아가 타임 스탬프 별로 파일을 찾을 수 있다는 점에서 강력한 명령어이기도 합니다. find 명령어를 사용하면 이러한 속성을 자유롭게 조합해 파일의 위치를 찾을 수 있을 뿐만 아니라, 찾은 파일에 대해 연산을 수행할 수 있습니다.

본 글의 목적은 find 명령어와 그 잠재적 이점을 개략적으로 설명함으로써 find 명령어를 손쉽게 학습 및 사용할 수 있도록 돕는 것입니다. 동시에, find 명령어의 특성 중 가장 강력하면서도 한편으로는 혼란스러운 측면에 대한 개요 및 참조를 제공할 것입니다.

[주: 여기에서 사용된 find 명령어는 GNU 버전이기 때문에 일부 세부 내용은 다른 버전의 find 명령어와 다를 수 있습니다.]

기본 형식

먼저, find 명령어의 기본 구조부터 살펴보겠습니다:

find   start_directory  test  options   criteria_to_match

action_to_perform_on_results

                       
아래 명령어에서 find는 이름에 “java” 확장자를 가지고 있는 모든 파일을 대상으로 “.”가 표시된 현재 디렉토리를 찾기 시작할 것입니다:
find . -name  "*.java"   

아래에는 검색 결과에 대한 간단한 목록이 나열되어 있습니다:

find . -name  "*.java"

./REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java

./REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java

..

[주: 본 글에서 잘라 붙이기를 해 find 명령어를 실행하는 경우에는 자체 키보드를 사용해 큰따옴표(“”)를 바꿔야 올바른 결과를 얻을 수 있습니다.]

아 래 명령어 역시 동일한 연산을 수행할 것입니다. 어떤 경우든, find 명령어에 전달되도록 escape 문을 통해 와일드카드 문자를 일반 문자로 처리해야 하며 쉘에 의해 해석되지 않아야 합니다. 따라서, 검색 문자열에 큰타옴표를 붙이거나 그 앞에 역슬래시(\)를 붙이십시오:

find . -name  \*.java

find 에 대한 인수는 옵션이기는 하지만, 검색 시작 위치를 지정하지 않은 경우에는 현재 디렉토리에서 기본적으로 검색이 시작됩니다. 옵션 사항이기는 하지만 테스트 조건을 지정하지 않은 경우에는 불완전하거나 선별되지 않은 결과값이 출력됩니다.
 
아래 3개의 find 명령어를 실행하면 똑같이 현재 디렉토리와 숨겨진 파일을 포함하는 모든 서브디렉토리의 모든 파일 목록이 검색됩니다:

find 

find .

find . -print

이는 –la 옵션을 가진 ls 명령어를 실행하는 것과 비슷합니다. 백업을 위해 위 명령어의 출력물에 전체 경로 이름이 포함되기를 원하는 경우라면 시작 디렉토리에 대한 전체 경로를 지정해야 합니다:

find /home/bluher -name \*.java

/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java

/home/bluher/plsql/REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java/

...

또 한, 검색 문자열에 1개 이상의 시작 디렉토리를 지정할 수도 있습니다. 적정 권한을 가진 사용자로서 실행되는 경우, 아래 명령어는 모든 jar 파일을 찾기 위해 /usr, /home 및 /tmp 디렉토리 순서로 내려갈 것입니다:  

find /usr /home  /tmp -name "*.jar"

적정 권한이 없는 사용자라면 많은 시스템 디렉토리를 검색하기 시작할 때 다음과 같은 오류 메시지가 나올 수 있습니다:

find:  /tmp/orbit-root: Permission denied

다음과 같이 검색 문자열을 추가함으로써 불명확한 결과가 나오는 것을 피할 수 있습니다:

find /usr /home  /tmp -name "*.jar" 2>/dev/null

이렇게 하면 모든 오류 메시지가 널(null) 파일로 전송되기 때문에 보다 정제된 출력물이 제공됩니다.

기본적으로 find 명령어는 대/소문자를 구별합니다. 대/소문자가 구별되는 find에서는 -name 테스트를 대신해 -iname 테스트를 사용하십시오.

find downloads  -iname "*.gif"

downloads/.xvpics/Calendar05_enlarged.gif

downloads/lcmgcfexsmall.GIF
또한, 파일명 외에도 유형에 따라 파일을 검색할 수 있습니다. 예를 들어, 아래 명령어를 통해 디렉토리의 모든 서브디렉토리를 찾을 수 있습니다:
find . -type d          

아래 명령어를 사용하면 /usr 디렉토리의 모든 심볼릭 링크(symbolic link)를 찾을 수 있습니다:

find /usr -type l

위 명령어를 실행하면 3,000개 이상의 링크 목록이 나타날 것입니다. 슈퍼유저(root) 권한을 통해 아래 명령어 가운데 하나를 실행하면 /usr 디렉토리의 링크 목록과 이것이 가리키는 파일이 나타납니다:

# find /usr/bin  -type l  -name "z*" -exec ls  -l {} \;

lrwxrwxrwx 1 root root 8 Dec 12 23:17 /usr/bin/zsh -> /bin/zsh

lrwxrwxrwx 1 root root 5 Dec 12 23:17 /usr/bin/zless -> zmore

lrwxrwxrwx 1 root root 9 Dec 12 23:17 /usr/bin/zcat -> /bin/zcat
find /usr/bin -type  l  -name "z*" -ls

하지만, 보다 짧은 두 번째 명령어를 실행하면 디렉토리와 inode 정보를 가진 긴 파일 목록이 나올 것입니다. -exec 및 –ls 실행에 대해서는 후반부에서 다룰 것입니다

find가 찾을 수 있는 다른 파일 유형으로는 다음과 같은 것들이 있습니다

• b—block (buffered) special
• c—character (unbuffered) special
• p—named pipe (FIFO)
• s—socket

find 명령어의 시작점으로 루트를 사용하면 시스템 속도가 크게 느려질 수 있습니다. 반드시 명령어를 실행해야 하는 경우에는 사용량이 적은 시간대나 야간에 실행하는 것이 좋습니다. 아래 구문을 사용해 출력물을 파일로 보낼 수 있습니다.:

find  /   -print > masterfilelist.out

원치 않는 출력물을 대량 생산하는 find 명령어를 실수로 입력한 경우에는 CTRL-C를 누르기만 하면 가장 최근에 실행된 명령어가 중단됩니다.

여 러 파일 시스템을 갖춘 엔터프라이즈 네트워크에서는 특히 find 명령어가 검색한 파일을 제한하는 것이 좋습니다. 필요한 수 만큼 옵션 및 테스트를 사용함으로써 시스템 상의 로드를 줄일 수 있습니다. 이를 위해 가장 유용하게 사용할 수 있는 옵션은 –xdev와 -mount입니다. 이들 옵션은 find 명령어가 MS-DOS, CD-ROM 또는 AFS와 같은 다른 파일 시스템 상의 디렉토리로 내려가지 않도록 함으로써 검색 범위를 좁혀줍니다. 따라서, 시작 디렉토리와 동일한 유형의 파일 시스템으로 검색을 제한할 수 있습니다.

듀얼 부팅 시스템 사용자는 mount 명령어가 실행되는 경우에 이러한 옵션을 사용할 수 있습니다. Windows 파티션이 관련되어 있다고 가정하면, 아래와 같은 명령어를 통해 마운팅 할 수 있습니다.:

mount -t vfat  /dev/sda1 /mnt/msdos

여러분이 사용하는 실제 명령어는 시스템 설정 방법에 따라 달라집니다. df를 실행하거나 아래 명령어를 수행함으로써 파티션 마운팅 여부를 확인할 수 있습니다:

find /mnt/msdos  -name "*.txt" 2> /dev/null

MS Windows 파티션에서는 파일 목록이 길 수 밖에 없습니다. 이제부터는 -mount 또는 -xdev 옵션을 통해 아래 명령어를 실행하십시오:

find / -name  "*.txt" -mount 2> /dev/null

또는

find / -name  "*.txt" -xdev 2> /dev/null

아래 예에서와 같이 -fstype 테스트를 사용해 find 명령어에 찾고자 하는 파일 시스템을 명확하게 알려줄 수도 있습니다:

find / -name  "*.txt" -fstype vfat 2> /dev/null

시간 찾기

find 명령어는 시스템의 타임 스탬프를 토대로 파일 검색에 사용할 수 있는 여러 개의 옵션을 가지고 있습니다. 이러한 타임 스탬프로는 다음이 포함됩니다

mtime파일 내용이 마지막으로 수정된 시간
atime—파일을 읽기 또는 액세스한 시간
ctime—파일 상태가 변경된 시간

mtime 및 atime의 의미는 그 자체로 쉽게 알 수 있지만, ctime는 좀 더 설명이 필요합니다. inode는 각 파일에 메타 데이터를 가지고 있기 때문에 파일에 연결된 메타 데이터가 변경되면 inode 데이터도 변경됩니다. 파일에 대한 심볼릭 링크 생성, 파일에 대한 권한 변경, 파일 이동 등과 같은 다양한 작업으로 인해 이러한 메타 데이터 변경이 야기될 수 있습니다. 이러한 경우, 파일 내용에 대한 읽기나 수정은 수행되지 않기 때문에 themtime 및 atime은 변하지 않지만 ctime은 변합니다. 

이러한 시간 옵션은 각기 -n, n 또는 +n로 지정된 n 값을 함께 사용해야 합니다.

• -n은 n 이하를 반환
• +n은 n 이상을 반환
• n은 정확히 n에 해당되는 값을 반환

보다 명확한 설명을 위해 몇 가지 예를 살펴 보겠습니다. 아래 명령어는 최근 1시간 동안 수정된 모든 파일을 찾아줍니다:

find . -mtime -1

./plsql/FORALLSample

./plsql/RegExpDNASample

/plsql/RegExpSample

-1 대신 1을 가진 동일 명령어를 실행하면 정확하게 1시간 전에 수정된 모든 파일을 찾을 수 있습니다:

find . -mtime 1 

위 명령어는 정확하게 일치하는 값을 요청하기 때문에 모든 결과값이 나오지는 않습니다. 아래 명령어는 1시간 이전에 수정된 파일을 찾아줍니다:

find . -mtime +1 
기본적으로 -mtime, -atime 및 –ctime는 최근 24 시간에 대한 타임 스탬프입니다. 하지만, 뒤에 daystart 옵션을 붙이면 오늘을 시작으로 24시간 주기가 시작됩니다. 또한, mmin, amin 및 cmin을 사용하면 분 단위로 변경된 타임 스탬프를 찾을 수 있습니다.

여러분의 계정으로 로그인한 후 즉시 아래 명령어를 실행하면 최근 1분 내에 읽은 모든 파일을 찾을 수 있습니다:

find . -amin -1

./.bashrc

/.bash_history

./.xauthj5FCx1

find 명령어만으로 파일의 위치를 찾으면 메타 데이터의 일부인 파일의 액세스 시간이 변경된다는 사실에 유의하십시오.

-newer, -anewer 및 –cnewer 옵션을 사용하면 특정 파일과 비교해 수정 또는 액세스된 파일을 찾을 수도 있습니다. 이는 -mtime, -atime 및 –ctime과 비슷합니다.
 
• -newer : 보다 최근에 내용이 수정된 파일
• -anewer : 보다 최근에 읽기가 수행된 파일
• -cnewer : 보다 최근에 상태가 변경된 파일

마지막 tar 파일 이후로 어떤 방법으로든지 수정된 홈 디렉토리의 파일을 모두 찾으려면 아래 명령어를 사용하십시오:

find . -newer  backup.tar.gz

크기에 따른 파일 찾기

-size 옵션은 지정된 크기 기준에 부합하는 파일을 찾아줍니다. 크기가 5MB 이상인 모든 파일을 찾으려면 아래와 같이 하십시오

find / -size  +5000000c 2> /dev/null

/var/log/lastlog

/var/log/cups/access_log.4

/var/spool/mail/bluher

마 지막에 “c”를 붙이면 결과가 바이트 단위로 보고됩니다. 기본적으로 find 명령어는 512 바이트 블록의 수로 크기를 보고합니다. 또한, “c”를 “k”로 교체하는 경우에는 킬로바이트 수로, “w”를 사용하는 경우에는 2바이트 워드의 수로 결과를 표시할 수 있습니다.

-size 옵션은 모든 제로 바이트 파일을 찾거나 이들 파일을 /tmp/zerobyte 폴더로 이동하기 위해 자주 사용됩니다. 아래 명령어가 바로 이러한 연산을 수행합니다.

find test -type f  -size 0 -exec mv {} /tmp/zerobyte \;

-exec 옵션은 find 명령어가 만나게 되는 파일의 모든 쉘 명령어를 수행할 수 있도록 해줍니다. 후반부에서 이 옵션의 보다 다양한 사용 예를 확인할 수 있습니다. 중괄호를 사용하면 빈 파일 각각을 이동시킬 수 있습니다

또한, -empty 옵션을 사용하면 빈 파일을 찾을 수 있습니다.

find test -empty        

test/foo

test/test

권한 및 소유권에 따른 파일 찾기

find 명령어는 시스템 보안 모니터링을 위해 없어서는 안될 명령어입니다. 아래와 같이 기호법이나 8진법을 통해 사용 권한이 널리 열려있는 파일을 찾을 수 있습니다.

find . -type f  -perm a=rwx -exec ls -l {} \; 

또는

find . -type f  -perm 777 -exec ls -l {} \;

-rwxrwxrwx 1 bluher users 0 May 24 14:14 ./test.txt

위의 명령어나 아래 명령어의 경우 -exec ls –l을 수행하고 있기 때문에, 반환된 파일의 실제 사용 권한을 확인할 수 있습니다. 이 명령어는 “기타 사용자” 및 그룹이 모두 쓰기를 수행할 수 있는 파일을 찾아줍니다.

find plsql -type f  -perm -ug=rw -exec ls -l {} \; 2>/dev/null

또는

find plsql -type f  -perm -220 -exec ls -l {} \; 2>/dev/null 

-rw-rw-rw- 1 bluher users 4303 Jun  7  2004 plsql/FORALLSample/doc/otn_new.css

-rw-rw-rw- 1 bluher users 10286 Jan 12  2005 plsql/FORALLSample/doc/readme.html

-rw-rw-rw- 1 bluher users 22647 Jan 12  2005 plsql/FORALLSample/src/config.sql

..
아래 명령어들을 실행하면 사용자, 그룹 또는 둘 모두가 쓰기 작업을 할 수 있는 파일을 찾을 수 있습니다  
find plsql -type f  -perm /ug=rw -exec ls -l {} \; 2>/dev/null, or,

find plsql -type f -perm /220 -exec ls -l {} \; 2>/dev/null

-rw-r--r-- 1 bluher users 21473 May  3 16:02 plsql/regexpvalidate.zip

-rw-rw-rw- 1 bluher users 4303 Jun  7  2004 plsql/FORALLSample/doc/otn_new.css

-rw-rw-rw- 1 bluher users 10286 Jan 12  2005 plsql/FORALLSample/doc/readme.html

-rw-rw-rw- 1 bluher users 22647 Jan 12  2005 plsql/FORALLSample/src/config.sql

웹이나 기존 매뉴얼에는 아래 명령어로 나와 있을 것입니다.

find . -perm +220  -exec ls -l {} \; 2> /dev/null 

+ 기호는 / 기호와 동일한 역할을 하지만, 새로운 버전의 GNU findutils에서는 권장되지 않고 있습니다.

시스템에서 쓰기 가능한 모든 파일을 찾으려면 아래 명령어를 사용하십시오

find / -wholename  '/proc' -prune  -o  -type f -perm -0002 -exec ls -l {} \;

-rw-rw-rw- 1 bluher users 4303 Jun  7  2004/home/bluher/plsql/FORALLSample/doc/otn_new.css

-rw-rw-rw- 1 bluher users 10286 Jan 12  2005 /home/bluher/plsql/FORALLSample/doc/readme.html

...

4 번째 사용 권한에 대해 앞으로 조금 더 다루겠지만, 마지막 필드의 “2”는 쓰기 비트로도 알려져 있는 파일 사용 권한의 “기타 사용자”에 해당됩니다. 우리는 설정된 다른 사용 권한이 무엇이든 관계 없이 기타 사용자를 위해 설정된 쓰기 권한을 가진 파일을 보고 싶다는 표시로 0002라는 사용 권한 모드 앞에 대시를 사용했습니다.

위의 명령어에서는 3가지 새로운 개념이 도입되었습니다. 패턴이 발견된 경우, – prune은 파일 패턴 “/proc”에서 -wholename 테스트를 사용함으로써 find 명령어가 이 디렉토리로 내려오지 않도록 막아줍니다. 불린 연산자 “-o”를 통해 find 명령어는 다른 디렉토리에서 명령어의 나머지 부분을 처리할 수 있습니다. 각 표현식 간에 가정된 암시적 and 연산자(-a)가 있기 때문에 좌측 표현식이 거짓(false)으로 평가된 경우 and 뒤에 나오는 표현식은 평가되지 않습니다. 따라서, -o 연산자가 필요합니다. 강제 우선 순위 적용을 위해 괄호를 사용하는 것처럼 find 명령어는 불린 연산자 -not, !,도 지원합니다.

시스템 관리자는 자주 find 명령어를 통해 해당 사용자나 그룹의 이름 또는 ID를 사용해 특정 사용자나 그룹의 정규 파일을 검색하고 있습니다:

[root] $  find / -type f -user bluher -exec ls -ls {}  \;

여기, 이러한 명령어의 출력에 대한 간단한 예제가 나와 있습니다:

4 -rw-r--r-- 1 bluher users 48  May  1 03:09  /home/bluher/public_html/.directory

4 -rw-r--r-- 1 bluher users 925 May  1 03:09 /home/bluher/.profile

또한, find 명령어를 사용해 그룹 별로 파일을 검색할 수도 있습니다:

[root] $ find /  -type f -group users
find / -type d -gid  100

이 명령어를 실행하면 그룹 ID 100이 소유하고 있는 디렉토리 목록이 나옵니다. 해당되는 uid 또는 gid를 찾기 위해 /etc/passwd 또는 /etc/group 파일에서 more 또는 cat 명령어를 실행할 수 있습니다

이 명령어는 알려진 특정 사용자 및 그룹에 관한 파일을 찾는 것 외에도 사용자나 그룹이 지정되지 않은 파일을 찾는 데도 유용합니다. 아래 명령어는 /etc/passwd 또는 /etc/group 파일에서 리스트를 가지고 있지 않은 파일을 식별합니다.

find / -nouser -o  -nogroup

위 명령어는 실제로 시스템 상에 결과를 제공하는 것은 아니지만, 파일을 이동한 후에 사용자나 그룹이 지정되지 않은 파일을 식별하는 데 사용할 수 있습니다

이제, 본 섹션 초반부에 언급한 별도의 높은 사용 권한 문제를 해결할 수 있게 되었습니다.

SGID 및 SUID는 UNIX 기반 운영 체제 상의 파일 및 디렉토리에 할당할 수 있는 특별 액세스 권한 플래그입니다. 컴퓨터 시스템 액세스에 있어 일반 권한을 가진 사용자가 일시적으로 높아진 권한을 가지고 바이너리 실행 파일을 수행할 수 있습니다.

find /  \( -perm -2000 -o -perm -4000 \) -ls

167901   12 -rwsr-xr-x   1 root     root         9340 Jun 16  2006 /usr/bin/rsh

167334   12 -rwxr-sr-x   1 root     tty         10532 May  4  2007 /usr/bin/wall

위 명령어에서 괄호가 escape 처리된 것을 볼 수 있습니다. 또한, 권한 간의 차이점을 확인할 수 있습니다. 첫 번째 파일에는 SGID 권한이 설정되어 있으며 두 번째 파일에는 SUID 권한이 설정되어 있습니다. 위 명령어의 마지막 연산은 -exec ls -dils 연산의 find 명령어와 유사합니다

find 명령어 제어

Linux 의 많은 명령어와 달리, find 명령어는 -r 또는 -R 옵션이 없이도 서브디렉토리로 내려가지 않습니다. 이는 기본적으로 지원됩니다. 하지만, 때에 따라 이를 제한하고 싶을 수 있습니다. 이럴 경우, -depth, -maxdepth 및 –mindepth 옵션과 –prune 연산이 유용합니다

-prune이 얼마나 유용한지는 이미 확인했기 때문에 이제는 -depth, -maxdepth 및 -mindepth 옵션에 대해 살펴보겠습니다.

-maxdepth 및 -mindepth 옵션을 사용하면 find 명령어를 통해 검색하고자 하는 디렉토리 트리의 수준을 지정할 수 있습니다. find 명령어가 단 한 수준의 디렉토리를 찾도록 하고 싶은 경우에는 maxdepth 옵션을 사용할 수 있습니다.

아래 명령어를 실행해 디렉토리 트리의 상위 3개 수준의 로그 파일을 검색하면 –maxdepth의 효과를 확인할 수 있습니다. 이렇게 하면 –maxdepth 없이 실행할 때 보다는 훨씬 적은 출력 결과가 나옵니다

find / -maxdepth 3  -name "*log"

또한, find 명령어에게 디렉토리 트리에서 최소 3개 수준까지 디렉토리를 검색할 것을 지시할 수 있습니다.

find / -mindepth 3  -name "*log"

-depth 옵션은 내용 평가에 앞서 디렉토리를 평가할 수 있도록 해줍니다. 아래 명령어는 한 예입니다.:

find -name "*test*" -depth

./test/test

./test

./localbin/test

./localbin/test_shell_var

./localbin/test.txt

./test2/test/test

./test2/test

./test2

find 명령어의 세계

지 금까지 find 명령어의 유용하지만 다소 혼란스러운 일부 기능에 대해 알아보았지만, find 명령어가 수행할 수 있는 추가 작업이 있습니다. 예를 들어, find 명령어가 기존 버전의 UNIX 및 기타 운영 체제와 호환 가능하도록 하고 여러 파일로 출력을 인쇄하도록 하는 등 연산을 수행할 수 있도록 하는 옵션이 있습니다. 본 자료를 읽은 다음에는 find 명령어에 대한 맨페이지(man page)를 이해할 수 있는 배경 지식을 갖추었을 것으로 생각하기 때문에 이 강력하면서도 유용한 툴을 직접 경험해 볼 것을 권합니다


Sheryl Calish는 Linux 전문 IT 컨설턴트입니다. Blue Heron Consulting을 거쳐 현재는 EquityBuild에서 IT 디렉터를 맡고 있습니다

반응형

'OS > UNIX 공통' 카테고리의 다른 글

ls 파일용량크기로 정렬하기  (0) 2015.02.08
세마포어에 대하여  (0) 2012.05.11
linux/unix date로 어제(yesterday) 날짜 출력  (0) 2010.05.05
Posted by [PineTree]
ORACLE/ADMIN2009. 10. 6. 18:37
반응형


TABLE에서 모든 행을 삭제하는 방법에는 다음과 같은 세 가지 OPTION이 있다.

 1. DELETE 명령어 사용
 
     DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다.
     예를 들어 EMP TABLE에서 모든 행을 삭제하는 명령문은 다음과 같다.
 
     SQL>DELETE FROM emp;
 
     ◈ DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다
         많은 SYSTEM 자원이 소모된다.
         예를 들어 CPU 시간,REDO LOG 영역,  TABLE이나 INDEX에 대한 ROLLBACK SEGMENT
         영역 등의 자원이 필요하다.
     ◈ TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다.
     ◈ 이전에 할당되었던 영역은 삭제되어 빈 TABLE이나 CLUSTER에 그대로 남아 있게 된다.
        
 
2. DROP 과 CREATE 명령어 사용
 
     TABLE을 삭제한 다음 재생성할 수 있다.
     예를 들어 EMP TABLE을 삭제하고 재생성하는 명령문은 다음과 같다.
 
     SQL>DROP TABLE emp;
     SQL>CREATE TABLE emp (......);
 
     ◈ TABLE이나 CLUSTER를 삭제하고 재생성하면 모든 관련된 INDEX, CONSTRAINT,
         TRIGGER도 삭제
되며, 삭제된 TABLE이나 CLUSTERED TABLE에 종속된 OBJECTS는
         무효화 된다
.
     ◈ 삭제된 TABLE이나 CLUSTERED TABLE에 부여된 권한도 삭제된다.
 
 
3. TRUNCATE 명령어 사용
 
     SQL명령어 TRUNCATE를 사용하여 TABLE의 모든 행을 삭제할 수 있다.
     예를 들어 EMP TABLE을 잘라내는 명령문은 다음과 같다.
 
     SQL>TRUNCATE TABLE emp:
 
     ◈ TRUNCATE 명령어는 TABLE이나 CLUSTER에서 모든 행을 삭제하는 빠르고
         효율적인 방법
이다.
     ◈ TRUNCATE 명령어는 어떤 ROLLBACK 정보도 만들지 않고 즉시 COMMIT한다.
     ◈ TRUNCATE 명령어는 DDL 명령문으로 ROLLBACK될 수 없다.
     ◈ TRUNCATE 명령문은 잘라 버릴 TABLE과 관련된 구조(CONSTRAINT, TRIGGER 등)과
         권한에 영향을 주지 않는다. 
  
     ◈ TRUNCATE 명령문이 TABLE에서 ROW를 삭제하면 해당 TABLE에 걸려 있는 TRIGGER는
         실행되지 않는다
.
     ◈ AUDIT 기능이 ENABLE되어 있으면, TRUNCATE 명령문은 DELETE 문에 해당하는
         AUDIT 정보를 생성하지 않는다. 대신 발생한 TRUNCATE 명령문에 대한
         단일 AUDIT RECORD를 생성한다.
반응형
Posted by [PineTree]
ORACLE/SCRIPT2009. 9. 28. 14:12
반응형
select to_char(completion_time,'yyyymmdd') DAY, count(*)  CNT From v$archived_log
where   to_char(completion_time,'yyyymmdd') >='20090901'
group by to_char(completion_time,'yyyymmdd')
order by to_char(completion_time,'yyyymmdd')   desc;
반응형
Posted by [PineTree]
PineTree/Invitation2009. 9. 27. 08:36
반응형
i n v i t a t i o n

티스토리 초대장

+ 남은 초대장 수 : 14

안녕하세요!

티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.

나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!

티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 아래 댓글(New Comment)로 신청해 주시면 초대장을 보내드립니다. 댓글(New Comment)남길때 이메일(Email)입력란에 이메일주소 정확히 입력해주셔야합니다.(이메일주소로 초대장이발급됩니다.)

초대장을 보내드리고 일주일이내 개설하시지 않으신 분들은 초대장이 회수되오니 바로 개설해주세요! 개설하신 후에 댓글남겨주는 센스^^




Yes
이런 분들께 드립니다!
1. 다른 블로그를 사용해보셨던 분
2. 이메일 주소가 정상적인 분
3. 블로그를 시작하려는 이유를 남겨주신 분!
No
이런 분들께 드리지 않아요!
1. 이메일 주소가 의심되는 분!
2. 이메일 주소를 남기지 않으신 분
3. 이유도 없이 달라고 하시는 분!
티스토리 이래서 좋아요!
1. 이미지, 동영상, 오디오, 파일까지! 무한 용량과 강력한 멀티미디어를 올릴 수 있어요!
2. 스킨위자드로 스킨을 내맘대로~ 거기에 기능 확장 플러그인까지!
3. 내가 원하는대로 myID.com으로 블로그 주소를 만들 수 있어요!
반응형
Posted by [PineTree]