[Oracle][oracle 환경설정 및 db imp(복원)-4] 처음부터 다시 시작(sql script, imp, dmp)

2023. 9. 4. 15:55· IDE && Tools/Oracle
목차
  1. 1. 현재 계정에 sudo 권한주기
  2. 2. sid, instance, dbname 일치 시키기 위해 ORACLE_SID, instance_name 수정하기
  3. 2.1. listener.ora 파일에서 sid 수정
  4. 2.2. spfile || pfile 수정하기
  5. 2.3. 세션 설정 sid 변경
  6. 2.4. 변경 완료 후 확인
  7. 2.5. oracle 용 user 생성 및 권한 부여
  8. 파일 character set 확인
  9. 내 DB의 character set 확인
  10. compress=y 에 대한잘못된 정보 주의
  11. 현재 DB 버전 및 구성 확인

oracle 환경설정 및 imp까지의 총정리

1. 현재 계정에 sudo 권한주기

su root;  // root계정 접속

/etc/sudoers 경로 에서

Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL

위 부분 이상없는지 확인

usermod --append -G wheel {username}

이제 username 이름의 user가 sudo 명령 사용 가능

2. sid, instance, dbname 일치 시키기 위해 ORACLE_SID, instance_name 수정하기

2.1. listener.ora 파일에서 sid 수정

$ORACLE_HOME/network/admin/

위 경로에 있음 vi로 수정하자

2.2. spfile || pfile 수정하기

나의 경우는 spfile을 사용중이지 않으므로 pfile 수정

pfile은 $ORACLE_HOME/dbs/ 에 위치해있다.

pfile 이름 수정 및 내용 수정

rename 명령어 사용법 : rename (적용 범위) (교체할 문자) (파일 명)

rename init{oldname}.ora init{newname}.ora init{oldname}.ora
vi initsource.ora 

명령어로 내용 바꾸기

2.3. 세션 설정 sid 변경

echo 'export ORACLE_SID=새로 지정할 sid' >> ~/.bashrc
source ~/.bashrc

위 명령어를 통해 변경했다.

2.4. 변경 완료 후 확인

SQL> select name from v$database; // dbname확인
SQL> select instance_name from v$instance // instancename 확인
$ env | grep ORACLE // SID 및 ORACLE 환경설정 확인

2.5. oracle 용 user 생성 및 권한 부여

sys 계정으로 user 생성 및 sysdba, connect, user table 등의 필요한 수정권한 주기

create user myuser identified by 비밀번호

grant sysdba to myuser;
grant connect, resource, dba to myuser;
alter user myuser quota unlimited on users;

이제 스크립트 에서 데이터파일 size 잘 수정했는지 확인하고, 스크립트 실행!

SQL> @@경로\\sqlfile.sql

아래는 내가 사용한 full imp 명령

imp file=/home/ora19c/rcb21.dmp' full=y

db를 import하던 중 특정 테이블에서(항상 거기서) 에러가 발생했다

imp-00009 : abnormal end of export file

imp-00028 : partial import of previous table rolled back: 600000 rows rolled back

Import terminated successfully with warnings.

파일의 끝이 이상할린 없을텐데… 여기서 좀 고생했다. 다시 맘먹고 구글링하면서,

우선적으로 내가 고려하지 않은 imp 명령의 옵션이 있는지 생각했는데,

https://www.dba-village.com/village/dvp_forum.OpenThread?ThreadIdA=34446

여기서 recodelength 옵션을 건드려볼 것을 권했고, recodelength에 대해서 알아보던 중, 내가 dmp파일의 character set을 전혀 고려하지 않았었다는 것을 깨달았다.


파일 character set 확인

파일의 character set을 확인하려면

od -b expdat.dmp | more

명령어를 입력한 후 결과를 확인하면 되는데, 위 명령어는,

  • od: "octal dump", 파일의 내용을 8진법 바이트 형식으로 표시하는 명령어. 파일을 바이트 단위로 읽어서 해당 바이트의 8진법 으로 출력.
  • -b: "od" 명령어에 대한 옵션으로, 파일의 내용을 8진법 바이트 형식으로 출력하도록 지시합니다.
  • |: 파이프 기호, 명령어의 출력을 다른 명령어의 입력으로 보내는 데 사용됩니다. 여기서는 "od" 명령어의 출력을 "more" 명령어의 입력으로 보냅니다.
  • more: 터미널에서 텍스트를 페이지 단위로 출력하는 도구입니다. 출력이 화면을 넘어가는 경우에 스크롤링을 통해 페이지마다 내용을 볼 수 있도록 함. 위의 경우에는 파일의 윗부분만 필요하니까 사용했다.

아무튼 위의 명령어를 입력하면 file의 내용이 8진법 바이트 형식으로 표현되는데,

이 때,

첫 번째 byte 값의 경우로 나눌 수 있다.

001 : oracle v5,6 ASCII

002 : oracle v5,6 EBCDIC

003 : oracle v7

003인 경우는 어떤 캐릭터셋인지 2,3번째 byte를 character set 판별에 사용하면 된다.

000 001 : US&ASCII

000 002 : WE8DEC

000 037 : WE8ISO8859P1

003 110 KO16KSC5601

003 147 UTF8

참고한사이트

http://gilab.kr/dbtech/bbs/?bo_c=1010&bo_v=125

나의 경우는

000000 003 003 147 ~~~~~~~~~~

000020 ~~~~~~~~~~~~~~~~~~

와 같은 식으로 byte 변환되었으므로 UTF8 로 Encoding된것을 확인할 수 있다.

