기본값은 사용안함 disable 이다.

DB 오픈 상태에서 


select archivelog_compression from v$database;


alter database archivelog compress enable; or disable;


※ 일반적으로 압축률 50%

데이터 복제 솔루션 사용시 (DataGuard 등) 이 기능으로 인해 문제 발생 가능.

'Backup&Recovery' 카테고리의 다른 글

닫힌백업(cold backup / closed backup)  (0) 2015.04.13
백업대상  (0) 2015.04.13
Archive Log mode 로 변경하기  (0) 2015.04.13
Archive Hang 해결  (0) 2015.04.13
실습 전 디스크 추가하기 (리눅스 디스크추가)  (0) 2015.04.13

설정

트랙백

댓글

<순서>

파라미터 파일 수정 -> DB 종료 -> startup mount; -> mode 변경 -> DB 오픈


show parameter spfile;

spfile 의 경우

alter system set log_archive_dest_1='location=/data/arc1' scope=spfile;


alter system set log_archive_dest_1='location=/data/arc2' scope=spfile;


alter system set log_archive_format="%s_%t_%r.arc" scope=spfile;


pfile 의 경우 아래 내용 추가

vi $ORACLE_HOME/dbs/initSID.ora

log_archive_start=true -> 9i 까지만 사용하고 10g 이상 버전에서는 절대 쓰면 안된다.

log_archive_dest_1='location=/data/arc1'

log_archive_dest_1='location=/data/arc2'

log_archive_format=%s_%t_%r.arc


shutdown immediate;


startup mount;


archive log list;


alter database archivelog;


alter database open;


alter system switch logfile;


/


/


!ls /data/arc2

아카이브 파일 생성 확인


설정

트랙백

댓글

권한 변경 후 아카이브 행 발생시키기

archive log list


df -h


root로 로그인


chown -R root.root /data/arc1

chown -R root.root /data/arc2


alter system switch logfile;


/


/ -> 아카이브 행 발생


새로운 창

vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log


Archival Error 확인


디렉토리에 쓸 권한이 없어 로그스위치 발생해도 아카이빙 하지 못해 에러 발생


다시 권한 oracle.dba 로 변경


alter system switch logfile;


계속 행이 걸려있을 경우 후속조치 (파라미터 변경 후 archiver 재시작)


후속조치

alter system set log_archive_dest_state_1=defer;


alter system set log_archive_dest_state_1=enable;


alter system set log_archive_dest_state_2=defer;


alter system set log_archive_dest_state_2=enable;


alter system archive log stop;


alter system archive log start;


alter system switch logfile;


(시간이 조금 소요될 수도 있음)


※ 아카이브 로그 모드는 아카이브 로그가 저장될 경로에 아카이빙을 할 수 없게 되면 

(저장경로 삭제, 저장공간 부족, 쓰기 권한 없을 시) 아카이브 행 이 발생해 작업이 중단된다. 

그럴 경우 위와같이 해결 한 후 반드시 전체 백업을 full 로 받기를 권장한다.



설정

트랙백

댓글

<리눅스계열 디스크 추가하기>

VM웨어에서 하드디스크 추가 후 부팅


1. fdisk -l 


2. fdisk /dev/sdb


3. n -> p -> 1 -> 엔터 (용량 실린더 시작) -> 엔터 (용량 실린더 끝) -> w


4. mkfs.ext3 /dev/sdb1 (디스크 포맷)


5. mount /dev/sdb1 /data (원하는 폴더로 마운트)


6. vi /etc/fstab

-> /dev/sdb1        /data        ext3        defaults        1  1

(재부팅 후에도 적용하도록 설정)


7. init 6


재부팅 후 df -h 로 마운트 여부 확인


'Backup&Recovery' 카테고리의 다른 글

닫힌백업(cold backup / closed backup)  (0) 2015.04.13
백업대상  (0) 2015.04.13
Archive log 압축하여 저장공간 줄이기  (0) 2015.04.13
Archive Log mode 로 변경하기  (0) 2015.04.13
Archive Hang 해결  (0) 2015.04.13

설정

트랙백

댓글

사용자 관리

Oracle Admin 2015. 4. 6. 15:46

계정은

1.관리자 계정 - sys , system

2.일반 계정 - scott , HR 등등..

으로 나뉜다.

일반계정을 추가 생성하는 경우는 공식으로 정해진 것은 없지만 보통 새로운 업무가 생성될 때.


