> 우선 파일을 드롭시키구... 원하는 디렉토리로 옮기고 무슨 작업이
>
> 필요할것 같은데... 조언 부탁드려여~~~
>
제가 만일 이 문장을 제대로 이해한 것이라면
이렇게 하시면 안됩니다.
파일을 드롭시킨다는 것이 무슨 말인지 잘 모르겠지만,
정상적인 절차가 아닙니다.
아래 글을 반드시 끝까지 읽어보고, 매우~ 주의해서 작업을 해 주세요.
특히 철자 한두자 틀리는 것도 (rm 시 ) 매우 큰 문제가 일어납니다.
데이타베이스 관련 파일을 이동하는 방법은 다음과 같습니다.
1. 먼저 데이타베이스 파일의 위치를 v$datafile, v$logfile, v$controlfile에서
확인해 두세요.
2. 그 다음 데이타베이스를 정상적으로 shutdown 시키세요.
3. 파일을 옮기세요.
4. 파일의 위치를 DBMS 가 알 수 있도록 인식시키셔야 합니다.
그럼 제 DB를 가지고 한번 해 보지요.
먼저 아래와 같이 데이타베이스 파일들을 확인합니다.
( control files, redo log files, datafiles
세가지 종류를 다 확인해야 합니다. )
SVRMGR> connect internal
Connected.
SVRMGR> select name from v$controlfile union all
2> select member from v$logfile union all
3> select name from v$datafile ;
NAME
--------------------------------------------------------------------------------
/u01/oradata/ELISL/controlELISL01.ctl
/u01/oradata/ELISL/controlELISL02.ctl
/u01/oradata/ELISL/controlELISL03.ctl
/u01/oradata/ELISL/redoELISL01.dbf
/u01/oradata/ELISL/redoELISL02.dbf
/u01/oradata/ELISL/redoELISL03.dbf
/u01/oradata/ELISL/systemELISL01.dbf
/u01/oradata/ELISL/toolsELISL01.dbf
/u01/oradata/ELISL/rbsELISL01.dbf
/u01/oradata/ELISL/tempELISL01.dbf
/u01/oradata/ELISL/usersELISL01.dbf
/u01/oradata/ELISL/indxELISL01.dbf
/u01/oradata/ELISL/drsysELISL01.dbf
13 rows selected.
두번째는 데이타베이스를 정상적으로 shutdown 시키세요.
SVRMGR> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
반드시 위의 3가지 메세지를 확인하세요. 그래야 정상적으로 다운된 것입니다.
세번째는 옮길 파일들을 선정하세요.
마찬가지로 목적하는 디렉토리도 확인하세요.
선정하셨읍니다까?
예제로 datafiles의 하나인 /u01/oradata/ELISL/usersELISL01.dbf
데이타 파일을 /u02/oradata/ELISL 로 옮겨 보도록 하겠습니다.
서버 매니저를 종료하고, 쉘 프롬프트에서
$ cp /u01/oradata/ELISL/usersELISL01.dbf /u02/oradata/ELISL
( 만약 크게 중요한 데이타베이스가 아니면 바로 mv 를 사용하셔도 됩니다. )
네번째는 파일의 위치를 DBMS 가 알 수 있도록 인식시키셔야 합니다.
SVRMGR> startup mount
ORACLE instance started.
Total System Global Area 93155312 bytes
Fixed Size 69616 bytes
Variable Size 76136448 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
SVRMGR> alter database rename file '/u01/oradata/ELISL/usersELISL01.dbf'
to '/u02/oradata/ELISL/usersELISL01.dbf' ;
Statement processed.
정상적으로 완료했다는 메세지가 떨어집니다.
( 어떤 작업을 하던지 반드시 정상적인 또는 에러 메세지를 확인하세요 . )
이때 변경시켜 주어야 할 파일들이 굉장히 많다면 반드시 xxx.sql 형식으로
파일을 만들어 놓고, 디렉토리, 파일명들의 철자가 틀린 것이 없는지
몇번이고 확인을 해야 합니다.
또 변경 후에도 아래와 같이 항상 확인하는 습관을 들여야 합니다.
SVRMGR> select name from v$controlfile union all
2> select member from v$logfile union all
3> select name from v$datafile ;
NAME
--------------------------------------------------------------------------------
/u01/oradata/ELISL/controlELISL01.ctl
/u01/oradata/ELISL/controlELISL02.ctl
/u01/oradata/ELISL/controlELISL03.ctl
/u01/oradata/ELISL/redoELISL01.dbf
/u01/oradata/ELISL/redoELISL02.dbf
/u01/oradata/ELISL/redoELISL03.dbf
/u01/oradata/ELISL/systemELISL01.dbf
/u01/oradata/ELISL/toolsELISL01.dbf
/u01/oradata/ELISL/rbsELISL01.dbf
/u01/oradata/ELISL/tempELISL01.dbf
/u02/oradata/ELISL/usersELISL01.dbf <----- 확인해보세요.
/u01/oradata/ELISL/indxELISL01.dbf
/u01/oradata/ELISL/drsysELISL01.dbf
13 rows selected.
바뀌었으면 DB를 open합니다.
SVRMGR> alter database open ;
Statement processed.
필요없어진 파일을 삭제합니다.
$ rm /u01/oradata/ELISL/usersELISL01.dbf
( 주의 하세요. /u02에 있는 파일이 삭제되면 DB 가 해당
테이블스페이스는 못쓰게 됩니다. 이래서 철자가 굉장히 중요~ )
위의 작업은 redo log file 이동시에도 동일하게 적용됩니다.
그러나 control file을 옮기려고 하면 위의 작업은 전혀 필요없고,
아래와 같이 하면 됩니다.
( 아래의 파일들이 control 파일들입니다. )
SVRMGR> select name from v$controlfile ;
NAME
-----------------------------------------------------
/u01/oradata/ELISL/controlELISL01.ctl
/u01/oradata/ELISL/controlELISL02.ctl
/u01/oradata/ELISL/controlELISL03.ctl
DB 를 정상적으로 다운시킨 상태에서 파일을 옮긴 후에
DBMS 에게 인식을 시키려면
$ORACLE_HOME/dbs/init$ORACLE_SID.ora 파일에서
----------------------------------------------------------
control_files = ("/u01/oradata/ELISL/controlELISL01.ctl",
"/u01/oradata/ELISL/controlELISL02.ctl",
"/u01/oradata/ELISL/controlELISL03.ctl")
----------------------------------------------------------
디렉토리를 옮긴 곳으로 바꾸어 주면 됩니다.
그리고 DB를 start 시키면 됩니다.
거듭 당부드리지만 조심해서 작업하세요.
그럼 이만
|