내 DB의 character set 확인

seelct * from nls_database_parameters where parameter = 'NLS_CHARACTERSET' ;

햇을 때 나오는게 내 dB의 character set으로 나의 경우는 UTF8과 호환되는 AL32UTF8이므로 문제없음,

recordlength는 필수 옵션이 아니고 레코드의 최대 길이를 지정해주는 옵션인데,

가장 긴 최대길이 65535로 옵션을 주고 수행해봤는데 안된다..


compress=y 에 대한잘못된 정보 주의

만약 해당 dmp 파일을 exp할 당시 binary mode로 ftp 전송할 때 만약 file size가 너무 크면 compress 옵션을 y로 주고 했어야 정상 imp가 되었을 것이라고 하는 잘못된 답변이 있는데,

아래 사이트 보면 엄청 혼나고있다. 그럼 이건 원인이아닌거같은데…

https://www.dbasupport.com/forums/showthread.php?45317-IMP-00009-abnormal-end-of-export-file

혹시 exp 한 oracle 버전이 imp할 버전보다 상위버전이 아닌지?

정말 고려해보지못한 문제이다. 왜냐면 실장님이 걍 oracle 깔고 sw 깔고 CentOS pc째로 줬으니까…

더 이상 물러날 곳이 없어서 실장님께 db 주인과 컨택할 수 있게 해달라고 했다.

db exp한 곳에 문의해보니 19.9.,0.0.0, 현재 내 버전은 19.3.0.0.0이다.

http://www.koreaoug.org/install/9667

위 사이트를 참고하여 oracle 버전을 업데이트하기로 햇다.

db 버전 확인은 어떻게 했냐면..

현재 DB 버전 및 구성 확인

SET LINESIZE 200
COL NAME FOR A12
COL OPEN_MODE FOR A10
COL ACTION FOR A10
COL ACTION_TIME FOR A11
COL DESCRIPTION FOR A30
COL PATCH_TYPE FOR A10
COL SOURCE_VERSION FOR A15
COL TARGET_VERSION FOR A15
SELECT   A.CON_ID
          ,B.NAME
            ,B.OPEN_MODE
            ,TO_CHAR (A.ACTION_TIME, 'YYYYMMDD')     ACTION_TIME
            ,A.PATCH_ID
            ,A.PATCH_TYPE
            ,A.ACTION
            ,A.DESCRIPTION
            ,A.SOURCE_VERSION
           ,A.TARGET_VERSION
   FROM     CDB_REGISTRY_SQLPATCH A, V$CONTAINERS B
   WHERE a.con_id = B.CON_ID
   ORDER BY CON_ID, PATCH_ID;

위 명령어를 통해 현재 19.3 버전으로 설치된 것을 확인했다.

19.9 버전으로 patch update 하기 위해서 opatch 버전 업데이트 후 진행하려했으나,

oracle 설치는 괜찮은데 oracle 업데이트관련해서는 모두 oracle support 에 접근 가능한 계정이 필요해서, 그냥 다시 빈 가상 환경에 oracle 21c를 설치하는 방법으로 회귀..

 

oracle 19.9 → 21.3 으로의 imp는 괜찮다고 한다.

  1. 1. 현재 계정에 sudo 권한주기
  2. 2. sid, instance, dbname 일치 시키기 위해 ORACLE_SID, instance_name 수정하기
  3. 2.1. listener.ora 파일에서 sid 수정
  4. 2.2. spfile || pfile 수정하기
  5. 2.3. 세션 설정 sid 변경
  6. 2.4. 변경 완료 후 확인
  7. 2.5. oracle 용 user 생성 및 권한 부여
  8. 파일 character set 확인
  9. 내 DB의 character set 확인
  10. compress=y 에 대한잘못된 정보 주의
  11. 현재 DB 버전 및 구성 확인
'IDE && Tools/Oracle' 카테고리의 다른 글
  • [Oracle][oracle 환경설정 및 db imp(복원)-5] oracle 21c 21.3 설치 준비, 환경설정 및 설치
  • [Oracle][oracle 환경설정 및 db imp(복원)-3] Oracle DB 복구(삽질) 2부
  • [Oracle][oracle 환경설정 및 db imp(복원)-3] Oracle DB 복구(삽질) 2부
  • [Oracle][oracle 환경설정 및 db imp(복원)-2] Oracle DB 복구(삽질) 1부
서병렬
서병렬
스프링부트, 아키텍쳐, 알고리즘
서병렬
서병렬 개발
서병렬

링크

  • Github
  • Notion résumé

인기 글

  • 분류 전체보기 (114)
    • 알고리즘 (17)
    • 언어 (16)
      • 공통 (0)
      • Dart (1)
      • C++ (6)
      • Python (2)
      • Java (7)
      • Typescript (0)
    • Framework && Library (4)
      • Next.js (3)
      • Flask (1)
    • Spring SpringBoot (7)
      • error (2)
      • WebFlux (1)
    • IDE && Tools (9)
      • 비쥬얼 스튜디오 (0)
      • Git (2)
      • Oracle (7)
      • Redis (0)
    • 아키텍쳐 (0)
    • CICD (13)
      • Jenkins (7)
      • Docker (3)
      • k8s (2)
    • 개발 외 (0)
    • 항해99 (19)
    • 웹 (1)
    • aws (8)
    • 클라우드 (0)
전체
오늘
어제

최근 글

hELLO · Designed By 정상우.v4.2.1
서병렬
[Oracle][oracle 환경설정 및 db imp(복원)-4] 처음부터 다시 시작(sql script, imp, dmp)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.