User 와 Schema

우리가 Oracle Server 에 접속하기 위해 conn scott/tiger 할 때 scott 이 user 이다.

즉, User는 오라클 서버에 접속하기 위해 사용하는 것.

Schema란 특정 사용자(User) 가 만들어놓은 모든 Object 의 집합이다.

ex) 오라클 설치 시 연습용으로 제공되는 HR schema 를 예로들면 Oracle Server 안에 HR 계정으로 로그인해서 만들어 놓은 모든 것을 다 모으면 그것을 HR schema 라고 하는 것이다. table, index, view, constraint, trigger, dblink, synonym, sequence 등을 통틀어서 HR schema.


새로운 사용자 생성 순서

1. 생성할 사용자의 default tablespace 결정하고 해당 tablespace 생성.

2. 생성할 사용자가 사용하는 temporary tablespace를 결정하고 먼저 생성.

3. 사용자 생성.

4. 적절한 프로파일과 권한, 롤 등을 생성한 후 할당.


실습해보자.

실습1. 사용자 생성

실습2. Password 관련 profile 생성

실습3. Resorce 관련 profile 만들기


실습1. 사용자 생성

신규 서비스로 웹하드 서비스를 런칭했다고 가정.

DBA는 Oracle DB 서버에 해당 서비스를 할 수 있도록 작업.

TS_WEBHARD라는 Tablespace 생성하고 웹하드 관련 테이블은 모두 이곳에 저장하기로.

TS_WEB_IDX Tablespace 에 웹하드 관련 인덱스 저장하기로.


(1) webuser 의 default tablespace 생성하기

create tablespace ts_webhard datafile '/app/oracle/oradata/testdb/ts_web01.dbf' size 100M ;

create tablespace ts_web_idx datafile '/app/oracle/oradata/testdb/ts_web_idx01.dbf' size 10M ;

확인

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


(2) Temporary tablespace 생성하기

create temporary tablespace temp_web tempfile '/app/oracle/oradata/testdb/temp_web01.dbf' size 10M ;


(3) 사용자 생성

create user webuser identified by webpwd -> 아이디 패스워드

default tablespace ts_webhard -> 기본 테이블스페이스

temporary tablespace temp_web -> 임시 테이블스페이스

quota unlimited on ts_webhard -> 할당량 지정 여기선 무제한

quota 0m on system ; -> 시스템 테이블스페이스 사용 못하게


(4) 권한 설정

grant resorce , connect to webuser ;

접속확인

conn webuser/webpwd


사용자 정보 확인하기

default tablespace 와 temporary tablespace 정보 확인하기

set line 200

col default_tablespace for a10

col temporary_tablespace for a10

select username , default_tablespace "Default TS" , temporary_tablespace "Temp TS" from dba_users where username='WEBUSER' ;


profile 관리하기

사용자 계정의 행동에 제약사항을 두기 위해 사용하는 경우가 대부분.

ex) 10분 이상 활동 없으면 접속 강제종료. 10일마다 암호 다른것으로 바꾸게 강제 적용.

※ 관련 파라미터

Failed_login_attempts : 로그인 시도 실패 후 계정 잠그기. ex) Failed_login_attempts 5

5번 실패 후 6번째부터는 로그인 못하게.

Password_lock_time : attempts 에서 계정이 잠기면 며칠 동안 잠글것인지. 단위:일. 

DBA가 unlock 해서 사용 가능.

Password_life_time : 동일한 암호를 며칠간 사용하게 할 것인지. 단위:일.

Password_grace_time : life_time 에서 만료되어도 이 파라미터에 지정된 값 만큼

더 암호를 변경할 기간을 허용.

Password_reuse_time : 동일한 암호를 다시 사용할 수 없도록 설정하는 기간.

Password_reuse_max : 동일한 암호를 재사용 할 경우 최대 사용 가능 횟수.

Password_verify_function : 암호를 복잡하게 만들기 위해 특정 함수를 적용. 점검.

오라클에서 만들어 둔 기본 함수를 사용할 수도 있고 사용자가 직접 만들기도 가능.

이 함수를 사용할 경우 아래 사항 확인.

-암호는 최소 4글자 이상

-암호는 사용자 계정과 달라야함

-하나의 특수문자나, 알파벳, 숫자가 포함

-이전 암호와 3글자 이상 달라야 함


실습2. Password 관련 profile 생성

조건1. 로그인 시도 5회 실패시 계정 5일동안 사용 못하게

