오라클 9i 클라이언트가 설치가 되어 있으면 되고, 백업 데이터의 테이블 컬럼 타입중에 CLOB가 없을 경우는 쉽게 백업을 받을수 있다.
하지만 컬럼에 CLOB 또는 LOB 타입이 있을 경우는 exu9tne 뷰를 변경하고 진행하여야 한다.

작업은 윈도우 서버에서 진행함

1. 오라클 9i 클라이언트 설치된 서버 접속
2. Start > Programs > oracle - OraClient9i > Configuration and Migration Tools > Net Manager
3. Net Manager > Oracle Net 구성 > 로컬 > 서비스 이름 지정 (선택) > 왼쪽메뉴에 + 버튼 클릭
4. "네트 서비스 이름 마법사:시작" 화면이 뜸 > 네트 서비스 이름 : 아이디 > TCP/IP(인터넷 프로토콜) 선택 > 호스트 이름: 오라클 서버주소 , 포트번호 : 1521 > (Oracle8 또는 이전) SID: ORCL 선택 , 접속 유형: 데이터베이스 기본값
5. 테스트 버튼 선택 scott 로 로그인 실패 메시지가 출력 될것이며, 로그인 변경으로 사용자 아이디/패스워드 입력
6. 사용자 아이디/패스워드 입력후 테스트 버튼 클릭시 정상적으로 로그인 되는 것을 확인 할 수 있음 > 테스트 창 닫기 > 완료
7. "서비스  이름 지정" 카테고리에 네트 서비스 이름으로 지정한 이름이 보인다.
8. 파일 > 네크워크 구성 저장 > 창 닫기
9. cmd 창 오픈 한 후 백업폴더로 이동
10. exp 사용자아이디/사용자패스워드@네트 서비스 이름 file=백업파일명

