[관리] Control, Redo Log, Data File명령어 모음
##############
Control File
##############
————————-
Control File의 위치
————————-
$ORACLE_HOME/dbs/init<SID>.ora 파일 안에 아래과 같이 존재
control_files=(“/oracle/oradata/disk3/control.ctl”,
“/oracle/oradata/disk4/control.ctl”,
“/oracle/oradata/disk5/control.ctl”)
Control File 를 수정 하는 방법은 아래와 같이 두가지가 있다.
1. SPFILE을 이용한 Control File 수정
2. PFILE을 이용한 Control File 수정
———————————————
SPFILE을 이용한 Control File 수정
———————————————
1. startup 상태에서 SPFILE을 수정한다.
ALTER SYSTEM SET control_files =
‘$HOME/ORADATA/ctl/ctrl01.ctl’,
‘$HOME/ORADATA/ctl/ctrl02.ctl’ SCOPE=SPFILE;
2. 작업중이던 control file을 내려쓰기 위해 데이타베이스를 shutdown 한다.
shutdown immediate
3. 추가하려는 control file을 생성(기존의 것을 복사)한다.
cp $HOME/ORADATA/ctl/ctrl01.ctl
$HOME/ORADATA/ctl/ctrl02.ctl
4. 수정된 정보를 갱신하기 위해 데이타베이스를 startup 한다.
startup
5. 수정된 정보를 확인한다.
SQL> col NAME format a35
SQL> select * from v$controlfile;
——————————————-
PFILE을 이용한 Control File 수정
——————————————-
oracle 9i 를 수동으로 설치 할 경우 pfile 은 생성 되지 않습니다.
기본 접속은 spfile 을 이용하여 접속을 하기 때문에 pfile 을 이용하여
파라메터를 변경 할때는 먼저 spfile 로 부터 pfile 을 생성하여 주셔야
합니다.
create pfile from spfile;
구문으로 먼저 pfile 을 생성한다.
그럼
{ORACLE_HOME}/dbs 밑에 init{SID}.ora 파일이 생성된다.
db shutdown 후 ..
pfile 의 파라메터 값을 수정하고..
startup pfile={ORACLE_HOME}/dbs/init{SID}.ora 로
db start 를 시킨다.
그런 후 {ORACLE_HOME}/dbs 밑에 spfile{SID}.ora 파일을 백업 후
삭제 한다. 그 후
create spfile from pfile;
해준 후 다음 부터 정상적인 start 과정을 진행하면 새로 적용된 내용의
splile 로 db 가 시작된다.
위 내용을 참조하여 pfile 수정으로 control 파일을 추가 혹은 위치 변경하
는 법을 알아보자
1. 작업중이던 control file을 내려쓰기 위해 데이타베이스를 shutdown 한다.
shutdown immediate
2. 추가하려는 control file을 생성(기존의 것을 복사)한다.
cp $HOME/ORADATA/ctl/ctrl01.ctl
$HOME/ORADATA/ctl/ctrl02.ctl
3. PFILE이 위치한 $ORACLE_HOME/dbs의 init<SID>.ora 파일을 다음과 같이 수정한다.
CONTROL_FILE = $HOME/ORADATA/ctl/ctrl01.ctl,
$HOME/ORADATA/ctl/ctrl02.ctl)
4.수정된 정보를 갱신하기 위해 데이타베이스를 startup 한다.
startup
5. 수정된 정보를 확인한다.
SQL> col NAME format a35
SQL> select * from v$controlfile;
##############
Redo Log File
##############
————————————
Redo Log File의 Group 상태
————————————
1. current – 아직 사용 중인 Redo Log File
2. active – 내용을 아직 Datafile에 저장하지 않은 상태(Checkpoint를 일으키면 incative 상태로 된다.)
3. inactive – active 상태가 checkpoint된 후의 상태
4. unused – 아직 한 번도 사용되지 않은 상태
————————————————
Redo Log File의 Group 상태 확인하기
————————————————
SQL> col member format a35
SQL> select a.group#, a.member, b.status, b.bytes
from v$logfile a, v$log b
where a.group# = b.group#;
—————————————————–
강제로 Log switch와 checkpoint 일으키기
—————————————————–
– Log switch
ALTER SYSTEM SWITCH LOGFILE;
(Redo Log File의 Group 삭제시 current 나 active 상태에서는 삭제되지 않으므로
강제로 Log switch 해준다)
– Checkpoint
ALTER SYSTEM CHECKPOINT;
(9i이후에는 강제적인 checkpoint는 장려되지 않음)
——————————————
Redo Log File에 Group 추가하기
——————————————
$HOME/ORADATA/rl/log3a.rdo 과 $HOME/ORADATA/rl/log3b.rdo을
포함하고 있는 Group 1을 만든다.
ALTER DATABASE ADD LOGFILE GROUP 1
( ‘$HOME/ORADATA/rl/log3a.rdo’,
‘$HOME/ORADATA/rl/log3b.rdo’) size 1M;
——————————————–
Redo Log File에 Member 추가하기
——————————————–
Group 1에 $HOME/ORADATA/rl/log3c.rdo 을 추가 할 때
ALTER DATABASE ADD LOGFILE MEMBER
‘$HOME/ORADATA/rl/log3c.rdo’ TO GROUP 1;
——————————————–
Redo Log File에서 Group 삭제하기
——————————————–
Redo Log File에서 Group1을 삭제 할 때
ALTER DATABASE DROP LOGFILE GROUP 1;
———————————————–
Redo Log File에서 Member 삭제하기
———————————————–
Redo Log File에서 $HOME/ORADATA/rl/log3c.rdo 삭제 할 때
ALTER DATABASE DROP LOGFILE MEMBER
‘$HOME/ORADATA/rl/log3c.rdo’;
—————————————————-
Redo Log File 이름 바꾸기 및 이동 시키기
—————————————————-
1. Database를 shutdown 한다.
2. 옮길 위치에 Redo Log File을 복사한다.
!cp $HOME/ORADATA/rl/log2c.rdo
$HOME/ORADATA/rl/log3c.rdo
3. Database를 MOUNT 모드로 실행시킨다.
4. 다음의 명령어를 실행한다.
ALTER DATABASE RENAME FILE
‘$HOME/ORADATA/rl/log2a.rdo’
TO ‘$HOME/ORADATA/rl/log1c.rdo’;
5. Database를 Open 모드로 변경한다.
ALTER DATABASE open;
##############
Data Files
##############
———————-
Tablespace 생성
———————-
userdata라는 이름(논리적인 이름)으로
‘$ORACLE_BASE/oradata/<SID명>/userdata01.dbf’ 라는 (물리적) 위치에 생성 할 경우
CREATE TABLESPACE userdata
DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/userdata01.dbf’ SIZE 5M;
———————————————-
Locally Managed Tablespaces 생성
———————————————-
– 9i부터는 디폴트가 Locally Managed Tablespace이다.
– UNIFORM SIZE는 EXTENT 사이즈이다.
CREATE TABLESPACE userdata
DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/userdata01.dbf’ SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k;
————————————————–
Dictionary-Managed Tablespaces 생성
————————————————–
– initial 다음의 1M은 처음 할당된 EXTENT SIZE이다.
– PCTINCREASE 다음의 0은 증가치(% 단위)이다.
CREATE TABLESPACE userdata
DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/userdata01.dbf’ SIZE 500M
EXTENT MANAGER DICTIONARY
DEFAULT STORAGE
(initial 1M NEXT 1M PCTINCREASE 0);
—————————–
Undo Tablespace 생성
—————————–
undo1라는 이름(논리적인 이름)으로
‘$ORACLE_BASE/oradata/<SID명>/undo1.dbf’ 라는 (물리적) 위치에 생성 할 경우
CREATE UNDO TABLESPACE undo1
DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/undo01.dbf’ SIZE 40M;
—————————————————
Temporary Tablespace 관리시 주의사항
—————————————————
오라클 설치 시의 temp 테이블 스페이스는 Default Temporary Tablespace는
삭제되지 않는다.
새로운 Default Temporary Tablespace를 만들기 위해서는 Temporary Tablespace를
새로 만든 후 그 Temporary Tablespace를 Default Temporary Tablespace로 지정한다.
그리고 이전의 Temporary Tablespace를 삭제한다.
————————————
Temporary Tablespace 생성
————————————
temp라는 이름(논리적인 이름)으로
‘$ORACLE_BASE/oradata/<SID명>/temp.dbf’ 라는 (물리적) 위치에 생성 할 경우
CREATE TEMPORARY TABLESPACE temp
TEMPFILE ‘$ORACLE_BASE/oradata/<SID명>/temp1.dbf’ SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
————————————————-
Default Tempory Tablespace로 바꾸기
————————————————-
temp 라는 Temporary Tablespace를 생성 후 다음을 실행한다.
ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE default_temp;
———————————————
Tablespace READ-OLNY로 바꾸기
———————————————
userdata라는 Tablespace를 READ-ONLY로 변경하기
ALTER TABLESPACE userdata READ ONLY:
————————————————————-
Tablespace를 ONLINE 또는 OFFLINE로 바꾸기
————————————————————-
– userdata를 OFFLINE으로 바꾸기
ALTER TABLESPACE userdata OFFLINE;
– userdata를 ONLINE로 바꾸기
ALTERT TABLESPACE userdata ONLINE;
———————————-
Data File 사이즈 변경하기
———————————-
ALTER DATABASE
DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/userdata.dbf’
RESIZE 200M;
——————————————–
Talbespace 에 Data File 추가하기
——————————————–
userdata라는 Tablespace에 200M 사이즈의
‘$ORACLE_BASE/oradata/<SID명>/userdata02.dbf’ 를 추가한다.
ALTER TABLESPACE userdata
ADD DATAFILE ‘$ORACLE_BASE/oradata/<SID명>/userdata02.dbf’
SIZE 200M;
————————————————
Data File 이동하기(Alter Tablespace)
————————————————
– Tablespace는 offline 이어야한다.
– 이동하고자하는곳에 이동하고자 하는 Data File이 존재해야 한다.
– 4 번은 Control File을 갱신시키는 역할을 한다.
– GAD는 Global Area Database 명이다.
1. startup 상태에서 수행한다.
2. alter tablespace <tablespace명> offline; (mount 상태과 같다)
3. SQL> !mv $ORACLE_BASE/oradata/<GAD명>/userdata01.dbf
$ORACLE_BASE/oradata/<GAD명>/df/userdata02.dbf
4. ALTER TABLESPACE userdata RENAME
DATAFILE ‘$ORACLE_BASE/oradata/<GAD명>/userdata01.dbf’
TO ‘$ORACLE_BASE/oradata/<GAD명>/df/userdata02.dbf’;
5. alter tablespace <tablespace명> online;
———————————————
Data File 이동하기(Alter Database)
———————————————
– Database가 Mount 단계이어야 한다.
– 이동하고자하는곳에 이동하고자 하는 Data File이 존재해야 한다.
– 4 번은 Control File을 갱신시키는 역할을 한다.
– GAD는 Global Area Database 명이다.
1. 오라클을 shutdown 시킨다.
2. startup mount상태로 만든다.
3. !mv $ORACLE_BASE/oradata/<GAD명>/system01.dbf
$ORACLE_BASE/oradata/<GAD명>/df/system02.dbf
4. ALTER DATABASE RENAME
FILE ‘$ORACLE_BASE/oradata/<GAD명>/system01.dbf’
TO ‘$ORACLE_BASE/oradata/<GAD명>/df/system02.dbf’
5. alter database open;
—————————
Tablespace 삭제하기
—————————
userdata 라는 Tablespace 삭제시 다음과 같다.
– and datafiles는 물리적인 Data File도 지운다는 것을 의미
DROP TABLESPACE userdata
INCLUDING CONTENTS AND DATAFILES;
2 Responses
2scabbard
3cologne