조건2. 계정 암호는 10일에 한 번씩 변경하게

조건3. 동일한 암호는 10일동안 사용 못하게


create profile sample_prof limit

failed_login_attempts 5

password_lock_time 5

password_life_time 10

password_reuse_time 10;


Resorce profile 관련 파라미터

이 profile 사용 위해서는 resorce_limit=true 설정이 되어있어야 함

startup 시 사용되는 파라미터 파일에 위 문장을 적어놓거나

alter system set resorce_limit=true; 실행.(9i 이상 버전)

CPU_PER_SESSION : SESSION 이런 1명의 접속을 의미. 이 파라미터는 하나의 세션이 CPU를 연속적으로 사용할 수 있는 최대 시간을 설정. 무한루프 같은 쿼리가 작동되면 혼자서 CPU를 연속적으로 점유하기 때문에 그런일을 막고자. 1/100초 단위.

SESSIONS_PER_USER : 하나의 사용자 꼐정으로 몇 명의 사용자가 동시에 접속할 수 있는지.

CONNECT_TIME : 하루동안 DB Server에 접속할 수 있는 총 시간 설정.

IDLE_TIME : 연속적으로 휴면 시간이 이 값을 넘으면 접속 해제하고 commit 안된 작업은 모두 rollback한다. 사용자가 서버에 접속하면 서버 프로세스가 생성되고 PGA가 할당되기 때문에.

LOGICAL_READS_PER_SESSION : 한 세션에서 사용 가능한 최대 블락 수.

PRIVATE_SGA : MTS / shared server 일 경우 해당 세션의 SGA 사용량을 bytes 단위로 설정.

CPU_PER_CALL : 하나의 call 당 cpu를 점유할 수 있는 시간. 1/100초 단위.

LOGICAL_READS_PER_CALL : 하나의 call 당 읽을 수 있는 블락 개수 지정.


실습3. Resorce 관련 profile 만들기

alter system set resource_limit=true;

※ Resource profile 사용 위해서는 resorce_limit=true 설정이 되어있어야 함

조건1. 1명당 연속적으로 CPU를 사용할 수 있는 시간을 10초로 제한

조건2. 하루 중 8시간만 DB에 접속 가능하게

조건3. 10분동안 사용하지 않으면 강제로 접속 해제


사용자에게 profile 할당하기

위에서 만든 profile을 webuser 에게 설정


현재 모든 사용자가 적용 받고 있는 profile 확인

set pagesize 50

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


해당 profile 에 어떤 내용이 있는지 확인하기 (sample_prof 내용 조회)

set line 200

col profile for a13

col resource_name for a30

col resource for a10

col limit for a10

select * from dba_profiles where profile='SAMPLE_PROF' ;


re_sample_prof 내용 조회하기

col profile for a15

select * from dba_profiles where profile='RE_SAMPLE_PROF' ;


사용자에게 profile 적용시키고 확인하기

alter user webuser profile sample_prof;

alter user webuser profile re_sample_prof;

select username,profile from dba_users where username='WEBUSER';

※ 여러 개의 프로파일을 적용시킬 순 없다. 처음부터 원하는 파라미터를 전부 넣고 한꺼번에 만들고 그것을 적용시켜야 함


사용 안하는 profile 삭제하기

현재 사용자에게 할당되어있는 profile은 기본적으로 삭제가 안된다.

그러나 cascade 옵션으로 삭제하면 삭제되고 그 프로파일을 사용하던 사용자는 기본값 프로파일을 사용하게 된다. default profile.

drop profile re_sample_prof cascade;

select username, profile from dba_users where username='WEBUSER';


privilege (권한) 관리

profile -> 하지 못하게 하는 것이라면

privilege -> 할 수 있게 하는 것

권한은 크게 system 관련 : system 전체에 영향을 주는 권한

object 관련 : 특정 object에 관련된 권한 으로 나뉜다.

일반 OS -> 계정,암호

Oracle -> 계정,암호,권한

(1) SYSTEM 관련 주요 권한

(2) SYSOPER / SYSDBA 권한

(3) SYSTEM 관련 권한 할당/해제

(4) 사용자가 가지고 있는 권한 조회

(5) Object 관련 권한

(6) Object 권한 할당/해제


Role 관리

Role 은 권한 꾸러미이다. 여러 권한을 한번에 넘겨줄 수 있다.

(1) Role 생성하기

(2) Role에 create session , create table 권한 할당하기

