반응형

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.408
1. Control File을 재생성하는 경우
 1) Control File이 전부 삭제되었을 때
 2) old Control File 에러 발생시에
 3) DB Name 변경하고 싶을 때
 4) 최대 데이터 파일 개수와 리두 로그 파일 개수를 변경하고 싶을 때


2. Control File backup
 1) alter database backup controlfile to trace;
 2) alter database backup controlfile to trace as '/u01/app/oracle/oradata/orcl/recon.sql';
 3) alter database backup controlfile to '/data/backup/open/control01.ctl';

 

 

반응형
반응형

 

Oracle Database Documentation LIbrary

http://www.oracle.com/technetwork/indexes/documentation/index.html

 

Online Manual

http://tahiti.oracle.com/

 

1. Oracle Database Documentation LIbrary - 11g Release 2(11.2)

http://www.oracle.com/pls/db112/homepage

 

2. Oracle Database Documentation LIbrary - 9i Release 2

Oracle9i Database Online Documentation http://www.oracle.com/pls/db92/db92.homepage

3. OTN 접속하기 (http://www.oracle.com/technetwork/index.html)

1) http://www.oracle.com
2) 가장 위쪽 상단 Communities 클릭
3) 왼쪽 가장 자리에서 'Oracle Technology Network' 클릭
4) Essential Links에서 'Documentation & APIS' 클릭
5) Database에서 관련된 사항 다운 받아 보기

 

cf.
http://blog.naver.com/lee322pooh?Redirect=Log&logNo=130046362206
마이그레이션 책이나 사이트 - 굿어스 신종근 이사님 문서, 디비가이드 권순용 대표님 글 찾아보기


그림으로 명쾌하게 풀어쓴 Practical OWI in Oracle 10g
Transaction Internals in Oracle 10gR2

RAC, OWI, SQL Tuning, DB Modeling

* 고도화원리1권: 디비 내부의 처리 과정, 비교적 신간
* 고도화원리 2권: SQL튜닝, 비교적 신간
* Optimizing Oracle Optimizer: SQL 튜닝(옵티마이저 중심), 비교적 신간
* 대용량 솔루션2권(신): SQL튜닝
* 오라클 백업과 복구 - 서진수 지음


1. 원리부터 실무까지 "오라클 백업과 복구" (서진수 저)
2. 실행계획으로 배우는 "고성능 데이터베이스 튜닝" (권순용 저)
3. 실무 사례로 다지는 "고성능 데이터베이스 튜닝" (권순용 저)
4. "오라클 성능 고도화 해법 I" (조시형 저)
5. Self Training "오라클 관리" (문성기 저)


먼저 오라클 교재로 기본개념을 충실히 익히시고...
오라클 불루틴(기술노트) 나 메탈링크의 기술노트를 보시는 것이 좋을듯

install, upgrade, patch 순으로 보기
case by case study로 TPS를 공부
ADTSP 공부
RAC 전문가, BACKUP&RECOVERY 전문가, SQL 전문가, MODELING 전문가 등등

11g New Feautre 공부하기
메타링크 한 번 훌기

OLAP 테크놀로지, DW 2.0 추천

Troubleshooting Oracle Performance

Secrets of the oracle

반응형
반응형

 

1. dd.sql

@dd
dd.sql


alter tablespace system begin backup;
!cp /u01/app/oracle/oradata/orcl/system01.dbf /data/backup/open
alter tablespace system end backup;

alter tablespace undotbs1 begin backup;
!cp /u01/app/oracle/oradata/orcl/undotbs01.dbf /data/backup/open
alter tablespace undotbs1 end backup;

alter tablespace sysaux begin backup;
!cp /u01/app/oracle/oradata/orcl/sysaux01.dbf /data/backup/open
alter tablespace sysaux end backup;

alter tablespace users begin backup;
!cp /u01/app/oracle/oradata/orcl/users01.dbf /data/backup/open
alter tablespace users end backup;

alter tablespace example begin backup;
!cp /u01/app/oracle/oradata/orcl/example01.dbf /data/backup/open
alter tablespace example end backup;

 

2. log.sql

@log

log.sql

 

