본문 바로가기

IT/Oracle

export, import 덤프뜨기/ 테이블스페이스 및 유저 정보 조회

1. CMD 창을 연다.

2. CONN SYS /AS SYSDBA  라고 칠 때 에러나는 경우가 있어. 그 때는 CONNECT /AS SYSDBA 로 접속하면 됨.

3. TABLESPACE 생성 및 삭제

3.1. TABLESPACE 생성

  CREATE TABLESPACE 테이블스페이스명
  DATAFILE 'C:\FTADATA.DBF'
  SIZE 100M AUTOEXTEND ON NEXT 10M
  MAXSIZE UNLIMITED;

3.2. TABLESPACE 삭제

  DROP TABLESPACE 테이블스페이스명
  INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
  - INCLUDE CONTENTS: 테이블스페이스 내의 객체(테이블, 인덱스 등) 다 지움
  - INCLUDING CONTENTS: 테이블스페이스의 모든 세그먼트를 삭제(데이터가 있는 테이블스페이스는 삭제할 수 없다.)
  - CASCADE CONSTRAINTS: 삭제된 테이블스페이스 내의 테이블의 기본키와 유일키를 참조하는 다른 테이블로 부터 참조 무결성 제약 조건을 삭제
  - INCLUDING CONTENTS AND DATAFILES: 물리적 파일까지 삭제

3.3. TABLESPLACE 조회

  SELECT * FROM DBA_DATA_FILES;
  SELECT * FROM DBA_TABLESPACES;

 좀 더 자세히 보고 싶으면.. 
  SELECT OWNER, TABLESPACE_NAME, SUM(BYTES)
  FROM DBA_SEGMENTS
   GROUP BY OWNER, TABLESPACE_NAME;

4. USER 생성 및 삭제

 4.1. USER 생성 (DBA 권한을 가진 계정만 생성 가능)

 CREATE USER 아이디 IDENTIFIED BY 패스워드;
 EX) CREATE USER DYFTA IDENTIFIED BY DYFTA
     DEFAULT TABLESPACE 테이블스페이스명;
 DEFAULT TABLESPACE 테이블스페이스명;

4.2. USER 삭제

 DROP USER 아이디 CASCADE;

4.3. USER 권한주기

GRANT "CONNECT" TO 아이디 WITH ADMIN OPTION;
GRANT "DBA" TO 아이디 WITH ADMIN OPTION;
GRANT "RESOURCE" TO 아이디 WITH ADMIN OPTION;
GRANT CREATE SESSION TO 아이디;     세션생성 권한
GRANT ALTER SESSION TO 아이디;      세션수정
GRANT CREATE TABLE TO 아이디;       테이블 생성 권한
GRANT CREATE VIEW TO 아이디;        뷰 생성 권한
GRANT QUERY REWRITE TO 아이디;     쿼리수정 권한

4.4 USER가 사용할 테이블 스페이스 지정

ALTER USER 유저명 DEFAULT TABLESPACE 테이블스페이스명;

4.5 USER 조회

SELECT USERNAME FROM DBA_USERS;


5. 데이터 EXPORT 받기

EXP DYFTA/DYFTA@TSDEV FILE=C:DYFTADUMP.DMP FULL=Y


덤프뜨기

1. IMPORT : 덤프파일을 읽어서 그 안에 저장되어 있는 명령 실행

  IMPORT를 수행하기 위해서는 반드시 EXPORT한 DUMP FILE이 존재해야 한다.

 EX) IMP DYFTA/DYFTA@TSDEV FILE='C:덤프파일명.DMP' FROMUSER=DYFTA TOUSER=DYFTA
 EX2) IMP SYS/1111@ORCL FILE='C:\APP\덤프파일명.DMP' FROMUSER=DYFTA TOUSER=DYFTA IGNORE=Y

 여기서 에러발생했었음 SYS AS SYSDBA/ 1111 넣으면 됨. 여기서 1111은 오라클 설치시 저장했던 비밀번호임.