(3) scott 사용자에게 trole 할당하기

(4) 어떤 사용자가 어떤 role 을 사용하는지 확인하기

(5) 어떤 role에 어떤 권한이 있는지 확인하기






'Oracle Admin' 카테고리의 다른 글

메모리 관리기법  (0) 2015.04.06
오라클 아키텍쳐  (0) 2015.04.06
Control File 관리  (0) 2015.04.02
data file , redo log file , control file 이동 간단정리  (0) 2015.04.02
Tablespace 와 Data File 관리  (0) 2015.04.01

설정

트랙백

댓글

9i 버전에서의 메모리 관리기법

두가지로 나뉘는 메모리의 구조

SGA (System Global Area) , PGA (Program Global Area) 

8i 이전까지는 이 두 메모리를 DBA가 수동으로 관리.

설정값이 변경되면 인스턴스 재시작 해야했다.


9i 부터 Dynamic 기능 (관련 파라미터 변경 후 재부팅 없이 명령어만 쳐서 즉시 적용) 등장.

※ alter system set 명령어


9.0.1 버전에서는 Default Buffer Cache 값을 Dynamic 하게 변경

9.2.0 버전부터 Shared pool , Default Buffer Cache , Large pool , Java pool 값을

10g 버전부터는 Streams pool 추가


위 항목들을 모두 합친 값이 SGA_MAX_SIZE 에 설정된 값보다 클 수 없다.

즉, 전체 SGA의 크기SGA_MAX_SIZE 로 지정되고 이 값을 초과할 수 없다.

그래서 파라미터를 수정할 경우 전체 파라미터의 값을 늘린 후 개별 파라미터를 수정해야,

먼저 통을 늘린 후 내용을 늘려야 적용이 되는게 9i Dynamic 의 특징이다.


동적으로 각종 메모리 값을 변경할 때 그래뉼 (Granule) 단위 사용.

1 그래뉼 = 4M (SGA 전체 128M) 또는 16M (128M 초과)

10g -> SGA 128M 에서 1G 로 변경


SGA 총 크기와 그래뉼 사이즈 확인하기

SQL> select name , bytes/1024/1024 MB from v$sgainfo where name='Maximum SGA Size' ;

NAME                                     MB

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

Maximum SGA Size                 590.667969

SQL> select name , bytes/1024/1024 MB from v$sgainfo where name='Granule Size' ;

NAME                                     MB
-------------------------------- ----------
Granule Size                              4

$ pmap `pgrep -f pmon`
-> 각 백그라운드 프로세스가 실제 사용하는 내역. 4M 씩 매핑되어 사용되는 것 확인.


PGA 관리법도 9i 부터 수동에서 자동모드로 변경된다.

WORKAREA_SIZE_POLICY 파라미터를 AUTO 로 설정할 경우 PGA 전체 크기 범위 안에서 오라클이 자동으로 PGA 값을 관리한다.
파라미터 Manual 설정 시 수동으로 관리 가능. 기본값은 Auto.
PGA 전체 크기는 PGA_AGGREGATE_TARGET

단 실제 서버프로세스가 사용할 수 있는 최대 PGA 크기는 
_PGA_MAX_SIZE (히든파라미터) 로 지정된다. 

PGA 관련 히든파라미터 조회
col ksppinm for a40
col ksppstvl for a40
select a.ksppinm , b.ksppstvl from x$ksppi a , x$ksppsv b where a.indx=b.indx and a.ksppinm like '$_size' ;

※ PGA 할당을 못받는다면 접속이 되지 않는다.
하지만 사용자가 없고 혼자서 많은 메모리를 요구하는 작업을 한다면
수동으로 변경하고 메모리를 다 땡겨쓴 후 다시 오토로 변경할 수 있다.

PGA 용량이 부족할 경우 ORA-04030 ERROR 발생한다.


10g 버전에서의 메모리 관리기법

SGA 주요 구성요소들의 크기를 오라클 스스로 변경할 수 있는 기술인

ASMM 기능이 등장한다. (Automatic Shared Memory Management)

Redo log Buffer제외한 나머지 구성요소들의 크기를 상황에 맞도록 스스로 변경.

Shared pool , Default Database Buffer Cache , Large pool , Java pool , Streams pool 자동변경

이 기능을 수행하기 위해 10g부터 새로 등장한 백그라운드 프로세스 -> MMAN (Memory Manager)