set line 200
col group# for 999
col member for a50
col mb for 999
col sequence# for 999
col status for a8

select a.group#, a.member, b.bytes/1024/1024 MB, b.archived,
       b.sequence#, b.status
from v$logfile a, v$log b
where a.group#=b.group#
order by 1,2
/

 

3. ud.sql

@ud

ud.sql

 

set line 200

select s.sid, s.serial#, s.username, r.name "ROLLBACK SEG"
from v$session s, v$transaction t, v$rollname r
where s.taddr=t.addr
and t.xidusn=r.usn
/

 

 

4. df.sql

@df
df.sql

set line 200
col ts_name for a10
col file_name for a50

select a.name "TS_NAME", b.name "FILE_NAME", b.bytes/1024/1024 MB, b.status
from v$tablespace a, v$datafile b
where a.ts#=b.ts#
/

 

5. tt.sql

@tt
tt.sql
select to_char(sysdate, 'YYYY-MM-DD:HH24:MI:SS') from dual;

반응형
반응형

 

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.324-p.326
recover database until time '2013-01-04:13:52:20';
 VS
recover database until time '2013-01-04:13:52:20' using backup controlfile;


1. recover database until time '2013-01-04:13:52:20';
 1)백업파일 Control file, Data file
 2)현재파일: Redo log file

 위와 같은 조건에 복구를 시도하면 Redo log의 scn 정보가 Control file의 scn 정보보다 최신이라는 old control file이라는 Error가 나온다.
 그래서 복구 옵션 using backup control file이라는 옵션을 줘야 한다.


2. recover database until time '2013-01-04:13:52:20' using backup controlfile;


3. auto


4.alter database open resetlogs;


*resetlogs
1) "alter database open resetlogs;" 를 하기 전 까지, Data file과 Control file 그리고 Redo log file의 checkpoint scn 정보가 동일하지 않다. resetlogs 옵션으로 DB를 open하면 모든 Data file과 Redo log file 그리고 Control file에resetlogs 정보를 기록한다.
2) resetlogs 수행 시
 (가) 모든 log의 sequence 정보가 0으로 초기화된다. 즉, 이렇게 되면 이전에 생성되었던 아카이브 로그 파일은 더 이상 복구에 사용될 수 없게 된다.
 (나) 데이터 파일의 checkpoint scn 정보는 open 시점의 scn으로 업데이트 된다.
 (다) 딕셔너리의 데이터 파일 정보와 컨트롤 파일의 데이터 파일의 정보를 비교해서 딕셔너리에 있지만 컨트롤 파일에 없는 파일은 MISSINGXXXXXXX으로 가짜 엔트리를 생성한다.
 (라) Resetlogs 옵션으로 DB가 Open된 경우 이전에 받아 두었던 백업 파일은 사용할 수 없는 경우가 대부분이므로 다시 백업을 받아야 한다.

반응형
반응형

 

리눅스 한글깨짐 - 아래 빨간색으로 표시된 부분이 한글 설정 부분입니다.


[oracle@ora10gr2 ~]$ vi .bash_profile
 
# Oracle Settings
 
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
 
ORACLE_HOSTNAME=ora10gr2.gsedu.com; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
 
NLS_LANG=korean_korea.ko16mswin949; export NLS_LANG
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
 
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
 
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi

 

--------------------------------------------------------------------------

 

아래는 해결 방법입니다.


1) http://blog.naver.com/leeyoon0607?Redirect=Log&logNo=70089051126

vi /etc/sysconfig/i18n
LANG="ko_KR.eucKR"
SYSFONT="lat0-sun16"


2) http://blog.naver.com/ckwnan?Redirect=Log&logNo=20054958713

vi /etc/sysconfig/i18n
LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"


 

반응형
반응형


-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.200

-- 1. 닫힌 백업(cold backup) 수행하기
mkdir /data/backup/close
mkdir /data/backup/open
mkdir /data/backup/rman

su - root

chmod 777 /data/backup/close
chmod 777 /data/backup/opem
chmod 777 /data/backup/rman

select name, status from v$datafile;

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;

select name from v$controlfile;

