급하신 분은 보라색 글씨만 보시면 됩니다.
= root 계정으로 명령어 입력    $  = 사용자계정 (ex. oracle) 으로 명령어 입력
SQL>  = 오라클 DB에 접속해 쿼리 문 입력





[1]. 파라미터파일

1.파일목록보기

SQL> !ls $ORACLE_HOME/dbs

※spfile 우선권있음
    inittestdb.ora → pfile
    spfiletestdb.ora → spfile

※ 비상용 pfile 경로
$ORACLE_BASE/admin/testdb/pfile/init.ora.숫자





2. pfile ↔ spfile

SQL> create spfile from pfile;
SQL> create pfile from spfile;




3.현재 어떤 파라미터 파일로 열렸나 확인법 - VALUE부분보기

SQL> show parameter pfile;
① spfile로 열린경우
NAME                                 TYPE                   VALUE
---------------------- ------------- ----------------------------------------------------
spfile                               string                 /home/oracle/product/10g/dbs/spfiletestdb.ora
② pfile로 열린경우
NAME                                 TYPE                   VALUE
---------------------- ------------- ----------------------------------------------------
spfile                               string




4. startup과정

SQL> select status from v$instance; → 현재 DB상태 확인

SQL> startup nomount               → STARTED
SQL> alter database mount;      → MOUNTED
SQL> alter database open;       → OPEN





5. shutdown 과정

SQL> shutdown immediate;






=================================================================================================
[2]. 컨트롤파일

1. 보기 편하게 사전 작업

SQL> set linesize 200
SQL> set pagesize 100
SQL> col 칼럼이름 for a바이트수 (Ex. col name for a45)
SQL> col 칼럼이름 for 숫자자리수 → 숫자자리수=9하나가 한자리 (Ex. col count(*) for 999)





2. 현재 사용되는 컨트롤파일 보기

SQL> select name from v$controlfile;
NAME
---------------------------------------------
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/oradata/testdb/control02.ctl
/home/oracle/oradata/testdb/control03.ctl




3. 컨트롤파일 = mount 단계이상에서 사용되므로, shutdown이나 nomount 단계에서 작업

SQL> shutdown immediate;


① pfile일때

SQL> !vi /home/oracle/product/10g/dbs/inittestdb.ora
:: control_files='/home/oracle/oradata/testdb/control01.ctl',
                       '/home/oracle/oradata/testdb/control02.ctl','/home/oracle/oradata/testdb/control03.ctl'


② spfile일때
※주의: scope=spfile 옵션 꼭 주기 → 재부팅시 적용

SQL> alter system set control_files = '/home/oracle/oradata/testdb/control01.ctl' scope=spfile


※ 참고 : scope 종류
memory : 현재만 적용 - 재 오픈시 증발
spfile : 재 오픈시 적용
both : 둘다 적용 - 현재+재오픈시





=================================================================================================
[3]. Redo log file

1. 상태조회

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

SQL> save log.sql




2. 추가
① 그룹

SQL> alter database add logfile group 그룹번호
  2  '경로/리두로그 파일명' size 용량숫자M;

※ 예시
SQL> alter database add logfile group 4
  2  '/home/oracle/oradata/testdb/redo04.log' size 10M;



② 멤버

SQL> alter database add logfile member
  2  '경로/리두로그 파일명' to group 그룹번호;

※ 예시
SQL> alter database add logfile member
  2  '/home/oracle/oradata/testdb/redo04_b.log' to group 4;




3. 삭제
① 그룹

SQL> alter database drop logfile group 그룹번호;

※ 예시
SQL> alter database drop logfile group 4;



② 멤버

SQL> alter database drop logfile member
  2  '경로/리두로그 파일명';

※ 예시
SQL> alter database drop logfile member
  2  '/home/oracle/oradata/testdb/redo04_b.log';



4. 상태변환
① log switch 발생 (CURRENT → ACTIVE)

SQL> alter system switch logfile;

② checkpoint 발생 (ACTIVE → INACTIVE)

SQL> alter system checkpoint;



=================================================================================================
[4]. 일반 테이블스페이스

1. 보기 편하게 사전 작업

SQL> set linesize 200
SQL> set pagesize 100
SQL> col tablespace_name for a20
SQL> col file_name for a45





2. 상태조회
① 버그 : STATUS 부분 ONLINE인데 OFFLINE으로 표시될때 있음

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

SQL> save dt.sql



② BYTES부분 사이즈 안나오는것 = OFFLINE 상태

SQL> select tablespace_name, bytes, file_name from dba_data_files;

SQL> save dd.sql



③ 템프파일 조회

SQL> select tablespace_name, bytes, file_name from dba_temp_files;

SQL> save temp.sql




3. 테이블스페이스 생성

SQL> create tablespace insa
  2  datafile '/home/oracle/oradata/testdb/insa01.dbf' size 10M
  3  segment space management auto;

→ insa 테이블스페이스 만들어짐 : 3line 써주면 성능 30%이상 좋아짐, 10g에서는 안써도 됨



4. 용량확장

SQL> alter database datafile
  2  '/home/oracle/oradata/testdb/insa01.dbf' resize 20M;





5. datafile 하나 더 추가

SQL> alter tablespace insa
  2  add datafile '/home/oracle/oradata/testdb/insa02.dbf' size 20M;




6. Datafile 이동 - DB OPEN 상태 에서..

SQL> alter tablespace insa offline;

SQL> !cp /home/oracle/oradata/testdb/insa02.dbf /home/oracle/oradata/

SQL> alter tablespace insa rename
  2  datafile '/home/oracle/oradata/testdb/insa02.dbf'
  3  to '/home/oracle/oradata/insa02.dbf';

SQL> alter tablespace insa online;





7. Datafile 이동 - DB Mount 상태 에서..

SQL> shutdown immediate;

SQL> !cp /home/oracle/oradata/testdb/system01.dbf /home/oracle/oradata/system01.dbf

SQL> startup mount;

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/system01.dbf'
  3  to '/home/oracle/oradata/system01.dbf';

SQL> alter database open;




8. 테이블스페이스 삭제

SQL> drop tablespace insa
  2  including contents and datafiles cascade constraints;





=================================================================================================
[5]. temporary 테이블스페이스

1. 현재 temporary tablespace 설정 확인

SQL> select tablespace_name, bytes, file_name from dba_temp_files;
SQL> col PROPERTY_NAME for a30
SQL> col PROPERTY_VALUE for a30
SQL> col DESCRIPTION for a40

SQL> select * from database_properties where property_name like '%TEMP%';




2. temporary tablespace 생성

SQL> create temporary tablespace tmp
  2  tempfile '/home/oracle/oradata/testdb/tmp01.dbf' size 10M;

SQL> !ls -al /home/oracle/oradata/* | grep tmp




3. default temporary tablespace 지정

SQL> alter database default temporary tablespace tmp;




4. temporary tablespace 삭제

SQL> drop tablespace temp;


Posted by 딩구르
,