ORACLE2006. 11. 3. 07:15
반응형

퀘스트 Toad

 인터뷰  기술자료  구축사례

QuestSoftware TOAD for Oracle, 기능 분석

TOAD, DB 관리자의 ‘손과 발’

오금석|에이스톰텍 차장

얼마나 효율적으로 DBMS를 관리, 운영할 수 있을지가 DBA의 주요 관심사로 자리 잡으면서 DB 튜닝 방법론과 튜닝 도구에 대한 관심이 높아지고 있다. 튜닝 도구를 얼마나 잘 사용하느냐가 튜닝 및 DB 관리의 성패를 좌우하기 때문이다. 대표적인 오라클 DB 개발 및 관리 툴인 TOAD를 각각 개발자, DBA, 튜너 측면에서 어떻게 활용할 수 있는지 살펴보자.

1990년대 초, DBMS 기술이 국내에 도입된 후 현재 15년이라는 시간이 흘렀다. 지난 10여 년간 IT 분야에선 DBMS 도입과 운영이 주요 관심사였고, 그 결과 현재는 DBMS가 기업의 IT 인프라에 없어서는 안 될 핵심 리소스 및 기술로 굳건히 자리매김했다.

이제 DBMS의 관심사는 단순한 시스템 구축을 넘어, 효율성의 극대화로 변모하고 있다. 지난 10여 년간 데이터베이스의 구축 및 보급에 중점을 두었다면 앞으로의 10년은 급속도로 증가하는 대용량 데이터를 어떻게 효율적으로 관리하고, 얼마나 빠르게 효과적으로 데이터를 검색할 수 있는지 그 방법을 고민하는 시기가 될 것으로 보인다.

튜닝 ‘마술이 아닌 기술’

그러나 아직도 많은 개발자들이 DBMS의 정확한 원리와 구조를 이해하지 못한 채 DBMS를 운영한다. 자신이 수행하는 SQL문이 어떤 과정을 통해 실행되는지에 대한 원리를 알지 못하고, 결과를 구현하기 위한 단순한 문법 위주의 코딩만을 하고 있는 것이 현실이다.

데이터베이스의 튜닝은 마술이 아니다. 데이터베이스 구조에 대한 이해와 SQL문이 실행되는 원리를 정확히 이해한 후, 성능에 문제가 되는 SQL문을 기본 원리에 의해 실행될 수 있도록 하는 것이 튜닝의 기본 원리이다.

다양한 활용 가이드 등을 통해 튜닝 기법과 방법론을 익히지만, 성능이 저하되는 문제를 찾을 수 있을 정도의 DBMS 이해력이 갖춰지지 않았다면 완전한 의미의 튜닝을 수행할 수 없다. 또한 성능 저하 문제는 어느 한 가지 이유로만 발생하는 것이 아닌, 매우 다양한 원인으로 인해 발생하는 것이 현실이기 때문에 더욱 원인 발견에 어려움이 있다. 따라서 문제가 발생한 SQL문에 대한 튜닝을 시도할 때 육감과 경험만을 믿고 튜닝을 시도한다면 좋은 결과를 얻을 수 없다.

이러한 흐름으로 인해 DB 관리 및 튜닝 툴이 각광을 받고 있다. 특히 TOAD는 쉽고 간편하게 튜닝 할 수 있는 다양한 튜닝 도구를 제공한다. 튜닝 도구를 얼마나 잘 사용하고 결과를 잘 분석하느냐가 튜닝의 성패를 좌우할 수 있다. 이 글을 통해 개발자, DBA, 튜너 측면에서 각각 TOAD를 어떻게 활용할 수 있는지를 설명하겠다.
<표> TOAD 제품 구성
제 품 구성 요소 요구 기능
TOAD for
Oracle Standard
TOAD + Formatter Plus Oracle 전문가가 코드를 개발하고, database object를 구축 및 관리하는데 필요한 기능 제공(DBA 모듈 별도)
TOAD for
Oracle Professional
TOAD for Oracle Standard +
(Debugger, Knowledge Xpert for PL/SQL Dev)
저장된 데이터베이스 코드의 트러블슈팅(troubleshooting)을 위한 통합 PL/SQL Debugger 추가(DBA 모듈 별도)
TOAD for
Oracle Xpert
TOAD for Oracle Professional + (Xpert Client, Quest SQL Optimizer) Xpert SQL 튜닝 기능 추가
TOAD for
Oracle Suite
TOAD for Oracle Xpert +
(Xpert Option, DBA Module,
Knowledge Xpert for Oracle
Admin, Qdesigner Physical
Architect, Data Factory,
Benchmark Factory)
Oracle을 이용, 애플리케이션 구축부터 관리까지 할 수 있는 통합 버전이다. Knowledge Xpert 모듈, 테스트 데이터를 데이터베이스로 빠르게 적용시키는 DataFactory Developer 에디션, 데이터베이스 코드의 로드 테스팅을 수행하는 Benchmark Factory, 데이터베이스 스키마를 정의, 디자인, 실행하는 QDesigner Physical Architect가 추가, 포함된다.

TOAD의 Optional Module

Debugger Module : 응용 프로그램 오류를 제거하고 대용량 RDB 프로젝트에 개발 및 테스트 시간을 제한하지 않도록 지원한다. 프로시저 편집 세션에서 개발자는 프로그램과 Debugger를 서버에서 실행하면서 라인별로 코드화하고 디버깅 할 수 있다. 또한 모든 변수에 대해 ‘watches’를 수행하고 실행 중에 변경될 때 값을 표시한다.

Xpert Module : TOAD의 Xpert 튜닝 모듈은 Oracle 전문가의 조언을 통해 튜닝 기술을 지원한다. 선택한 SQL 문과기존 데이터베이스 환경에 대해 검사한 후 성능을 향상시키는 여러 가지 옵션을 권장한다. 그러면 사용자는 조언 이면의 로직을 보고 권장 사항을 구현하고, 데이터베이스에 적용해 결과를 볼 수 있다. 변경 사항에 영향을 주는 필요한 SQL을 모두 자동으로 생성한다.

DBA Module : 매일 DB 관리를 자동화하도록 TOAD의 기능과 융통성이 향상된다. 데이터베이스 스키마 비교 및 동기화, 공간 관리, 보안 관리, 배치 작업 일정 조정, NLS(NTL언어 지원) 매개 변수 수정 등 개발자가 일반 관리 작업을 처리할 수 있게 해준다. 이 모듈에는 Oracle 가져오기와 내보내기 마법사가 포함되어 있다.

PL/Formatter : 코딩 스타일이 충돌하지 않고 이 코드의 기존 논리적 구조를 나타내어 기존 PL/SQL, SQL*Forms, Oracle Forms, SQL*Plus 소스 코드를 재포맷한다.

Knowledge Xpert for PL/SQL : 코딩 방법, 최적의 학습 방법, 다이어그램, 재사용 가능한 예제와 함께 PL/SQL의 전체 개발 주기를 다룬다. 1400개 이상의 항목은 데이터베이스에 즉시 접속해, 시간 테스트 경험을 직접 데스크톱에 전달한다.

Knowledge Xpert for Oracle Administration : 관리 기술 자료로 매일 기술적인 질문에 대해 TOAD 내에서 70~80% 직접 응답에 접속한다. 백업 및 복구 문제에서 네트워크 구성 및 데이터베이스 튜닝에 이르기까지 2400개 이상의 기본 설정 방법을 찾고, 이 작업을 빠르고 정확하게 수행할 수 있게 해준다.

개발자를 위한 TOAD

TOAD는 Oracle 애플리케이션 개발자들이 GUI 환경에서 보다 적은 시간과 노력을 들이고도 빠르고 쉽게 SQL과 PL/SQL 문장을 개발, 테스트, 디버깅 할 수 있게 하는 다양한 기능을 제공한다. 프로시저 에디터를 통해 모든 데이터베이스 오브젝트를 신속하게 찾아, 정확하게 오브젝트에 접근할 수 있도록 지원한다.

