Database storage 관리
- control file
- redo log file
- data file
1. Control file
- control 파일을 추가하는 방법을 실습해보자.
파라미터를 변경한다.
'/u01/app/oracle/oradata/jgh_db/control02.ctl',
'/u01/app/oracle/oradata/jgh_db/control03.ctl' scope = spfile;
shutdown 시킨다.(!!!!안할경우 파일이 깨질 가능성이 있음)
파일을 복사한다.
파일이 잘 복사되었는지 확인한다.
startup을 한다.
잘 되었는지 확인해보자
SQL> show parameter control
2. Redo log file
- redo log file을 추가하는 방법을 실습해보자.
현재 redo log 관련 내용을 확인해보자.
SQL> col member format a60;
SQL> select * from v$logfile;
v$logfile의 status은 각 의미는 다음과 같다.
- current : 현재 쓰고 있는 그룹
- inactive : 언제든지 재이용할 수 있는 그룹
- active : 지금 dbwr가 쓰고 있는 그룹
로그파일을 추가한다.
2개의 멤버가 있는 1개 그룹과 1개의 멤버가 있는 로그 파일을 추가한다.
'/u01/app/oracle/oradata/jgh_db/redo03_b.log') size 10m;
SQL> alter database add logfile '/u01/app/oracle/oradata/jgh_db/redo04_a.log' size 10m;
잘 추가되었는지 확인해보자.
SQL> select * from v$logfile;
강제로 log switch 발생시킨다.
(v$log의 status변경 : unused -> inactive)
강제로 check point 발생
(v$log의 status변경 : active -> inactive로 변경)
마지막으로 멤버가 하나뿐인 그룹에 1개의 멤버를 추가한다.
리두 로그 멤버 삭제 및 그룹 삭제 :
1번 그룹, 2번 그룹을 alter system switch logfile 및 alter system checkpoint 명령을 이용해서 1번, 2번 그룹의 상태를 inactive로 만든다.
리두 로그를 삭제한다.
아래의 명령어는 control file에서 redo log file의 내용만 사라짐. os에는 파일이 남아 있다.
따라서 OS 명령으로 직접 파일을 삭제해야 한다. 주의할 것!!!!
멤버 파일을 삭제한다.
삭제가 잘 되었는지 확인해본다.(control파일에서 redo log부분만 사라짐)
OS 명령으로 파일을 확인해본다.
위에서 삭제했던 멤버의 파일을 삭제한다. (!!주의)
그룹 삭제를 해본다.
SQL> alter database DROP logfile GROUP 2;
OS내에 파일을 확인한다.
위에서 지운 그룹의 파일을 지운다.
SQL> !rm /u01/app/oracle/oradata/ikdb/redo02_a.log
SQL> !rm /u01/app/oracle/oradata/ikdb/redo02_b.log
만약 잘못하여 파일을 지울 경우
스타트업 한다.
log file의 정보를 확인한다.
redo03_b.log의 파일을 redo03_a.log로 복사한다.
log switch를 발생시킨다.
SQL> alter system switch logfile;
확인해보자.
3. Datafile 그리고 Tablespace
테이블 스페이스의 내용을 확인하기 편하도록 아래의 명령어를 파일에 저장해둔다.
SQL>select tablespace_name, block_size, status, contents
from dba_tablespaces;
SQL> save ts
-- 데이터 파일과 템프 파일확인
SQL> select file_name, tablespace_name from dba_data_files
union all
select file_name, tablespace_name from dba_temp_files;
SQL> save df
데이터베이스의 속성을 확인한다.(속성명과 속성값)
from database_properties;
테이블 스페이스를 추가한다.
SQL> create undo tablespace undo_a datafile '/u01/app/oracle/oradata/jgh_db/undo_a.dbf ' size 10m;
SQL> create tablespace users datafile '/u01/app/oracle/oradata/jgh_db/users.dbf ' size 10m;
테이블 스페이스가 추가된 것을 확인할 수 있다.
SQL> @df
디폴트 테이블스페이스와 템프 테이블 스페이스를 변경해준다.
SQL> alter database default temporary tablespace temp_a;
잘 변경이 되었는지 확인해본다.
언두 파라미터 확인
파라미터 파일을 변경한다.
데이터 블럭의 분해
1. 파일 헤더
2. 세그먼트 헤더
- freelist
: insert가능한 블럭 주소 시작, 끝이 들어있다.
(동시에 너무 많은 유저가 insert를 하면 CPU, NETWORK, 메모리에 관계없이 대기 시간 길어짐
-> 전체적 성능 저하 -> OWI로 분석 후 해결가능)
- HWM
: High Water Mark의 약자
: full table scan의 기준이 된다. dba_tables로 확인 가능
(물 증가 후 자국이 남는다.)
3. 블럭 헤더
- 세그먼트 타입(테이블, 인덱스, ..)
- 데이터 블럭 주소
- 테이블 디렉토리
- 로우 디렉토리
- 트랜잭션 슬롯 : 트랜잭션당 하나씩 차지한다. undo의 주소가 남는다.
- 위에서 아래로 채워짐
4. 로우 데이터
- 실제 데이터가 저장됨.
- 그림과 같이 아래에서 위로 채워진다.
참고 : oracle10gr2 메뉴얼 concept
'Oracle > Admin' 카테고리의 다른 글
Administering User Security (0) | 2009.11.27 |
---|---|
2009년 11월 26일 수업내용 (0) | 2009.11.26 |
2009년 11월 24일 수업내용 (0) | 2009.11.24 |
Static Data Dictionary View vs Dynamic Performance View (2) | 2009.11.24 |
수동 DB 생성 / 네트워크 설정 (10gr2, linux) (0) | 2009.11.24 |