1. 기존 데이터베이스 백업 받기

우선 export 툴인 exp 이용하여 전체 database 백업 받습니다.
$ exp system/manager file=fullbackup.dmp full=y
 
그리고 기존의 데이터중 그대로 사용할 데이터 또는 만약 재설치에 실패했을 때를 대비해서
기존의 데이터를 모두 백업을 받고, 현재의 설정도 백업받아야 겠지요.
 
SQL>spool bakdata.txt
SQL>select * from v$dba_users; - 유저들의 디폴트 테이블스페이스, temp테이블스페이스
SQL>select * from v$datafile; -- 각각의 데이터파일의 위치와 크기
SQL>select * from dba_tablespaces -- 테이블 스페이스 정보
SQL>select * from dba_data_files; -- 테이블 스페이스와 파일의 구성정보
SQL>select * from dba_rollback_segs; -- 롤백 세그먼트 정보
SQL>select * from v$log; -- redo log 정보
SQL>select * from v$logfile; -- redo log file 정보
SQL>spool off
 
그리고 파라미터 파일인 init<SID>.ora, (ifile 이라는 파라미터로 설정되어있는)config*.ora 백업.
 
한가지 있습니다.
바로 control file 입니다. 이것은 복구 중요한 파일입니다.
control 파일은 2 파일이므로, 생성해주는 sql 스크립트 파일을 가지고 있으면 여러 가지로 편리합니다.
 
SQL>alter database backup controlfile to trace ;
 
이렇게 하고 init .ora 파일에(또는 config .ora) 설정된 user_dump_dest 디렉토리로 가서
가장 최근의 *.trc 파일을 열어보면 control 파일을 만드는 스크립트가 포함되어 있습니다.
이것을 편집해 놓으면 바로 controlfile 만들수 있습니다.
 
 
 
ORACLE_SID (= DB name) 을 변경했을 경우
 
- UNIX의 경우
ORACLE_SID, DB_NAME 파라미터가 들어가는 모든 파일을 찾아서 수정해야 한다.
 
1. 홈디렉토리에서 환경변수 설정파일인 .profile(또는 .cshrc)의
ORACLE_SID=<new_SID> 부분을 편집하고
$. .profile (.cshrc 의 경우 $ source .cshrc로 실행)
로 실행시켜 준다. 아니면,
$export ORACLE_SID=ORATEST
수행시켜 준다.
2. /opt/var/oracle/oratab 파일을 열어 SID:ORACLE_HOME path:Y/N를 수정
3. init*.ora 또는 config*.ora 파일의 db_name을 수정
4. 아래에 나올 crdb*.sql 파일을 수정
 
- NT 경우
regedit 실행시켜 local_machine > software > oracle > home0 (oracle 8)
이동하여 ORACLE_SID 수정합니다. 그리고 init*.ora 또는 config*.ora 파일을 수정.
 
 

2. database 생성 스크립트 crdb*.sql , crdb2*.sql 편집

 
oracle 7.3 이상의 경우
$ORACLE_HOME=/home1/oracle/app/oracle/product/7.3.3
이라면 crdb*.sql 파일들
/home1/oracle/app/oracle/admin/ORA7/create
위치합니다.
위치로 이동하여 새로운 이름으로 copy하고서, 필요한 내용을 수정합니다.
이때 init *.ora 파라미터 파일과 연동되는 부분과 각종 데이터 파일의
위치와 크기를 수정할 때는 주의를 기울여야 합니다.
 
NT 인경우 스크립트가 없습니다. sample 스크립트 파일을 참조하세요.
 

3. Create Database

 
$svrmgr <-------------------------- 서버메니져를 실행 (NT의 경우 svrmgrl.exe)
SVRMGR>connect internal <----- 로그인
SVRMGR>@crdboracle.sql
반드시 에러를 확인하고 다음으로 넘어 가야 합니다.
SVRMGR>@crdb2oracle.sql
확인 해야죠. 시간이 대략 1시간 정도.걸립니다.
 
이 과정이 끝나면 데이터 파일들은 제대로 생성되었는지 꼼꼼히 확인하고 다음으로 넘어가야 합니다.
보통 아래과정에서 에러가 생기기 마련입니다.
 

4. system table/view 생성

 
우선 ORACLE_HOME/rdbms/admin 디렉토리로 이동하여
catalog.sql, catproc.sql, catexp.sql 3가지 스크립트 파일이 존재하는지 확인하십시오.
 
SVRMGR>connect internal
SVRMGR>@$ORACLE_HOME/rdbms/admin /catalog
-- 20 소요
SVRMGR>@$ORACLE_HOME/rdbms/admin /catproc
-- 1시간 소요
SVRMGR>@$ORACLE_HOME/rdbms/admin /catexp
-- 30 소요
만일 위의 스크립트를 돌리다 에러다 싶으면 데이터베이스 생성할 뭔가 잘못된 것입니다.
확인하고 다시 실행 해야겠죠..

 

5. 도움말과 sample table / view 생성

 
sqlplus를 실행하고 system/manager login 합니다.
 
$ cd $ORACLE_HOME/sqlplus/admin/help
$ SYSTEM_PASS=system/manager;export SYSTEM_PASS
$ helpins
이렇게 해서 sqlplus 의 도움말을 설치하고 (NT 에서는 이런 과정이 필요 없습니다.)
다음에 scott/tiger 샘플 테이블을 설치합니다.
 
$ cd $ORACLE_HOME/sqlplus/admin
$ sqlplus system/manager
SQL> create user scott identified by tiger
default tablespace users temporary tablespace temp
quota unlimited on users
quota unlimited on temp;
SQL> grant connect,resource to scott;
SQL>@ $ORACLE_HOME/sqlplus/admin/pupbld.sql
SQL> connect scott/tiger;
SQL> @$ORACLE_HOME/sqlplus/demo /demobld.sql
 
이로서 DB의 재설치 끝~

 

6. 백업 데이터 복원

exp 백업받은 데이터를 복원할 때는 imp 사용하여 선별적으로 또는 full 복원니다.
그러나 임포트 하기 전에 임포트할 userid, tablespace 존재하고 있어야 합니다.
이들은 백업받은 메타데이터 정보를 이용해서 다시 살려 놓습니다.
 
SQL> create tablespace [name] datafile ‘/data2/oracle/oradata ….’ [Size 10M] [reuse]
 Default storage( initial 1024 next 1024 …. );
 
일단 테이블 스페이스를 만들고 유저를 생성.
 
SQL> create user [id] indentified by [passwd]
 default tablespace [tablespace name] temporary tablespace [temp] …;
 grant connect, resource to [id];
 
Export받은 File에서 Index 제외한 나머지만 Import 하려면 indexes=n 옵션을 주고,
 
$ imp system/manager file=fullbackup.dmp fromuser=scott touser=scott indexes=n commit=y
 
Indexfile Option 이용하여 Index Script 만든다.
 
$ imp system/manager fromuser=scott touser=scott file=scott.dmp indexfile=index.sql
 
위와 같이 명령을 실행하면 index.sql이라는 File 만들어지고,
파일을 열어서 확인해 보면 create table 문장과 create index문장이 있고 Create Table 문장은 REM으로 막혀 있어서 결과적으로 Create Index문만 실행할 있도록 되어 있습니다.
 
파일에서 Create Index문의 Tablespace 바꾸어서 다음과 같이 SQL*Plus에서 실행.
$ sqlplus scott/tiger
SQL> @index
 
이런 식으로 차례로 복구 하면 깨끗한 마음으로 복구 ~
Posted by 행복한 프로그래머 궁금쟁이박
TAG

댓글을 달아 주세요