* 옵션 
  - USERID : IMPORT를 실행시키는 계정의 USERNAME/PASSWORD 명 
  - FILE : IMPORT될 EXPORT 덤프 파일명 
  - SHOW : 파일 내용이 화면에 표시되어야 할 것인가를 나타냄(Y/N 플래그) 
  - IGNORE : IMPORT중 CREATE명령을 실행할 때 만나게 되는 에러들을 무시할 것인지 결정(Y/N 플래그) 
  - INDEXES : 테이블 INDEX의 IMPORT여부(Y/N 플래그) 
  - ROWS : 테이블 데이터를 IMPORT할 것인가(Y/N 플래그) 만약 "N"로 설정하면 데이터베이스 객체들에 대한 DDL만이 실행된다. 
  - FULL : FULL엑스포트 덤프 파일이 IMPORT 할때 사용한다. 
  - TABLES : IMPORT될 테이블 리스트 
  - COMMIT : 배열(배열의 크기는 BUFFER에 의해 설정됩니다) 단위로 COMMIT을 할것인가 결정 기본적으로는 테이블 단위로 COMMIT을 한다. 
  - FROMUSER : EXPORT덤프 파일로 부터 읽혀져야 하는 객체들을 갖고 있는 테이터베이스 계정 
  - TOUSER : EXPORT덤프 안에 있는 객체들이 IMPORT될 데이터베이스 계정

- 현재 버전보기

  SELECT * FROM V$VERSION;

- 테이블 스페이스 정보 조회

 SELECT * FROM DBA_TABLESPACES;

- 테이블 스페이스의 SEGMENTS 정보 조회

 SELECT * FROM DBA_SEGMENTS;

- DB 링크 생성

  CREATE DATABASE LINK DB링크명 CONNECT TO 유저ID IENDTIFIED BY 유저패스워드;

* CREATE TABLESPACE: 오라클 데이터베이스 내에서 생성되고 처리될 테이블들의 레코드들이 실제로 존재할 영역을 디스크 상에 물리적으로 생성시키는 명령어
* DATAFILE: 데이터베이스 내에서 사용되는 레코드들이 실제로 디스크상에 파일로 존재하게 되는데, 이 때의 파일의 위치와 이름을 지정하는 곳


SELECT U.USERNAME,
       U.DEFAULT_TABLESPACE                             AS DEF_TS,
       U.TEMPORARY_TABLESPACE                           AS TEMP_TS
       U.ACCOUNT_STATUS                                 AS STATUS,
       U.PROFILE,
       TO_CHAR(U.CREATED,'YYYY.MM.DD HH24:MI:SS')       AS CREATED,
       TO_CHAR(U.LOCK_DATE,'YYYY.MM.DD HH24:MI:SS')     AS LOCK_DATE,
       TO_CHAR(U.EXPIRY_DATE,'YYYY.MM.DD HH24:MI:SS')   AS EXPIRY_DATE,
       SUM(DECODE(S.SID, NULL, NULL, 1))                CURRENT_LOGONS,
       SUM(DECODE(S.STATUS, 'ACTIVE', 1))               CURRENT_ACTIVE,
       TRUNC(AVG(ABS(SYSDATE - S.LOGON_TIME)) * 86400)  AVG_LOGON_TIME
  FROM SYS.DBA_USERS U, SYS.GV_$SESSION S
 WHERE U.USER_ID  = S.USER#(+)
 GROUP BY U.USERNAME, U.DEFAULT_TABLESPACE, U.TEMPORARY_TABLESPACE,
          U.ACCOUNT_STATUS, U.PROFILE,
          TO_CHAR(U.CREATED,'YYYY.MM.DD HH24:MI:SS'),
          TO_CHAR(U.LOCK_DATE,'YYYY.MM.DD HH24:MI:SS'),
          TO_CHAR(U.EXPIRY_DATE,'YYYY.MM.DD HH24:MI:SS')
 ORDER BY U.USERNAME, U.DEFAULT_TABLESPACE;