ASMM은 MMAN이라는 백그라운드 프로세스가 현재SGA의 Workload 를 보고 메모리의 부족함과 

충분함을 판단한 후 충분한 곳에서 메모리를 회수해 부족한 곳으로 재배치 해주는 기능.

이 기능을 위한 필수요소는 현재 SGA 의 Workload.

이 부분은 MMON(Memory Monitor) 라는 백그라운드 프로세스가 SYSAUX 테이블스페이스에 저장

해두는 통계정보와 각종 Advisor 들이 실시간으로 보내주는 정보를 참조함.


MMAN이 SGA의 양을 자동으로 할당하고 관리할 때 기준으로 사용하는 파라미터가

SGA_TARGET 이다. 이 파라미터에 설정된 용량 범위 안에서 메모리 할당, 관리.

SGA_TARGET 역시 SGA_MAX_SIZE 값을 초과할 수 없다. 


Auto-Tuned dynamic Parameter :

DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE,

STREAMS_POOL_SIZE

Manual-Tuned dynamic Parameter :

DB_KEEP_CACHE_SIZE, DB_RECYCLE_CACHE_SIZE, DB_nK_CACHE_SIZE,

SGA_TARGET


11g 버전에서의 메모리 관리기법

9I 버전의 Dynamic SGA 기능에서 10g 버전의 ASMM 기능으로 SGA의 크기를 스스로 튜닝하는

기술로 발전했고 11g 버전에서는 SGA 뿐 아니라 PGA 까지 한꺼번에 자동으로 관리하는 기술인

Automatic Memory Management (AMM) 으로 발전함.

이 기능은 Linux , Solaris , Windows , HP-UX , AIX 버전의 오라클에서만 작동.


MEMORY_TARGET

이 파라미터로 AMM 기능으로 관리할 메모리의 총량을 지정할 수 있다.

이 파라미터는 SGA와 PGA 모두를 관리.

오라클이 SGA와 PGA의 양을 이 파라미터 범위 안에서 증감하며 관리.

Dynamic parameter 이며 최대 설정값은 MEMORY_MAX_SIZE 값까지 지정 가능.

기본값은 0으로 사용하지 않는다는 의미.


MEMORY_MAX_TARGET

이 파라미터는 MEMORY_TARGET 값이 최대로 증가될 값을 지정하는 용도로 사용.

설정하지 않으면 기본값은 MEMORY_TARGET 값과 동일하게 설정됨.

AMM 기능 사용하게 된다면 SGA_TARGET , PGA_AGGREGATE_TARGET

파라미터 값을 별도로 지정할 필요는 없다. 그러나 지정을 한다면 오라클은 그 값을

최소값으로 인식한다.

권장값은 SGA_TARGET , PGA_AGGREGATE_TARGET 모두 0으로.


AMM 기능 사용시 물리적 메모리가 충분한 여유공간이 있어야하고 부족할 경우 에러 발생.

/dev/shm 공간을 공유 메모리 공간과 매핑시켜서 마치 메모리를 디스크처럼 사용.

기본 크기는 OS 메모리의 50%로 설정되는데 설정값보다 물리메모리 양이 부족할 경우 

아래와 같은 에러가 발생하면서 오라클이 시작되지 않는다.

SQL> startup;

ORA-00845: MEMORY_TARGET not supported on this system














'Oracle Admin' 카테고리의 다른 글

사용자 관리  (0) 2015.04.06
오라클 아키텍쳐  (0) 2015.04.06
Control File 관리  (0) 2015.04.02
data file , redo log file , control file 이동 간단정리  (0) 2015.04.02
Tablespace 와 Data File 관리  (0) 2015.04.01

설정

트랙백

댓글

Architecture = Memory Architecture + Process Architecture

- Oracle Server = Instance + Database

- Intance = SGA Memory + Background Process

- Database = Datafile + Redo Log File + Control File + Parameter File

- SGA Memory = Shared Pool + Data Buffer Cache + Redo Log Buffer + Large Pool + Java Pool + Streams Pool

- Shared Pool = Library Cache + Dictionary Cache + Control Structures

- Process = User Process + Oracle Process

- Oracle Process = Background Process + Server Process

- Background Process = DBWn + LGWR + CKPT + SMON + PMON + RECO + ARCn ...

- Server Process = Shared Server Process + Dedicated Server Process

