기존에 사용중이던 DB를 새로운 DB에 복사해야하는 작업을 진행해보자~~ 

이 방법을 알면 DB를 백업하고 복원할 수 도 있다~

 

myDatabase ----> targetDatabase로 복사해보자!! 


1. 우선 DB 서버에 접속해야한다. 

DB가 설치되어있는 서버에 접속!!  접속툴은 자기가 쓰는거 아무거나 쓰면 된다.

 

 


2. mysql이 설치된 경로로 이동한다. 

보통 /usr/local/mariadb 경로에 설치되어있다.

cd /usr/local/mariadb

 

3. 경로로 들어와보면 data라는 디렉토리가 있다. 여기에 내 DB와 데이터가 들어있다. 

디렉토리 목록을 조회하는 명령어로 출력해보자.  아래 이미지와 같이 내 DB 가 출력되는걸 볼 수 있다.  "myDatabase" 

ls -al

 

4. 덤프작업을 해준다. 

덤프란 insert into 형식으로 현재 데이터테이블의 구조와 입력된 레코드를 저장하는 방법입니다. 


* 전체 데이터베이스 백업
DB 서버내 존재하는 모든 데이터베이스를 백업하고자 하면 터미널에서 다음과 같이 명령해주면 됩니다. 

mysqldump -u[아이디] -p[패스워드] --all-databases > [백업파일명].sql

ex) mysqldump -utest -p1234 --all-databases > backup_myAllDatabase.sql

 


*  하나의 데이터베이스 백업 
여러 데이터베이스 중에서 하나의 데이터베이스만 백업하고 싶다면 다음과 같이 명령해주면 됩니다. 

mysqldump -u[아이디] -p[패스워드] [데이터베이스명] > [백업파일명].sql
ex) mysqldump -utest -p1234 myDatabase > backup_myDatabase.sql

 

5. ls -al 명령어로 덤프 파일이 잘 생성되었는지 확인한다. 

 

 

6. 덤프파일을 내가 원하는 DB에 넣는다. (백업할 때와 꺽쇠의 방향이 반대이니 주의하세요. )

* 전체 데이터베이스

mysql -u[아이디] -p[패스워드] < [백업파일명].sql
ex) mysqldump -utest -p1234 < backup_myAllDatabase.sql


 
* 하나의 데이터베이스 
mysql -u[아이디] -p[패스워드] [데이터베이스명] < [백업파일명].sql

 

ex) mysqldump -ukyohoonsim -p1234 test < backup_test_db.sql

mysql -u[아이디] -p[패스워드] [데이터베이스명] < [백업파일명].sql

ex) mysqldump -utest -p1234 targetDatabase < backup_myDatabase.sql

 

 

자 이제 DB에 접속해보면 

끝!! 

자바에 오라클 DB연동을 해봅시다! 

 

