검색결과 리스트
먹고살기/Oracle에 해당되는 글 50건
- 2011.04.22 오라클 내부의 구조
- 2011.04.22 PTW-1- Oracle Memory (SGA, PGA, UGA)
- 2011.04.22 오라클 MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수
- 2011.04.22 오라클(oracle) 아카이브모드 사용
- 2011.04.22 오라클(ORACLE) 아카이브 모드
글
1.오라클 내부 구조 (Oracle Architecture)
오라클은 크게 인스턴스(Instance)와 데이터베이스로 나눌 수 있습니다. 인스턴스는 크게 SGA (System Global Area) 등 메모리 영역과 Background Process 등의 서버프로세스로 구성됩니다.
SGA영역은 오라클이 사용하는 메모리 영역으로 $ORACLE_HOME/dbs/inin$ORACLE_SID.ora 파일에 정의된 값에 따라 세팅됩니다. SGA 영역을 세분화 하면 Database buffer cache와 Redo log buffer, Shared pool 영역으로 구성됩니다. 각 영역마다 저장되는 데이터가 다른 것이죠. Background Process들도 각 작업마다 분담하여 수행하게 됩니다. 기본적으로 DBWR, LGWR, PMON, SMON이 있고 네트워크환경의 데이터의 분산기능과 일관성, 백업기능을 지원하기 위해 추가로 RECO, LOCK, ARCH, Dispatcher 등이 있습니다.
오라클 데이터베이스는 데이터를 저장하는 부분으로 물리적인 구조를 보면 데이터파일, 데이터 변경에 대한 히스토리를 저장하고 데이터의 안정성을 위한 로그 파일, 데이터베이스의 전체적인 구조를 저장하고 있는 제어 파일로 구성됩니다. 그리고 Background Process와 SGA영역의 크기에 대한 값을 저장하는 파라미터 파일이 있습니다.
1-1 오라클 메모리 구조
오라클이 사용하는 메모리 영역을 보면 크게 Software Code Area, PGA(Program Global Area), SGA(System Global Area)로 나눌 수 있습니다.
1-1-1 Software Code Area
오라클의 실행 모듈이 할당되는 메모리 공간입니다. 수행중이거나 수행 될 수 도 있는 모듈이 대체로 stack에 올려져 있으며 소프트웨어가 update 되거나 재 인스톨 될 때 변경되어 질 수 있습니다. 일반 유저 프로그램이 접근할 수 없고, 크기는 O/S에 따라 약간씩 다르지만 Virtual Memory에 위치하기도 합니다.
1-1-2 SGA(System Global Area)
오라클 인스턴스의 한 부분으로 인스턴스가 Startup 할 때 메모리에 할당되는 작업 영역입니다. 이 영역은 오라클이 기동중에 사용되는 데이터나 각종 정보들 그리고 일반 유저들의 모든 SQL 문장들이 이곳에서 실행됩니다. init$ORACLE_SID.ora 파라미터 파일의 메모리변수들에 의해서 SGA영역의 크기가 정해집니다. SGA 영역은 클수록 성능상 이점이 있지만 Real Memory 영역에 위치할 수 있도록 적절히 조절해야합니다.
[출처] 오라클 내부의 구조|작성자 하늘아이
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 접속 리스너 설정하기.(tnanames.ora 설정) (0) | 2011.04.22 |
---|---|
오라클 메모리 (0) | 2011.04.22 |
PTW-1- Oracle Memory (SGA, PGA, UGA) (0) | 2011.04.22 |
오라클 MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수 (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 사용 (0) | 2011.04.22 |
설정
트랙백
댓글
글
*PGA(Program Global Area)의 구성요소
: 유저 프로세스를 처리하는 서버 프로세스에서 생성하여 사용하는 메모리 영역
1. 정렬 공간(Sort Area) : 정렬을 수행하기 위한 메모리 공간으로 부족하면 디스크를 이용함
2. 세션 정보(Session Information) : 추출된 결과값을 전달하기 위해 유저 프로세스의 세션 정보를 저장
3. 커서 상태 정보(Cursor State) : 해당 SQL의 파싱 정보가 저장되어 있는 주소를 저장
4. 변수 저장 공간(Stack Space) : SQL 문장에 바인드 변수 사용시 이를 저장하는 공간
>> 바인드 변수(Bind Variable) : 변수의 값이 달라져도 같은 문장으로 인식하여 하드 파싱을 줄임
*SGA(System Global Area)의 구성요소
: 디스크에서 읽혀진 데이터가 저장되고 그 데이터들이 읽혀지거나 변경되어지는 작업에 사용되는 공용 메모리 영역
1. 공유 풀(Shared Pool)
ⅰ)고정 영역 : 오라클이 SGA를 관리하는 메커니즘 및 오라클 파라미터 정보가 저장
ⅱ)동적 영역
①라이브러리 캐쉬(Library Cashe)
: 실행된 SQL, SQL에 대한 분석 정보 및 실행 계획이 저장
②데이터 딕셔너리 캐쉬(Data Dictionary Cashe, Row Cashe)
: 테이블, 인덱스,함수, 및 트리거 등 오라클 오브젝트 정보 및 권한 등의 정보가 저장
>>> 재사용을 위한 SQL의 조건
①대.소문자 일치
②띄어쓰기 일치
③오브젝트 소유자 일치
2. 데이터 버퍼 캐쉬(Data Buffer Cashe) : 디스크에서 읽혀진 데이터가 저장되는 메모리 공간
3. 리두 로그 버퍼(Redo Log Buffer) : 복구를 위해 데이터의 변경 로그를 저장
>>> 선 로그 기법(Ahead Logging) : 변경 작업 중 장애가 발생하여도 복구를 할 수 있게 로그를 먼저 기록
4. 대형 풀(Large Pool) : 필수 영역은 아니나 공유 풀의 부하를 감소시킴
ⅰ)UGA (User Global Area)영역 저장 : PGA의 부분 집합(정렬 공간, 세션 정보, 커서 상태 정보)
공유 서버(MTS) 환경에서는 UGA가 공유 풀을 사용하는데 이를 방지하기 위해 대형 풀을 설정
ⅱ)RMAN(Recover Manager)의 정보 저장
ⅲ)병렬 프로세스(Parallel Processing)의 정보 저장
설정하지 않으면 병렬 프로세스 메시지(PX MSG)는 공유 풀을 사용
ⅳ)I/O 슬래이브 프로세스의 정보 저장
5. 자바 풀(Java Pool) : 자바 명령 구문을 분석할 때 사용하는 메모리 공간
*공유 메모리 자동 관라(Automatic Shared Memory Management, ASMM) 10g
오라클 10g의 새로운 기능으로 오라클의 MMAN 백그라운드 프로세스가 업무 부하를 판단하여 공유 풀, 데이터 버퍼 캐쉬, 대형 풀 및 자바 풀의 크기를 조정하는 기능
장점 ①메모리 관리 요소 감소
②메모리 사용 효율 증가
③메모리 부족으로 인한 에러 감소
고려사항 ①MMAN이 관리하지 않는 SGA 구성요소
②사용자가 MMAN이 관리하는 MMAN에 의해 관리되는 SGA 영역의 최소값 설정
[출처] PTW-1- Oracle Memory (SGA, PGA, UGA) |작성자 하늘아이
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 메모리 (0) | 2011.04.22 |
---|---|
오라클 내부의 구조 (0) | 2011.04.22 |
오라클 MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수 (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 사용 (0) | 2011.04.22 |
오라클(ORACLE) 아카이브 모드 (0) | 2011.04.22 |
설정
트랙백
댓글
글
[오라클 날짜함수: MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY]
1. select name, lastlogin, lastlogin+30, lastlogin-30, lastlogin+365,
lastlogin+5/24, lastlogin-8/24 from member where id = 'jsoh2';
--member테이블에서 id가 jsoh2위치하는 name, lastlogin 2개의 컬럼을 뿌려주고,
--lastlogin 컬럼의 값에 +30일을 출력, -30일을 출력, +365일을 출력,
--5시간 더한 값을 출력, 8시간 뺀 값을 출력
2. select months_between('2008/11/25', '2001/08/12') "기간" from dual;
--월 단위로 날짜 연산을 하는 함수
--개월간의 차이: 87.4193548387097개월, 약 87개월
3. SELECT ADD_MONTHS(SYSDATE,5) FROM DUAL;
--월 단위로 날짜 연산을 하는 함수
4. select ID, JOINDATE, MONTHS_BETWEEN(SYSDATE, JOINDATE) TENURE,
ADD_MONTHS(JOINDATE, 6) REVIEW FROM MEMBER
WHERE id = 'jsoh2' and MONTHS_BETWEEN(SYSDATE, JOINDATE) < 120;
--member테이블에서 id가 jsoh2위치하는 id, joindate 2개의 컬럼을 뿌려주고,
--tenure컬럼에는 현재날짜(sysdate)-회원가입한날(joindate)를 계산한 개월수 출력하고,
--review컬럼에는 회원가입한날(joindate)에서 6개월 이후의 값을 출력
5. select sysdate from dual;
--현재시간
6. SELECT SYSDATE TODAY, LAST_DAY(SYSDATE) LASTDAY FROM dual ;
--해당 날짜가 속한 달의 마지막 날짜를 반환하는 함수
7. SELECT NEXT_DAY(sysdate, 'sunday') from dual
--해당 일을 기준으로 명시된 요일의 다음 날짜를 변환하는 함수
※ 아래 이미지 3개는 전부 같은 내용을 담고 있다.
[날짜함수: MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY]
1번 출력결과 |
NAME | LASTLOGIN | LASTLOGIN+30 | LASTLOGIN-30 | LASTLOGIN+365 | LASTLOGIN+5/24 | LASTLOGIN-8/24 |
홍길동 | 2008-07-10 15:37:25 | 2008-08-09 15:37:25 | 2008-06-10 15:37:25 | 2009-07-10 15:37:25 | 2008-07-10 20:37:25 | 2008-07-10 07:37:25 | |
2번 출력결과 |
기간 | ||||||
1900-03-27 10:03:52 | |||||||
3번 출력결과 |
ADD_MONTHS(SYSDATE,5) | ||||||
2009-04-25 17:23:13 | |||||||
4번 출력결과 |
ID | JOINDATE | TENURE | REVIEW | |||
jsoh2 | 2008-07-10 15:36:35 | 1900-01-04 11:40:13 | 2009-01-10 15:36:35 | ||||
5번 출력결과 |
SYSDATE | ||||||
2008-11-25 17:23:13 | |||||||
6번 출력결과 |
TODAY | LASTDAY | |||||
2008-11-25 17:23:14 | 2008-11-30 17:23:14 | ||||||
7번 출력결과 |
NEXT_DAY(SYSDATE,'SUNDAY') | ||||||
2008-11-30 17:23:14 | http://blog.naver.com/agamaster |
[출력결과 이미지사이즈: 원본]
[SQL 결과]
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 내부의 구조 (0) | 2011.04.22 |
---|---|
PTW-1- Oracle Memory (SGA, PGA, UGA) (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 사용 (0) | 2011.04.22 |
오라클(ORACLE) 아카이브 모드 (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 (0) | 2011.04.22 |
설정
트랙백
댓글
글
아카이브모드 사용
파라미터파일(init[SID].ora)에 다음과 같이 지정한다. log_archive_start = true (자동 아카이브를 사용하겠음, ARCH백그라운드프로세스가 실행됨) log_archive_dest = "C:\Oracle\oradata\maddog\archive" (아카이브로그가 저장될 곳) log_archive_format = %%ORACLE_SID%%T%TS%S.ARC (파일이름을 어떤 식으로 할 것인가 지정) 이렇게 한 후, 데이터베이스를 시동하면 자동아카이빙으로 들어가게 된다. 오라클 8iEE(Enterprise Edition 8.1.xx버전이후로는 다음과 같이 사용할 것을 권고하고 있다.) log_archive_start가 true이면 온라인redolog파일이 full되었을 경우 자동으로 아카이빙을 처리할 수 있게 한다. log_archive_dest_1 = "location=C:\Oracle\oradata\maddog\archive" log_archive_dest_n에서 n은 5개까지 잡혀져 있다.
자동 아카이빙이란 online redo log파일이 full이되면 로그스위치가 발생한다. LGWR는 redo를 online redo log의 또 다른 set에 쓰기 시작한다. (즉, 다른 로그그룹에 쓴다.) 로그 스위치후, 체크포인트가 발생한다. LGWR는 DBWR에게 DB의 변경사항들을 포함하는 모든 버퍼에 있는 버퍼캐쉬의 내용을 디스크에 쓰도록한다. 또한 LOGWR는 로그스위치정보를 datafile의 헤더와 control파일에 쓴다. 자동 아카이빙을 설정했다면 마지막으로 ARCH백그라운드 프로세스가 online redo log를 LOG_ARCHIVE_DEST에 지정되어 있는 디렉토리로 복사한다. |
만약 수동으로 아카이브하려면 다음과 같이 해줘야 한다. 이것은 full된 online redo log파일을 아카이브한다. alter system archive log all to '/u01/oracle/arch' alter system archive log start(자동아카이빙사용)는 ARCHIVE_LOG_DEST에 지정된 디렉토리로 archive log파일을 기록한다. 만일 수동으로 위치를 지정하고 싶다면 다음과 같이 한다. alter system archive log start to '/u02/oracle/archive' SVRMGR> startup ORACLE 인스턴스가 시작되었습니다. 시스템 글로벌 영역 45487372 바이트 합계 Fixed Size 70924 바이트 Variable Size 28364800 바이트 Database Buffers 16973824 바이트 Redo Buffers 77824 바이트 데이터베이스가 마운트되었습니다. 데이터베이스가 열려졌습니다. SVRMGR> archive log list 데이터베이스 로그 모드 아카이브 모드가 아님 자동 아카이벌 사용 가능 아카이브 수신지 C:\Oracle\oradata\maddog\archive (ARCHIVE_LOG_DEST) 가장 오래된 온라인 로그 순차 1165 현재 로그 순차 1167 현재 위의 예에서 보듯이 DB가 아카이브 모드가 아니다. 데이터베이스 로그 모드'는 데이터베이스 생성시 지정해줘야 된다. default는 noarchivelog이다. create database .. [archivelog or noarchivelog] noarchivelog인 데이터베이스를 archivelog모드로 변경하기 위해선 다음과 같이 해야 한다. 1. 데이터베이스 인스턴스를 shutdown한다. 2. 데이터베이스를 백업한다.(DB변경사항이 있으면 하는 형식적인 절차이다.) 3. 데이터베이스 인스턴스를 start, mount한다.(open하지 않음) 만일 OPS(Oracle Parallel Server)를 사용한다면 exclusive하게 mount해야 한다. 4. 데이터베이스를 archivelog모드로 변경한다. SVRMGR> shutdown 데이터베이스가 닫혔습니다. 데이터베이스가 마운트 해제되었습니다. ORACLE 인스턴스가 종료되었습니다. SVRMGR> startup mount exclusive; ORACLE 인스턴스가 시작되었습니다. 시스템 글로벌 영역 45487372 바이트 합계 Fixed Size 70924 바이트 Variable Size 28364800 바이트 Database Buffers 16973824 바이트 Redo Buffers 77824 바이트 데이터베이스가 마운트되었습니다. SVRMGR> alter database maddog archivelog; 명령문이 처리되었습니다. SVRMGR> archive log list 데이터베이스 로그 모드 아카이브 모드 자동 아카이벌 사용 가능 아카이브 수신지 C:\Oracle\oradata\maddog\archive 가장 오래된 온라인 로그 순차 1165 다음 아카이브 로그 순차 1167 현재 로그 순차 1167 SVRMGR> alter database maddog open; 명령문이 처리되었습니다. 참조) 패러미터파일에서 log_archive_start = true을 설정하여 자동 아카이브를 사용할 수도 있으나, 서버관리자에서 archive log start로도 자동 아카이브를 사용할 수도 있다. SVRMGR> archive log list 데이터베이스 로그 모드 아카이브 모드가 아님 자동 아카이벌 사용 불가능 아카이브 수신지 C:\Oracle\Ora81\RDBMS 가장 오래된 온라인 로그 순차 1165 현재 로그 순차 1167 SVRMGR> alter system archive log start (alter system은 생략 가능하다) 명령문이 처리되었습니다. SVRMGR> archive log list 데이터베이스 로그 모드 아카이브 모드가 아님 자동 아카이벌 사용 가능 아카이브 수신지 C:\Oracle\Ora81\RDBMS 가장 오래된 온라인 로그 순차 1165 현재 로그 순차 1167 SVRMGR> alter system archive log stop (alter system은 생략 가능하다) 명령문이 처리되었습니다.
참조) log_archive_format에 대해 살펴보자. log_archive_format = %%ORACLE_SID%%T%TS%S.ARC %%ORACLE_SID은 자신의 SID가 될 것이다. 여기서는 maddog이 되겠다. %T: OPS(Oracle Parallel Server)안에 있는 instance의 redo log들에 대한 쓰레드번호. 좌측이 0으로 채워짐 %t: 상동. 좌측이 0으로 채워지지 않음 %S: 로그시퀀스번호. 좌측이 0으로 채워짐 %s: 상동. 좌측이 0으로 채워지지 않음 실제 위의 예에서 log_archive_format로 지정한 파일이름이 어떻게 생성되는지를 보자. |
SVRMGR> alter system switch logfile; 이 명령으로 archive log파일이 디스크에 기록되게 된다 명령문이 처리되었습니다. SVRMGR> archive log list; 데이터베이스 로그 모드 아카이브 모드 자동 아카이벌 사용 가능 아카이브 수신지 C:\Oracle\oradata\maddog\archive 가장 오래된 온라인 로그 순차 1166 다음 아카이브 로그 순차 1168 현재 로그 순차 1168 DB의 아카이브상태는 v$database뷰에서도 알수 있다. v$database는 또한 change-based복구에서 필요로 하는 SCN을 제공한다. 로그순차(log sequence)의 경우 v$log_history뷰에서도 알 수 있다. v$database의 정보는 control file에서 수집된 것이다. SQL> select * from v$database; DBID NAME CREATED RESETLOGS_CHANGE# RESETLOG PRIOR_RESETLOGS_CHANGE# ---------- --------- -------- ----------------- -------- ----------------------- PRIOR_RE LOG_MODE CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLF -------- ------------ ------------------ --------------- ------- -------- CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLF OPEN_RESETL VERSION_ --------------------- ------------------- -------- ----------- -------- OPEN_MODE ---------- 3524231243 MADDOG 00/09/03 1 00/09/03 0 ARCHIVELOG 83385621 161317 CURRENT 00/09/03 3554 83385621 00/11/07 NOT ALLOWED 00/09/03 READ WRITE SQL> SELECT * FROM V$LOG_HISTORY; RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TI NEXT_CHANGE# ---------- ---------- ---------- ---------- ------------- -------- ------------ 1 407369109 1 1 1 00/09/03 281 2 407369111 1 2 281 00/09/03 673 3 407369114 1 3 673 00/09/03 1248 4 407369119 1 4 1248 00/09/03 1740 5 407369121 1 5 1740 00/09/03 2339 6 407369124 1 6 2339 00/09/03 2929 7 407369127 1 7 2929 00/09/03 3442 . . 1165 407373591 1 1165 161240 00/09/03 161317 1166 407374000 1 1166 161317 00/09/03 181479 1167 412272843 1 1167 181479 00/09/03 182038 위의 명령실행후, C:\Oracle\oradata\maddog\archive에 가보면 다음과 같은 파일이 생긴것을 알 수 있다. MADDOGT001S01167.ARC 현재 활성화된 리두로그는 다음의 질의를 통해 알수 있다. 여기서 ARCHIVED(예제에서는 ARC로 이름이 짤렸다.)는 어떤 리두로그그룹이 archive되었는지 알 수 있다. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TI ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------- 1 1 1168 1048576 1 NO CURRENT 182038 00/10/29 2 1 1166 1048576 1 YES INACTIVE 161317 00/09/03 3 1 1167 1048576 1 YES INACTIVE 181479 00/09/03 SQL> select * from v$logfile; GROUP# STATUS MEMBER ---------- ------- ---------------------------------------- 1 C:\ORACLE\ORADATA\MADDOG\REDO01.LOG 2 STALE C:\ORACLE\ORADATA\MADDOG\REDO02.LOG 3 C:\ORACLE\ORADATA\MADDOG\REDO03.LOG 음.. v$log와 v$logfile을 group#으로 join key를 삼아서 join하면 좋겠군.. 패러미터파일(init.ora)의 LOG_ARCHIVE_DEST에 저장되는 아카이브된 redo로그들은 보통 오프라인상태인 테이프등에 백업받아 두는 것이 좋다. 만약 아카이브된 리두로그가 손상되었다면 손상된 리두로그 바로 전의 시점까지만 복구된다. 이런 상황에서는 단지 완벽하지 않은(incomplete) 복구를 할 수 밖에 없다. incomplete복구는 time-based, change-based, cancel-based가 있다. 2001-11-11 추가 아카이브된 리두로그(offline 리두로그라고도 함)파일들은 log_archive_dest에 쌓이게 되고 여기에 쌓인 파일들의 목록들은 v$archived_log에 기록된다. 2001-12-22 추가 패러미터파일(Init.ora)에서 아카이브관련된 이름은 log_archive_로 시작한다. SVRMGRL프롬프트상에서 아카이브에 관련된 이름은 archive log로 지정된다. 관련뷰: v$archived_log, v$logfile, v$log, v$log_history 2004-01-31 추가 9i부터는 다음과 같이 하면 된다. DB를 아카이빙이 사용할 디렉토리 지정 SQL> alter system set log_archive_dest='/u01/app/oracle/admin/dev/arch'; (오라클 재시작시 반영안됨) or SQL> alter system set log_archive_dest='/u01/app/oracle/admin/dev/arch' scope=both; (오라클 재시작시 반영됨) DB를 아카이브모드로 변경 SQL> alter database maddog archivelog; 자동 아카이빙 활성화 SQL> alter system archive log start; SQL> alter system set log_archive_start=true scope=spfile; (오라클 재시작시 반영되도록 함)[출처] 오라클(oracle) 아카이브모드 사용|작성자 하늘아이
'먹고살기 > Oracle' 카테고리의 다른 글
PTW-1- Oracle Memory (SGA, PGA, UGA) (0) | 2011.04.22 |
---|---|
오라클 MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수 (0) | 2011.04.22 |
오라클(ORACLE) 아카이브 모드 (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 (0) | 2011.04.22 |
오라클함수 TO_CHAR (datetime) (0) | 2011.04.22 |
설정
트랙백
댓글
글
1. 먼저, 아카이브 모드로 운영되는지 확인.(sqlplus 로 접속후 확인)
몇가지 방법이 있음…
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 214
Current log sequence 216SQL> select log_mode from v$database;
LOG_MODE
————
NOARCHIVELOG
2. 위를 보면 아카이브 모드가 아닌것을 알 수 있음.
3. spfile(server parameter file)로 부터 pfile(parameter file)생성.
SQL> create pfile=’$ORACLE_HOME/dbs/initfox.ora’
from spfile=’$ORACLE_HOME/dbs/spfilefox.ora’;
4. 위에서 생성한 pfile에 아래 사항을 추가(ARCHIVE_LOCATE는 다른 파티션에 잡아주는것이 좋다.)
*.log_archive_start=TRUE
*.log_archive_dest_1=’location=ARCHIVE_LOCATE’
*.log_archive_format=’SID_%s_%t_%r.arc’
5. 설정을 적용하기위해 데이타베이스를 재시작한다.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.SQL> startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.Total System Global Area 293601280 bytes
Fixed Size 1978144 bytes
Variable Size 125833440 bytes
Database Buffers 159383552 bytes
Redo Buffers 6406144 bytes
Database mounted.SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 215
Next log sequence to archive 217
Current log sequence 217
6. 아카이브로그가 생성되는지 확인해본다.
여기에서 문제가 발생했다. 아카이브 로그가 지정한 디렉토리에 생성되지 않고 USE_DB_RECOVERY_FILE_DEST에 생성이 되는 문제다. 여기에서 USE_DB_RECOVERY_FILE_DEST를 내가 원하는 디렉토리로 바꾸는 방법은?
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.Total System Global Area 293601280 bytes
Fixed Size 1978144 bytes
Variable Size 113250528 bytes
Database Buffers 171966464 bytes
Redo Buffers 6406144 bytes
Database mounted.
SQL> alter database noarchivelog;Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 217
Current log sequence 219
SQL>
일단 No archive mode로 바꾸고 난 후.
SQL> alter system
2 set log_archive_start = true
3 scope=spfile
4 ;
System altered.SQL> alter system
2 set log_archive_dest_1=’location=/export/home/oracle_archive’
3 scope=spfile;System altered.
SQL> alter system
2 set log_archive_format=’fox_%s_%t_%r.arc’
3 scope=spfile;System altered.
그 후에 데이타베이스를 재 시작 해 준다.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.SQL> startup mount
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /export/home/oracle_archive
Oldest online log sequence 217
Current log sequence 219
원하는 디렉토리로 바뀌었다.
다시 아카이브 모드로 바꿔준다.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /export/home/oracle_archive
Oldest online log sequence 217
Next log sequence to archive 219
Current log sequence 219
사실 , 처음에는 pfile을 이용하려고 했던 것인데, spfile을 이용해서 설정을 해 버렸다..
[출처] 오라클(ORACLE) 아카이브 모드|작성자 하늘아이
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 MONTHS_BETWEEN, SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수 (0) | 2011.04.22 |
---|---|
오라클(oracle) 아카이브모드 사용 (0) | 2011.04.22 |
오라클(oracle) 아카이브모드 (0) | 2011.04.22 |
오라클함수 TO_CHAR (datetime) (0) | 2011.04.22 |
[Oracle] distinct, rowid 중복제거, 최신 데이터 하나만 가져오기 (0) | 2011.04.15 |
RECENT COMMENT