검색결과 리스트
ALL에 해당되는 글 28건
- 2015.04.13 Archive log 압축하여 저장공간 줄이기
- 2015.04.13 Archive Log mode 로 변경하기
- 2015.04.13 Archive Hang 해결
- 2015.04.13 실습 전 디스크 추가하기 (리눅스 디스크추가)
- 2015.04.06 사용자 관리
- 2015.04.06 메모리 관리기법
- 2015.04.06 오라클 아키텍쳐
- 2015.04.02 Control File 관리
- 2015.04.02 data file , redo log file , control file 이동 간단정리
- 2015.04.01 Tablespace 와 Data File 관리
글
Archive log 압축하여 저장공간 줄이기
기본값은 사용안함 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 |
글
Archive Log mode 로 변경하기
<순서>
파라미터 파일 수정 -> 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
아카이브 파일 생성 확인
'Backup&Recovery' 카테고리의 다른 글
닫힌백업(cold backup / closed backup) (0) | 2015.04.13 |
---|---|
백업대상 (0) | 2015.04.13 |
Archive log 압축하여 저장공간 줄이기 (0) | 2015.04.13 |
Archive Hang 해결 (0) | 2015.04.13 |
실습 전 디스크 추가하기 (리눅스 디스크추가) (0) | 2015.04.13 |
글
Archive Hang 해결
권한 변경 후 아카이브 행 발생시키기
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 로 받기를 권장한다.
'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 |
실습 전 디스크 추가하기 (리눅스 디스크추가) (0) | 2015.04.13 |
글
실습 전 디스크 추가하기 (리눅스 디스크추가)
<리눅스계열 디스크 추가하기>
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 |
글
사용자 관리
계정은
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
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 관리
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 |
글
data file , redo log file , control file 이동 간단정리
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 |
글
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 |