mysqldump 를 이용하여 전체 테이블을 백업한 뒤 특정 테이블만 복구하기 위한 방법을 안내해 드립니다.

 

단계적으로 볼때,  기본 mysql 명령으로는 특정 파일에 대한 복원이 힘들기 때문에,

 

dump 파일에서 복구해야 할 테이블 영역을 정규식을 이용하여 잘라낸 뒤 해당 테이블을 복구 하는 방법입니다.

 

 

1. Database 백업

mysqldump -h localhost -u root -p 디비명 > 디비명.dump

 

2. 필요 테이블 내용 추출

sed -n -e '/DROP TABLE.*테이블명/,/UNLOCK TABLES/p' 디비명.dump > 디비명.테이블명.dump

  

3. 테이블 복원

 mysqldump -h localhost -u root -p 디비명 < 디비명.테이블명.dump

 

행복하세요~

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

C# 에서 Oracle(오라클) 데이터베이스를 사용하는 예제입니다.

 

C#에서 Oracle을 엑세스하기 위해서는 .NET에서 제공하는 .NET Framework Data Provider for Oracle을 사용하거나 오라클에서 제공하는 Oracle Data Provider for .NET (ODP.NET)을 사용할 수 있다.

이 외에 오랜 방식이지만 OLEDB나 ODBC 방식도 사용할 수 있다.

.NET Data Provider이나 ODP.NET이나 실제 코딩에서 사용하는 방식은 비슷하다.

여기서는 .NET Framework Data Provider for Oracle의 예제를 살펴 보는데,

이 Oralce 드라이버를 사용하기 위해서는 먼저 아래 그림에서 같이 System.Data.OracleClient.dll을 참조(Reference) 추가해야 한다.

 

 

Oracle 데이타베이스 연결 

 

Oracle 데이타베이스를 연결하기 위해서는 OracleConnection 클래스를 사용한다.

Connection 클래스를 생성할 때는 Connection String을 넣어 주어야 하는데,

여기에는 Data Source명, 사용자명, 암호등을 지정해 준다.

아래 예는 ABC 서버에 사용자명 hr 과 암호명 123을 사용하여 오라클 데이타베이스에 접속하는 예이다. 

 


 string strConn= "Data Source=ABC;User Id=hr;Password=123;Integrated Security=no;";
OracleConnection conn = new OracleConnection(strConn);
...
conn.Close();

 

 

Oracle 데이타 INSERT, UPDATE, DELETE 

 

데이타의 삽입, 삭제, 갱신등은 OracleCommand에 해당 SQL문을 지정하여 실행한다.

먼저 OracleConnection을 사용해 Oracle 서버 연결을 한 후, OracleCommand에 INSERT, UPDATE, DELETE 등의 SQL문을 지정하여 실행하면 된다.

아래는 한 ROW를 INSERT하는 예제이다. 

 

 

// .NET Framework Data Provider for Oracle  // 오라클 연결 문자열         private string _strConn = "Data Source=YPC;User Id=hr;Password=hr;Integrated Security=no;"; // 데이타 쓰기         private void btnAdd_Click(object sender, EventArgs e) {

    // 오라클 연결

    OracleConnection conn = new OracleConnection(_strConn);

    conn.Open();

 

    // 명령 객체 생성

    OracleCommand cmd = new OracleCommand();

    cmd.Connection = conn;

 

    // SQL문 지정 및 INSERT 실행

    cmd.CommandText = "INSERT INTO REGIONS VALUES (5, 'Africa')";

    cmd.ExecuteNonQuery();

    conn.Close();

}

 

 

Oracle 데이타 읽기 

Oracle에서 데이타를 가져오기 위해서는 OracleCommand와 OracleDataReader 혹은 OracleDataAdapter 클래스를 사용한다.

OracleDataReader는 연결모드로 데이타를 서버에서 가져오게 되며, 클라이언트에서 루프를 돌며 한 ROW씩 가져오게 된다.

OracleDataAdapter는 한꺼번에 클라이언트 메모리로 데이타를 가져온후 연결을 끊게 되는데, DataGridView와 같은 그리드 컨트롤에 바인딩할 때 유용하다. 

 

// .NET Framework Data Provider for Oracle : 오라클 연결 문자열         private string _strConn = "Data Source=YPC;User Id=hr;Password=hr;Integrated Security=no;"; // 데이타 읽기

 

private void btnGetData_Click(object sender, EventArgs e) {     // 오라클 서버 연결 객체 생성     using (OracleConnection conn = new OracleConnection(_strConn))     {         // 연결

        conn.Open();

 

        // 명령 객체 생성

        OracleCommand cmd = new OracleCommand();

        cmd.Connection = conn;

        cmd.CommandText = "SELECT * FROM employees";

 

        // 결과 리더 객체를 리턴

        OracleDataReader rdr = cmd.ExecuteReader();

 

        // 레코드 계속 가져와서 루핑

        while (rdr.Read()) {

            // 필드 데이타 읽기

            string s = rdr["FIRST_NAME"] as string;

 

            // 데이타를 리스트박스에 추가

            listBox1.Items.Add(s);

        }

        // 사용후 닫음

        rdr.Close();

    }

}

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

 