1. ojdbc를 다운받아야합니다 (https://www.oracle.com/kr/database/technologies/appdev/jdbc-downloads.html

저는 java8 사용중으로 ojdbc8.jar을 다운받았다. ( 자바8이면 아래 jar 다운받으면 됨)

ojdbc8.jar
4.81MB

 

2.  라이브러리 추가해주기 

프로젝트에 JRE system ... 우클릭 후 Properties를 선택하고 아래 이미지와 같이 클릭클릭! 따라간다. 

 

 

다운받은 경로에있는 jar를 선택해주면 됩니다. 

 

적용이 완료되면 아래와 같이 라이브러리가 적용된게 보인다. 

 

자 이제 DB Connection 을 담당할 Class를 생성해주자.

DB username 과 pw를 입력하고 url은 본인이 접속하고자 하는 정보로 연결하면 된다. 나는 로컬DB로 연결~~ 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBHelper {
	
    public static Connection dbConn;
    
    public static Connection getConnection() {
        Connection connect = null;
        
        try {
        	// 접속정보 설정 
            String user = "아이디"; 
            String pw = "비번";
            String url = "jdbc:oracle:thin:@localhost:1521:orcl";
            
            // 드라이버 셋팅 
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            // 연결! 
            connect = DriverManager.getConnection(url, user, pw);
            
            System.out.println("----------OK;");
           
        } catch (ClassNotFoundException cnfe) {
            System.out.println("DB 드라이버 로딩 실패 :"+cnfe.toString());
        } catch (SQLException sqle) {
            System.out.println("DB 접속실패 : "+sqle.toString());
        } catch (Exception e) {
            System.out.println("Unkonwn error");
            e.printStackTrace();
        }
        return connect;     
    }

    public static void main(String[] args) {
    	// 연결테스트 
    	getConnection();
	}
}

 

자 이제 실행해보면  연결이 잘되었다면 콘솔창에 "DB Connection OK;" 문구가 출력된다.~ 

 

 

 

여기까지 잘 되었다면 이제 CRUD를 실행해보자 ~~

 


import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;



public class MyTest {

    public static void main(String[] args) {

		Connection con = null; // 데이터베이스에 접속하기 위한 변수
		Statement stmt = null; // SQL 구문을 실행하기 위한 변수
		ResultSet rs = null; // Select 구문 실행했을 때 결과를 저장하기 위한 변수
		PreparedStatement pstmt = null; // 삽입을 위한 Statement 변수 선언

		try {

			/*******************************************
			 * DB CONNECTION
			 ******************************************/
			con = DBHelper.getConnection();
			System.out.println(con);
			
			

			/*******************************************
			 * INSERT
			 ******************************************/
			pstmt = con.prepareStatement("insert into 테이블명 (컬럼명1, 컬럼명2) values(?, ? )");
			// 물음표에 들어갈 값들을 정의해준다. 
			pstmt.setString(1, "A1");
			pstmt.setString(2, "A2");
			int result = pstmt.executeUpdate();
			pstmt.close();
			
			
			
			/*******************************************
			 * SELECT
			 ******************************************/
			stmt = con.createStatement();
			rs = stmt.executeQuery("select * from 테이블명");
			while (rs.next()) {
				// 컬럼 순서대로 타입에 맞춰 출력하면 된다.
				// 첫번째 컬럼이 숫자 타입인 경우 rs.getInt(1)
				// 두번째 컬럼이 문자 타입인 경우 rs.getString(2)
				System.out.println(rs.getInt(1) + ":" + rs.getString(2));
			}
			;
			stmt.close();
			if (rs.next()) System.out.println("데이터가 없습니다.");
			
			
			

			/*******************************************
			 * UPDATE
			 ******************************************/
			String tmp = "UPDATE 테이블명 SET 컬럼명 = 업데이트할 값  WHERE 조건";
			pstmt = con.prepareStatement(tmp);
			pstmt.executeUpdate();
			pstmt.close();

			
			
			
			/*******************************************
			 * DELETE
			 ******************************************/
			stmt = con.createStatement();
			rs = stmt.executeQuery("delete from 테이블명 where 조건");
			stmt.close();
			
			

		} catch (SQLException e) {
			e.printStackTrace();

		} finally {
			try {
				if (con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}

}

 

만약 실행 중 에러가 발생하거나 DB에 업데이트가 안되는 경우 DB툴에서 COMMIT;  한번해주기~~ 

 

 

끝! 

MY_USER 라는 테이블에 Tigger 생성! 

INSERT, UPDATE 될때마다 LOG 테이블에 쌓는다. 

CREATE TRIGGER MY_USER_TRIGGER 
AFTER 
    INSERT OR UPDATE ON MY_USER

BEGIN
    INSERT INTO 
        MY_USER_LOG
    VALUES (
        :OLD.SEQ                
        , :OLD.CREATED_AT          
        , :OLD.DELETED_AT          
        , :OLD.UPDATED_AT          
        , :OLD.NAME                
        , :OLD.NOTE                
        , :OLD.PHONE_NUM           
        , :OLD.STATUS              
        , :OLD.TELCO               
    );
    
   
END;

 


* 하나의 DB만 연결할때 
jdbc:oracle:thin:@192.168.11.17:1521/USIMORCL 


* 2개의 DB연결할때
jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트IP)(PORT = 포트번호))(ADDRESS = (PROTOCOL = TCP)(HOST = 두번째호스트IP)(PORT = 포트번호))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCL)))

username과 pw는 동일하게 해주어야한다. 


appilcation.properties 

spring.datasource.url=ENC(암호화된 url)
spring.datasource.username=ENC(암호화된 아이디)
spring.datasource.password=ENC(암호화된 비번)

or 

코드 내 DB 연결 부분에 암호화된 값 입력 

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

PHP Simple Captcha 적용해보기!  (0) 2020.11.20
Ping 명령어를 알아보자!  (0) 2020.10.23
Apache mod_jk 설치방법  (0) 2020.10.08
Apache SSL 설정을 해보자  (0) 2020.09.23
Apache 환경 설정 방법!  (0) 2020.09.23

Window 에 설치된 오라클에 테이블 스페이스를 잡아보았다! 

 

* MYTESTSPACE와 adminGenie 는 내가 정한 이름이니 본인에 맞게 수정 후 사용하기! 

 

 

1. CMD로 DB 서버 접속 

오라클 접속 
sqlplus "/as sysdba"


2. 스페이스 생성 
create tablespace MYTESTSPACE datafile 
'C:\app\Administrator\oradata\orcl\MYTESTSPACE .DBF' size 2048M autoextend on next 100M
maxsize unlimited;

3. 잘생성되었는지 확인 
- SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'MYTESTSPACE' 


4. 유저생성
create user adminGenie
identified by test1234
default tablespace MYTESTSPACE ;


5. 권한부여
GRANT UNLIMITED TABLESPACE TO adminGenie
GRANT SELECT ANY TABLE TO adminGenie 
GRANT CREATE TABLE TO adminGenie 
GRANT UPDATE ANY TABLE TO adminGenie 
GRANT CREATE TRIGGER TO adminGenie 
GRANT DROP PUBLIC DATABASE LINK TO adminGenie  
GRANT DELETE ANY TABLE TO adminGenie 
GRANT CREATE ANY TABLE TO adminGenie  
GRANT INSERT ANY TABLE TO adminGenie  
GRANT CREATE VIEW TO adminGenie 
GRANT CREATE SEQUENCE TO adminGenie 
GRANT CREATE PUBLIC DATABASE LINK TO adminGenie 
GRANT ALTER SESSION TO adminGenie 
GRANT CREATE SESSION TO adminGenie 
Grant connect,resource,alter session to adminGenie  


+ Recent posts