TOAD를 통해 쿼리의 생성 및 실행, 데이터베이스 오브젝트의 생성 및 변경을 수행하면서 SQL 및 PL/SQL 코드를 개발하고, 디버깅을 통해 데이터베이스 관련 개발자의 업무 효율을 높여준다. 또한 데이터 입/출력, 스키마 비교/분석, 통계치 업데이트 같은 일상 업무도 쉽고 빠르게 처리할 수 있다.

특히 통합 SQL 튜닝, 자동화된 PL/SQL Code Review 기능은 초보자나 숙련자 모두에게 유용하게 사용되는 기능이다.

최근 발표된 TOAD 8.6에는 새로운 개발 지원 기능들이 추가됐다. 새롭게 추가된 CodeXpert 기능은 룰 셋(rule set)시 저장된 프로시저를 분석해 정확한 어드바이스를 제공하며 보완된 프로시저 에디터는 핫키(Hot key), 자동 수정(Auto Correct), Type-Ahead, Syntax-Highlighting과 PL/SQL, 자바, HTML에 대한 버전 컨트롤 기능이 추가돼 효율성을 높여준다.

또한 SQL 에디터를 통해 사용자가 쉽고 빠르게 쿼리를 테스트하고, 데이터 확인 및 편집과 DDL 문장을 수행할 수 있도록 지원하며, 멀티 탭 형태의 스키마 브라우저는 한 번의 클릭만으로 오브젝트의 구체적인 상황과 데이터, DDL의 기본 설정에 즉시 접속, 데이터베이스 오브젝트 전반을 그래픽으로 볼 수 있게 해준다.

PL/SQL 디버거 모듈의 라인 단위 코드 디버깅과 브레이크포인트 세팅, 변수 확인, 편집 등을 지원하는 ‘Watches’ 기능을 통해 코딩 작업시의 에러를 최소화 시켜준다.

이와 함께 협업 환경의 개발을 가능하게 하는 팀 코딩(Team Coding) 기능이 이전 버전에 비해 보완돼, 지속적으로 업데이트 되는 컨트롤 시스템의 통합을 유도함으로써 규모가 큰 프로젝트 수행시 팀 작업 분배를 원활하게 해준다.

SQL 에디터

향상된 SQL 에디터는 사용이 쉬운 인터페이스를 통해 사용자들이 신속하게 쿼리를 테스트하고 실행할 수 있게 해주며 쿼리 결과를 확인하고 편집, 튜닝할 수 있도록 지원한다. 또한 DDL 명령 수행이 가능하고 결과 값 세팅(Result Set)과 트레이싱, DBMS_OUTPUT,Plan이 통합돼 보다 쉽게 편집과 테스팅을 진행할 수 있다.

업무 생산성 차원에선 동시에 여러 개의 파일에서 작업이 가능하고 SQL, PL/SQL, HTML, 자바, 텍스트 등 서로 다른 파일에서도 작업을 수행할 수 있도록 개선됐다.
<그림 1> TOAD 8.6의 SQL 에디터

프로시저 에디터

프로시저 에디터는 프로시저, 패키지, 트리거, 타입 같은 PL/SQL 오브젝트들을 작성, 수정, 실행하며, PL/SQL 디버거 기능을 통해 라인(Line) 단위의 디버깅, 브레이크포인트 세팅, 코드탐색, 변수 점검 및 수정 등을 통해 사용자가 직접 코딩시에 발생하는 에러를 최소화 해준다. 또 여러 개의 오브젝트를 한 번에 컴파일 할 수 있으며, 종속된 오브젝트도 컴파일 할 수 있다.
<그림2> TOAD 8.6의 프로시저 에디터


스키마 브라우저와 SQL 모델러

스키마 브라우저는 데이터베이스 오브젝트를 유형별로 다양하게 분류할 수 있고 사용자가 오브젝트를 선택하면 이에 따른 세부사항이나 DDL 구조를 그래픽 기반에서 직관적으로 보여준다.

TOAD의 SQL 모델러는 쿼리를 쉽고 빨리 만들어 주는 역할을 수행한다. 간단하게 테이블을 드래그하고 SQL 모델러로 클릭하면, 자동으로 SQL 명령문을 생성해준다. 또 자동 생성된 SQL 명령문을 테스트하고, 쿼리 결과를 보여주고, 명령문을 저장 또는 에디터로 복사하는 등의 기능을 수행해, 초보 개발자라도 Oracle 전문가처럼 DB 개발 작업을 진행할 수 있다.
<그림3> SQL 모델러

DBA를 위한 TOAD

TOAD의 DBA 모듈은 다수의 인스턴스나 다량의 데이터베이스를 관리하는 DBA에게 유용하다. 데이터베이스의 성능 관리 화면을 자동으로 업데이트 해주기 때문에 GUI 기반의 브라우저로 손쉽게 관리할 수 있기 때문이다.

DBA 모듈이 제공하는 기능에는 데이터베이스 스키마 비교, 동기화 스페이스 및 컨트롤 파일, 리두(Redo) 로그 관리, 보안 관리, 배치 잡 스케줄링 뿐 아니라 Oracle 익스포트/임포트 마법사, 데이터베이스 생성 마법사 등이 포함되어 있다. Oracle SQL 로더 유틸리티(Loader Utility)와 호환이 용이해 양쪽 데이터의 탑재 및 삭제가 쉽고 간편하다. 데이터의 생성, 변경, 삭제 등 DBA가 관리하는 모든 오브젝트 작업은 스키마 브라우저 인터페이스로 간단하게 지원받을 수 있다.

데이터베이스 모니터

데이터베이스 성능 정보를 그랙픽하게 모니터링하는 데이터베이스 모니터 기능은 논리적/물리적 I/O, 이벤트 웨이트, 세션, 요청률(Call Rates), 누락률(Miss Rates), SGA 메모리 사용량, 쉐어드 풀(Shared Pool), 인덱싱 쿼리률(Indexed Query %) 등의 정보를 보여준다.

또한 SGA 트레이스 기능을 통해 인스턴스에서 실행됐던 SQL 문장들에 대해 쉐어드 풀에서 트레이스를 처리할 수 있다.
<그림4> 데이터베이스 모니터링 화면

데이터 접근 분석

FGAC(Fine-Grained Access Control)와 FGA(Fine-Grained Audit)의 차이는 사전에 데이터에 대한 접근을 제한하느냐 아니면 데이터가 접근된 이후의 정보를 감지하는가 이다.

FGAC는 사용자나 애플리케이션에서 꼭 필요로 하는 데이터만을 공개하고 접근 가능하도록 하며 하나의 테이블에 하나 이상의 FGAC가 지정되면, row는 공개되기 전의 요구 조건을 반드시 충족해야 한다. 몇 개의 접근제어 패키지가 하나의 동일한 기초 테이블 제어를 가능하게 할 수 있다.

또한 FGA 기능을 통해서는 어떤 경로를 통해 사용자에게 데이터가 접근되는지를 분석할 수 있도록 해준다. FGA는 데이터가 아닌 SQL문을 포착하도록 해 확장 가능한 침입감지 기능을 제공한다. 그 예로 SELECT문의 WHERE조건을 갖는 테이블이나 뷰에 대해 감사정책을 덧붙이는 것을 들 수 있다. 또 AUDIT COLUMN 기능을 두어 감사 조건에 대한 실패를 줄이도록 한다. 감사 기록은 DBA_FGA_AUDIT_TRAIL에 저장된다.

<그림5> Audit 기능


ADDM 보고서 생성기