리눅스에서 파일 내용을 확인하는 명령어들을 살펴 봅니다.

대표적으로  cat , tail , less, head  등의 명령어를 활용하실 수 있습니다.

각종 로그 파일을 살펴보거나 문서들을 살펴볼때 유용합니다.

 

cat

cat 명령어는 텍스트로 된 파일일 경우 그 내용을 정상적으로 출력하지만 바이너리 파일일 경우에는 출력은 하지만 알아볼 수 없다. 그리고 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.

 

사용법 : cat [옵션] 파일명

 

ex >> test 파일을 열어봄

cat test

 

ex >> 각 행에 번호를 붙여서 출력

cat -b test

 

ex >> 빈 행에도 번호를 붙임

cat -n test

 

ex >> 연속되는 2개이상의 빈 행을 한행으로 출력

cat -s test

more

more 명령어는 특정파일의 내용을 확인하는 그 페이지에서 바로 vi 로 파일을 열어서 편집을 할 수도 있으며 텍스트 파일의 내용을 한 페이지씩 차례대로 확인할 수 있다.

 

사용법 : more 파일명

 

ex >> 파일의 내용을 출력

more test

 

ex >> 많은 양의 파일리스트를 확인할때 파이프를 이용해 연결

 

ls -l /etc | more

 

특정 파일의 내용을 확인하고 있는 상태에서 사용할 수 있는 키

  • h : more 명령어상태에서 사용할 수 있는 키 도움말 확인
  • Space Bar : 한 화면씩 뒤로 이동하기 (f와 동일)
  • Enter : 현재행에서 한 행씩 뒤로 이동하기
  • q : more 명령어 종료하기
  • f : 한 페이지씩 뒤로 이동하기(Space Bar 와 동일)
  • b : 한 페이지씩 앞으로 이동하기
  • = : 현재 위치의 행번호 표시하기
  • /문자열 : 지정한 문자열을 검색하기
  • n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
  • !쉘명령어 : more 명령어상태에서 쉘명령어를 실행하기
  • v : more 명령어로 열려있는 파일의 현재위치에서 vi를 실행하기

less

less는 more와 매우 유사하다.

 

사용법 : less 파일명

 

ex >> 내역 확인

less test ls -l | less

 

less 내부명령키

  • Space Bar 또는 f : 한 화면 뒤로 이동
  • b : 한 화면 앞으로 이동
  • Enter : 한 행씩 뒤로 이동
  • 숫자+n : 원하는 페이지만큼 뒤로 이동, 이후부터는 n만 눌러도 숫자페이지만큼 이동
  • q : less 수행종료

head

head는 파일의 앞부분부터 확인하는 명령어이다.

 

사용법 : head 파일명

 

ex >> 기본적으로 행의 앞부분 부터 10 행까지만 출력

head test

 

ex >> 20행까지 출력

head -n 20 test

 

ex >> 200 byte 까지의 내용을 출력

head -c 200 test

tail

tail은 특정파일에 계속 추가되는 모든 내용을 모니터링 할 수 있어 실무에서 유용하게 사용되는 명령어이다.

/var/log/ 디렉토리에 존재하는 많은 시스템로그파일들의 로그파일들에 저장되는 내용들을 실시간으로 계속 모니터링하기 위한 용도로 자주 사용된다.

사용법 : tail 파일명

 

ex >> 기본적으로 파일에서 마지막 부분의 10개행을 화면에 출력

tail test

 

ex >> 마지막 부분의 20개행까지 출력

tail -n 20 test

 

ex >> 마지막에서 200byte 까지를 출력

tail -c 200 test

 

ex >> 로그파일을 실시간 모니터링, 종료는 Ctrl-c

BASH

tail -f /var/log/messages


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

해당 페이지로 넘어온 전체 속성값(request, attribute) 를 확인하는 방법입니다.

 

하기 소스를 이용하여 전체값을 출력해보세요~~

 

<% 

out.println("<br/>");

out.println("<전체 request.getAttribute 출력>");

out.println("<br/>");

Enumeration attrs = request.getAttributeNames();

while(attrs.hasMoreElements()){

String attr = (String)attrs.nextElement();

out.println(attr+"<br/>");

}

out.println("<br/>");

 

out.println("<br/>");

out.println("<전제 request.getParameter 출력>");

out.println("<br/>");

Enumeration params = request.getParameterNames();

while(params.hasMoreElements()){

String param = (String)params.nextElement();

out.println("param:"+param+"<br/>");

}

%>



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

해당오류는 Connection 객체나 PreparedStatement 객체를 사용 한 후 close 를 안해주었기 때문이다.

일반적으로 iBatis를 사용하거나 Framework 를 사용하면 쉽게 만날 수 있는 오류는 아니지만

Daemon을 만들 때나 기타 웹이 아닌 자바 프로그램을 만들 때에는 꼭 사용 한 객체를 close 해주는 

습관을 갖는게 좋다.

 

모든 Database connection 에서는 꼭 close 를 해주는 습관을 가집시다!!!

 

 

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,