Introduction to Oracle Memory Structures

  Oracle 메모리 구조는 실행 중인 프로그램 코드 정보와 세션정보 등을 저장 하고 사용자들이 공유하는 데이터를 저장합니다.

  Oracle의 대표적인 메모리 구조는 시스템 글로벌 영역(System Global Area: SGA)과 프로그램 글로벌 영역(Program Global Area: PGA)이 있습니다.



문서에 대하여

  • - 강좌 URL : http://www.gurubee.net/lecture/1883
  • - 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
  • 구루비의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.


'Oracle Admin' 카테고리의 다른 글

사용자 관리  (0) 2015.04.06
메모리 관리기법  (0) 2015.04.06
Control File 관리  (0) 2015.04.02
data file , redo log file , control file 이동 간단정리  (0) 2015.04.02
Tablespace 와 Data File 관리  (0) 2015.04.01

설정

트랙백

댓글

Control File 관리

Oracle Admin 2015. 4. 2. 14:39

spfile 의 경우 순서


spfile 내용 변경 명령어 -> alter system set contrl_files='경로1','경로2','경로3' scope=spfile; 

※ scope=spfile 옵션은 현재 인스턴스에는 적용하지 않고 재부팅 후 변경하겠다는 옵션이다.


경로 변경작업

-> 인스턴스 종료

-> 디렉토리 생성 및 컨트롤파일 복사

-> 인스턴스 오픈

 

※ pfile 의 경우 vi로 수정이 가능하다. pfile 의 경우 인스턴스를 먼저 종료 하고 나서 

!vi $ORACLE_HOME/dbs/initSID.ora 로 


컨트롤 파일의 경로를 수정한 후 해당 디렉토리 생성, 최근 컨트롤파일 복사 후 

다시 startup 한다.

 

자세히 살펴보면


1. select status from v$instance;

현재상태 확인.


2. show parameter spfile;

spfile or pfile 바라보는지 확인


3. select name from v$controlfile;

현재 Controlfile 경로 조회


4. alter system set control_files='/home/oracle/disk1/control01.ctl','/home/oracle/disk2/control02.ctl' scope=spfile ;

spfile 파라미터 변경 후 DB 종료


shutdown immediate;


5. cd /home/oracle

mkdir disk1 disk2

이동시킬 경로로 가서 폴더 생성


생성한 폴더에 컨트롤파일 복사

cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control01.ctl

cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control02.ctl


DB startup


'Oracle Admin' 카테고리의 다른 글

메모리 관리기법  (0) 2015.04.06
오라클 아키텍쳐  (0) 2015.04.06
data file , redo log file , control file 이동 간단정리  (0) 2015.04.02
Tablespace 와 Data File 관리  (0) 2015.04.01
pfile , spfile 생성 및 관리  (0) 2015.03.30

설정

트랙백

댓글

spfile 의 경우 (create spfile from pfile)

1. 컨트롤파일 이동

DB 오픈 상태에서 

alter system set control_files='바꿀경로1','바꿀경로2','바꿀경로3' scope=spfile;

경로 변경 후 DB 종료 shutdown immediate;

!cp 원본경로 바꿀경로1

!cp 원본경로 바꿀경로2

!cp 원본경로 바꿀경로3

startup

끝.


2. 데이터파일 이동

DB종료 후 마운트상태로 재시작 shutdown immediate; -> startup mount;

이동시킬 디렉토리로 copy

경로변경

alter database rename

file 경로

to 경로 ;


3. 리두로그 파일 이동

이동시킬 디렉토리로 copy

경로변경

alter database rename

file 경로

to 경로 ;


pfile 의 경우 (create pfile from spfile)

1. 컨트롤파일 이동

DB 오픈 상태에서 

!vi $ORACLE_HOME/dbs/initSID.ora

컨트롤파일 경로 변경

이동시킬 디렉토리로 컨트롤파일 복사

DB startup


데이터파일, 리두로그파일은 spfile 과 동일하게




'Oracle Admin' 카테고리의 다른 글

오라클 아키텍쳐  (0) 2015.04.06
Control File 관리  (0) 2015.04.02
Tablespace 와 Data File 관리  (0) 2015.04.01
pfile , spfile 생성 및 관리  (0) 2015.03.30
Oracle Background Process  (0) 2015.03.29

설정

트랙백

댓글

테이블스페이스 이름 , 용량 , 데이터파일 위치 조회
(기본 테이블 스페이스 조회 명령어)

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 사용중인것이다.

create pfile from 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

설정

트랙백

댓글