ADDM은 오라클 데이터베이스 튜닝을 위한 가장 중요한 요소 중의 하나다. ADDM은 오라클 데이터베이스 내의 병목현상을 자동으로 감지한다. 또한 다른 관리 요소들과 결합해 이러한 병목을 해결하기 위한 제안들을 제공한다. ADDM은 모든 구성요소와 정보를 공유해 매일 세부적인 실시간 분석이 된 정보를 제공해 준다. 이러한 실시간 분석 정보와 통계 값들을 AWR(Automatic Workload Repository)이라는 리포지토리에 저장한다. 60분이라는 고정된 시간 간격으로 데이터베이스 내의 각종 통계 정보들을 보관하는 데이터베이스 내의 리포지토리다.

<그림6> ADDM 보고서 생성 화면

Tunner를 위한 TOAD

TOAD for Oracle Xpert에 들어 있는 Xpert 튜닝 모듈은 개발자의 Oracle 튜닝 기술을 보완하면서 애플리케이션 튜닝 실력을 향상시켜준다. 또한 선택된 SQL 문장과 데이터베이스 환경의 기본 설정을 점검해 성능을 개선시킬 수 있는 방안을 제시해 준다.

특히 Auto Tune 기능이 생성하는 SQL Rewrite는 자동으로 튜닝을 실행해 사용자의 SQL 문장 실력을 높여준다. 이와 함께 Expert Advice가 제공하는 팁과 예제를 통해 개발자와 DBA는 데이터베이스의 성능을 높일 수 있다.

4가지 SQL 튜닝 방법

TOAD는 SQL 에디터를 통해 현재 작성한 SQL 문의 실행 결과와 실행 계획을 확인하고 Auto Tune 기능을 수행할 수 있다.

TOAD의 SQL 튜닝은 4가지 방법으로 수행된다. SQL 텍스트와 튜닝 시나리오 비교, 시나리오 익스플로러, 튜닝 시나리오 권고 등이 그것이다.

먼저 SQL 텍스트 튜닝은 SQL 에디터나 프로시저 에디터에서 수행중인 SQL문장을 드래그 해 실행 계획과 해당 SQL문장에 나타난 오브젝트의 정보를 확인할 수 있다. 또 실행 계획을 통해 현재 SQL문장이 어떻게 수행될 것이지 예측할 수 있으며, 해당 테이블에 생성되어 있는 인덱스나 컬럼의 정보를 확인할 수 있다.

<그림7> SQL 텍스트 튜닝
두 번째, 튜닝 시나리오 비교(compared Scenario)는 현재 SQL문장을 자동으로 튜닝해주는 Auto Tune 기능과 비숙련자도 쉽게 사용할 수 있는 Advice 기능으로 구성된다. Advice 기능은 환경에 적합한 어드바이스를 제공m 튜닝 솔루션을 찾아 실행할 수 있게 해준다. Advice에서 선택한 사항을 토대로 기존의 SQL문장과 추천된 SQL문장의 실행 계획을 비교해 보여준다.

<그림8> 튜닝 시나리오 비교 화면

세 번째, 시나리오 익스플로러를 통해 실행 과정이 모두 완료된 후 기존의 SQL문장과 권고된 SQL문장을 그래픽하게 비교해주며 이에 따라 사용자가 최적의 시나리오를 선택, 적용할 수 있다.

<그림9> 시나리오 익스플로러 화면

<DBA를 위한 TOAD 8.6 신기능>
- Fine Grained Audit Control
- ADD Report Generator
- Data Pump Export/Import
- Log Miner

<튜닝을 위한 TOAD 8.6 신기능>
- Index Expert
- SQL Scanner
- SQL Inspector
- Optimization Intelligence and Best Practices
- ToolBar Buttons and Test for Scalability

통합 관리 툴로도 손색없는 TOAD

TOAD for Oracle은 단순 개발 툴이라고 치부하기엔 너무 많은 기능을 가지고 있는 툴이다. 특히 최근 출시된 8.6을 비롯, TOAD 8.x 버전의 경우 튜닝 기능과 DBA 지원 기능이 대폭 개선돼, DB 관리 툴로도 손색이 없다.

그러나 제공하는 다양한 기능들이 실제 고객사에서 활발하게 활용되지 못하고 있는 점이 아쉽다. TOAD에서 제공되는 기능에 비해 그간 기술 지원이나 교육 지원이 부족했기 때문이라고 생각된다.

최근 한글화 문제나 시스템 리소스 과사용 등의 문제를 해결한 새로운 버전이 출시됐고, 오라클 10g의 새로운 기능이 지원된 유일한 솔루션인 만큼 현업에서의 활용 폭은 더욱 커질 것으로 기대된다.
 
반응형
Posted by [PineTree]
OS/SOLARIS2006. 11. 1. 07:48
반응형
 Windows systems: copy /b file1 + file2 + file3 + file4 + file5 file.iso
반응형
Posted by [PineTree]
OS/LINUX2006. 10. 11. 02:10
반응형
 1. HOSTNAME 변경개론

서버를 운영하다보면 불가피하게 HOSTNAME을 변경해야하는 경우가 있다.

win95/98/NT/2000의 경우에는 네트웍설정의 등록정보를 통해서 간단해 해결할 수 있지만, 리눅스의 경우에는 윈도우쪽 보다는 좀 까다로운 것이 사실이다.

먼저, HOSTNAME을 변경하는 방법은 다음과 같이 몇가지가 있다.

  • 방법1 : netcfg 유틸리티를 이용하는 방법
  • 방법3 : setup 유틸리티를 이용하는 방법
  • 방법4 : 직접 명령어로 수작업하는 방법

위의 3가지 방법중 방법1, 방법2는 각각 netcfg, setup파트에서 설명이 되어있으므로 해당파트에서 사용법을 확인하기 바라며, 여기에서는 방법3번으로 HOSTNAME을 변경하는 방법에 대해서 설명할 것이다.

어떤방법이 가장 올바른 방법이라는 것을 판단한다는 것은 매우 어리석은 것이라 생각되며, 단지 서버관리자로서 일을하다보면 유틸리티보다는 직접 명령어를 통해서 작업하는 경우가 많으며 가장 빠른 방법이라고 할 수 있다.

 

HOSTNAME 변경시에 수정해주어야하는 작업관 확인하는 명령어를 먼저 소개하고 넘어가겠다.

  • HOSTNAME 대상파일
    • /etc/sysconfig/network 
    • /etc/HOSTNAME (이파일은 위의 파일에서 읽어와 저장되는 파일임)

2. 현재의 호스트명 확인

hostname이란 명령은 현재의 호스트명을 보여주느 명령어이며, 아래의 예는 현재의 호스트명을 보여준 것이다.



3. 호스트명 변경

호스트명을 변경하는 파일은 "IP Address변경하기"강좌편에서 말씀드린 바와같이 /etc/sysconfig/network에서 변경만 해주고 네트웍환경을 적용하는 스크립트(/etc/rc.d/init.d/network)를 재실행 해주면 끝이다.

www.bsidc.co.kr이던 호스트명을 www.abcd.co.kr로 변경하였다.

그리고, /etc/HOSTNAME 파일을 열어서 또한 변경을 해주었는데, 이 파일은 굳이 변경할필요하가 없다.

왜냐하면, 리눅스가 부팅이 될 때에는 /etc/sysconfig/network 파일에서 HOSTNAME을 읽어와서 이 파일에 저장하기 때문이다.



4. HOSTNAME 적용하기

이제 변경된 HOSTNAME을 적용하기 위해서는 네트웍 재실행 스크립트(/etc/rc.d/init.d/network)를 restart 하든가, 아니면 아래의 예와 같이 시스템을 재부팅하면 된다.



반응형

'OS > LINUX' 카테고리의 다른 글

crontab 명령  (0) 2007.02.15
LINUX usb 인식해서 사용하기  (0) 2007.02.10
아이피 변경  (0) 2006.10.11
2개의 랜카드 묶어서 2배의 대역폭:Bonding  (0) 2006.10.11
원격접속시 한글이 깨질때 | centos  (0) 2006.10.10
Posted by [PineTree]
OS/LINUX2006. 10. 11. 02:07
반응형
1. IP변경개론

