[관리] ORACLE DATABASE 재설치 및 DB File Architecture 변경하기
ORACLE DATABASE 재설치 및 DB File Architecture 변경하기
DB 를 깨끗하게 밀어 버리고 재 설치하거나 또는 DB구조를 변경할 때 유용한
Create Database 따라하기… (이거 함부로 따라하다 잘못하면 다칩니다)
——————————————————————————–
1. 기존 데이터베이스 백업 받기
2. 데이터베이스 생성 스크립트 (crdb, crdb2.sql) 수정하기
3. Create Database
4. System View 생성
5. 도움말과 샘플 테이블 생성
6. 백업 데이터 복원
——————————————————————————–
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을 만들수 있습니다.
control.sql 샘플(첨부)
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 스크립트 파일을 참조하세요.
crdboracle.sql sample.(첨부)
crdb2oracle.sql sameple.(첨부)
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