cp /u01/app/oracle/disk1/control01.ctl /data/backup/close
cp /u01/app/oracle/disk2/control02.ctl /data/backup/close
cp /u01/app/oracle/disk3/*.log /data/backup/close
cp /u01/app/oracle/disk3/*.ctl /data/backup/close
cp /u01/app/oracle/disk3/*.dbf /data/backup/close


-- 2. 열린 백업(hot backup) 수행하기

'/u01/app/oracle/oradata/orcl/temp_sms01.dbf'

archive mode로 설정되어 있어야 열린 백업 수행 가능

alter tablespace users begin backup;
!cp '/u01/app/oracle/oradata/orcl/users01.dbf' /data/backup/open/
alter tablespace users end backup;

반응형
반응형

 

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.224~p.229
-- 일자별로 자동으로 begin backup을 수행하는 백업 스크립트
-- 로그 확인: /u01/app/oracle/total.log
-- 실행: sh main_backup.sh
-- main_backup.sh를 crontab에 등록해 두면 아주 쉽게 주기적으로 백업을 수행 할 수 있습니다.

-- 1. main_backup.sh

-- 2. begin_backup.sh

-- 3. copy_backup.sh

-- 4. end_backup.sh

-- 5. status.sh

 

-- 1. main_backup.sh
export LANG=C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

touch /u01/app/oracle/total.log
echo ""
echo "set begin backup mode~~"
time sh /u01/app/oracle/begin_backup.sh >> /u01/app/oracle/total.log
echo ""
echo "end begin backup mode~~"
echo ""
echo "start file copy......................"
time sh /u01/app/oracle/copy_backup.sh >> /u01/app/oracle/total.log
echo "end file copy~"
echo ""
echo "set end backup mode~~"
time sh /u01/app/oracle/end_backup.sh >> /u01/app/oracle/total.log
echo "complete hot backup~!"


-- 2. begin_backup.sh
-- 테이블스페이스를 조회해서 begin backup 상태로 만드는 script입니다.
export LANG=C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
sqlplus /nolog <<EOF1
conn / as sysdba

set head off
set feedback off
set time off
set timing off
set echo off
spool /tmp/online.tmp
select 'alter tablespace '|| tablespace_name ||' begin backup;' \
from dba_tablespaces \
where status='ONLINE'
and contents != 'TEMPORARY';
spool off
!cat /tmp/online.tmp | egrep -v spool | egrep -v SQL | egrep -v [2-4] > /u01/app/oracle/begin.sh
@/u01/app/oracle/begin.sh
!sh /u01/app/oracle/status.sh
exit
EOF1


-- 3. copy_backup.sh
-- 일자별로 디렉토리를 만들어 파일을 복사하는 script입니다.
export LANG=C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

sqlplus /nolog << EOF3
conn / as sysdba
set head off
set time off
set timing off
set feedback off
set echo off
set line 200
col name for a100
spool /u01/app/oracle/cp.tmp
select 'mkdir /data/backup/open/'||to_char(sysdate,'YYYY-MM-DD-HH24-MI-SS') from dual;
select 'cp -av '||name||' /data/backup/open/'||to_char(sysdate,'YYYY-MM-DD-HH24-MI-SS') "name" from v\$datafile;
spool off

spool /u01/app/oracle/control.tmp
alter session set nls_date_format='YYYY-MM-DD-HH24-MI-SS';
select 'alter database backup controlfile to ' '/data/backup/open/'||sysdate||\
       '\'||sysdate||'.ctl' ' ; ' from dual;
spool off

!cat /u01/app/oracle/cp.tmp | egrep -v SQL > /u01/app/oracle/cp.sh
!cat /u01/app/oracle/control.tmp | egrep -v SQL > /u01/app/oracle/control.sql

!sh /u01/app/oracle/cp.sh
@/u01/app/oracle/control.sql
exit
EOF3


-- 4. end_backup.sh
-- 백업이 끝나고 end backup으로 변경하는 script입니다.
export LANG=C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

sqlplus /nolog << EOF4
conn / as sysdba

set head off
set feedback off
set time off
set timing off
set echo off
spool /tmp/online.tmp
select 'alter tablespace '|| tablespace_name ||' end backup;'\
from dba_tablespaces \
where status='ONLINE' \
and contents != 'TEMPORARY';
spool off
!cat /tmp/online.tmp | egrep -v spool | egrep -v SQL | egrep -v [2-4] > /u01/app/oracle/end.sh
@/u01/app/oracle/end.sh
!sh /u01/app/oracle/status.sh
exit
EOF4


-- 5. status.sh
-- begin backup 모드 상태를 보는 script입니다.
export LANG=C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

sqlplus /nolog << EOF2
conn / as sysdba

 

set head on
set echo off
set feedback off
spool /tmp/status.tmp
set line 200
col name for a50
col status for a15
select a.file#, a.name, b.status, to_char(b.time, 'YYYY-MM-DD:HH24:Mi:SS') "Time" \
from v\$datafile a, v\$backup b \
where a.file#=b.file#;
spool off
exit
EOF2

반응형
반응형

 

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.180
-- 사용자 관리
-- 1. user 생성하기
-- 2. user 정보 확인하기
-- 3. profile 관리하기
-- 4. 권한(privilege) 관리하기


-- 1. user 생성하기
SQL> create tablespace ts_sms datafile '/u01/app/oracle/oradata/orcl/ts_sms01.dbf' size 10M;

SQL> create temporary tablespace temp_sms tempfile '/u01/app/oracle/oradata/orcl/temp_sms01.dbf' size 10M;

SQL> create user smsuser
identified by smspwd
default tablespace ts_sms
temporary tablespace temp_sms
quota unlimited on ts_sms
quota 0M on system;

SQL> grant resource, connect to smsuser;

SQL> conn smsuser/smspwd;


-- 2. user 정보 확인하기
SQL> set line 200
SQL> col default_tablespace for a10
SQL> col temporary_tablespace for a10
SQL> select username, default_tablespace "Default TS", temporary_tablespace "Temp TS" from dba_users where username='SMSUSER';


-- 3. profile 관리하기
SQL> create profile sample_prof limit
failed_login_attempts 3
password_lock_time 5
password_life_time 15
password_reuse_time 15;


SQL> create profile re_sample_prof limit
cpu_per_session 1000
connect_time 480
idle_time 10;


SQL> select username "사용자명", profile "적용 프로파일" from dba_users where username='SMSUSER';


SQL> set line 200
SQL> col profile for a13
SQL> col resource_name for a30
SQL> col resource for a10
SQL> col limit for a10
SQL> select * from dba_profiles
where profile='SMAPLE_PROF';

SQL> col profile for a15

SQL> select * from dba_profiles
where profile='RE_SAMPLE_PROF';

SQL> alter user smsuser profile sample_prof;

SQL> alter user smsuser profile re_sample_prof;

SQL> select username, profile
from dba_users
where username='SMSUSER';

-- 여러 개의 프로파일을 적용시킬 수 없다.

SQL> drop profile re_sample_prof;

SQL> drop profile re_sample_prof cascade;

SQL> select username, profile
from dba_users
where username='SMSUSER';


-- 4. 권한(privilege) 관리하기
SQL> grant create table, create session to scott;
revoke create table from scott;

SQL> select * from dba_sys_privs where grantee='SCOTT';

SQL> grant select on smsuser.smstest to scott;

SQL> grant update on smsuser.smstest to scott with grant option;

SQL> revoke select on smsuser.smstest from scott;

SQL> create role trole;

SQL> grant create session, create table to trole;

SQL> grant trole to scott;

SQL> select * from dba_role_privs where grantee='SCOTT';

SQL> select * from dba_sys_privs where grantee='CONNECT';

SQL> select * from dba_sys_privs where grantee='RESOURCE';

반응형
반응형

 

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.156~p.163
-- 데이터 파일 이동시키는 작업
-- 철칙: 데이터 파일 사용 중 일 때는 절대로 이동시키거나 복사하면 안 된다.
-- 1. offline 되는 테이블 스페이스의 데이터 파일 이동하기
-- 2. offline 안 되는 테이블 스페이스의 데이터 파일 이동하기
-- 3. Redo log file 이동하기
-- 4. 테이블 스페이스 삭제하기


-- 1. offline 되는 테이블 스페이스의 데이터 파일 이동하기
<순서요약>
1) 해당 테이블 스페이스 offline
2) 데이터 파일을 대상 위치로 복사
3) 컨트롤 파일 내의 해당 데이터 파일 위치 변경
4) 해당 테이블 스페이스 online


/u01/app/oracle/oradata/orcl/haksa01.dbf
/u01/app/oracle/oradata/orcl/haksa02.dbf

/u01/app/oracle/disk1/


SQL> alter tablespace haksa offline;
SQL> !cp /u01/app/oracle/oradata/orcl/haksa01.dbf /u01/app/oracle/disk1/
SQL> !cp /u01/app/oracle/oradata/orcl/haksa02.dbf /u01/app/oracle/disk2/
SQL> select name from v$datafile;
SQL> alter tablespace haksa rename datafile '/u01/app/oracle/oradata/orcl/haksa01.dbf' to '/u01/app/oracle/disk1/haksa01.dbf';
SQL> alter tablespace haksa rename datafile '/u01/app/oracle/oradata/orcl/haksa02.dbf' to '/u01/app/oracle/disk2/haksa02.dbf';
SQL> alter tablespace haksa online;
SQL> select name from v$datafile;
SQL>

 

-- 2. offline 안 되는 테이블 스페이스의 데이터 파일 이동하기
<순서요약>
1) DB를 종료한다.
2) 마운트 상태로 시작한다.
3) 데이터 파일을 복사한다.
4) 컨트롤 파일의 내용을 변경한다.
5) DB를 open한다.

-- offline이 안 되는 테이블 스페이스: system tablespace, undo tablespace, default temporary tablespace


/u01/app/oracle/oradata/orcl/system01.dbf


SQL> shutdown immediate
SQL> startup mount
SQL> !cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/disk3/
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/app/oracle/disk3/system01.dbf';
SQL> select name from v$datafile;
SQL> alter database open;
SQL>


-- 3. Redo log file 이동하기

SQL> set line 200
SQL> col a.group# for 999
SQL> col member for a50
SQL> 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;

SQL> shutdown immediate
SQL> startup mount

SQL>!cp /u01/app/oracle/disk3/redo01_a.log /u01/app/oracle/disk4/redo01_a.log
SQL>!cp /u01/app/oracle/disk3/redo02_a.log /u01/app/oracle/disk4/redo02_a.log
SQL>!cp /u01/app/oracle/disk3/redo03_a.log /u01/app/oracle/disk4/redo03_a.log

SQL> alter database rename file '/u01/app/oracle/disk3/redo01_a.log' to '/u01/app/oracle/disk4/redo01_a.log';
SQL> alter database rename file '/u01/app/oracle/disk3/redo02_a.log' to '/u01/app/oracle/disk4/redo02_a.log';
SQL> alter database rename file '/u01/app/oracle/disk3/redo03_a.log' to '/u01/app/oracle/disk4/redo03_a.log';
SQL> select member from v$logfile;
SQL> alter database open;
SQL>


-- 4. 테이블 스페이스 삭제하기
SQL> drop tablespace haksa; -- Error 발생
SQL> drop tablespace haksa including contents and datafiles; -- haksa 테이블 스페이스 삭제, 물리적으로 OS에서 삭제
SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;
SQL>

반응형
반응형


-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.144~p.154
-- 일반 테이블 스페이스 관리


목록
1. 일반 테이블 스페이스 생성 및 조회하기
2. 각 데이터 파일의 실제 사용량 확인하는 방법
3. 테이블 스페이스 용량 관리하기
 1) 수동으로 테이블 스페이스에 데이터 파일 추가하기
 2) 데이터 파일 크기 수동 증가시키기
 3) 데이터 파일 크기 자동 증가시키기
 4) 각 데이터 파일들의 autoextend 유무 확인하기

4. Tablespace Offline
 1) normal mode
 2) temporary mode
 3) immediate mode


-- 1. 일반 테이블 스페이스 생성 및 조회하기

SQL> create tablespace haksa
datafile '/u01/app/oracle/oradata/orcl/haksa01.dbf' size 10M
segment space management auto;

SQL> select tablespace_name, status, contents, extent_management,
segment_space_management
from dba_tablespaces;

SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;


-- 2. 각 데이터 파일의 실제 사용량 확인하는 방법
SQL> set line 200
SQL> col file# for 999
SQL> col ts_name for a10
SQL> col total_blocks for 9999999
SQL> col used_blocks for 9999999
SQL> col pct_used for a10

-- 아래 쿼리 오래 걸림
-- Production에서 운영 중에 하지 마시기 바랍니다.

SQL> 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;

FILE# TS_NAME            MB TOTAL_BLOCKS USED_BLOCKS PCT_USED
----- ---------- ---------- ------------ ----------- ----------
    1 SYSTEM            480        61440       60992  99.27 %
    2 UNDOTBS1           30         3840        3136  81.67 %
    3 SYSAUX            240        30720       30304  98.65 %
    4 USERS               5          640         376  58.75 %
    5 EXAMPLE           100        12800        8728  68.19 %
    6 UNDO01             10         1280         168  13.13 %
    7 HAKSA              10         1280              00.00 %

 

-- 3. 테이블 스페이스 용량 관리하기
SQL> col tablespace_name for a10
SQL> col file_name for a50
SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;
SQL> create table scott.iphak(studno number) tablespace haksa;

SQL> begin
 for i in 1..50000 loop
  insert into scott.iphak values(i);
 end loop;
 commit;
end;
/


-- 1) 수동으로 테이블 스페이스에 데이터 파일 추가하기
SQL> alter tablespace haksa
add datafile '/u01/app/oracle/oradata/orcl/haksa02.dbf' size 20M;

SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;


-- 2) 데이터 파일 크기 수동 증가시키기
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/haksa01.dbf' resize 20M;


-- 3) 데이터 파일 크기 자동 증가시키기
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/haksa01.dbf' autoextend on;


cf.'autoextend on' 옵션을 사용할 경우 데이터 파일은 자동으로 증가하게 되며 그 크기는 만약 오라클이 32bit일 경우에는 최대 파일 1개의 크기는 16GB까지 가능하며 오라클이 64bit용일 경우에는 최대 크기가 32GB까지 가능하게 된다.


-- 4) 각 데이터 파일들의 autoextend 유무 확인하기
SQL> set line 200
SQL> col tablespace_name for a10
SQL> col file_name for a50

SQL> select tablespace_name, bytes/1024/1024 MB, file_name, autoextensible "auto", online_status from dba_data_files;

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/haksa02.dbf' autoextend on;

SQL> select tablespace_name, bytes/1024/1024 MB, file_name, autoextensible "auto", online_status from dba_data_files;


-- 4. Tablespace Offline
-- 1) normal mode

SQL> alter tablespace haksa offline;

cf. Tablespace를 offline하게 되면 그 파일들에는 새로운 정보가 저장되지 않는다. 그래서 offline한 후에 online을 한다면 반드시 checkpoint를 발생시켜야 한다.

SQL> select file#, name, status from v$datafile;

SQL> select a.file#, a.ts#, b.name, a.status, a.checkpoint_change#
from v$datafile a, v$tablespace b
where a.ts#=b.ts#;

SQL> alter tablespace haksa online;

SQL> select a.file#, a.ts#, b.name, a.status, a.checkpoint_change#
from v$datafile a, v$tablespace b
where a.ts#=b.ts#;

SQL> alter system checkpoint;

SQL> select a.file#, a.ts#, b.name, a.status, a.checkpoint_change#
from v$datafile a, v$tablespace b
where a.ts#=b.ts#;


-- 2) temporary mode

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/haksa02.dbf' offline; -- immediate mode

SQL> alter tablespace haksa offline; -- 에러 발생, 이미 offline되어 있음

SQL> alter tablespace haksa offline temporary;

SQL> recover tablespace haksa;

SQL> alter tablespace haksa online;

SQL> select a.file#, a.ts#, b.name, a.status, a.checkpoint_change#
from v$datafile a, v$tablespace b
where a.ts#=b.ts#;

SQL> alter system checkpoint;

SQL> select a.file#, a.ts#, b.name, a.status, a.checkpoint_change#
from v$datafile a, v$tablespace b
where a.ts#=b.ts#;

 

-- 3) immediate mode

반응형