서버를 운영하다보면 불가피하게 IP Address를 변경해야하는 경우가 있다.

네트웍의 확장이나 서버이전등으로 인하여 서버관리자라면 한번쯤은 IP를 변경했던 경험이 있을 것이다.

win95/98/NT/2000의 경우에는 네트웍설정의 등록정보를 통해서 간단해 해결할 수 있지만, 리눅스의 경우에는 윈도우쪽 보다는 좀 까다로운 것이 사실이다.

먼저, IP Address를 변경하는 방법은 다음과 같이 몇가지가 있다.

  • 방법1 : netcfg 유틸리티를 이용하는 방법
  • 방법2 : netconfig 유틸리티를 이용하는 방법
  • 방법3 : setup 유틸리티를 이용하는 방법
  • 방법4 : 직접 명령어로 수작업하는 방법

위의 4가지 방법중 방법1, 방법2, 방법3은 각각 netcfg, netconfig, setup파트에서 설명이 되어있으므로 해당파트에서 사용법을 확인하기 바라며, 여기에서는 방법4번으로 IP Address를 변경하는 방법에 대해서 설명할 것이다.

어떤방법이 가장 올바른 방법이라는 것을 판단한다는 것은 매우 어리석은 것이라 생각되며, 단지 서버관리자로서 일을하다보면 유틸리티보다는 직접 명령어를 통해서 작업하는 경우가 많으며 가장 빠른 방법이라고 할 수 있다.

필자또한 IP Address변경하는 작업뿐 아니라 거의 모든 작업을 직접 command를 수행하여 직접하고 있다.

 

작업에 들어가기전에 한가지 더 알아야하는 것이있다 .

IP Address 변경시에 수정해주어야하는 작업관 확인하는 명령어를 먼저 소개하고 넘어가겠다.

  • IP Address 대상파일
    • /etc/sysconfig/network
    • /etc/sysconfig/network-scripts/ifcfg-etho (해당 ethernet inferface)
  • IP Address변경전후 확인하는 명령어
    • ifconfig
    • netstat 또는 route

자, 그럼 서론은 이쯤에서 끝내고 명령어를 통한 수작업으로 IP Address를 변경하는 작업을 해보도록 하자.


2. 변경전 네트웍설정 확인

먼저 아래예와 같이 ifconfig 명령어를 통하여 현재의 네트웍설정을 확인토록하자.

보는 바와같이 현재의 네트웍설정은 다음과 같다.

  • IP Address(host ip address) : 211.220.193.158
  • Broadcast : 211.220.193.159
  • Subnet Mask : 255.255.255.240

현재 IP Address를 211.220.193.158에서 211.220.193.149로 변경하려한다.

 

참고로 ifconfig 명령어와 함께 네트웍관련 설정을 확인할 때에 자주사용하는 명령어가 netstat이라는 명령어이다.

netstat은 서버의 라우팅(routing)경로를 확인할 때에 자주 사용된다.  

참고로 알아두면 좋을 것이며, 자세한 설명은 수퍼유저코리아의 해당파트를 참조바란다.


3. /etc/sysconfig/network 파일수정

현재의 IP Address를 수정하였으므로 이제 본격적으로 IP Address를 변경토록 해보자.

먼저, 앞서 설명드린 바와 같이 /etc/sysconfig/network 파일을 열어서 수정하도록 한다.  

 

수정할 때에는 주로 vi 명령어로 해당파일(/etc/sysconfig/network)을 열어서 확인한다.

/etc/sysconfig/network 파일에는 위의 예를 보는 바와 같이 다음과 같은 설정을 할 수 있다.

  • NETWORKING   : 네트웍여부
  • HOSTNAME : 호스트네임
  • GATEWAYDEV : 게이트웨이 장치명
  • GATEWAY : 게이트웨이 IP Address

여기서는 동일네트웍에서 IP Address만 변경하는 경우이므로 /etc/sysconfig/network 파일에서 변경할 것은 없다.

하지만, 만약 서버이전등으로 인해 네트웍자체가 변경될 경우에는 GATEWAY정보도 수정해 줘야한다.

또한 서버용도변경등으로 인한 호스트네임이 변경될 경우에도 이 파일의 HOSTNAME을 수정해 줘야한다.



4. inferface 장치파일변경(/etc/sysconfig/network-scripts/ifcfg-eth0)

 

다음으로 변경해줘야하는 것은 해당 ethernet interface의 장치파일이다 .

이들 ethernet inferface 장치파일들이 존재하는 위치는 /etc/sysconfig/network-scripts/ 디렉토리이며, 이 디렉토리내에서 변경코자하는 ethernet에 해당하는 장치파일을 수정해주면 된다.

 

앞에서 살펴본대로 현재 IP Address의 변경예로든 리눅스서버는 한 개의 ethernet을 가지고 있으며 당연히 장치명이 eth0가 된다.

따라서 여기서 변경해줘야하는 파일또한 ifcfg-eth0가 된다.

이제 이 파일을 열어서 수정해준후에 뒤에서 설명될 /etc/rc.d/init.d/network restart를 해주거나 시스템을 리부팅하면 된다.

 

아래의 예는 직접 ifcfg-eth0 파일을 열어서 수정해준 예이다.

자세히 살펴보면 IP Address가 211.220.193.158에서 211.220.193.149로 변경해둔 것을 볼 수 있다.

앞서 설명드린 바와같이 만약 서버이전드으로 인해 네트웍전체가 변경될 경우에는 BROADCAST, NETWORK, NETMASK등이 변경될 수 있으므로 유의하기 바란다.

어쨌든 현재 예로든 경우는 동일 네트웍에서 IP Address만 변경되는 경우이므로 단지 호스트(서버)의 IP Address만을 변경하면 그뿐이다.



5. 설정변경 적용

자, 이제 변경된 네트웍설정을 적용하기 위해서 아래 예와 같이 "/etc/rc.d/init.d/network restart"를 수행하여 새로운 IP Address로 사용토록해보자.

이 방법이 싫은 분들이라면 다음과 같은 명령어로 시스템 자체를 리부팅해도 무방하다.

  • reboot
  • shutdown -r now
  • init 5

단지 시스템을 리부팅하기전에 "sync"를통해서 디스크동기화를 시켜주는 것이 안전할 것이다.

참고로, IP Address가 변경이 되면 현재 접속되거나 서비스되던 것들은 모두 중단이 된다는 것쯤은 상식으로 알고 있을 것이다.



6. 변경된 IP Address 확인

 

앞서 했던 방법대로 변경된 정보를 확인해보자.

ifconfig 명령을 통해서 변경된 IP Address를 확인한 것이다.

변경되기 전에는 eth0의 IP Address가 211.220.193.158 이였던 것이 변경후에는 211.220.193.149가 되었음을 확인할 수 있다.

 

라우팅에 관한 정보는 변경하질 않았지만, 습관적으로 네트웍정보를 변경후에는 netstat을 통해서 라우팅정보를 확인하는 것이 좋다.

 


7. 네트웍테스트

자, 이제 마지막으로 변경된 IP Address가 다른 네트웍으로 패킷을 잘 주고받는지를 테스트 해보도록 하자.

아래의 예는 먼저 gateway까지 네트웍이 되는가를 테스트 한후에 다른 네트웍에 IP Address가 아닌 도메인으로 ping 테스트를 한 것이다.

변경된 IP Address로 통신이 잘 이루어짐을 확인하였으므로 이 강좌를 마무리 한다.

관련 질문은 해당 게시판을 통해서 받을 것이며,,이만,..

~~~ 꾸벅  ~~~

 

출처:슈퍼유저코리아

반응형

'OS > LINUX' 카테고리의 다른 글

