요즘 한창 현서가 부르는 노래 - Joy to The World
2007년 12월 22일 토요일
2007년 12월 15일 토요일
datafile + redo log 파일 위치 변경하기.
- 데이터 파일의 위치를 변경하여 오라클을 올려보겠다.
- 이동파일은 데이터 파일 + redo log 파일이다.
- 테스트 환경은 : redhat9 + oracle 9.2.0.4 / vmware 상에서 실시
- 현재 dbf 파일들이 OS 영역에 위치하고 있으므로 디스크 하나 추가후 oradata로 마운트하고 datafile 과 redolog 파일의 위치를 바꾸어 오라클을 정상 가동 시키겠다.
- 현재상황
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 14G 8.4G 4.6G 65% /
/dev/sda1 99M 9.3M 85M 10% /boot
/dev/sdb1 5.0G 2.1G 2.6G 45% /backup
none 147M 0 147M 0% /dev/shm
- 데이터 파일 위치
SQL> select name from v$datafile ;
NAME
--------------------------------------------------------------------------------
/oracle/oradata/orcl/system01.dbf
/oracle/oradata/orcl/undotbs01.dbf
/oracle/oradata/orcl/cwmlite01.dbf
/oracle/oradata/orcl/drsys01.dbf
/oracle/oradata/orcl/example01.dbf
/oracle/oradata/orcl/indx01.dbf
/oracle/oradata/orcl/odm01.dbf
/oracle/oradata/orcl/tools01.dbf
/oracle/oradata/orcl/users01.dbf
/oracle/oradata/orcl/xdb01.dbf
10 rows selected.
- redo log 파일 위치
SQL> col member format a45
SQL> select * from v$logfile ;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ---------------------------------------------
3 ONLINE /oracle/oradata/orcl/redo03.log
2 ONLINE /oracle/oradata/orcl/redo02.log
1 ONLINE /oracle/oradata/orcl/redo01.log
- controlfile 위치
SQL> col name format a40
SQL> select * from v$controlfile ;
STATUS NAME
------- ----------------------------------------
/oracle/oradata/orcl/control01.ctl
/oracle/oradata/orcl/control02.ctl
/oracle/oradata/orcl/control03.ctl
- 모두 /oracle/oradata/orcl/ 밑에 위치해 있음을 알수 있다.
- datafile 들은 /oradata/datafile 밑에 위치시키고
- redolog file은 /oradata/redolog 밑에 위치시키고
- control file 은 현재의 디렉토리와 /oradata/controlfile/ 밑에 하나를 위치시켜겠다.
- 오라클을 정상종료 시킨다.
[oracle@oracle oracle]$ sh oracle_stop.sh
SQL*Plus: Release 9.2.0.4.0 - Production on Fri Mar 16 09:55:26 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 16-MAR-2007 09:55:33
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
The command completed successfully
SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
###################################################################
###################### oracle daemon check ########################
###################################################################
oracle 1473 1472 0 09:37 pts/0 00:00:00 -bash
oracle 1604 1473 0 09:55 pts/0 00:00:00 sh oracle_stop.sh
oracle 1608 1604 0 09:55 pts/0 00:00:00 ps -ef
oracle 1609 1604 0 09:55 pts/0 00:00:00 grep ora
- 시스템(리눅스)상에서 디스크 추가 후 /oradata 로 마운트시킨다.(생략)
- 마운트 하고 나서의 정보
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 14G 8.4G 4.6G 65% /
/dev/sda1 99M 9.3M 85M 10% /boot
/dev/sdb1 5.0G 2.1G 2.6G 45% /backup
none 147M 0 147M 0% /dev/shm
/dev/sdc1 5.0G 33M 4.7G 1% /oradata <-- 추가된것
- 시스템 명령을 이용하여 dbf 파일과 redolog 파일과 controlfile 을 copy한다(copy할것, 괜히 move 했다가 안올라오면 원복시켜야함으로)
[oracle@oracle oracle]$ more move.sh
#!/bin/bash
cp /oracle/oradata/orcl/system01.dbf /oradata/datafile
cp /oracle/oradata/orcl/undotbs01.dbf /oradata/datafile
cp /oracle/oradata/orcl/cwmlite01.dbf /oradata/datafile
cp /oracle/oradata/orcl/drsys01.dbf /oradata/datafile
cp /oracle/oradata/orcl/example01.dbf /oradata/datafile
cp /oracle/oradata/orcl/indx01.dbf /oradata/datafile
cp /oracle/oradata/orcl/odm01.dbf /oradata/datafile
cp /oracle/oradata/orcl/tools01.dbf /oradata/datafile
cp /oracle/oradata/orcl/users01.dbf /oradata/datafile
cp /oracle/oradata/orcl/xdb01.dbf /oradata/datafile
cp /oracle/oradata/orcl/redo03.log /oradata/redolog
cp /oracle/oradata/orcl/redo02.log /oradata/redolog
cp /oracle/oradata/orcl/redo01.log /oradata/redolog
cp /oracle/oradata/orcl/control03.ctl /oradata/controlfile
- 왠만하면 스크립터를 간단히 만들어서 수행하기 바란다. 나중에 내가 멀했는지 모르는건 골치아프다.
- 자 이제 pfile(pfile 로 오라클 가동중이였으므로) 을 고쳐서 controlfile 의 위치를 수정해주고 오라클을 마운트 단계까지 올린다.
[oracle@oracle dbs]$ vi initorcl.ora
*.aq_tm_processes=1
*.background_dump_dest='/oracle/admin/orcl/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl','/oradata/controlfile/control03.ctl'
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL>
- 데이터베이스 이름을 rename 한다. 이것도 간단한 script 를 만들어서 수행한다.
[oracle@oracle oracle]$ more rename.sh
alter database rename file '/oracle/oradata/orcl/system01.dbf' to '/oradata/datafile/system01.dbf' ;
alter database rename file '/oracle/oradata/orcl/undotbs01.dbf' to '/oradata/datafile/undotbs01.dbf';
alter database rename file '/oracle/oradata/orcl/cwmlite01.dbf'to '/oradata/datafile/cwmlite01.dbf' ;
alter database rename file '/oracle/oradata/orcl/drsys01.dbf' to '/oradata/datafile/drsys01.dbf' ;
alter database rename file '/oracle/oradata/orcl/example01.dbf' to '/oradata/datafile/example01.dbf' ;
alter database rename file '/oracle/oradata/orcl/indx01.dbf' to '/oradata/datafile/indx01.dbf' ;
alter database rename file '/oracle/oradata/orcl/odm01.dbf' to '/oradata/datafile/odm01.dbf' ;
alter database rename file '/oracle/oradata/orcl/tools01.dbf' to '/oradata/datafile/tools01.dbf' ;
alter database rename file '/oracle/oradata/orcl/users01.dbf' to '/oradata/datafile/users01.dbf' ;
alter database rename file '/oracle/oradata/orcl/xdb01.dbf' to '/oradata/datafile/xdb01.dbf' ;
alter database rename file '/oracle/oradata/orcl/redo03.log' to '/oradata/redolog/redo03.log' ;
alter database rename file '/oracle/oradata/orcl/redo02.log' to '/oradata/redolog/redo02.log';
alter databsse rename file '/oracle/oradata/orcl/redo01.log' to '/oradata/redolog/redo01.log';
SQL> @rename.sh
Database altered.
.
.
.
..
SQL> alter database open ;
Database altered.
- 자 이제 다 잘돼서 올라왔다. 정보를 확인해보고 기존의 dbf 파일과 redolog 파일은 지우든지 내버려두든지 알아서 하면 된다(내버려두면 cold 백업본이 되는 셈이다.)
SQL> select name from v$datafile
2 ;
NAME
--------------------------------------------------------------------------------
/oradata/datafile/system01.dbf
/oradata/datafile/undotbs01.dbf
/oradata/datafile/cwmlite01.dbf
/oradata/datafile/drsys01.dbf
/oradata/datafile/example01.dbf
/oradata/datafile/indx01.dbf
/oradata/datafile/odm01.dbf
/oradata/datafile/tools01.dbf
/oradata/datafile/users01.dbf
/oradata/datafile/xdb01.dbf
SQL> select * from v$logfile ;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ---------------------------------------------
3 STALE ONLINE /oradata/redolog/redo03.log
2 ONLINE /oradata/redolog/redo02.log
1 ONLINE /oracle/oradata/orcl/redo01.log
- 들고갈때 덧글.. 출처를 명시해 주기 바랍니다.
2007년 12월 1일 토요일
12월 휴가테르메덴에서
테르메덴으로 출발하는 모습... 현서가 무거운 가방을 들고 차로 가는 모습..(아파트 주차장에서 출발..)
아빠랑 점심을 기다리며 이야기하는 모습.. "저기 번호가 보이면 가서 가져오면되 현서야.." (2층식당에서 점심식사)
현서와 잠자는 모습... 현서 많이 피곤했나보다.. (2층 휴게소에서 취침)
아빠와 같이 휴게실에서 음료수한잔...
수영 후 집에가기전 ..
저녁 이천 쌀밥집에서... 맛있는 저녁이었당... 정일품에 갈려고 했는데... 아쉽게 못찾고 ..담에 갈땐 ^^
저녁 식사한곳에서 휴대폰을 잊어버려 어쩔수 없이 엔젤 서비스 받아 휴대폰 빌림