C:\bakup>exp testoracle/**패스워드입력**@testoracle file=testoracle_db_backup.dmp

Export: Release 9.2.0.1.0 - Production on 화 Feb 25 17:31:50 2014

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


다음에 접속됨: Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다
서버는 KO16KSC5601 문자 집합을 사용합니다 (문자집합 변환이 가능합니다)\
. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. TESTORACLE 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. TESTORACLE 사용자의 객체 유형 정의를 엑스포트 합니다 \r

TESTORACLE의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. TESTORACLE의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블                    AA_INFO(를)을 엑스포트 중          2 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_COMT(를)을 엑스포트 중          1 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_DATA(를)을 엑스포트 중
EXP-00003: 세그먼트(748, 443)에 대한 저장 영역 정의가 없습니다
. . 테이블                    BOARD_FILE(를)을 엑스포트 중        245 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_INFO(를)을 엑스포트 중          5 행이 엑스포트됨
. 동의어 엑스포트 중
. 뷰 엑스포트 중
. 저장 프로시저 엑스포트 중
. 작업을 엑스포트합니다
. 참조 무결성 제약조건 엑스포트 중
. 트리거 엑스포트 중
. 인덱스유형을 엑스포팅합니다
. 비트맵, 함수, 기능과 확장 가능한 인덱스들을 엑스포트합니다
. 이후 테이블 처리를 엑스포트 중
. 구체화된 뷰 엑스포트 중
. 스냅샷 로그 엑스포트 중
. 작업 대기열을 엑스포트 중
. 리프레쉬 그룹과 자식 엑스포트 중
. 차원을 엑스포트합니다\
. 스키마 이후 단계의 객체와 작업을 엑스포트합니다\r

. 통계를 엑스포트합니다
엑스포트가 경고를 보이며 성공적으로 끝났습니다

C:\bakup>

11. "EXP-00091: 불완전한 통계를 엑스포트 중입니다." 메시지는 디비버전 또는 캐릭터셋이 맞지 않을 경우 발생함으로 무시.
12. "EXP-00003: 세그먼트(748, 443)에 대한 저장 영역 정의가 없습니다" 메시지는 테이블 컬럼에 CLOB 타입이 있어 백업을 못함.
13. exu9tne 뷰를 변경하여 해당 문제를 해결 할 수 있음.
14. 아래와 같이 exu9tne 뷰 변경함.

SQL> CREATE OR REPLACE VIEW exu9tne (
  2  tsno, fileno, blockno, length) AS
  3  SELECT ts#, segfile#, segblock#, length
  4  FROM sys.uet$
  5  WHERE ext# = 1
  6  UNION ALL
  7  SELECT * from sys.exu9tneb
  8  /

View created.

15. 다시 cmd 창에서 exp 진행하면 아래와 같이 정상적으로 백업이 되는 것을 확인 할 수 있음.

C:\bakup>exp TESTORACLE/패스워드@TESTORACLE file=testoracle_db_backup.dmp

Export: Release 9.2.0.1.0 - Production on 화 Feb 25 18:30:36 2014

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


다음에 접속됨: Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다
서버는 KO16KSC5601 문자 집합을 사용합니다 (문자집합 변환이 가능합니다)\
. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. TESTORACLE 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. TESTORACLE 사용자의 객체 유형 정의를 엑스포트 합니다 \r

TESTORACLE의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. TESTORACLE의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블                    AA_INFO(를)을 엑스포트 중          2 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_COMT(를)을 엑스포트 중          1 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_DATA(를)을 엑스포트 중        157 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_FILE(를)을 엑스포트 중        245 행이 엑스포트됨
EXP-00091: 불완전한 통계를 엑스포트 중입니다.
. . 테이블                    BOARD_INFO(를)을 엑스포트 중          5 행이 엑스포트됨
. 동의어 엑스포트 중
. 뷰 엑스포트 중
. 저장 프로시저 엑스포트 중
. 작업을 엑스포트합니다
. 참조 무결성 제약조건 엑스포트 중
. 트리거 엑스포트 중
. 인덱스유형을 엑스포팅합니다
. 비트맵, 함수, 기능과 확장 가능한 인덱스들을 엑스포트합니다
. 이후 테이블 처리를 엑스포트 중
. 구체화된 뷰 엑스포트 중
. 스냅샷 로그 엑스포트 중
. 작업 대기열을 엑스포트 중
. 리프레쉬 그룹과 자식 엑스포트 중
. 차원을 엑스포트합니다\
. 스키마 이후 단계의 객체와 작업을 엑스포트합니다\r

. 통계를 엑스포트합니다
엑스포트가 경고를 보이며 성공적으로 끝났습니다

C:\bakup>

20. 백업이 완료되면 아래와 같이 exu9tne 뷰를 원복해야 함.

SQL> CREATE OR REPLACE VIEW exu9tne (
  2  tsno, fileno, blockno, length) AS
  3  SELECT ts#, segfile#, segblock#, length
  4  FROM sys.uet$
  5  WHERE ext# = 1
  6  /

View created.

SQL> 
2014/02/26 10:22 2014/02/26 10:22
실수로 sys의 패키지를 삭제하여 아래와 같은 에러가 발생할 수 있다.
삭제한 패키지를 재생성하면 간단히 처리되는 문제이나, 삭제를 하였기 때문에 어떻게 선언이 되어 있는지 알수가 없다.
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_APPLICATION_INFO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


/product/버전/rdbms/admin/ 하위에 sys에 생성되어 있는 패키지등의 sql 파일이 존재하며,

DBMS_APPLICATION_INFO 패키지가 삭제되었다면 dbmsapin.sql, prvtapin.plb 파일을 실행해 주면 된다.




SQL> @dbmsapin.sql

Package created.

create public synonym dbms_application_info for sys.dbms_application_info
                      *
ERROR at line 1:
ORA-00955: name is already used by an existing object
Grant succeeded.

SQL> @prvtapin.plb

Package body created.

SQL> show user
USER is "TESTUSER"

SQL> exec DBMS_APPLICATION_INFO.SET_MODULE('SQL*plus', 'Testing DBMS_APPLICATION_INFO');

PL/SQL procedure successfully completed.
2013/09/16 14:36 2013/09/16 14:36
impdp system dumpfile=파일명 REMAP_SCHEMA=이전아이디:복원할아이디 REMAP_TABLESPACE=이전테이블스페이스:복원할테이블스페이스

복원중에 반응이 없이 대기상태일때가 있다.
실제복원하는 부분이 많아서 느린 경우도 있지만 용량부족으로 인하여 발생될수도 있다.

용량 부족시 에러가 떨어지지 않고 무한 대기상태에 빠진다.

그럴땐 용량을 확보한 후 진행하면 된다.

용량확인 방법

set line 200
col filename format a40
col tablespacename format a20
col free format a10
SELECT B.FILE_NAME               FILENAME,
       B.TABLESPACE_NAME TABLESPACENAME,
       B.BYTES/1024/1024              "TOTAL(MB)",
      ((B.BYTES-SUM(NVL(A.BYTES,0))))/1024/1024 "USED(MB)",
      (SUM(NVL(A.BYTES,0)))/1024/1024 "FREE(MB)",
      (SUM(NVL(A.BYTES,0))/(B.BYTES))*100||'%'  "FREE"
FROM DBA_FREE_SPACE A, DBA_DATA_FILES B
WHERE A.FILE_ID(+) = B.FILE_ID and B.TABLESPACE_NAME = '테이블스페이스'
GROUP BY B.TABLESPACE_NAME, B.FILE_NAME, B.BYTES
ORDER BY B.TABLESPACE_NAME
2013/07/25 20:30 2013/07/25 20:30

temp tablespace 는 sort 작업과 글로벌 임시테이블을 저장하는데에 사용된다.

ex) 인덱스 생성, analyze, select distinct , order by , group by , union, intersect, minus,Sort-Merge joins등

temp tablespace 가 부족할 경우 아래와 같은 에러가 발생한다.
ORA-1652: unable to extend temp segment by 8 in tablespace

1. temp tablespace 용량 및 파일 확인

col NAME format a60
col TOTAL format a10
col USED format a10
col FREE format a10
col USAGE format a10

SELECT B.NAME ,B.BYTES/1024/1024 || ' M' TOTAL ,A.BYTES_USED/1024/1024 || ' M' USED,(B.BYTES-A.BYTES_USED)/1024/1024 || ' M' "FREE", ROUND(A.BYTES_USED/B.BYTES * 100) || '%' "USAGE" FROM
(SELECT BYTES_USED,FILE_ID FROM V$TEMP_EXTENT_POOL)A,
(SELECT BYTES,FILE#,NAME FROM V$TEMPFILE)B
WHERE A.FILE_ID = B.FILE#

2. temp tablespace 사용중인 아이디 및 쿼리 확인.
SELECT su.USERNAME,su.TABLESPACE,su.SEGTYPE,su.SEGFILE#, su.SEGBLK#, su.BLOCKS, st.SQL_TEXT
FROM v$sort_usage su, v$sql st
WHERE su.TABLESPACE='TEMP' and su.SEGTYPE='LOB_DATA' and su.sql_id = st.sql_id  order by BLOCKS;
2013/07/03 09:24 2013/07/03 09:24

오라클 에서 한글 comment 를 사용시에는 오라클 접속 툴의 캐릭터셋 설정을 서버의 설정과 일치시켜야
한글 comment 가 정상적으로 보이니 서버의 캐릭터셋을 확인하여 툴에서 캐릭터셋을 일치시키 후 접속하여 작업을 하여야 한다.

1. TABLE COMMENT 추가
COMMENT ON TABLE 테이블명 IS '주석문'

2. COLUMN COMMENT 추가
COMMENT ON COLUMN 테이블명.필드명 IS '주석문'

3. TABLE COMMENT 삭제
COMMENT ON TABLE 테이블명 IS ''

4. TABLE COMMENT 확인
SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '테이블명';
2013/03/27 15:48 2013/03/27 15:48

SQL> select * from dba_profiles where resource_name = 'IDLE_TIME';


PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED
2012/12/07 16:29 2012/12/07 16:29

set line 200
col sid format a10
col machine format a20
SELECT TO_CHAR (SID) sid, serial# serialNumber,
SUBSTR (TO_CHAR (last_call_et), 1, 6) executeSeconds, userName, machine,
b.sql_text sqlText
FROM v$session a, v$sqltext b
WHERE username NOT IN ('SYSTEM', 'SYS')
AND a.TYPE != 'BACKGROUND'
AND a.status = 'ACTIVE'
AND a.sql_address = b.address(+)
AND a.sql_hash_value = b.hash_value(+)
ORDER BY a.last_call_et DESC,
a.SID,
a.serial#,
b.address,
b.hash_value,
b.piece;
2012/10/23 19:06 2012/10/23 19:06
select SQL_TEXT,LAST_LOAD_TIME from v_$sql where sql_text like '%table%';
2012/10/22 11:29 2012/10/22 11:29
IMP-00041: Warning: object created with compilation warnings

오라클 import 시 발생하는 에러로 트리거또는 뷰테이블 생성시 발생할 수 있으며,
참조하려는 테이블이 잘못 설정되었거나 없을 경우 발생할 수 있다.
2012/07/14 13:18 2012/07/14 13:18

1. 권한 확인
select * from dba_sys_privs where grantee=upper('ID');

2. 접속 권한 부여
grant connect,resource to ID;


3. 접속 권한 제거
revoke connect,resource from ID;

2012/06/16 18:04 2012/06/16 18:04