LINUX usb 인식해서 사용하기  (0) 2007.02.10
호스트네임 변경  (0) 2006.10.11
2개의 랜카드 묶어서 2배의 대역폭:Bonding  (0) 2006.10.11
원격접속시 한글이 깨질때 | centos  (0) 2006.10.10
var/log/audit.d/ full 문제  (0) 2006.10.09
Posted by [PineTree]
APPLICATION2006. 10. 11. 01:01
반응형
리눅스 커널 2.0 을 컴파일 해보면 network aliasing 과 ip aliasing을 지정하는 부분이 나온다. 여기 그 용도를 적는다.

1. IP Aliasing의 개념

IP aliasing이란 한개의 인터페이스에 두개 이상의 어드레스를 지정하는걸 말한다. 예를들어 eth0란 랜카드에 두개의 IP 어드레스를 지정하므로서 둘중 어느 어드레스로도 접근을 허용하는걸 말한다. 이때 두개의 주소가 같은 네트워크에 속하면 IP Aliasing이고 다른 네트워크에 속하면 Network Aliasing이다.

2. IP aliasing의 응용범위

1) 버츄얼웹(웹호스팅)

웹서버를 운영하는데는 꿰 많은 비용이 든다. 피시로 구축하더라도 하드웨어 비용만 약 500만원에 인터넷 전용선 사용료가 월 50-60만원 든다. 거기에 운영인력도 필요하다. 따라서 단순히 홈페이지만 구축하고자하면 ISP들이 제공하는 웹호스팅을 이용하면된다. 웹호스팅을 이용하면 월 몇만원 정도의 비용만 지불하면 홈페이지를 운영할수 있다.(제작비는 별도) 즉 ISP들이 자신의 호스트에 업체의 웹서버를 운영해주고 월 사용료를 받는걸 웹호스팅이라한다.

웹 호스팅을 할때 필요한게 바로 버츄얼웹 기법으로서 www.abc.co.kr 과 www.def.co.kr 두개의 홈페이지가 한대의 컴퓨터에서 운영되는걸 말한다. 두 홈페이지는 서로 독립적으로 구성되며 도메인네임도 다르므로 외부에서는 두 홈페이지가 같은 컴퓨터에 있다는걸 알수가 없다. (두개만 가능한게 아니라 다수가 가능하다)

버츄얼웹을 만들때 필요한게 network aliasing 또는 ip aliasing이다. 물론 여기에 서로 다른 도메인 네임에서 서로 다른 홈페이지가 뜨도록 해주는 웹서버 프로그램의 지원도 필요하다. Apache 웹서버 프로그램의 httpd.conf에보면 virtual web을 설정하는 부분이 있다.
아래가 그 예이다.

<VirtualHost kil.nungkul.co.kr>
ServerAdmin nungkul7@nungkul.co.kr
DocumentRoot /home/kil/web
ServerName kil.nungkul.co.kr
ErrorLog logs-kil/error_log
TransferLog logs-kil/access_log
</VirtualHost>


2) 버츄얼 랜(Virtual LAN)


하나의 물리적 랜에 두개의 논리적 랜이 존재하는걸 버츄얼랜이라부른다. 즉 랜은 하나지만 네트웍 어드레스가 서로 다른 두 그룹의 컴퓨터들이 동시에 연결돼 있을 경우 두 컴퓨터 그룹은 별개의 랜을 이루고 있으므로 서로 독립한 네트웍으로 작동한다. 물론 라우터가 있거나 어느 한 컴퓨터에 랜카드가 두개 꼽혀 있어 두개의 랜을 연결해 주고 있다면 이는 두개의 물리적 랜이지 한개의 랜이 아니다.

예를들어 회사의 랜이 라우터를 통해 인터넷과 연결돼 있고 인터넷 어드레스가 203.234.216.XXX라고 하자. 이때 회사 랜에 연결된 리눅스 피시 어드레스를 192.168.1.1로 지정하면 회사 랜에 있는 다른 피시들은 네트웍어드레스(203.234.234.0)가 리눅스의 네트웍 어드레스(192.168.1.0)와 다르므로 리눅스로 login할수 없다. 만약 어느 피시가 리눅스로 login 하려면 그 피시의 주소를 192.168.1.X로 바꾸어야한다.

이 경우 회사의 물리적 랜 한개에 두개의 논리적 랜(203.234.216.0 과 192.168.1.0)이 존재한다. 이를 버츄얼 랜이라 부른다. 만약 이 랜에 연결된 리눅스에 두 그룹에 있는 피시가 모두 login할수 있도록 해주려면 이때 바로 IP aliasing을 리눅스의 랜카드에 적용하면 된다. 즉 리눅스 랜카드에 192.168.1.1 외에 203.234.216.1 어드레스를 IP aliasing을 이용해 부여하면 두 논리적 랜에 속한 모든 피시들은 리눅스에 login할수 있다.
이기법은 회사의 보안용으로도 응용이 가능하다. 즉 회사 내부랜 전용 호스트를 인터넷에서 접근이 불가능하게 만드는데 이 기법이 사용될수 있다.

*. 참고

192.168.1.0 네트웍 주소는 RFC(Request For Comment)에서 내부 랜 전용으로 할당한 주소이다. 따라서 라우터에는 이 주소를 외부로 라우팅하면 안된다.

3. IP aliasing 셋업

아래는 본인의 리눅스 피시에 IP aliasing을 구현한 예이다. 이 피시에는 랜카드를 두개 꼽았고 두번째 랜카드(eth1)에 IP aliasing을 구현하였다.

eth0의 IP 주소는 192.168.1.1
eth1은 150.1.254.1
eth1:0은 150.1.254.254 이다.

여기서 eth1:0이 바로 IP aliasing으로 부여한 주소이다. 이 경우는 eth1에 부여한 두개의 주소가 같은 네트웍에 속하므로 network aliasing이 아니고 IP aliasing이다. 아래에 IP aliasing을 구현하기위한 ifconfig와 route 명령 예이다.

(본인은 debian을 사용하므로 /etc/init.d/network 파일임)

*. ifconfig 명령 전에 커널을 컴파일해서 network aliasing과 ip aliasing을 넣어야한다.


#! /bin/sh
# localhost ifconfig lo 127.0.0.1 route add -net 127.0.0.0 # # ethernet 1 # IPADDR=150.1.254.1 NETMASK=255.255.0.0 NETWORK=150.1.0.0 BROADCAST=255.255.255.255 GATEWAY=150.1.1.1 ifconfig eth1 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} route add -net ${NETWORK} route add default gw ${GATEWAY} metric 1 # # ethernet 0 # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 route add -net 192.168.1.0 # # ethernet-1 ip alias # ifconfig eth1:0 150.1.254.254 netmask 255.255.0.0 broadcast 150.1.255.255 route add -host 150.1.254.254 dev eth1:0 #
아래는 이 명령으로 ip aliasing을 구현했을때의 ifconfig와 netstat -nr 명령 출력 결과이다
churlsu:~> ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0   eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:EC:78:1B inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x300   eth1 Link encap:10Mbps Ethernet HWaddr 00:A0:24:EA:95:B2 inet addr:150.1.254.1 Bcast:150.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:804 errors:0 dropped:0 overruns:0 TX packets:82 errors:0 dropped:0 overruns:0 Interrupt:5 Base address:0x210   eth1:0 Link encap:10Mbps Ethernet HWaddr 00:A0:24:EA:95:B2 inet addr:150.1.254.254 Bcast:150.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0   churlsu:~> netstat -nr   Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 150.1.254.254 0.0.0.0 255.255.255.255 UH 1500 0 0 eth1:0 192.168.1.0 0.0.0.0 255.255.255.0 U 1500 0 0 eth0 150.1.0.0 0.0.0.0 255.255.0.0 U 1500 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo 0.0.0.0 150.1.1.1 0.0.0.0 UG 1500 0 0 eth1 churlsu:~>
배철수<
bae@www.linuxlab.co.kr>
반응형

