검색결과 리스트
Tablespace 와 Data File 관리에 해당되는 글 1건
- 2015.04.01 Tablespace 와 Data File 관리
글
Tablespace 와 Data File 관리
테이블스페이스 이름 , 용량 , 데이터파일 위치 조회
(기본 테이블 스페이스 조회 명령어)
select tablespace_name , bytes/1024/1024 MB , file_name
from dba_data_files ;
◆각 datafile 실제사용량 조회 쿼리
select distinct d.file_id file#,
d.tablespace_name ts_name,
d.bytes /1024 /1024 MB,
d.bytes / 8192 total_blocks,
sum(e.blocks) used_blocks,
to_char( nvl( round( sum(e.blocks)/(d.bytes/8192), 4),0) *100,'09.99') || ' %' pct_used
from dba_extents e , dba_data_files d
where d.file_id = e.file_id(+)
group by d.file_id , d.tablespace_name , d.bytes
order by 1,2 ;
◆ 수동으로 Tablespace 에 Data File 추가하는 명령어
alter tablespace 이름
add datafile '/app/oracle/oradata/testdb/name.dbf' size 20M ;
◆크기 수동 증가
alter database datafile '/app/oracle/oradata/testdb/name.dbf' resize 20M ;
◆ 크기 자동 증가
alter database datafile '/app/oracle/oradata/testdb/name.dbf' autoextend on ;
◆ 체크포인트SCN 조회쿼리
select a.file# , a.ts# , b.name , a.status , a.checkpoint_change#
from v$datafile a , v$tablespace b
where a.ts# = b.ts# ;
◆ Tablespace 이름 , 용량 , Datafile 위치 , 크기자동증가 , 온라인
select tablespace_name , bytes/1024/1024 MB , file_name , autoextensible "Auto" , online_status
from dba_data_files;
★Check Point★
1. 테이블 스페이스 offline 에서 online 변경 시에는
alter system checkpoint; 를 통해 SCN 을 맞춰야한다.
2. 현재 쓰고있는 파일의 경로를 옮기면 안된다.(startup 단계별 쓰이는 파일 확인 점검)
◆ 데이터파일 경로와 온/오프라인 상태 확인 명령어
select file# , name , status from v$datafile;
Tablespace offline
1. alter tablespace haksa offline;
2. alter tablespace haksa offline temporary;
-> dbf 한놈 고장났을때, rm으로 지우면 안된다.
3. alter database datafile '/app/oracle/oradata/testdb/haksa01.dbf' offline (archive log mode)
alter database datafile '/app/oracle/oradata/testdb/haksa01.dbf'
offline drop; (no archive log mode)
※ immediate; 옵션 -> 작업 대기하지않고 오프라인.
※ recover tablespace haksa;
Date File 이동
1. 해당 Tablespace Offline ! 사용하지 않게
2. Data file 을 대상 위치로 복사
3. 컨트롤 파일 내의 해당 Datafile 경로변경
4. 해당 테이블스페이스 온라인 상태로 변경
offline 안되는 데이터파일 옮기기
◆ 오프라인 불가능한 3가지
1. system tablespace
2. 사용중인 undo tablespace
3. default temporary tablespace
◆순서
1. DB종료 shutdown immediate;
2. 마운트 상태로 시작 startup mount;
3. Datafile 복사
4. 컨트롤파일 경로수정
5. DB 오픈
Redo log file 이동하기!
현재상태 먼저 확인
col member for a50
select a.group# , a.member , b.bytes/1024/1024 MB , b.archived , b.status
from v$logfile a , v$log b
where a.group#=b.group#
order by 1,2;
마운트 상태로 스타트업
!mkdir /app/oracle/disk4
!mkdir /app/oracle/disk5
select member from v$logfile;
!cp /app/oracle/oradata/testdb/redo01.log /app/oracle/disk4/redo01_a.log
!cp /app/oracle/oradata/testdb/redo02.log /app/oracle/disk4/redo02_a.log
!cp /app/oracle/oradata/testdb/redo03.log /app/oracle/disk4/redo03_a.log
alter database rename
file '/app/oracle/oradata/testdb/redo01.log'
to '/app/oracle/disk4/redo01_a.log';
alter database rename
file '/app/oracle/oradata/testdb/redo02.log'
to '/app/oracle/disk4/redo02_a.log';
alter database rename
file '/app/oracle/oradata/testdb/redo03.log'
to '/app/oracle/disk4/redo03_a.log';
select member from v$logfile;
alter database add logfile member
'/app/oracle/disk5/redo01_b.log' to group 1,
'/app/oracle/disk5/redo02_b.log' to group 2,
'/app/oracle/disk5/redo03_b.log' to group 3;
select member from v$logfile;
Tablespace 삭제
drop tablespace haksa;
★table 이 하나라도 있으면 삭제 안됨.
drop tablespace haksa including contents and datafiles;
select tablespace_name , bytes/1024/1024 MB , file_name
from dba_data_files;
연습문제) pfile 을 이용하여 다음과같이 이동시키세요
/app/oracle/disk1/control01.ctl , redo01_a.log , redo02_a.log , redo03_a.log
/app/oracle/disk2/control02.ctl , redo01_b.log , redo02_b.log , redo03_b.log
/app/oracle/disk3/control03.ctl , undo01.dbf
/app/oracle/disk4/system01.dbf , sysaux01.dbf
/app/oracle/disk5/users01.dbf , example01.dbf
현재 상태확인 (spfile, pfile)
show parameter pfile;
show parameter spfile;
* VALUE 에 값이 나오면 spfile 사용중인것이다.
spfile 을 삭제하고 DB를 껐다가 켜서 pfile 을 사용하여 오픈되는지 확인한다.
shutdown immediate;
startup
show parameter pfile;
*VALUE 값이 없으면 pfile 사용중인것.
오픈이 잘 된다면 정상적으로 적용된 것이다.
현재 사용중인 컨트롤파일을 조회한다.
select name from v$controlfile;
현재위치는 다음과 같이 확인된다.
NAME
/home/oracle/data/disk1/control01.ctl
/home/oracle/data/disk2/control02.ctl
/home/oracle/data/disk3/control03.ctl
컨트롤파일을 이동을위해 DB를 꺼준다.
shutdown immediate;
vi 에디터로 pfile 을 열어 controlfile 경로를 수정한다.
!vi $ORACLE_HOME/dbs/inittestdb.ora
원하는 경로로 수정 후 현재 사용중인 컨트롤파일을 이동할 경로로 복사해준다.
경로에 폴더가 존재해야한다. (먼저만들기)
cp /home/oracle/data/disk1/control01.ctl /app/oracle/disk1/control01.ctl
cp /home/oracle/data/disk1/control01.ctl /app/oracle/disk2/control02.ctl
cp /home/oracle/data/disk1/control01.ctl /app/oracle/disk3/control03.ctl
startup 후, 정상 오픈되는지 확인한다.
오픈 후 바뀐 경로로 정상 적용되었는지 확인.
select name from v$controlfile;
NAME
/app/oracle/disk1/control01.ctl
/app/oracle/disk2/control02.ctl
/app/oracle/disk3/control03.ctl
여기까지 컨트롤 파일 이동 완료.
다음으로 데이터파일 , 리두로그파일을 이동시키기 위해 마운트상태로 다시 startup 한다.
shutdown immediate;
startup mount;
SYS>select status from v$instance;
STATUS
MOUNTED
1. 데이터파일 옮기기
2. 데이터파일의 현재경로 확인
select name from v$datafile;
NAME
/app/oracle/disk3/system01.dbf
/app/oracle/oradata/testdb/sysaux01.dbf
/app/oracle/oradata/testdb/undotbs01.dbf
/app/oracle/oradata/testdb/users01.dbf
/app/oracle/oradata/testdb/example01.dbf
/app/oracle/oradata/testdb/hakjum01.dbf
이동시킬 디렉토리로 카피
!cp /app/oracle/disk3/system01.dbf /app/oracle/disk4/
!cp /app/oracle/oradata/testdb/sysaux01.dbf /app/oracle/disk4/
!cp /app/oracle/oradata/testdb/undotbs01.dbf /app/oracle/disk3/undo01.dbf
!cp /app/oracle/oradata/testdb/users01.dbf /app/oracle/disk5/
!cp /app/oracle/oradata/testdb/example01.dbf /app/oracle/disk5/
경로수정
alter database rename
file '/app/oracle/disk3/system01.dbf'
to '/app/oracle/disk4/system01.dbf' ;
alter database rename
file '/app/oracle/oradata/testdb/sysaux01.dbf'
to '/app/oracle/disk4/sysaux01.dbf' ;
alter database rename
file '/app/oracle/oradata/testdb/undotbs01.dbf'
to '/app/oracle/disk3/undo01.dbf' ;
alter database rename
file '/app/oracle/oradata/testdb/users01.dbf'
to '/app/oracle/disk5/users01.dbf' ;
alter database rename
file '/app/oracle/oradata/testdb/example01.dbf'
to '/app/oracle/disk5/example01.dbf' ;
바뀐 경로 확인
select name from v$datafile;
NAME
/app/oracle/disk4/system01.dbf
/app/oracle/disk4/sysaux01.dbf
/app/oracle/disk3/undo01.dbf
/app/oracle/disk5/users01.dbf
/app/oracle/disk5/example01.dbf
/app/oracle/oradata/testdb/hakjum01.dbf
리두로그파일 이동시키기
현재위치 : select member from v$logfile;
MEMBER
/app/oracle/disk4/redo03_a.log
/app/oracle/disk4/redo02_a.log
/app/oracle/disk4/redo01_a.log
/app/oracle/disk5/redo01_b.log
/app/oracle/disk5/redo02_b.log
/app/oracle/disk5/redo03_b.log
이동시킬 위치
/app/oracle/disk1 redo01_a.log , redo02_a.log , redo03_a.log
/app/oracle/disk2 redo01_b.log , redo02_b.log , redo03_b.log
파일복사
!cp /app/oracle/disk4/redo01_a.log /app/oracle/disk1/redo01_a.log
!cp /app/oracle/disk4/redo02_a.log /app/oracle/disk1/redo02_a.log
!cp /app/oracle/disk4/redo03_a.log /app/oracle/disk1/redo03_a.log
!cp /app/oracle/disk5/redo01_b.log /app/oracle/disk2/redo01_b.log
!cp /app/oracle/disk5/redo02_b.log /app/oracle/disk2/redo02_b.log
!cp /app/oracle/disk5/redo03_b.log /app/oracle/disk2/redo03_b.log
경로변경
alter database rename
file '/app/oracle/disk4/redo01_a.log'
to '/app/oracle/disk1/redo01_a.log' ;
alter database rename
file '/app/oracle/disk4/redo02_a.log'
to '/app/oracle/disk1/redo02_a.log' ;
alter database rename
file '/app/oracle/disk4/redo03_a.log'
to '/app/oracle/disk1/redo03_a.log' ;
alter database rename
file '/app/oracle/disk5/redo01_b.log'
to '/app/oracle/disk2/redo01_b.log' ;
alter database rename
file '/app/oracle/disk5/redo02_b.log'
to '/app/oracle/disk2/redo02_b.log' ;
alter database rename
file '/app/oracle/disk5/redo03_b.log'
to '/app/oracle/disk2/redo03_b.log' ;
select member from v$logfile;
MEMBER
/app/oracle/disk1/redo03_a.log
/app/oracle/disk1/redo02_a.log
/app/oracle/disk1/redo01_a.log
/app/oracle/disk2/redo01_b.log
/app/oracle/disk2/redo02_b.log
/app/oracle/disk2/redo03_b.log
변경완료!
DB 오픈시켜 확인
SYS>alter database open;
Database altered.
SYS>select name from v$controlfile;
NAME
/app/oracle/disk1/control01.ctl
/app/oracle/disk2/control02.ctl
/app/oracle/disk3/control03.ctl
SYS>select name from v$datafile;
NAME
/app/oracle/disk4/system01.dbf
/app/oracle/disk4/sysaux01.dbf
/app/oracle/disk3/undo01.dbf
/app/oracle/disk5/users01.dbf
/app/oracle/disk5/example01.dbf
/app/oracle/oradata/testdb/hakjum01.dbf
6 rows selected.
SYS>select member from v$logfile;
MEMBER
/app/oracle/disk1/redo03_a.log
/app/oracle/disk1/redo02_a.log
/app/oracle/disk1/redo01_a.log
/app/oracle/disk2/redo01_b.log
/app/oracle/disk2/redo02_b.log
/app/oracle/disk2/redo03_b.log
6 rows selected.
끝!
'Oracle Admin' 카테고리의 다른 글
Control File 관리 (0) | 2015.04.02 |
---|---|
data file , redo log file , control file 이동 간단정리 (0) | 2015.04.02 |
pfile , spfile 생성 및 관리 (0) | 2015.03.30 |
Oracle Background Process (0) | 2015.03.29 |
SQL 문장의 실행원리 (0) | 2015.03.29 |