'APPLICATION' 카테고리의 다른 글

리눅스 시스템 시간동기화 하기 ( rdate, ntp )  (0) 2007.11.11
아파치 +톰캣설정  (0) 2006.04.26
리눅스 톰캣 아파치 설치  (0) 2006.04.26
솔라리스5.6 에서 톰캣 5.0 설치 하기..  (0) 2006.04.26
Tomcat이란  (0) 2006.04.25
Posted by [PineTree]
OS/LINUX2006. 10. 11. 00:56
반응형

이번에는 랜카드 2개를 묶어 하나의 ip를 부여한 다음, 대역폭을 2배로 사용하는 방법에 대해서 강좌를 쓰겠습니다. 요즘 UTP케이블을 사용한 Giga(1000MB/Sec) 랜카드가 많이 나왔습니다. 테스트 결과 150M/Sec 의 성능정도밖에 내지 못했습니다. 그러나 본 강좌에서 사용되는 bonding는 대역폭의 2배 200M/Sec 가 나왔습니다. 물론 Giga bit 에 맞는 케이블을 사용하지 않았는지는 모르지만, 사용된 케이블은 카테고리 6 이였습니다. 현재는 스위치및 허브가 100M 이고, giga bit은 고가입니다.  많은 분들께 도움이 되었으면 좋겠다는 마음으로 이렇게 강좌를 써 내려갑니다.

1. Bonding 이란?
 여러장의 이더넷 카드를 묶어 하나의 ip를 부여하여 그만큼 대역폭을 확보하는 방법 입니다. 물론 케이블 불량을 대비한 고장대비 방법이라고도 볼  수 있습니다.

2. 준비운동.
 랜카드 2장 (난 100M 짜리 2장을 준비했습니다.. )
 커널에서 : Network device support 에서 Bonding driver support 가 채크되어야 합니다..(RedHat은 기본)

3. /etc/sysconfig/network 파일
echo 'NETWORKING=yes
HOSTNAME=fileserver
GATEWAY=192.168.0.1
GATEDEV=bond0
'>/etc/sysconfig/network

위와같이 그대로 입력하면 설정이 바뀝니다. 물론. 중간에"HOSTNAME=호스트이름" 으로 변경하시기 바랍니다. 그리고 "GATEWAY=게이트웨이아이피" 로설정하시기 바랍니다.

4.bond0 설정
echo 'DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
' > /etc/sysconfig/network-scripts/bond0
 이 부분은 서버의 ip를 셋팅합니다. "IPADDR=서버아이피"를 설정하시고, "NETWORK=네트웍아이피"를 설정하시기 바랍니다.

5. ifcfg-ethXX 설정
echo 'DEVICE=eth0
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
'> /etc/sysconfig/network-scripts/ifcfg-eth0
이 부분은 묶일 물리적 장치를 정합니다. eth0 는 첫번째 랜카드입니다. 위와같이 설정합니다.

echo 'DEVICE=eth1
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
'> /etc/sysconfig/network-scripts/ifcfg-eth1
eth1번 은 2번째 랜카드이며 위와같이 설정합니다.

강좌에서 사용된 이더넷카드는 2개 입니다. 하지만, 그 이상을 사용하시려면, 계속 추가 한 다음, eth2, eth3 계속 설정해 주면 끝납니다. 위와같이.

6. 모듈로 binding driver 을 올렸다면, eth0와 eth1 전에 모듈을 올려야 합니다..
alias bond0 bonding
alias eth0 8139too
alias eth1 8139too

  커널 2.4.XX 에서
 /etc/modules.conf
- 그런다음 insmod 로 모듈을 올려 준다.
insmod bonding

  커널 2.6.XX
 /etc/modprobe.conf
modprobe bonding
## 위와같이 모듈을 인식시켜 줍니다.
ifconfig eth0 up 0.0.0.0
 ifconfig eth1 up 0.0.0.0
## 위 방법은 안될때 하는 방법입니다. (생략했을때 문제 생기면 하시기 바랍니다.)

 ifenslave bond0 eth0
 ifenslave bond0 eth1
위왁같은 명령으로 bond0에 eth0와 eth1을 슬레이브로 등록시킵니다.

7. network 스크립트 재 시작.(꼭 로컬에서 하시기 바랍니다.~~)


8. 삽질의 결론
 1. 단점 : 
            - 같은 스위치에 꽂혀야 한다.
            - 서버가 못따라 주면 생각만큼 성능이 나오지 않는다.
 2. 장점 :
           - 이론상 속도 2배 (또는 그 이상~~)
           - 둘 중에 선 하나 뽑아두 통신 ~~ 잘한다. (리던던시 기능)


이렇게 강좌를 마칩니다. 물론 하나의 간단한 팁이며.. 알고계시면 많은 되리라 생각하고 강좌를 마무리합니다.
혹시 본 강좌에 개선점이 있으면 아래의 메일 주소로 메일 한통 부탁드립니다.

 2005.10.28 : 전현규님의 개선사항으로 아래 내용 추가합니다.
   혹시 부팅할 때 잘 올라오지 않는다면, 아래와 같이 수정해 보시기 바랍니다.
      RedHat 경우, /etc/init.d/network 파일에서,
     # Bring up xDSL and CIPE interfaces 라인 바로 이전에, 
     if [ -x /etc/sysconfig/network-scripts/ifup ]; then 
        echo "Bringing up eth0 and eth1..."
        /etc/sysconfig/network-scripts/ifup eth0
        /etc/sysconfig/network-scripts/ifup eth1
     fi

 

출처:슈퍼유저코리아

반응형

'OS > LINUX' 카테고리의 다른 글

호스트네임 변경  (0) 2006.10.11
아이피 변경  (0) 2006.10.11
원격접속시 한글이 깨질때 | centos  (0) 2006.10.10
var/log/audit.d/ full 문제  (0) 2006.10.09
리눅스 텔넷 설정  (0) 2006.08.08
Posted by [PineTree]
OS/LINUX2006. 10. 10. 22:01
반응형

원격접속시 한글이 깨질때 | centos

#vi /etc/sysconfig/i18n

 

LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

 

/*------------------------------man의 한글 깨짐 추가--------------------------------*/

 

#vi /etc/man.config

 

PAGER          /usr/bin/less -iRs 의 옵션 중에서 대문자 R을 아래와 같이

PAGER       /usr/bin/less -irs 로

 

소문자로 바꿔주면 된다. 두 옵션의 차이는 아래의 설명으로 대신한다.

 

       -r or --raw-control-chars
              Causes "raw" control characters to be displayed.  The default is to  dis-

              play control characters using the caret notation; for example, a control-
              A (octal 001) is displayed as "^A".  Warning: when the -r option is used,
              less cannot keep track of the actual appearance of the screen (since this
              depends on how the screen responds to each type  of  control  character).
              Thus, various display problems may result, such as long lines being split
              in the wrong place.

 

       -R or --RAW-CONTROL-CHARS
              Like -r, but tries to keep track of the screen appearance where possible.
              This  works  only  if the input consists of normal text and possibly some
              ANSI "color" escape sequences, which are sequences of the form:

 

                   ESC [ ... m

 

              where the "..." is zero or more characters other than "m".  For the  pur-
              pose  of  keeping  track of screen appearance, all control characters and
              all ANSI color escape sequences are assumed to not move the cursor.   You
              can  make  less  think  that characters other than "m" can end ANSI color
              escape sequences by setting the environment variable LESSANSIENDCHARS  to
              the list of characters which can end a color escape sequence.

반응형

'OS > LINUX' 카테고리의 다른 글

아이피 변경  (0) 2006.10.11
2개의 랜카드 묶어서 2배의 대역폭:Bonding  (0) 2006.10.11
var/log/audit.d/ full 문제  (0) 2006.10.09
리눅스 텔넷 설정  (0) 2006.08.08
CentOS 한글 에러 수정  (0) 2006.03.30
Posted by [PineTree]
OS/SOLARIS2006. 10. 9. 22:12
반응형
슬라이스정보 복사
 
#############################################################
 
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
 
#############################################################
 
백업

 

명령어 cpio
명령어 설명

아카이브 파일을 복사하여 입출력

사용법

cpio -o [acBvV] [-C bufsize] [-O file] [-M message]

cpio -i [BcdmrtuvVfsSb6k][-C bufsize][-I file][-M message][pattern. ]

cpio -p [ adlmuvV ] directory

Functions:

cpio -o

(복사출력)은 표준 입력으로부터 경로명의 목록을 읽어 들여 그파일을 경로명, 상태 정보와 함께 표준 출력으로 복사한다

cpio -i

(복사입력) cpio -o의 결과를 표준 입력 으로 하여 pattens이 일치하는 파일만을 추출 한다

cpio -p

(패스)는 표준 입력으로부터 경로명을 목록을 읽어 들여 지정한 directory에 조건부로 파일들을 생성하고 복사

Options:

-l

-a

파일의 복사후 입력 파일의 최종 액세스 시각을 현재로 재설정

-B

입출력은 5120바이트의 레코드로 블록화된다(이 항목이 지정되지 않은 경우는 512 bytes 를 사용한다.)

-c

ASCII문자로 파일의 헤더 정보를 작성한다

-C bufsize

입출력은 bufsize바이트로 레코드를 블록화한다

-d

디렉토리가 필요하면 자동적으로 생성한다

-f

patterns과 일치하는 것을 제외한 모든 파일을 복사

-k

파일의 헤더가 망가졌거나 입출력오류시 작업을 종료 하지 않고 다음 현재 파일은skip하고 다음 파일을 읽는다. ( -i 에서만 사용)

 

가능하면 파일을 복사하지않고 링크 시킨다 (-p 에서만 사용)

-m

파일의 최종 수정 시간을 현재 파일이 가지고 있는 시간을 그대로 유지한다.

-M message

백업 미디어 매체 교환이 필요할 때 사용자가 그 메시지

를 정의 하여 사용할 수 있도록 한다

-O file

cpio의 출력을 file에 지정한다 (-o 에서만 사용)

-r

대화식으로 파일명을 변경 한다(-p 에서는 사용불가능)

-b

각 단어 내의 바이트 순서를 바꾼다(-i에서만 사용)

-s

각half word의 두바이트를 서로 교환한다(-i에서만 사용)

-S

각 word의 두half word를 서로교환한다(-i에서만 사용)

-t

입력파일 목록을 출력하고 파일은 생성하지 않는다

-u

restore시에 기존의 디렉토리에 그파일이 존재하더라도 무조건 복사한다. 이 값을 설정하지 않으면 두개의 수정 날자를 비교하여 더최근의 파일을 보존한다.

-v

현재 작업이 진행되고 있는 파일 목록을 표준 출력으로 출력 한다

-V

현재 작업이 진행되고 있는 각 파일을 한 개의'.'으로 출력 한다.

Examples:


$ ls | cpio -ocv >/dev/rmt/0m

$ find . -print | cpio -ovcB >/dev/tape1

$ find . -print | cpio -ovcB -O /tmp/testcpio

$ find /home -print | cpio -ovc >/dev/tape1

$ find $HOME -name "*.c" -print | cpio -ov >/dev/fd0

cpio 에 파일 목록을 파이프에 전달하기 위해 ls cat echo find와 같은 명령들을 사용하고, 출력은 -I, -O 옵션 또는 쉘의 입출력 방향 변경기능인 > , <을 이용하여 일반 파일 또는 device special file로 지정할 수 있다.

$ cpio -ivmucdB </dev/rmt/0m

/dev/rmt/0m 장치에 저장되어 있는 cpio 아카이브 파일을 읽어 들여서 현재 디렉토리에 저장한다.

$ cat newfile | cpio -icd "/memo/al" "/memo/b*"

아카이브 파일 newfile의 내용을 입력 받아서 /memo/a1, /memo/b* 패턴과 일치하는 파일들을 현재 디렉토리에 저장한다. 서브디렉토리가 필요한 경우 생성하돌고 지시하였다.

$ find . -depth -print | cpio -pdlmv new_direc

현재 디렉토리에 있는 모든 파일 리스트를 cpio 의 입력으로 받아서 new_direc 디렉토리에 하드링크 하도록 한다. -m은 수정 시각을 그대로 유지 하게 하며, -d는 필요에 따라 새로운 디렉토리가 만들어진다. cpio시 경로명을 생성하기 위한 find명령의 -depth 옵션은 디렉토리에 쓰기 모드가 허용되어 있지 않은경우에도 디렉토리에 쓰기를 할수 있도록 하기위해 사용된다.

 

명령어 tar
명령어 설명

테이프 파일 아카이버(archiver)

파일을 자기테이프에 저장하며 그기능은 키문자인수(c,r,t,u,v)로 제어 할 수 있다. 출력 방향은 디폴트로 mt0로 지정되어있다. (/etc/default/tar 에 정의 되어 있다)

사용법

tar c [ vwfb [ #s ] ] device block files..

tar r [ vwfb [ #s ] ] device block [files..]

tar t [ vf [ #s ] device

tar u [ vwb [ #s ] ] device block [ files ]

tar x [ lmovwf [ #s ] ] device [ files.. ]

 

키문자기능:

c

생성. 테이프의 처음부터 기록한다. 이기능은 r의 기능을 포함 하고 있다.

r

대체. 지정된 파일을 테이프의 마지막부터 기록된다.

t

테이블. 지정된 파일이 테이프상에서 검출될 때마다 파일명 및 그밖의 정보가 리스트된다. 파일 인수를 지정하지 않으면 테이프에 기록된 모든 정보에 대해 리스트 된다.

u

갱신. 지정된 파일이 테이프에 없을 경우 추가하거나 그 테이프에 기록된 최후의 것으로 갱신하다

x

추출. 지정된 파일을 테이프에서 읽어낸다. 지정된 파일이 디렉토리이고 내용이 테이프에 있는 경우, 이 디렉토리의 내용을 재귀적으로 모두 읽어낸다.

Options:

v

verbose. 보통 tar실행중에 아무런 메세지도 출력하지 않는 다. 이 항목을 사용하면 기능을 나타내는 문자와 처리한 파일명이 출력된다. t기능과 사용하면 명칭 뿐만 아니라 테이프 항목에 관한 정보도 출력된다.

w

확인. 준비된 처리와 파일명을 출력하고 사용자의 확인을 기다린다. y로 시작되는 글자를 입력하면 처리를 수행한다.

f

파일. 다음에 지정된 device인수를 디폴트 출력방향인 /dev/mt/0m 또는 /dev/mt0 대신에 지정한 아카이브명(디바 이스 명칭이나 화일명)으로 사용 한다. 지정한 파일명이 - 인 경우에는 표준 출력으로 출력하거나 표준 입력으로 부터 읽어 들인다.

b

블로킹계수. 지정된 block 인수를 테이프 레코드의 블로킹 계수로 사용한다. 디폴트는 1로 최대 20블록까지 지정할 수 있다.

m

수정을 기존의 파일이 가지고 있는 시간으로 유지하게 한다.

o

소유권. 읽어들인 파일의 사용자, 그룹ID가 테이프 상에 기록 되는것이 아니라 이 명령을 실행하고 있는 사용자의 것으로 변경한다.

Examples:

$ tar cv /home/kys/src

tar가 지정하는 디폴트 장치로 /home/kys/src 디렉토리의 모든 화일과 디렉토리의 내용을 저장한다

$ tar cvf /dev/rmt/0m .

현재의 디렉토리의 모든 화일들을 /dev/rmt/0m 디바이스로 back-up

$ tar xvf /dev/rmt/0m

/dev/rmt/0m 디바이스로 부터 현재 디렉토리로 restore

$ tar tvf /dev/rmt/0m

/dev/rmt/0m 디바이스에 back-up된 내용을 display

$ tar uvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 update한다

$ tar rvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 append 한다

$ tar cvf /dev/mt0 `tar tvf /dev/mt0 | grep file1`

file1이라는 화일만 /dev/mt0로 부터 restore한다


명령어 dd
명령어 설명

화일의 변환과 복사

지정한 입력 화일을 적절한 변환을 거쳐 지정한 출력에 복사한다. 입출력 화일을 생략 하는 경우에는 표준 입,출력이 사용된다.

사용법

dd [ options = value ]..

 

Options:

if=file

입력화일명

of=file

출력화일명

ibs=n

입력블록의 크기를 n bytes(default 512)로 지정

obs=n

출력블록의 크기를 n bytes(default 512)로 지정

bs=n

ibs와 obs를 모두취소하고 입력및 출력블록의 크기를 모두 n바이트로 한다

cbs=n

변환을 위한 버퍼크기 지정 cbs는 conv=ascii또는 conv=ebcidic을 지정하는 경우에만 사용한다.

skip=n

복사시작전 n개의 입력블록을 무시

seek=n

복사전에 출력화일의 선두로부터 n 블록 검색

count=n

n개의 입력블록만 복사

conv=ascii

EBCDIC을 ASCII로 변환ebcdic ASCII를 EBCDIC으로변환

ibm

ASCII를 EBCDIC으로변환(표준방식과 다소다르게)

lcase

알파벳을 소문자로 변환

ucase

알파벳을 대문자로 변환

swab

두개의 바이트를 서로 교환

noerror

오류가 발생해도 처리를 중지하지 않는다

sync

각입력블록을ibs로 padding

...,... 쉼표로 구분한 복수개의 변환

 

Examples:

# dd if=sample of=/dev/rmt/0m

300+0 blocks in

300+0 blocks out

$ dd if=sample of=/dev/rmt/0m ibs=1024 obs=1024

150+0 blocks in

150+0 blocks out

$ dd if=/dev/rmt/0m of=rest_in cbs=1024 conv=ascii

300+0 blocks in

300+0 blocks out

디스크 통째로   복사 (OS 도 복사된다)

dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t8d0s2

FC 타입 디스크는

/etc/path_to_inst 파일 수정해줘야 된다.


 

$ tar cvf - /home/kys/src/*.c | dd of=dd_file conv=lcase

/home/kys/src 디렉토리하의 .c로 끝나는 모든 화일을 tar 아카이브 화일호 생성하여 그결과를 파이프를 통해 dd의 입력으로 전달하고, dd 명령은 입력되는 모든 데이타를 소문자로 변환하여 dd_file로 출력한다.

반응형
Posted by [PineTree]
OS/LINUX2006. 10. 9. 20:42
반응형

리눅스 시스템에는 LAUS(Linux Auditing-SubSystem)이 있어서 시스템에서 일어나는 변화를 로깅하는 감사시스템이 존재한다.
로깅 내용은 # aucat 이나 # augrep 으로 확인 할 수 있다.
이 로그는 디폴트로 /var/log/audit.d/ 아래에 bin.0~4 라는 파일에 기록되며 bin.0 부터 bin.4까지 다 쓰여지면 save.* 파일로 보관되고 bin.*을 rotating 해가며 쓰여지게 된다.
따라서 save.* 파일은 시스템에 계속 누적이 되어 결국 파일시스템을 full이 되게 만들어 시스템에 문제를 일으킬 수 있다.
이런 문제를 방지하기 위한 방법으로 LAUS를 아주 내려버리는 방법이 있고, 또는 save.*로 보관되는 것을 안하게 하는 방법이 있다.
물론 save.*파일을 주기적으로 삭제해주는 방법도 있겠지만 auditing 기능은 어느정도 필요 할 수 있으므로 후자를 택해 save.*로 보관되는 것을 막기로 한다.
방법은 아래와 같다.

1. /etc/audit/audit.conf의 내용을 다음과 같이 수정한다.
======================================================================
output {
mode  = bin;
num-files = 4;
file-size = 20M;
file-name = "/var/log/audit.d/bin";
#notify  = "/usr/sbin/audbin -S /var/log/audit.d/save.%u -C"; <--- 주석
notify  = "/bin/true";          <--- 변경
======================================================================
위 커맨드를 실행하지 않고 그냥 true를 LAUS에 리턴하겠다는 의미 같음.

2. 재구동
# service audit restart

반응형
Posted by [PineTree]
ORACLE/ADMIN2006. 9. 8. 20:46
반응형

로그 파일의 추가, 삭제, 이름변경, 전체 삭제

SQL> select * from v$log;

 

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TI

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

         1          1         34    1048576          1 NO  INACTIVE                548219 01/07/22

         2          1         35    1048576          1 NO  CURRENT                 568268 01/07/23

         3          1         33    1048576          1 NO  INACTIVE                528171 01/07/19

3개의 로그 파일이 있다..

상태를 보면 나의 경우2번째가 CURRENT이다. 이는 현재 상용 중이라는 소리고, 나머지는 대기중이란 뜻이다.

 

로그파일의 추가는 리두 로그 그룹에 로그 파일 멤버를 추가할 때 각 멤버 파일명의 유사성을 유지하면서 생성하는 것이 일반적이다.

로그 파일 생성시 주의할 점은 각 로그 그룹은 모두 동일한 수의 멤버 파일의 가져야 한다는 것이다.

로그 파일의 추가 명령은 ALTER DATABASE이다.

 

SQL> ALTER DATABASE yasiDB

  2  ADD LOGFILE MEMBER 'E:\ORACLE\ORADATA\YASIDB\REDO01_1' TO GROUP 1;

 

데이타베이스가 변경되었습니다.

 

SQL>ALTER DATABASE yasiDB

2         ADD LOGFILE MEMBER 'E:\ORACLE\ORADATA\YASIDB\REDO02_2' TO GROUP 2;

데이타베이스가 변경되었습니다

 

SQL>ALTER DATABASE yasiDB

  2   ADD LOGFILE MEMBER 'E:\ORACLE\ORADATA\YASIDB\REDO03_3' TO GROUP 3;

 

데이타베이스가 변경되었습니다.

 

 

확인해보자..

SQL> select * from v$logfile;

 

    GROUP# STATUS

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

MEMBER

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

         1 STALE

E:\ORACLE\ORADATA\YASIDB\REDO03.LOG

 

         2

E:\ORACLE\ORADATA\YASIDB\REDO02.LOG

 

         3 STALE

E:\ORACLE\ORADATA\YASIDB\REDO01.LOG

 

         1 INVALID

E:\ORACLE\ORADATA\YASIDB\REDO01_1

 

         2 INVALID

E:\ORACLE\ORADATA\YASIDB\REDO02_2

 

         3 INVALID

E:\ORACLE\ORADATA\YASIDB\REDO03_3

 

 

6 개의 행이 선택되었습니다.

 

 

로그 파일을 삭제 할때는

 

ALTER DATABASE database_name

DROP LOGFILE MEMBER ‘경로’ TO GROUP group_number;

을 한다

 

로그파일의 삭제는  실제적인물리적 파일까지는 지워지지가 않는다. 다만 오라클에서 논리적으로 지우는 것이다. 완전히 삭제하려면 운영체제상에서 물리적인 파일을 지워줘야 한다.

 

로그파일 이름 바꾸기

ALTER DATABASE database_name

RENAME FILE ‘바꿀로그파일경로’ TO ‘바꿀경로와 이름’;

 

로그파일의 전체 삭제

ALTER DABASE database_name

DROP LOGFILES GROUP 3;

반응형
Posted by [PineTree]