번호   제목 닉네임 조회 등록일
114 Oracle expdp 로 백업하기
조인상
4364 2015-02-23
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ datapump 디렉토리 위치 지정 SQL> create or replace directory datapump as '/backup/expdp/'; system이 아닌 데이터 유저로 백업할 경우 해당 유저에 권한 부여. SQL> grant connect,resource,exp_full_database, imp_full_database to <유저명>; SQL> grant read,write in directory datapump to <유저명>; 백업스크립트 작성 #!/bin/ksh ##################################### ### ENV ############################# ##################################### # backup date DATE=`date '+%Y%m%d'` # backup destination DEST=/backup/expdp DMPFILE=${DATE}_full.dmp LOGFILE=${DATE}_full.log DP_DEST=datapump # ORACLE ENV export ORACLE_BASE=/oracle/app/oracle export ORACLE_SID=ORCL export ORACLE_HOME=$ORACLE_BASE/product/11.2.4 ##################################### ##################################### expdp system/manager full=y directory=${DP_DEST} dumpfile=${DMPFILE} logfile=${LOGFILE} job_name=full sleep 1 gzip ${DEST}/${DMPFILE} find ${DEST} -name *.gz -mtime +3 -exec rm {} \; find ${DEST} -name *.log -mtime +3 -exec rm {} \; attach mode 로 접속하기 $ expdp system/manager0 attach=full Export> - add_file : 덤프파일 추가 - exit : attach 모드 빠져나감 - kill_job : 해당 작업 종료(작업중인 파일도 삭제 됨) - parallel : 병렬수행 프로세스 조정 - start_job : 중단되었던 job 재실행 - status : 현재 작업상태 보기 - stop_job : 해당 작업 일시중지
113 ORA-28040 : No matching authentication protocol
조인상
6449 2014-11-13
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 28040, 0000, "No matching authentication protocol" // *Cause: There was no acceptable authentication protocol for // either client or server. // *Action: The administrator should set the values of the // SQLNET.ALLOWED_LOGON_VERSION_SERVER and // SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameters, on both the // client and on the server, to values that match the minimum // version software supported in the system. // This error is also raised when the client is authenticating to // a user account which was created without a verifier suitable for // the client software version. In this situation, that account's // password must be reset, in order for the required verifier to // be generated and allow authentication to proceed successfully. 원인 : 서버/클라이언트간 인증 프로토콜 차이 서버의 sqlnet.ora 파일에 SQLNET.ALLOWED_LOGON_VERSION = 9 라인 추가.
112 ORA-28002 : the password will expired within N days
조인상
7605 2014-01-09
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ ORA-28002 : the password will expired within N days 오라클 11g 부터 기본 패스워드 만료정책이 180일로 바뀌었기 때문. 1. 패스워드 만료정책을 무제한으로 변경 alter profile default limit password_life_time unlimited; 2. 변경된 만료정책을 조회 select resource_name,limit from dba_profiles where profile='DEFAULT' and resource_type='PASSWORD';
111 REDO 로그 그룹의 용량을 늘리기 [1]
조인상
10707 2013-05-22
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 예) 현재 리두로그 그룹이 2개에 멤버가 각각 2개씩. 10MB 인데, 30MB의 멤버 3개를 가진 2개의 멤버환경으로 바꾸고자 할 경우 group 1 : /redo/redo1_1.rdo, /redo/redo1_2.rdo group2 : /redo/redo2_1.rdo, /redo/redo2_2.rdo 먼저 DB shutdown 및 mount 단계로 올림 SQL> shutdown immediate; SQL> startup mount; 현재 리두로그 그룹을 조회한다. SQL> select a.group#,a.member,b.bytes,b.status from v$logfile a,v$log b where a.group#=b.group#; GROUP# MEMBER BYTES STATUS ---------- ---------------- 1 /redo/redo1_1.rdo 536870912 CURRENT 1 /redo/redo1_2.rdo 536870912 CURRENT 2 /redo/redo2_1.rdo 536870912 INACTIVE 2 /redo/redo2_2.rdo 536870912 INACTIVE 여기서 INACTIVE 되어있는 redolog group 만 제거 할 수 있다. 3번째 group을 임의로 생성한다. SQL> alter database add logfile group 3 ('/redo3_1.rdo','/redo/redo3_2.rdo) size 20M; INACTIVE인 redo log group 2을 제거한다. SQL> alter database drop logfile group 2; 1번 그룹을 수정하기 위해서 로그스위치 발생시킨다. SQL> alter database open; SQL> alter system switch logfile; SQL> select a.group#,a.member,b.bytes,b.status from v$logfile a,v$log b where a.group#=b.group#; GROUP# MEMBER BYTES STATUS ---------- ---------------- 1 /redo/redo1_1.rdo 536870912 INACTIVE 1 /redo/redo1_2.rdo 536870912 INACTIVE 3 /redo/redo3_1.rdo 536870912 CURRENT 3 /redo/redo3_2.rdo 536870912 CURRENT 1번 그룹을 삭제한다. SQL> alter database drop logfile group 1; 당초 목적에 맞게 1,2번 그룹을 생성한다. SQL> alter database add logfile group 1 ('/redo1_1.rdo','/redo/redo1_2.rdo','/redo/redo1_3.rdo') size 30M; SQL> alter database add logfile group 2 ('/redo2_1.rdo','/redo/redo2_2.rdo','/redo/redo2_3.rdo') size 30M; 다시 로그스위치 발생을 위해서 재기동 SQL> shutdown immediate; SQL> startup mount; 임시로 만든 3번 그룹 삭제 SQL> alter database drop logfile group 3; 정상기동 후 확인 SQL> alter database open; SQL> select a.group#,a.member,b.bytes,b.status from v$logfile a,v$log b where a.group#=b.group#; GROUP# MEMBER BYTES STATUS ---------- ---------------- 1 /redo/redo1_1.rdo 536870912 INACTIVE 1 /redo/redo1_2.rdo 536870912 INACTIVE 1 /redo/redo1_3.rdo 536870912 INACTIVE 2 /redo/redo2_1.rdo 536870912 CURRENT 2 /redo/redo2_2.rdo 536870912 CURRENT 2 /redo/redo2_3.rdo 536870912 CURRENT
110 checkpoint not complete에 대해서 secret
조인상
  2013-05-21
조회할 수 있는 권한이 없습니다.
109 Oracle Database 10g: New Features for Oracle8i OCPs
조인상
9984 2013-05-13
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ Oracle Database 10g: New Features for Oracle8i OCPs : 1Z0-045
108 SQL developer 실행시 jvm.dll 오류 발생 조치 방법
조인상
14845 2013-01-22
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ java가 포함된 SQL developer 버전을 다운받고 압축만 해제하여 사용하면 굳이 PC에 java를 설치하지 않아도 SQL Developer를 사용할 수 있다. 만약 실행시 jvm.dll 에러가 발생한다면 java heap 메모리가 부족하기 때문. 설치위치/ide/bin/ide.conf 파일에서 다음과 같이 AddVMOption -Xmx640M Default 값 640M으로 되어있는 부분을 줄여준다. 512M, 256M 등으로 순차적으로 줄여보면 된다. # # If you are getting the 'Low Memory Warning' Message Dialog while running # JDeveloper, please increase the -Xmx value below from the default 768M to # something greater, like 1024M or 1250M. If after increasing the value, # JDeveloper is no longer starting up because it fails to create a virtual # machine, then please reduce the modified -Xmx value. # AddVMOption -Xmx256M #AddVMOption -Xmx640M #AddVMOption -Xms128M
107 Orace Lisence 정책
조인상
9265 2013-01-22
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 출처 : http://ttend.tistory.com/2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1) Express Edition - CPU 지원 갯수 : 1 - 운영체제 : 32비트 Linux / windows (64bit 불가) - 데이터 지원크기 : 4GB - 메모리 지원크기 : 1GB - oracle XE라고도 함 - 학생, 개발자 등 오라클 DB를 이용한 애플리케이션 개발, 구축 실습 등을 위한 제품 - 무료버전 2) Personal Edition - CPU 지원 갯수 : 1 - 운영체제 : 32비트 Linux / windows (64bit 불가) - 데이터 지원크기 : 4GB - 메모리 지원크기 : 1GB - CPU 갯수와 상관없이 단일 사용자만 사용가능 - 모든 오라클 DB 제품과 호환 가능 - 단일 PC에서 네트워크 연결없이 사용(외부연동 안됨) - 약 500,000 ~ 700,000원 가격대 3) Standard Edition One - CPU 지원 갯수 : 2 - 운영체제 : 모든 운영체제 - 데이터 지원크기 : 500GB - 최대 2개의 프로세서를 장착한 서버에만 적용 (2 Processor까지 확장가능한 서버급) - 소규모 기업, 사업부, 분산된 지점 환경에 적합 - RAC 지원 안됨 - 400명 미만의 조직 또는 독립업무 서버로 적당 4) Standard Edition - CPU 지원 갯수 : 4 - 최대 4개의 프로세서를 장착한 서버에만 적용 (4 Processo 까지 확장가능한 서버급) - 매우 낮은 비용으로 RAC(Real Application Cluster)를 사용가능 - 중소규모 기업, 사업부, 분산된 지점 환경에 적합 5) Enterprise Edition - CPU 지원 갯수 : 제한없음 - 운영체제 : 모든 운영체제 - 데이터 지원크기 : 무제한 - 메모리 지원크기 : 무제한 - 최고의 성능과 확장성, OLTP상의 안전성, 의사결정지원 기능 - 다양한 Option 및 Pack을 구매함으로써 그 기능을 개선할 수 있다. - 대기업에 적합한 제품으로 고가용성, 성능, 확장성, 보안성, 자체 관리면에서 최고의 성능을 발휘 - Processor당 $40,000, User 당 # Standard Edition One과 Standard Edition에서 말하는 최대 Processor는 서버의 메인보드 소켓 기준. 즉, 8소켓까지 장착가능한 서버에 현재 4개의 CPU가 장착되어 있어도 standard 버전은 사용할 수 없다 # Standard 제품으로 RAC을 구성할 때 두 서버의 CPU 합이 4개 이하여야 한다.( 2 CPU서버 * 2대) * 오라클 라이센스 산정방법 1) Named User Plus - User는 DB에 대한 동시접속자가 아닌, DB에 접속하는 사용자 개념 - 1 CPU당 최소 10 Named User Plus 단위로 구매 - 실사용 User 수가 많을 경우 사용 User로 산정 - 2 CPU에 실사용 User 수가 30명일 때 = 30 User - 2 CPU에 실사용 User 수가 15명일 때 = 20 User - Standard one은 장착 CPU당 최소 5 user - Standard는 장착 CPU당 최소 10 user - Enterprise는 장착 CPU당 최소 25 user 2) Processor License - 1 CPU당 Processor 단위로 구매 (unlimited) - 웹서비스나 사용 User 수가 많은 경우 (불특정 다수) * 통상 50 Named User Plus 와 1 Processor License 의 가격을 같이 본다.
106 SQL study - 특정열 앞에 순차적인 값 붙여 나열하기
조인상
11107 2012-11-23
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 숙제) scott 유저의 emp 테이블의 PK인 empno 컬럼의 값을 겹치지 않도록 1~9 까지의 숫자를 앞에 붙여 insert 하라 1~9 숫자를 생산 select level depth_level from dual connect by level <= 9 결과---- 1 2 3 4 5 6 7 8 9 empno 컬럼에 1~9 숫자 붙이기 select depth.depth_level || emp.empno result from emp , (select level depth_level from dual connect by level <= 9) depth; 실제 insert insert into emp select depth.depth_level || emp.empno result,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.comm,emp.deptno from emp , (select level depth_level from dual connect by level <= 9) depth;
105 datafile, redolog, controlfile 위치 변경하기
조인상
16550 2012-08-02
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 모든 데이터파일, 온라인리두로그파일, 컨트롤파일의 위치를 변경하기 예) 기존 파일들의 위치 : /old 변경할 위치 : /new 일 경우 1. controlfile의 위치를 변경 alter system set control_files = '/new/control/control01.ctl','/new/control/control02.ctl','/new/control/control03.ctl' scope=spfile; 2. DB 정지 SQL> shutdown immediate 3. 모든 파일들을 복사 # cp /old/* /new/ 4. DB start(mount) SQL> startup mount; SQL> start rename_files.sql; -- 다음의 스크립트를 작성하여 실행시킨다. -- rename_files.sql ------------------------------------------------------------------------------ alter database rename file '/old/SYSTEM01.DBF' to '/new/SYSTEM01.DBF'; alter database rename file '/old/UNDOTBS01.DBF' to '/new/UNDOTBS01.DBF'; alter database rename file '/old/CWMLITE01.DBF' to '/new/CWMLITE01.DBF'; alter database rename file '/old/DRSYS01.DBF' to '/new/DRSYS01.DBF'; alter database rename file '/old/EXAMPLE01.DBF' to '/new/EXAMPLE01.DBF'; alter database rename file '/old/INDX01.DBF' to '/new/INDX01.DBF'; alter database rename file '/old/ODM01.DBF' to '/new/ODM01.DBF'; alter database rename file '/old/TOOLS01.DBF' to '/new/TOOLS01.DBF'; alter database rename file '/old/USERS01.DBF' to '/new/USERS01.DBF'; alter database rename file '/old/XDB01.DBF' to '/new/XDB01.DBF'; alter database rename file '/old/REDO03.LOG' to '/new/REDO03.LOG'; alter database rename file '/old/REDO02.LOG' to '/new/REDO02.LOG'; alter database rename file '/old/REDO01.LOG' to '/new/REDO01.LOG'; --------------------------------------------------------------------------------------------------- 5. DB start(open) 및 확인 SQL> alter database open; SQL> select name from v$datafile; // 데이터파일 위치 SQL> select * from v$logfile; // 리두로그파일 위치 SQL> select * from v$controlfile; // 컨트롤파일 위치 추가) TEMP 테이블스페이스 이동 시키기 TEMP 테이블스페이스에 속해있는 데이터파일은 속성이 TEMP라서 alter database rename file 명령어로 이동시킬수 없다. 그러므로 새로운 TEMP 테이블스페이스를 생성하고 기존 테이블스페이스를 제거하는 순으로 이동을 시켜야 한다. * database open 상태에서 수행 - 제거할 기존 테이블스페이스 확인 : TEMP select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; PROPERTY_NAME PROPERTY_VALUE DESCRIPTION ------------------------------------ DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace - 새로운 TEMP 테이블스페이스와 데이터파일 생성 SQL> create temporary tablespace temp02 tempfile '/new/temp02.dbf' size 40M autoextend on next 5M maxsize unlimited extent management local uniform size 1M; SQL> alter database default temporary tablespace temp02; - 기존 테이블스페이스 제거 SQL> drop tablespace temp; - 결과 확인 select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; PROPERTY_NAME PROPERTY_VALUE DESCRIPTION ------------------------------------ DEFAULT_TEMP_TABLESPACE TEMP02 Name of default temporary tablespace
104 Introduce Oracle ExaData
조인상
10280 2012-05-24
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ Members only : http://www.ischo.net/7619
103 ASM 정리자료
조인상
11009 2012-04-26
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ ASM 정리자료 Members : http://www.ischo.net/7484
102 ORA-01555 : snapshot too old: rollback segment number %s with name \"%s\" too small image
조인상
13980 2012-04-10
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 출처 : https://kr.forums.oracle.com/forums/thread.jspa?messageID=1661043& +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 01555, 00000, "snapshot too old: rollback segment number %s with name \"%s\" too small" // *Cause: rollback records needed by a reader for consistent read are // overwritten by other writers // *Action: If in Automatic Undo Management mode, increase undo_retention // setting. Otherwise, use larger rollback segments ORA-1555 원인 분석 및 조치 사항 게시일: 2007. 1. 28 오후 11:57 댓글 제품 : ORACLE SERVER 작성날짜 : 2003-06-10 PURPOSE query시 발생하는 ORA-1555의 발생 원인과 조치 사항에 대해서 자세히 살펴 본다. Explanation ORA-1555가 발생하는 원인은 여러가지가 있지만 기본적으로는 사용자가 필요로 하는 롤백 세그먼트의 정보가 다른 트랜잭션에 의해 overwrite되어, 존재하지 않을 때 발생한다. 이 문서를 읽기 전에 기본적으로 알아야 하는 오라클의 read consistency와 관련된 다음 내용들은 이 문서의 마지막에 별첨으로 용어 및 개념에 대해 설명 하였으므로 참고할 수 있다. (1) SCN (System Change Number) (2) statement-read level read consistent (3) read consistent snapshot (4) rollback segment의 wrap around/overwrite ORA-1555에 관한 자세한 설명에 앞서, 데이타 블럭과 롤백 세그먼트 사이의 구조에 대해 간단히 알아보도록 한다. 데이타 블럭의 헤더에는, 이 블럭 내에 포함된 데이타를 변경한 트랜잭션의 정보와, 롤백 세그먼트 내의 해당 active transaction을 가리키는 영역이 존재한다. 롤백 세그먼트는 세그먼트의 첫 번째 블럭을 헤더 블럭으로 사용하는데, 그 안에 이 롤백 세그먼트를 최근에 사용한 트랜잭션들의 정보와, undo record들이 저장되어 있는 롤백 세그먼트 내의 주소가 저장되어 있는 트랜잭션 테이블이 포함되어 있다. 다음 예의 그림을 통해 다음과 같은 사항을 알 수 있다. (1) 데이타 블럭 500번지의 row 2를 변경한 xid1 트랜잭션은 아직 commit 되지 않은 상태이다. 블럭의 헤더에는 트랜잭션이 아직 commit되지 않았다는 정보와 5번 롤백 세그먼트 헤더 내의 3번째 엔트리에 트랜 잭션의 정보와, undo record를 얻을 수 있는 자세한 정보가 있음을 알려준다. (2) 롤백 세그먼트 5번의 3번째 슬롯은 이 트랜잭션이 변경한 undo record가 롤백 세그먼트내의 7109번지에 저장되어 있음을 나타낸다. 2, 4, nn번 엔트리의 경우는 이미 트랜잭션이 commit되었으므로, 다른 트랜잭션이 이 엔트리를 overwrite할 수 있다. (3) xid1 트랜잭션에 의해 변경된 undo record가 포함되어 있는 6900, 7109 블럭은 link로 연결되어 있어 xid1 트랜잭션이 변경한 모든 record들의 before image를 구성할 수 있다. Data Block 500 Rollback Segment Header 5 +------+-----------+---+ +----+------+----------+------+ tx uncommitted 5,3 ----+ 01 xid4 ACTIVE 9012 +------+-----------+---+ | | 02 | xid9 | COMMITTED| 8100 | | row 1 | --->| 03 | xid1 | ACTIVE | 7109 |--- | row 2 changed | | 04 | xid2 | COMMITTED| 7632 | | ... .. .. ... ... 5098 row n nn xidm COMMITTED 6777 ---------------------- +----+------+----------+------+ | Block 6900 Block 7109 | ------------- ------------- | | xid1 |<----+ | xid1 |<----+ | | | | | undo record undo record +------- 6900 ------------- ------------- rollback segment block rollback segment block ORA-1555가 발생하는 주요 원인과, 이 오류 발생을 최소화할 수 있는 방법은 다음과 같다. 1. 데이타베이스에 변경을 가하는 트랜잭션은 많고, 롤백 세그먼트는 크기도 작고, 갯수도 적은 경우 다음과 같은 상황을 가정할 수 있다. (1) 약 30분이 걸려서 A 테이블의 대부분을 읽어야 하는 긴 query 하나를 수행시켰다. 이 때의 SCN이 10이었다. (2) 위의 query가 결과값을 찾고 있는 동안, xid1 트랜잭션은 A 테이블에 대해서 update작업을 수행하고 commit하여 A table이 저장되어 있는 블럭 중 하나인 500번지 블럭의 SCN이 20으로 변경되었다 (3) query가 진행중인 동안 매우 많은 트랜잭션들이 database를 변경하고 commit하였다. (4) 이 query가 500번지 블럭을 읽고자 할 때 SCN이 20임을 확인하고, xid1 트랜잭션에 의해 변경된 undo record를 찾기 위해 롤백 세그먼트를 참조하였다. (5) 그러나 xid1 트랜잭션은 이미 commit된 상태이고, query가 진행되는 동안 매우 많은 트랜잭션이 데이타베이스 변경 작업을 수행한 결과 롤백 세그먼트내의 xid1 트랜잭션의 undo record가 저장되어 있는 블럭이 다른 트랜잭션들에 의해 overwrite된 상태였다. (6) ORA-1555가 발생한다. 해결 방법: (1) 롤백 세그먼트의 크기를 크게 하고 갯수를 늘리면, 롤백 세그먼트가 wrap around/overwrite되는 주기가 늦추어진다. (2) 트랜잭션의 수행이 많은 때에는 수행 시간이 오래 걸리는 query 문은 수행시키지 않도록 한다. 2. fetch across commit 프로그램내에서 cursor를 선언하고 loop를 수행하면서 fetch하고 데이타를 변경하는 경우 많은 프로그래머들은 롤백 세그먼트의 사용량을 줄이기 위해서 매 loop시마다 commit을 한다. 그러나 cursor의 loop내에서 commit하는 것은 ANSI standard에서는 제공하는 것이 아니며, ORA-1555를 발생시킬 가능 성이 있다. ORA-1555가 발생하는 경우는 (1)의 경우와 유사하다. cursor는 선언하고, open시에 데이타를 읽는 것이 아니고 fetch 때마다 읽게 되므로 fetch를 수행하는 것은 long query를 시작하는 것과 같다. 즉, fetch문의 loop를 수행하는 동안, 처음 fetch문 수행시점의 SCN보다 작거나 같은 SCN의 데이 타를 읽어야 한다. 그런데 loop 수행시마다 데이타를 변경하고 commit하게 되면, commit한 block의 SCN은 증가되고 변경된 정보도 다른 트랜잭션에 의해 재사용되어질 수 있다. 이렇게 블럭은 변경되었으나, 변경된 정보가 이미 다른 트랜잭션에 의해 overwrite된 블럭의 데이타를 fetch하고자 하면, 오라클은 read consistent snapshot을 구성할 수 없게 되므로 ORA-1555가 발생하게 된다. 해결 방법: (1) cursor 내에서 commit하는 횟수를 줄인다. 예를 들어 첨자를 이용해 5만건에 한번씩 commit할 수 있으며, 이렇게 되면 5만건의 데이타를 저장할 수 있는 큰 롤백 세그먼트가 있어야 한다. (2) cursor 선언 시 구성될 active set의 범위를 줄인다. 즉 한번에 모든 데이타를 읽어 처리하기 보다는, where절을 이용하여 데이타를 나누어, 여러번에 걸쳐 수행한다. (3) 1번의 경우와 마찬가지로, commit된 정보가 overwrite되는 주기를 늦추기 위해서 롤백 세그먼트의 갯수를 증가시키고 그 크기도 크게하면 도움이 된다. 3. delayed block clean out 오라클은 기본적으로 transaction이 commit하면, fast commit을 수행한다. 즉, 트랜잭션이 데이타를 변경시키고 commit하면, 변경된 데이타 블럭의 header부분에 트랜잭션이 commit되었음을 기록하는 것이 아니고 일단 롤백 세그먼트의 헤더부분에만 commit되었음을 기록한다. 이 후 그 데이타 블럭을 다른 트랜잭션이 access하게 되면, 그때 롤백 세그먼트의 정보를 이용하여 데이타 블럭에 commit된 상태를 반영하여 clean out시키는 것을 delayed block clean out이라고 한다. 이 delayed block clean out이 어떻게 ORA-1555를 발생하게 되는지 다음의 상황을 살펴보면 된다. (1) 다음과 같은 초기 상태를 가정할 수 있다. 500번지 데이타 블럭의 데이타를 변경하는 트랜잭션은 존재하지 않고, rollback segment 5번 header의 3, 4, nn번째 트랜잭션 엔트리는 다른 트랜잭션에 의해 재사용되어 질 수 있다. Data Block 500 Rollback Segment Header 5 +-------+-------------+ +----+------+-------------------+ tx none 01 xid4 ACTIVE +-------+-------------+ | 02 | xid9 | ACTIVE | row 1 03 xid7 COMMITTED row 2 04 xid2 COMMITTED ... .. .. ... ... row n nn xidm COMMITTED --------------------- +----+------+-------------------+ (2) xid1 트랜잭션이 update문을 이용하여 500번지 데이타 블럭의 2번째 데이타를 변경하였다. 500번지 데이타 블럭의 헤더에는 xid1 트랜잭션의 정보가 저장되고, 롤백 세그먼트 5번의 트랜잭션 슬롯 3 (5,3)을 가리키게 된다. COMMITTED로 표시 되었던 트랜잭션 슬롯 3번은 이제 ACTIVE 상태로 변경되었다. Data Block 500 Rollback Segment Header 5 +-------+-------------------+ +----+------+-------------------+ xid1 5.3uncommitted ----+ 01 xid4 ACTIVE +-------+-------------------+ | | 02 | xid9 | ACTIVE | row 1 +---> 03 xid1 ACTIVE row 2 changed 04 xid2 COMMITTED ... .. .. ... ... row n nn xidm COMMITTED --------------------------- +----+-------+------------------+ (3) xid1 트랜잭션이 commit을 수행하였다. 오라클은 롤백 세그먼트 헤더의 트랜잭션 테이블에서 xid1 트랜잭션의 정보를 찾아서 commit되었다고 기록하였다. 그러나 500번지 블럭의 헤더에는 commit 되었다는 정보를 기록하지 않는다. (fast commit) Data Block 500 Rollback Segment Header 5 +-------+-------------------+ +----+-------+------------------+ xid1 5.3uncommitted ----+ 01 xid4 ACTIVE +-------+-------------------+ | | 02 | xid9 | ACTIVE | row 1 +---> 03 xid1 COMMITTED row 2 changed 04 xid2 COMMITTED ... .. .. ... ... row n nn xidmm COMMITTED --------------------------- +----+-------+------------------+ (4) 데이타베이스에 변경을 가하는 매우 많은 트랜잭션이 수행되었다. 매우 많은 트랜잭션이 수행되어 롤백 세그먼트 헤더내에 있는 트랜잭션 테이블 의 엔트리가 대부분 재사용되었다. 트랜잭션 xid50이 롤백 세그먼트 5번의 3번째 슬롯이 COMMITTED로 표시되어 있으므로, 비어있는 엔트리로 인식하여 xid50에 관한 정보를 저장하였다. Data Block 700 Rollback Segment Header 5 +-------+-------------------+ +----+-------+------------------+ xid50 5.3uncommitted ----+ 01 xid31 COMMITTED +-------+-------------------+ | | 02 | xid46 | ACTIVE | row 1 changed +---> 03 xid50 ACTIVE row 2 04 xid60 COMMITTED ... .. .. .. ... row n nn xidmm ACTIVE --------------------------- +----+-------+------------------+ (5) 다른 트랜잭션이 데이타 블럭 500번지를 방문하였다. 새로운 트랜잭션인 xid70 트랜잭션이 500번지 블럭을 읽고자 하였다. (3)번의 그림에서 보듯이, 500번지 블럭 헤더에는 아직 commit되지 않은 트랜잭션이 이 블럭을 변경하였으며, before image를 구성할 수 있는 정보가 롤백 세그먼트 5번, 엔트리 3번에 있음을 나타낸다. 그러나 5번 롤백 세그먼트 헤더 내에 있는 트랜잭션 테이블의 3번 슬롯은 xid1번이 아닌 xid50번의 정보가 저장되어 있다. 즉, delayed block cleanout이 이루어지기 전에 롤백 세그먼트 헤더가 overwrite 된 것이다. (6) xid7 트랜잭션은 read consistent snapshot을 구성할 수 없으므로 ORA-1555가 발생한다. 해결 방법: (1) ORA-1555를 발생시킬 상황 이전에 읽고자 하는 테이블에 대해 full scan을 실시한다면, 롤백 세그먼트안의 정보가 overwrite되기 전에 delayed block cleanout이 이루어지도록 할 수 있다. (2) 1 ~ 4번의 모든 원인에 대해서 롤백 세그먼트를 크게 유지하면, 롤백 세그먼트의 정보가 overwrite되는 주기를 늦출 수 있어 ORA-1555를 피하는 데 도움이 될 수 있다. 4. OPTIMAL 크기가 아주 작을 때 롤백 세그먼트는 트랜잭션의 사용에 의해 한번 크기가 늘어나면 기본적으로 그 롤백 세그먼트를 지우고 다시 만들기까지는 크기가 줄어들지 않는다. 그러나 optimal size를 지정하게 되면, 롤백 세그먼트에서 새로운 extent를 요구하는 시점에, 현재 할당된 롤백 세그먼트의 크기와 optimal에 지정된 크기를 비교하게 된다. 할당된 공간이 optimal 크기보다 큰 경우, 할당된 extent중 active한 트랜잭션이 사용하고 있지 않은 extent들은 release시켜, 롤백 테이블스페이스의 공간으로 환원된다. 그러므로 이 optimal size가 지나치게 작다면, 트랜잭션이 commit되자마자 롤백 세그먼트 내의 정보는 잃게 될 것이다. 그러나, 위의 1 ~ 4번에서 살펴보 았듯이 이미 commit된 트랜잭션의 정보라 하더라도 이후에 필요하게 되는 경우가 발생하므로 이렇게 빈번히 commit된 트랜잭션의 정보가 포함되어 있는 롤백 세그먼트의 extent를 release시키는 것은 바람직하지 않을 수 있다. 해결 방법: (1) optimal을 지정할 때는 20개의 extents정도의 크기정도로 지정하는 것이 적당하며, 그것보다 더 작게 지정하지 않도록 한다. (2) 롤백 세그먼트를 많이 필요로 하는 batch job의 경우 set transaction use rollback segment rollback_segment_name; 구문을 이용하여 특정 롤백 세그먼트를 사용하게 하고 나머지 롤백 세그먼트들은 OLTP job이 사용하도록 한다. 이렇게 하면 OPTIMAL을 지정하지 않아도 모든 롤백 세그먼트가 불필요하게 확장되는 일을 막을 수 있다. 별첨: 용어 및 기본 개념 설명-------------------------------------------------------- (1) SCN(System Change Number) 오라클은 특정한 시점의 데이타베이스 상태를 SCN으로 관리한다. 트랜잭션이 commit되면, SCN은 최근의 SCN 보다 크고 유일한 값이 할당되며, 이 값은 그 트랜잭션이 변경시킨 블럭에 반영되고, 그 데이타화일의 가장 최근의 SCN은 데이타화일의 헤더(header)에 기록된다. (2) statement-level read consistent 하나의 query는 그 query가 시작되어 데이타를 읽기 시작하면, 모든 데이타를 읽어 query가 끝날 때까지 일관된 상태를 유지한다. 즉 query가 진행되는 동안 다른 트랜잭션이 읽고자하는 데이타를 변경하더라도 그 query는 변경 이전의 데이타 값을 읽게 된다. 데이타들이 query가 시작될 때와 같은 시점인지는 SCN을 통해 관리된다. 즉 SCN이 10인 상태에서 query가 시작되었다면 query가 진행되는 동안 항상 SCN이 10이하 상태의 데이타만을 읽게 되며, 이것은 롤백 세그먼트(rollback segment) 를 이용하여 read consistent snapshot을 구성함으로써 가능하다. (3) read consistent snapshot (read consistent view) 트랜잭션이 변경작업을 수행할 때 마다, 오라클은 변경 작업이 이루어지기 전의 before image(snapshot)을 롤백 세그먼트에 저장해둔다. 한 트랜잭션이 commit되기 전에 변경된 데이타를 다른 트랜잭션이 읽거나 수정하고자 한다면, 롤백 세그먼트의 정보를 이용하여 read consistent snapshot을 구성한 후 이 데이타값을 이용하여 operation을 수행한다. 또한 (2)에서 설명한 statement-level read consistent를 이루기 위해서도 query가 진행되는 동안 읽고자 하는 블럭의 SCN이 증가하면, 롤백 세그먼트의 정보를 이용하여 원하는 SCN상태의 read consistent snapshot을 구성한 후 데이타를 읽게 된다. (4) rollback segment의 wrap around/overwrite 롤백 세그먼트는 하나의 롤백 세그먼트를 여러개의 트랜잭션이 함께 사용하며, 하나의 extent도 여러개의 트랜잭션이 동시에 사용가능하다. 단 각 블럭은 하나의 트랜잭션에 할당된다. 트랜잭션들이 사용 중인 extent에 정보를 저장 하고 다음 extent가 필요하면, 해당 롤백 세그먼트에 이미 할당되어 있는 다음 extent가 active한 undo 정보를 가지고 있는지를 검사한다. active한 undo 정보를 담고 있지 않은 다음 extent가 current extent가 되며, 트랜잭션들은 이 extent에 undo image를 저장한다. 할당된 맨 마지막 extent를 확인하게 되면, 다시 첫번째 extent부터 extent로 돌아와 다시 사용하는 것을 wrap around라고, 모두 commit된 트랜잭션의 정보만 담고 있는 extent는 overwrite 된다. 이렇게 롤백 세그먼트의 undo image를 담고 있는 블럭 뿐 아니라 롤백 세그먼트 헤더 내의 트랜잭션 테이블의 엔트리도 wrap around/overwrite될 수 있다. 트랜잭션 테이블은 고정된 수의 엔트리를 가지고 있으며, 트랜잭션이 이미 COMMITTED된 엔트리는 비어있는 것으로 인식하여 다음 트랜잭션이 사용 가능하게 된다. ================================================================================================== * 두번째 수집자료 ORA-1555 : snapshot too old (rollback segment too small) 이러한 문제는 "활동중"인 데이타의 정의로 부터 발생한다. 그림 7-4의"Transaction A"라고 하는 커다란 트랜잭션을 생각해보자. 만약 긴 질의가 동일한 Transaction A에 접근하려한다면 Transaction A의 롤백 세그먼트 엔트리에 의해 저장된 데이타블럭을 사용할 필요가 있다. 그러나 일단 Transaction A가 완수되면 이러한 블럭은 "비활동"으로 표시된다. 이들 블럭은 그러면 다른 트랜잭션에 의해 덮어쓰기 될 것이다. 이들 블럭상에서의 별도의 길다란 질의가 끝나지 않았다 하더라도 상황을 변하지 않는다. 이미 덮어쓰기가 된 블럭을 일고자 하는 질의는 실패로 끝날 것이다.이러한 상황이 그림 7-5에 나타나 있다. 질의열의 실패에 대한 두가지 진정한 이유를 파악하는 것이 가능하다. 첫째 긴 질의열은 데이타 조작 트랜잭션과 동일한 시간에 진행된다. 다시 말해서 데이타베이스에서는 배치 프로세싱과 온라인 프로세싱이 동시에 진행된다는 것이다. 롤백 세그먼트의 기능에 대해 앞에서 했던 논의로 부터 이 전략이 가지고 있는 문제가 분명하게 드러난다: Extent1\tExtent2\tExtent3\tExtent4\tExtent5\tExtent6\tExtent7 \t\tTransaction A extent1\tTransaction A extent2\tTransaction A extent3 \tTransaction A extent4\tTransaction A extent5 (a)Transaction A 가 진행중임 : 그 데이타는 커다란 질의에 의해 사용됨 Extent1\tExtent2\tExtent3\tExtent4\tExtent5\tExtent6\tExtent7 Transaction B, extent 1\t\tOLD Transaction A, extent 1\tOLD Transaction A, extent 2\tOLD Transaction A, extent 3\t0LD Transaction A, extent 4\tOLD Transaction A, extent 5 (b) Transaction A 완성. 그 엔트리 데이타는 긴 질의열에 의해 사용되고 그대로 남겨진다. Transaction B 시작. Extent1\tExtent2\tExtent3\tExtent4\tExtent5\tExtent6\tExtent7 Transaction B extent1\tTransaction B extent2 \tTransaction B extent 3\tOLD Transaction A extent 2\tOLD Transaction A extent 3\tOLD Transaction A extent 4\tOLD Transaction A extent 5 (C) 커다란 질의열을 사용해 Transaction B를 블럭위에 덮어쓰기 함 , 질의 실패 그림 7-5 " sanpshot too old" 에러로 인한 질의 실패 데이타의 연속적인 버전으로 돌아가기 위해서는 긴 질의열은 완성해야 할 모든 테이블과 인덱스에 접근해야 할 뿐아니라 롤백 세그먼트에 저장된 데이타에도 접근해야 한다. 그것이 끝날때까지 롤백 세그먼트로의 접근은 계속되기 때문에 긴 질의열은 그것이 사용하고 있는 롤백 세그먼트 엔트리가 덮어쓰기 되어서는 안된다. 그러나 이러한 엔트리가 일단 종료되면 상황은 달라질 것이다. 에러 메세지에서 얻을 수 있는 충고는 (" rollback segment too small) 두번째 관련된 문제를 해결함으로써 풀 수 있다: 롤백 세그먼트에서 기존의 엔트리의 덮어쓰기를 피하는 것 , 그것에 스페이스를 추가함으로써 첫번째 확장(extent)로 돌아가는데 시간이 오래 걸리도록 하는 것. 이것은 완전한 해결책은 아니다. 다만 시간을 버는 술수일 뿐이다. 왜냐하면 롤백 세그먼트는 결국은 그 데이타 블럭의 모든 것을 덮어쓰기 할 것이기 때문이다. 적절한 대안은 아마도 온라인 트랜잭션이 최소일때 긴 질의를 시도하는 것일 것이다. =================================================================================================== * 해법 : 오랜 시간이 걸리는 큰 작업이 원인이 되는 경우~ 1) 공간 여유있는 tablespace 내에 큰 rbs를 생성 create rollback segment large_rbs storage ( initial 10m next 10m minextents 8 optimal 100m) tablespace large_rbs_ts; 2) 만든 rbs를 procedure 내에서 set if v_commit_cnt = 1000 then v_commit_cnt := 0; commit; set transaction use rollback segment large_rbs; -- 삽입된 내용 end if; 3) 다른 사용자가 없는 시간에 procedure를 다시 돌린다. * 해법 : 보존기간이 작은 경우 SQL> alter system set undo_retention = 10800; <= 초단위로 기록. 10800이면 3시간. default 값이 10800임. * 해법 : SQL 의 튜닝.
101 Oracle Database 2 Day DBA - 부록 A. ASM imagefile
조인상
13353 2012-04-04
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 출처 : Oracle® Database 2 Day DBA 10g Release 2 (10.2) Part Number B14196-01 부록 A 번역. +++++++++++++++++++++++++++++++++++++++++++++++++++++++ A Automatic Storage Management 이 장에서는 ASM을 이용하여 오라클 데이터베이스 데이터파일을 위한 스토리지를 공급.관리하는 것에 대하여 토론한다. 다음 주제를 포함한다 : · What is Automatic Storage Management? · Overview of Disks, Disk Groups, and Failure Groups · Installing Automatic Storage Management · Accessing the Automatic Storage Management Home Page · Starting Up and Shutting Down the ASM Instance · Monitoring Disk Group Space Usage · Creating a Disk Group · Dropping a Disk Group · Adding Disks to a Disk Group · Dropping Disks from a Disk Group · Backing Up ASM-Managed Files ASM은 무엇인가? ASM은 집중적이고, 고성능의 데이터베이스 파일시스템과 디스크 매니저이다. ASM은 스토리지를 관리하는데에 관리자가 필요한것 대신에 데이터베이스가 스토리지를 관리할수 있도록 하는데에 중점을 두고 있다. ASM은 잠재적으로 몇천개가 될수도 있는 오라클 데이터베이스 파일들을 직접 관리해야하는 필요를 없애준다. ASM은 스토리지 시스템을 한개이상의 디스크 그룹으로 그룹화 시킨다. 당신이 작은 디스크그룹을 관리하면, ASM은 전체 디스크 그룹안에서 데이터베이스 파일의 배치를 자동화 시킨다. ASM은 다음의 장점들을 제공한다 : · 스트라이핑 - ASM은 디스크그룹에 포함된 모든 디스크들에 데이터들을 분산시켜 성능과 사용율을 최적화한다. 이러한 데이터베이스파일의 분산(even distibution)은 정기적인 모니터링과 I/O 성능튜닝을 할 필요를 없애준다. 예를들어, 디스크그룹안에 6개의 디스크가 있다면, 각 ASM파일은 6개의 디스크에 각각 쓰여진다. 이러한 조각들은 익스텐트 라고 알려진 1MB 조각(chunk)으로 된다. 데이터베이스파일이 만들어질대, 6개의 디스크에 스트라이프되며(익스텐트로 나눠지고 분산됨), 모든 6개의 디스크들의 공간에 위치된다. 그 파일을 읽을때에는, 파일익스텐트들은 6개의 디스크로부터 병렬로 읽어지면서 성능을 비약적으로 높여준다. · 미러링 - ASM은 어떤 파일을 미러링 함으로써 가용성을 높일수 있다. ASM은 디스크 레벨에서 미러하는 OS미러링과는 달리 파일레벨에서 미러한다. 미러링은 디스크 불량으로 인한 데이터 손실을 막기위하여 파일의 각 익스텐트를 redundant 카피나 미러된 카피를 유지하는것을 의미한다. 각 파일 익스텐트의 미러된 카피(복제본)는 항상 원본 카피로부터 다른 디스크에 위치해 있다. 만약 한 디스크가 불량 난다면 ASM은 디스크그룹안의 살아있는 디스크들 안의 미러된 카피에서 해당 파일들을 계속해서 읽어올수 있다. ASM은 각 파일 익스텐트가 한개의 미러된 카피를 갖는 2-way 미러링과 2개의 미러된 카피를 갖는 3-way 미러링을 지원한다. · 온라인 스토리지 재구성과 동적 리밸런싱 - ASM은 데이터베이스가 동작중인 동안 디스크 스토리지 시스템에서 디스크를 추가/제거할수 있게 해준다. 디스크를 추가할때 ASM은 새로운 디스크를 포함한 모든 디스크 그룹안에 분산되어있는 데이터들을 자동으로 재배치한다. 이러한 재배치는 리밸런싱으로 알려져 있다. 이 작업은 백그라운드로 수행되며 데이터베이스 성능에 최소한의 부하를 준다. 디스크를 제거할때는 ASM은 디스크그룹안의 다른 디스크들에게 모든 파일 익스텐트들들 재배치한다. · 관리된 파일 생성과 삭제 - ASM은 ASM디스크 그룹안에 저장되어있는 파일들을 오라클에서-관리되는-파일들로 바꿀수 있게 해주는 관리 작업들을 줄여준다. ASM은 파일들이 생성될때 자동으로 파일이름을 할당하고, 파일들이 더이상 필요없을때는 자동으로 삭제한다. 오라클에서-관리되는-파일들에 대한 더 자세한 정보는 Oracle Database Administrator's Guide.을 보라. 오라클은 raw device나 운영체제 파일시스템 대신에 데이터베이스 파일 저장공간으로 ASM을 사용하는것을 추천한다. 하지만, 데이터베이스가 ASM파일과 ASM파일이 아닌 것들의 혼합형태를 가질수도 있다. Oracle Enterprise Manager(OEM)은 ASM이 아닌 데이터베이스들을 ASM파일로 마이그레이션 하는것을 가능하게 해주는 wizard를 포함한다. The ASM Instance ASM은 자신의 SGA와 백그라운드 프로세스를 가지는 특별한 종류의 오라클 인스턴스를 포함한다. ASM 인스턴스는 데이터베이스 인스턴스에 밀접하게 통합되어있다. 한개이상의 데이터베이스를 동작시키고 있는 ASM 스토리지를 사용하는 모든 서버들은 1개의 ASM 인스턴스를 갖는다. RAC환경에서는 각 노드마다 1개의 ASM인스턴스를 갖고 있으며, ASM인스턴스는 각기 상대 노드들과 peer-to-peer 방식으로 통신한다. 노드에서 동작하고 있는 데이터베이스 인스턴스의 숫자와 관계없이 각 노드들은 단 1개의 ASM 인스턴스만이 필요하다. Administering ASM Oracle Enterprise Manager Database Control or Grid Control을 이용하여 ASM을 관리한다. 이 참고문건은 당신이 Database Control을 사용하고 있다고 간주한다. Note: Refer to Oracle Database Administrator's Guide for additional information about ASM. Overview of Disks, Disk Groups, and Failure Groups 데이터베이스의 파일들이 생성되는 기본 장소가 되는 디스크그룹을 생성함으로써 ASM을 구성한다. 디스크그룹 type은 ASM이 어떻게 파일들을 미러하는지를 결정한다. 디스크그룹을 생성할때, 디스크그룹이 normal redundancy, high redundancy, external redundancy 디스크그룹 셋중의 하나인지 인지 지시해야 한다. (normal : 2-way 미러, high : 3-way 미러, external : 미러안함) 당신의 스토리지 시스템이 이미 하드웨어 레벨에서 미러링을 하고 있거나, redundant가 필요하지 않은 경우는 external redundancy 디스크그룹을 사용한다. 기본 디스크그룹 type은 normal redundancy 이다. 디스크그룹은 한개의 단위로써 함께 관리되는 디스크들의 그룹으로 구성된다. 이 디스크는 디스크 장치, 파티션, 네트웍-기반-파일(NAS) 일수 있다. ASM 인스턴스가 시작되면, 자동으로 사용가능한 ASM디스크들을 인식(discover)한다. 인식(discovery)은 관리자에 의해서 ASM을 위해 준비된 모든 디스크들을 검색하는 과정이다. ASM은 초기 파라미터에 등록된 경로안에 있는 디스크들을 인식하거나 파라미터가 NULL이면 운영체제에서 사용하는 기본 경로에 있는 디스크를 인식한다. Failure 그룹은 잠재적인 공통의 장애 메카니즘을 공유하는 ASM 디스크들을 정의한다. failure 그룹의 예는 같은 SCSI 컨트롤러를 공유하는 SCSI 디스크들의 집합이다. Failure 그룹은 데이터들의 redundant 복사본을 저장하는데 사용되는 ASM 디스크들을 결정하는데에 사용된다. 예를들어 2-way 미러링이 한개의 파일에 지정되어있다면, ASM은 자동으로 파일 익스텐트의 redundant 복제본을 별개의 failure 그룹에 저장한다. Failure 그룹은 normal, high redundancy 디스크그룹에만 적용된다. 디스크그룹을 생성할때나 대체할때 디스크그룹의 failure 그룹을 정의해야한다. Note: Default로, 디스크그룹을 생성할때 디스크룹안의 모든 디스크들은 정확히 한개의 failure 그룹에 속하게 된다. 대부분의 디스템에서 기본 failure 그룹은 데이터손실을 잘 막아준다. See Also: Failure 그룹의 구성,사용방법, 추가정보를 보려면 Oracle Database Administrator's Guide을 참고한다. Installing Automatic Storage Management 이 부록에서는 RAC 노드의 단일 인스턴스 서버에 ASM이 이미 설치,구성되었다고 간주한다. ASM 설치와 초기구성의 정보는 다음 오라클 출판물을 보아라 : · For a single-instance server, the Installation Guide for your operating system · For RAC, the Real Application Clusters Installation and Configuration Guide for your operating system In addition, see Oracle Database Administrator's Guide for a list of installation tips. Accessing the Automatic Storage Management Home Page 모든 ASM 관리업무는 Enterprise Manager의 ASM 홈페이지로부터 시작된다. ASM 홈페이지는 다음 내용을 보여준다 : · ASM인스턴스의 상태 · 각 디스크그룹의 사용량과 여유량 차트 · ASM인스턴스로 서비스되는 데이터베이스 리스트 · 경고와 메트릭 · ASM 성능,관리, 구성페이지의 링크 Accessing the ASM Home Page on a Single Instance System 단일 인스턴스 시스템에서 ASM 홈페이지에 접속하려면 : 1. Enterprise Manager Database Control 을 SYS 유저로 SYSDBA 로써 로그인한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성될때 설정되었다. See "Accessing the Oracle Enterprise Manager" for more information. Note: SYS 이외의 유저로 Enterprise Manager에 로그인 할 수도 있다. Enterprise Manager는 ASM 관리 작업을 하려할때는 로그인페이지를 보여준다. 이때는 SYS 유저로 SYSDBA 로써 로그인해야만 한다. 2. 데이터베이스 인스턴스 홈페이지에서 General heading 아래에서 next 링크를 클릭하여 ASM 레이블로 간다. Accessing the ASM Home Page On a Real Application Clusters System RAC 시스템에서 ASM 홈페이지로 접속하려면 : 1. Oracle Management Service(OMS)가 동작중인 아무 노드에서 Enterprise Manager Database Control 로 로그인한다. OMS는 클러스터 데이터베이스를 생성하기 위한 DBCA가 실행된 노드에서 자동으로 시작되었다. 구성상황에 따라서, EMS는 다른 노드들에서도 실행중일수 있다. See "Accessing the Oracle Enterprise Manager" for more information. 2. 클러스터 데이터베이스 페이지에서 인스턴스 머릿글에서 원하는 ASM 인스턴스 링크를 클릭한다. Starting Up and Shutting Down the ASM Instance ASM 인스턴스를 시작하거나 종료하기 위해서 모든 데이터베이스 인스턴스들은 ASM 인스턴스가 반드시 먼저 종료되므로써 서비스된다. 당신은 OS 유저 계정과 ASM SYS 유저 계정을 갖고 있어야 한다. Note: ASM 인스턴스는 반드시 데이터베이스 인스턴스 시작 이전에 먼저 시작되어야만 한다. (ASM인스턴스가 데이터베이스 인스턴스에게 서비스를 제공함) ASM 인스턴스를 시작하거나 종료하려면 : 1. ASM 홈페이지에 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. General 머릿글에서 Startup/Shutdown을 클릭한다. 3. OS 와 ASM 유저명/패스워드를 입력하고 OK를 클릭한다. 4. 수행할 작업이 표시되면 원하는 작업을 선택한다. 5. Startup/Shutdown 확인 페이시에서 Yes를 클릭한다. Monitoring Disk Group Space Usage ASM 디스크그룹의 사용량와 여유량을 보려면 : 1. ASM 홈페이지로 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. Administration 탭을 클릭한다. 3. ASM 로그인페이지가 나타나면 SYS 유저로 SYSDBA 권한으로 접속한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성되었을때 설정되었다. ASM 관리 페이지는 모든 디스크그룹들을 용량 정보와 함께 보여준다. Note: 사용가능한 여분 칼럼은 디스크그룹내에서 실제 사용가능한 공간을 MB 단위로 보여준다. 디스크그룹 redundancy 레벨과, 디스크 장애후에 디스크그룹 안의 모든 파일들에 대한 full redundancy 복구에 필요한 디스크그룹에서 예약된 공간을 제외한다.(It takes into account the redundancy level of the disk group, and excludes the space that the disk group reserves for restoring full redundancy for all files in the disk group after a disk failure. ) 추가 정보는 Oracle Database Administrator's Guide 를 보라. Creating a Disk Group 추가 ASM 디스크그룹을 생성하려면 : · 가용성 필요량과 스토리지 시스템 용량에 따라 다른 redundancy 레벨(normal,high,extenal)을 갖는 디스크 그룹을 가진다. · 다른 종류의 스토리지(예를들면 SCSI 드라이브와 SATA드라이브)를 별개의 디스크그룹으로 분리한다. (디스크그룹 안의 디스크들은 동일용량과 성능을 가져야만 한다) · flash recovery area를 베이터베이스와 별개의 디스크그룹에 저장한다. 디스크 그룹을 생성하려면 : 1. ASM 홈페이지로 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. Administration 탭을 클릭한다. 3. ASM 로그인페이지가 나타나면 SYS 유저로 SYSDBA 권한으로 접속한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성되었을때 설정되었다. 4. ASM 관리 페이지에서 디스크그룹 머릿말 아래에서 Create를 클릭한다. Create Disk Group 페이지가 나타난다. 이 페이지는 디스크그룹에 추가할수 있는 ASM 디스크들의 리스트를 보여준다. 여기서는 디스크 헤더의 CANDIDATE, PROVISIONED, FORMER 정보를 포함한다. 5. 디스크 그룹에 추가할수 있는 디스크 뿐만 아니라 이미 디스크 그룹에 속해있는 디스크들을 포함하여 모든 ASM디스크를 표시하고 싶다면, Select Member Disks 드랍-다운 리스트에서 All disks 를 선택한다. 그 페이지는 ASM 인스턴스에서 인식된 ASM 디스크들의 완전한 리스트를 다시 표시해준다. 6. 디스크그룹 이름을 입력하고 redundancy type을 선택한다. (high, normal, external) 7. 다음과 같이 디스크를 선택한다 : · 새로운 디스크 그룹에 포함하길 원하는 각 디스크들의 왼쪽에 있는 체크박스를 선택한다. · 디스크그룹안의 디스크의 선택을 강제로 하고 싶으면 그 디스크의 Force Usage 체크박스를 선택한다. Caution: Force Usage 체크박스는 디스크가 다른 디스크그룹에 속해있고 올바른 데이터베이스 데이터를 갖고 있더라도 새로운 디스크그룹에 추가되도록 한다. 이 데이터는 손실된다. 선택한 디스크가 그 디스크그룹에 바르게 추가할수 있는 것인지 반드시 확인해야한다. FORCE 옵션에 대해서는 Oracle Database Administrator's Guide 를 보라. · 각 선택된 디스크들에 대한 ASM 이름을 입력하는 것은 옵션사항이다. (넣지않아도 ASM은 이름을 제공해준다) 1. 디스크 그룹을 추가하려면 OK를 클릭한다. See Also: ASM 디스크의 다양한 헤더정보를 보기위한 V$ASM_DISK 뷰의 설명은 Oracle Database Reference에 있다. Dropping a Disk Group 디스크그룹을 드랍할때, 디스크 그룹을 삭제한다. (그 안의 파일을 전부 삭제하는것은 옵션) 오픈 되어있는 데이터베이스 파일이 있는 디스크 그룹은 드랍할수 없다. 디스크그룹을 드랍한 후에는 그 안의 멤버 디스크들을 다른 용도로 쓰기 위해서 다른 디스크 그룹에 추가할수 있다. 디스크그룹을 드랍시키는 이유중의 하나는 redundancy(normal,high,external)를 변경하기 위해서 이다. 디스크 그룹의 redundancy를 변경할수 없기 때문에, 디스크 그룹을 드랍시키고 적절한 redundancy로 재생성한다. 이러한 경우에는, 디스크그룹을 드랍하기전에 데이터를 백업하거나 옮겨야 한다. 디스크 그룹을 드랍시키려면 : 1. ASM 홈페이지로 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. Administration 탭을 클릭한다. 3. ASM 로그인페이지가 나타나면 SYS 유저로 SYSDBA 권한으로 접속한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성되었을때 설정되었다. 4. ASM Administration 페이지에서 Disk Groups 머릿말 아래에서 드랍하고자 하는 디스크 그룹을 선택하기 위해서 Select 칼럼을 클릭한다. 5. Delete 를 클릭한다. 확인 페이지가 나타난다. 6. 디스크 그룹의 내용을 삭제하려면, Advanced Options 를 클릭하여, INCLUDING CONTENTS 옵션이 선택되어있는지 확인한 다음 OK를 클릭한다. 7. 확인 페이지에서 Yes를 클릭한다. Adding Disks to a Disk Group 디스크 그룹안의 용량을 늘리기 위해서 디스크 그룹에 디스크를 추가한다. 한번 작업으로 1개 이상의 디스크를 추가할 수 있다. 그렇게 되면 ASM은 새롭게 추가된 디스크를 포함하여 모든 디스크들에 분산되어있는 데이터들을 재배치 한다. 0~11 까지의 숫자로 재배치 작업의 강도를 조절할수 있다. 숫자를 높일수록 재배치 작업이 더 빨라진다. 작은 숫자는 재배치 작업이 더 오래걸리게 하지만, 적은 프로세서를 잡아먹고 I/O자원을 줄일수 있다. 이러한 것은 데이터베이스의 자원들을 사용할 수 있도록 해준다. 기본값은 1로써 데이터베이스의 간섭을 최소화 시킨다. 0 값을 주면 재배치 작업을 막는다. 수동 혹은 자동 재배치는 추후에 발생할수 있다. (데이터베이스에 적은수의 요구사항이 있거나 추가 디스크를 추가해야 하거나 디스크를 나중에 드랍하고 모든 디스크 그룹이 변경되고 단 한번만 재배치 작업을 하고 싶을때 재배치 작업을 연기하여 할 수 있다) 재배치(rebalance) 작업을 조정하는 더 이상의 정보는 Oracle Database Administrator's Guide 를 보라. 디스크 그룹에 1개 이상의 디스크를 추가하기 위해서는 : 1. ASM 홈페이지로 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. Administration 탭을 클릭한다. 3. ASM 로그인페이지가 나타나면 SYS 유저로 SYSDBA 권한으로 접속한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성되었을때 설정되었다. 4. ASM Administration 페이지에서 Disk Groups 머릿글 밑에서 디스크를 추가하고 싶은 디스크 그룹을 선택하기 위해서 Name 칼럼안의 링크를 클릭한다. Disk Group 페이지가 나타나고 이미 존재하는 디스크 그룹에 있는 디스크들의 리스트를 보여준다. 5. Add 를 클릭한다. Add Disk 페이지가 나타난다. 여기서는 디스크그룹에 추가할수 있는 ASM 디스크들의 리스트를 보여준다. 디스크의 헤더 정보도 보여준다. (CANDIDATE, PROVISIONED, FORMER) 6. 디스크 그룹에 추가할수 있는 디스크 뿐만아니라 이미 디스크 그룹에 속해있는 모든 디스크들을 보고 싶으면 Member Disks 드랍-다운 리스트를 선택하여 All disk 를 선택한다. 이 페이지는 ASM 인스턴스에서 인식한 ASM 디스크들의 모든 리스트들을 다시 보여준다. 7. Rebalance power 드랍-다운 리스트에서 선택하여 rebalance 강도를 변경할수도 있다. (옵션) 8. 다음과 같이 디스크를 선택한다 : · 새로운 디스크 그룹에 추가하길 원하는 각 디스크들의 왼쪽에 있는 체크박스를 선택한다. · 디스크그룹안의 디스크의 선택을 강제로 하고 싶으면 그 디스크의 Force Usage 체크박스를 선택한다. Caution: Force Usage 체크박스는 디스크가 다른 디스크그룹에 속해있고 올바른 데이터베이스 데이터를 갖고 있더라도 새로운 디스크그룹에 추가되도록 한다. 이 데이터는 손실된다. 선택한 디스크가 그 디스크그룹에 바르게 추가할수 있는 것인지 반드시 확인해야한다. FORCE 옵션에 대해서는 Oracle Database Administrator's Guide 를 보라. · 각 선택된 디스크들에 대한 ASM 이름을 입력하는 것은 옵션사항이다. (넣지않아도 ASM은 이름을 제공해준다) 1. Ok를 클릭하여 선택된 디스크들을 추가한다. Dropping Disks from a Disk Group 디스크그룹에서 디스크를 드랍할때, 드랍되는 디스크에서 다른 디스크들로 모든 파일 익스텐트들이 이동함으로써 재배치된다. 그 다음 ASM은 그 디스크를 해제하고 그 디스크를 다른 디스크그룹에 추가하거나 다른 목적으로 사용할 수 있다. 1번의 작업으로 1개 이상의 디스크를 드랍할 수 있다. 드랍 작업을 위한 rebalance 강도를 옵션으로 지정할 수 있다. 다음은 디스크를 드랍하는 가능한 이유들의 리스트 이다 : · 디스크가 장애가 나기 시작하여, 교체할 필요가 있다. · 디스크를 업그레이드 하려한다. · 디스크를 다른 디스크 그룹에 재배치하거나 다른 스토리지 시스템으로 이전하려 한다. Note: 디스크그룹에서 디스크를 드랍하는것은 논리적인 삭제일 뿐이다. 디스크 내용을 삭제하지는 않는다. 하지만, 그 내용들은 디스크를 새로운 디스크 그룹에 추가할때 손실된다. 1개 이상의 디스크를 디스크 그룹으로 부터 드랍하려면 : 4. On the ASM Administration page, under the Disk Groups heading, click a link in the Name column to select the disk group from which you want to drop disks. The Disk Group page appears. 1. ASM 홈페이지로 접속한다. See "Accessing the Automatic Storage Management Home Page" for instructions. 2. Administration 탭을 클릭한다. 3. ASM 로그인페이지가 나타나면 SYS 유저로 SYSDBA 권한으로 접속한다. ASM 인스턴스의 패스워드파일에 저장된 SYS 패스워드를 입력한다. 이 패스워드는 ASM 인스턴스가 생성되었을때 설정되었다. 4. ASM Administration 페이지에서 Disk Groups 머릿글 밑에서 디스크를 드랍하고 싶은 디스크 그룹을 선택하기 위해서 Name 칼럼안의 링크를 클릭한다. Disk Group 페이지가 나타난다. 5. Member Disks 머릿글 아래의 Select 칼럼에서 드랍하고 싶은 디스크의 체크박스를 선택하고, Remove를 클릭한다. 확인 페이지가 나타난다. 6. rebalance 강도를 변경하거나 드랍하는 디스크에 FORCE 옵션을 주고 싶으면, 다음과 같이 한다 : · Advanced Options 을 클릭한다. · Advanced Options 페이지에서 FORCE 옵션을 선택하거나 드랍-다운 리스트에서 rebalance power를 선택한다. · OK를 눌러 확인페이지로 돌아간다. Note: ASM이 그 디스크에 읽거나 쓸수 없다면 FORCE 옵션이 필요할 수 있다. FORCE 옵션에 대한 더 자세한 정보는 Oracle Database Administrator's Guide 를 본다. 1. 디스크를 드랍하기 위해 Yes를 클릭한다. Disk Group 페이지가 다시 나타나고 드랍중인 각 디스크들의 드랍상태가 표시된다. 2. 디스크 그룹안에 드랍된 디스크들이 더이상 나타나지 않을때까지 페이지를 리프레시 한다. Caution: 드랍과 rebalance 작업이 완료될때까지 드랍된 디스크를 재사용하거나 연결끊기를 할 수 없다. -- 그것은 디스크그룹에 드랍된 디스크가 더이상 나타나지 않을때가지임. Backing Up ASM-Managed Files 오라클에서는 ASM에 의해서 관리되는 파일들을 백업하기 위해 RMAN을 사용할것을 추천한다. RMAN를 사용하는 절차에 대해서는 Chapter 9, "Performing Backup and Recovery". 로 문서화 되어있다. Automatic Storage Management: Oracle by Example Series Oracle by Example (OBE)는 Oracle Database 2 Day DBA 책자의 시리즈 이다. 이 OBE 에서 당신은 이 부록에 있는 과제들과 포함된 스크린샷들을 통하여 과정을 밟는다. ASM OBE를 보려면 다음 위치로 브라우저를 지정한다. http://www.oracle.com/technology/obe/10gr2_2day_dba/asm/asm.htm
100 Oracle 설치문서에서 보는 ASM imagefile
조인상
13488 2012-03-30
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 출처 : Oracle® Database Installation Guide 10g Release 2 (10.2) for Linux x86 Part Number B15660-01 * 오라클 설치문서에 포함된 ASM 관련 내용만 발췌하여 정리 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1.5.1.2 Automatic Storage Management Automatic Storage Management 는 오라클 데이터베이스 파일을 위한 고성능 스토리지 관리 솔루션이다. ASM은 데이터베이스를 생성하고 lay-out하고 디스크공간을 관리하는 등의 동적인 데이터베이스 환경관리를 단순화 시킨다. ASM은 싱글데이터베이스설치, 여러개의 데이터베이스 설치, 오라클 RAC 환경에서 사용할 수 있다. 오라클 DB 10g 릴리즈1 (10.1) 에서 생성된 데이터베이스에서 사용할 수 있다. 오라클 DB 10g 릴리즈2 (10.2) 데이터베이스도 오라클 10.1 의 ASM을 사용할 수 있다. 사이트가 여러개의 싱글-인스턴스 데이터베이스를 갖고 있다면 오라클 클러스터웨어를 이용해서 여러개의 고립된 데이터베이스들을 ASM으로 관리되는 한개의 클러스터된 스토리지풀로 통합할 수 있다. ASM은 redo로그, controlfile, data dump export 파일 등 모든 데이터베이스 파일들을 관리할 수 있다. 하지만 오라클 데이터베이스 실행 바이너리파일들(일명 엔진)은 관리하지 않는다. 좀더 하이레벨에서 ASM 구현하는 것은 스트라이핑과 미러링으로 오라클 DB에 파티션된 디스크를 할당하는것을 포함한다. ASM은 디스크공간을 관리해준다. ASM의 이러한 기능은 스트라이핑,미러링을 관리하기 위해 필요한 LVM, 파일시스템, 기타 명령어들을 사용하지 않아도 되게 해준다. ASM과 데이터베이스 인스턴스간의 동기화는 Oracle Cluster Synchronization Services(CSS)에 의해서 관리된다. 다음은 ASM 설치의 구성요소들이다 : - ASM 디스크 그룹 디스크그룹은 ASM에서 유닛의 단위로써 관리하는 디스크장치의 집합이다. 각 디스크 장치는 개별 물리적디스크, RAID 스토리지나 LVM의 다중디스크, 물리디스크의 파티션이 될수 있다. 하지만 대부분의 경우에 디스크 그룹은 1개 이상의 개별 물리디스크로 구성된다. ASM이 I/O분산과 디스크 효율성을 높이기 위해서는 디스크그룹 안의 모든 장치들이 용량과 성능이 비슷하도록 해야한다. ASM 그룹 템플릿을 이용해서 디스크그룹안의 개별 파일타입의 redundancy,스트라이핑 속성을 설정할수도 있다. 디스크그룹을 생성할때 ASM은 디스크그룹에 적용되는 디폴트템플릿을 생성한다. 디폴트템플릿은 디스크그룹 타입에 따라 설정된다. 예를들면 기본 redundancy 디스크그룹의 데이터파일에 대한 디폴트템플릿은 2-way 미러링으로 세팅된다. 사이트의 특별한 요구사항에 맞춰 기본텝플릿을 수정할수 있다. ASM은 디스크그룹안의 모든 장치들이 성능과 사용량을 최적화할수 있도록 데이터들을 분산한다. 데이터베이스를 종료하지않고도 디스크그룹에 디스크를 추가/제거 할 수 있다. 디스크를 추가제거할때 ASM은 디스크그룹에 파일들을 재배치한다. 백업/복구작업 같은 특정작업을 할때 여러개의 디스크그룹을 만들수도 있다. 디스크그룹에 장치를 추가할때 장치들에 failure group 을 지정할수 있다. failure group 은 예를들면 동일 컨트롤러에 달린 장치들 처럼 공통의 장애특성(failure characteristics) 을 갖고 있는 디스크 장치들을 나타낸다. 컨트롤러에 장애가 나면 거기에 달린 모든 장치들은 사용할수 없게 된다. 디폴트로 각각의 장치들은 자신의 failure group에 속해있다. failure group을 지정해서 사용함으로써 ASM은 구성장치의 장애로부터 발생할 수 있는 데이터 손실을 최소화하기 할수 있도록 데이터를 분산시킬수 있다. - ASM 인스턴스 ASM 인스턴스는 ADM 디스크그룹을 관리한다. 이 인스턴스는 ASM을 사용하는 데이터베이스 인스턴스가 시작되기전에 반드시 실행되어야만 한다. DB 저장 매카니즘으로써 ASM 을 선택하면 이 인스턴스가 만들어지고, 시작된다. 시스템의 데이터베이스 인스턴스의 숫자와 관계없이 ASM인스턴스는 1개만 있으면 된다. 단일 클러스터안의 어떤 노드의 ASM인스턴스라도 어떤 조합의 디스크그룹의 타입이든 조정할 수 있다. ASM을 설치하려면 OUI를 사용한다. 이 설치가이드는 다음과 같은 ASM을 설치하는 일반적인 절차를 제공한다 : 사이트의 디스크 필요량을 결정하고, 필요하면 ASM을 위한 1개이상의 디스크 파티션을 생성한다. "Preparing Disk Groups for an Automatic Storage Management Installation" 는 사이트의 디스크 필요량을 결정하는 방법에 대한 가이드라인을 제시한다. OUI를 실행하여 ASM인스턴스를 설치/생성하고 ASM 디스크그룹을 생성한다. "Step 1: Reviewing Automatic Storage Management Installation Considerations" 은 ASM 설치위치와 기타 설치시 고려사항을 제공한다. "Step 2: Creating the Automatic Storage Management Instance and Disk Groups"에서는 ASM인스턴스와 디스크그룹을 생성하는 방법을 기술한다. ASM인스턴스와 디스크그룹을 생성한 후에는 다음에 생성한 데이터베이스는 ASM을 사용할수 있게 된다. ASM 설치전에 생성한 데이터베이스가 있다면 Enterprise Manager Migrate Database Wizard를 이용해서 마이그레이션 할수 있다. 이 wizard는 Enterprise Manager Grid Control 나 Database Control 에서 사용할 수 있다. 혹은 RMAN으로 마이그레이션할수도 있다. "Step 3: Installing Oracle Database to Use with Automatic Storage Management" 에는 ASM을 사용하는 데이터베이스를 생성하는 방법을 기술한다. ASM 설치를 테스트하라. 여기서는 ASM 설치가 성공했는지 검사하는 간단한 테스트를 제공한다. "Managing Automatic Storage Management"에서는 ASM 시작과 접근방법, 관리하기 위한 오라클 데이터베이스 툴을 설명한다. See Also: "Oracle Cluster Synchronization Services" Oracle Database 2 Day DBA for a general overview, from a non-platform perspective, of Automatic Storage Management Oracle Database New Features for information about new features in this release of Automatic Storage Management Oracle Database Administrator's Guide for a more detailed description of Automatic Storage Management The Oracle Technology Network Web site, for additional information on Automatic Storage Management, which you can visit at http://www.oracle.com/technology/products/database/asm 1.5.1.3 Raw Devices Raw 장치는 파일시스템으로 포맷되지 않은 디스크 파티션이나 Logical 볼륨이다. 데이터베이스 파일 저장소로 raw 장치를 사용하면 오라클은 OS의 파일시스템 레이어를 거치지 않고 곧바로 파티션이나 볼륨에 데이터를 저장한다. 이러한 이유로 raw 장치를 이용하여 성능을 높일수 있다. 하지만 raw 장치는 추가/관리가 어려운데다가 최신의 파일시스템의 성능향상에 비해 얻는 효과도 적기 때문에, 오라클에서는 ASM이나 파일시스템을 이용하는것을 추천한다. 2 Preinstallation Tasks 2.11 Preparing Disk Groups for an Automatic Storage Management Installation 이 섹션에서는 ASM을 사용하여 디스크를 구성하는 방법을 기술한다. 디스크를 구성하기 전에 필요로하는 디스크용량과 디스크의 개수를 파악해야한다. 다음 섹션들에서는 필요사항을 확인하고 각 플랫폼에 디스크를 구성하는 방법을 기술한다 : ASM을 구성하는 일반적인 순서 Step 1: ASM을 위한 스토리지 요구사항 확인 Step 2: 이미 존재하는 ASM 디스크그룹을 사용 Step 3: ASM을 위한 DAS나 SAN 디스크 파티션을 생성 Step 4: ASM을 위한 디스크 구성 2.11.1 ASM을 구성하는 일반적인 순서 다음은 ASM을 구성하는 일반적인 순서이다 : 사이트 요구사항을 확인하라. 선택사항으로는, 이미 존재하는 ASM디스크 그룹을 사용할수도 있다. 새로운 ASM 디스크 그룹을 생성한다면, DAS나 SAN 디스크에 파티션을 생성하라. ASM 구성을 완료하기 위해서 다음의 방법들을 사용하라 : 대화식으로 오라클을 설치한다면, OUI에서 ASM 디스크 구성을 안내한다. 비대화식으로 오라클을 설치한다면, 설치전에 수동으로 디스크들을 구성해야한다. < 이것 참 번역하다보니까 다 쓸모없는 내용들이네 ㅡㅡ; 쓸데없는 소리는 다 건너뜀.> 2.11.2 Step 1: Identifying Storage Requirements for Automatic Storage Management 필요한 용량미리 산정하되 데이터파일, 리커버리파일 공간을 분리해서 산정하고 필요한 용량만큼 디스크 할당하라는 소리. 생성한 ASM 디스크그룹에 사용하고 싶은 ASM redundancy 레벨을 선택할 수 있다. ASM redundancy 레벨은 디스크그룹안의 ASM 이 파일을 어떻게 미러하는지 결정하고, 다음과 같은 디스크 개수와 디스크 용량을 결정한다 : - External redundancy ASM은 디스크그룹의 내용을 미러하지 않는다. 다음의 상황에서는 이 redundancy 레벨을 선택하라 : 조건 : 디스크그룹이 RAID 장치와 같은 자체적인 데이터보호를 제공하는 경우 적절한 백업전략이 있는 개발환경 처럼 데이터접속에 방해가 없어야 할 필요가 없는경우 - Normal redundancy normal redundancy 디스크그룹에서는 ASM은 성능과 안전성을 높이기 위해서 2-way 미러링을 기본으로 사용한다. 2-way 미러링 대신에 3-way 미러링이나 no-미러링을 사용할수도 있다. 2-way 미러링을 사용하고 있다면, normal redundancy 디스크그룹은 최소 2개의 failure 그룹을 필요로 한다.(혹은 2개의 디스크장치) normal redundancy 디스크그룹의 가용량은 전체 디스크 공간의 절반이다. 대부분의 설치환경에서 오라클은 normal redundancy 디스크그룹을 추천한다. - High redundancy 디스크그룹의 내용은 3-way 미러를 기본으로 사용한다. 디스크그룹을 high redundancy 로 생성하려면 적어도 3개의 failure 그룹이 필요하다(최소 3개의 장치) high-redundancy 디스크 그룹이 데이터보호를 높은 수준으로 제공하지만 이 redundancy 레벨을 사용하기전에는 추가 스토리지 장치의 높은 비용을 고려해야만 한다. 설치에 필요한 최소 디스크개수와 최소 용량을 결정하려면 다음 테이블을 이용한다 : ASM 인스턴스가 시스템에 이미 동작중이면 이미 있는 디스크그룹을 사용할 수 있다. 필요하면, 설치중에 이미 있는 디스크그룹에 디스크를 추가할수도 있다. 다음은 이미 있는 디스크 그룹과 그 남은 공간을 확인하는 절차이다. 추가로, ASM 디스크그룹에 failure 그룹을 확인하는 절차도 포함. See Also: "Step 4: Configuring Disks for Automatic Storage Management" for information about completing this task 2.11.3 Step 2: 이미 있는 ASM 디스크그룹 사용하기 Note: 이것은 추가옵션 단계이다(optional step). 이미 존재하는 ASM디스크 그룹에 데이터베이스나 리커버리 파일들을 저장하고 싶다면 당신이 선택한 설치방법에 따라 다음의 선택을 해야한다 : 대화식모드에서 DBCA를 실행한 설치방법을 선택했다면 디스크그룹을 생성하거나 이미 존재하는 디스크그룹을 사용하는걸 결정할수 있다. 설치가 끝난후에 DB를 생성하기 위해서 DBCA를 사용하는 경우에도 같은 선택이 가능하다. 비대화식 모드에서 DBCA를 실행하는 설치방법을 선택했다면, 새로운 데이터베이스를 위해 이미 존재하는 디스크그룹을 선택해야만 한다. (; 디스크그룹을 생성할수는 없다.) 하지만, 충분한 여유공간이 없다면 이미 존재하는 디스크그룹에 디스크를 추가할수는 있다. Note: 이미 존재하는 디스크그룹을 관리하는 ASM 인스턴스는 별도의 오라클 home 디렉토리에서 동작할 수 있다. ASM 디스크그룹이 이미 존재하는지, 혹은 디스크그룹에 충분한 공간이 있는지 확인하기 위해서 Oracle Enterprise Manager Grid Control 이나 Database Control 을 사용할 수 있다. 혹은 대신에 다음 절차를 따를수도 있다 : ASM 인스턴스가 시스템에 구성되어있는지 확인하기 위해서 oratab 파일 내용을 본다 : # more /etc/oratab ASM인스턴스가 시스템에 구성되어있다면, oratab 파일은 다음과 유사한 라인을 포함한다 : +ASM:oracle_home_path:N 위의 예에서는, +ASM은 ASM인스턴스의 SID이고, oracle_home_path는 설치된 오라클 홈 디렉토리이다. 편의상, ASM인스턴스의 SID는 +기호로 시작한다. 쉘 윈도우를 열고, ORACLE_SID와 ORACLE_HOME 환경변수를 임시로 세팅하여 ASM인스턴스를 위한 적절한 값을 지정한다. 예를들면, ASM SID가 OraDB10g+ASM 으로 명명되고 ORACLE_BASE 디렉토리의 ASM 하위디렉토리에 위치한다면, 필요한 세팅을 만들기 위해 다음 명령을 준다. Bourne, Bash, Korn shell 에서: $ ORACLE_SID=OraDB10g+ASM $ export ORACLE_SID $ ORACLE_HOME=/u01/app/oracle/product/10.1.0/asm $ export ORACLE_HOME C shell: % setenv ORACLE_SID OraDB10g+ASM % setenv ORACLE_HOME /u01/app/oracle/product/10.1.0/asm SQL*Plus를 이용하여, ASM인스턴스에 SYS 유저로 SYSDBA권한으로 접속하고 인스턴스를 시작하려면 : # $ORACLE_HOME/bin/sqlplus "SYS/SYS_password as SYSDBA" SQL> STARTUP 이미 존재하는 디스크그룹, redundancy level, 가용공간을 보려면 다음 명령어를 사용한다 : SQL> SELECT NAME,TYPE,TOTAL_MB,FREE_MB FROM V$ASM_DISKGROUP; 나온 결과물로부터 적용 redundancy level과 가용량을 확인한다. 필요하다면, 디스크 필요량만큼 디스크를 추가한다. Note: 이미 있는 디스크그룹에 디스크를 추가한다면, 오라클에서는 디스크그룹에 있는 디스크들과 동일용량,동일성능의 디스크를 사용할것을 추천한다. 2.11.4 Step 3: ASM에 DAS나 SAN 디스크 파티션 추가하기 ASM에 DAS나 SAN디스크를 사용하기 위해서는 디스크는 반드시 파티션테이블을 갖고 있어야 한다. 오라클은 각 디스크에 디스크 전체용량의 딱 1개의 파티션을 생성하는것을 추천한다. Note: ASM에 파티션된 어떠한 물리적 디스크도 사용할 수 있다. 2.11.5 Step 4: ASM에 디스크 구성하기 오라클은 ASM에 사용하길 원하는 디스크 장치들을 구성,관리를 쉽게 할 수 있도록 ASM 라이브러리 드라이버를 제공한다. 리눅스에 ASM을 사용하길 원한다면, 오라클에서는 ASM 라이브러리 드라이버와 관련 유틸리티를 설치하고 ASM 디스크 그룹에 포함된 장치들을 구성하는것을 추천한다. ASM 라이브러리 드라이버를 사용하지 않으면, 각 각각의 디스크 장치를 raw device로 할당해야 한다. 다음 섹션에서는 각각의 방법을 사용하여 디스클 구성하는 방법을 기술한다 : ASM 라이브러리 드라이버를 사용하여 ASM 디스크를 구성하기 Raw device를 사용하여 ASM 디스크를 구성하기 Note: ASM 라이브러리 드라이버를 사용하는 디스크를 구성하는 방법을 선택했다면, default disk discovery 문자열을 ORCL:* 로 바꿔야 한다. 이 디스크들은 diskstring이 ORCL:* 이나 공백문자 "" 일 경우 discover 될 것이다. 2.11.5.1 ASM 라이브러리 드라이버를 이용하여 ASM 디스크를 구성하기 ASM 라이버르리 드라이버를 사용하기 위해서는 다음 작업을 수행한다. ASM 라이브러리 드라이버 소프트웨어 설치,구성하기 : 시스템의 커널 버전과 아키텍쳐를 확인하기 위해 다음 명령어 실행 : # uname -rm 필요하다면 ASM 라이브러리 드라이버를 OTN 웹사이트에서 다운받는다 : http://www.oracle.com/technology/tech/linux/asmlib/index.html Note: 몇몇 커널 버전에 대한 ASM 라이브러리 드라이버는 오라클 DB 설치 미디어의 db/RPMS/asmlib 디렉토리에 있다. 하지만, 오라클은 OTN 웹사이트에서 최신의 패키지를 확인하는걸 추천한다. 다음의 패키지를 설치해야만 한다 ; Version은 ASM 라이브러리 드라이버 버전, arch는 시스템 아키텍쳐, kernel은 사용중인 커널버전 : oracleasm-support-version.arch.rpm oracleasm-kernel-version.arch.rpm oracleasmlib-version.arch.rpm root 유저로 스위치 : $ su - 다음 패키지들을 설치하는 명령어 실행 : # rpm -Uvh oracleasm-support-version.arch.rpm \ oracleasm-kernel-version.arch.rpm \ oracleasmlib-version.arch.rpm 예를들어, x86 시스템에 red-hat Enterprise Linux AS3 엔터프라즈 커널을 사용한다면 다음 명령어를 사용한다 : # rpm -Uvh oracleasm-support-1.0.0-1.i386.rpm \ oracleasm-2.4.9-e-enterprise-1.0.0-1.i686.rpm \ oracleasmlib-1.0.0-1.i386.rpm 오라클 소프트웨어 소유자의 UID와 OSDBA 그룹의 GID를 확인하려면 다음 명령어를 사용한다 : # id oracle oracleasm 초기화 스크립트를 configure 옵션과 함께 사용하여 실행한다 : # /etc/init.d/oracleasm configure 스크립트가 표시하는 내용에 다음과 같이 응답한다 : Prompt Suggested Response Default UID to own the driver interface: 오라클 소유자 유저의 UID를 기입 Default GID to own the driver interface: OSDBA 그룹의 GID를 기입 Start Oracle Automatic Storage Management Library driver on start (y/n): 시스템 부팅시에 ASM 드라이버가 자동시작되길 바라면 y를 기입 Configuring the Disk Devices to Use the Automatic Storage Management Library Driver To configure the disk devices that you want to use in an Automatic Storage Management disk group: If you intend to use IDE, SCSI, or RAID devices in the Automatic Storage Management disk group, then: If necessary, install or configure the disk devices that you intend to use for the disk group and restart the system. To identify the device name for the disks that you want to use, enter the following command: # /sbin/fdisk -l 디스크의 타입에 따라, 장치명은 다양할 수 있다 : 디스크 타입 : 장치명 형식 IDE disk : /dev/hdxn SCSI disk : /dev/sdxn RAID disk : /dev/rd/cxdypz /dev/ida/cxdypz Note: 오라클은 사용하려는 각각의 디스크에 전체디스크-파티션을 생성하는것을 추천한다. 사용하고자 하는 디스크 장치에 전체디스크 파티션을 생성하기 위해서 fdisk나 parted를 사용하라. ASM디스크로써 디스크를 mark 하기 위해서 다음 명령어를 이용한다 : # /etc/init.d/oracleasm createdisk DISK1 /dev/sdb1 위의 예에서는, DISK1은 디스크에 할당하고자하는 이름이다. Note: 디스크이름은 대문자,숫자,underscore 문자로 지정할수 있다. 반드시 대문자로 시작하여야 한다. ASM에 멀티패스 디스크드라이버를 사용한다면, 디스크의 정확한 logical 장치명을 지정해야한다. Note: ASM 라이브러리 드라이버를 사용하여 설치중 데이터베이스를 생성하려면, 반드시 default disk discovery 문자열을 ORCL:* 로 바꿔야 한다. 이 디스크들은 ORCL:* 이나 공백문자 ""로 세팅되었을대 discover 될것이다. ASM 라이브러리 드라이버와 디스크 관리하기 ASM 라이브러리 드라이버와 디스크 관리하기 위해서 oracleasm 초기화 스크립트를 다음과 같은 옵션들로 사용한다 : configure 필요한 경우, ASM 라이버르리 드라이버를 재구성하기 위해서는 configure 옵션을 사용한다. # /etc/init.d/oracleasm configure enable disable 시스템 부팅시 ASM드라이버의 동작을 변경하려면 disable,enable 옵션을 사용한다. enable 옵션을 사용하면 시스템 부팅시 ASM 드라이버를 실행시킨다. # /etc/init.d/oracleasm enable start stop restart 시스템을 재시작 하지 않고 ASM 드라이버를 load, unload 시키려면 start, stop, restart 옵션을 사용한다. # /etc/init.d/oracleasm restart createdisk ASM 드라이버에 사용할 디스크에 mark 하려면 createdisk 옵션을 사용한다 : # /etc/init.d/oracleasm createdisk DISKNAME devicename deletedisk 이름이 붙은 디스크장치에 unmark 하려면 deletedisk 옵션을 사용한다 : # /etc/init.d/oracleasm deletedisk DISKNAME Caution: ASM 디스크그룹에서 사용중인 디스크에 unmark 디스크 하는 이러한 명령어를 사용하지 말라. unmark 하기전에 ASM 디스크그룹에서 디스크를 먼저 drop 시켜야 한다. querydisk ASM 드라이버로 사용중인 디스크 장치나 디스크이름을 확인하려면 querydisk 옵션을 사용한다. # /etc/init.d/oracleasm querydisk {DISKNAME | devicename} listdisks ASM 드라이버 디스크로 mark 된 디스크이름들을 리스트하려면 listdisks 옵션을 사용한다 : # /etc/init.d/oracleasm listdisks scandisks 다른 노드의 ASM 드라이버 디스크로써 mark 된 공유된 디스크가 뭔지 확인하기 위해서 클러스터 노드를 사용가능하게 하려면 scandisks 옵션을 사용한다 : # /etc/init.d/oracleasm scandisks 3 Installation Tasks 3.5 ASM 설치하기 ASM을 설치,구성하고 오라클 데이터베이스가 ASM을 사용할 수 있게 하려면 이 섹션의 절차를 따라라. ASM을 사용할 계획이 아니라면 오라클 데이터베이스를 설치하기 위해서 "Installing the Oracle Database Software" 에 나온 절차를 따라라. 이 섹션은 다음의 주제를 포함한다. Step 1: ASM 설치고려사항 다시 보기 Step 2: ASM 인스턴스와 디스크그룹을 생성하기 Step 3: ASM을 사용하여 오라클 데이터베이스 설치하기 Step 4: ASM 설치를 테스트 하기 3.5.1 Step 1: ASM 설치고려사항 다시 보기 ASM을 설치할때 이 가이드라인을 적용하라 : ASM을 설치하기 전에 ASMLib과 같은 추가 ASM 지원 라이브러리를 설치하는걸 추천한다. ASMLib은 OS와 데이터베이스간 인터페이스를 쉽게 해주고, 서로 다른 벤더에서 지원하는 스토리지 어레이들의 성능을 활용하게 해주기 위한 오라클 Application Program Interface(API) 이다. ASMLib은 ASM이 가능한 커널이 블럭device를 discover,access 하게 해주는 대체 인터페이스를 제공한다. ASMLib은 스토리지와 OS벤더들이 스토리지관련 기능들을 더 확장할 수 있도록 지원하는 기회를 제공한다. 이러한 기능들은 성능과 데이터무결성을 증대시키는 이점을 제공한다. See Also: ASMLib 의 추가정보는 OTN 웹사이트의 ASM 페이를 방문하라 http://www.oracle.com/technology/products/database/asm ASMLib 파일들은 다음에서 다운로드 받을 수 있다. http://www.oracle.com/technology/tech/linux/asmlib ASM 디스크그룹을 사용하기 위한 디스크 파티션을 준비하려면 "Preparing Disk Groups for an Automatic Storage Management Installation" 단계을 먼저 완료해야 한다. 오라클은 몇개의 데이터베이스 인스턴스를 계획하던지 관계없이 ASM만의 Oracle HOME 에 ASM을 설치하는 것을 추천한다. 자신만의 Oracel home 에 ASM을 설치하면 안정성과 관리성을 높여준다. 분리된 Oracle Home 으로 ASM과 데이터베이스를 독립적으로 업그레이드 할 수 있고, ASM인스턴스에 영향없이 데이터베이스를 삭제할 수 있다. ASM버전이 오라클 버전보다 같거나 최신인지 확인하라. ASM 인스턴스가 기존에 존재하지 않고 OUI 옵션에서 ASM 을 설치,구성하도록 선택하였다면, OUI는 ASM을 자신만의 Oracle Home 으로 설치한다. ASM을 사용하는 모든 오라클 데이터베이스 인스턴스는 같은 컴퓨터의 ASM 인스턴스를 사용해야만 한다. ASM을 설치할때, DBCA는 ASM 인스턴스에 대한 별도의 spfile과 password file 을 생성한다. 3.5.2 Step 2: ASM 인스턴스와 디스크 그룹 생성하기 다음 스텝에서는 ASM 인스턴스와 오라클 데이터파일을 저장하기 위한 디스크그룹을 생성하는 방법을 설명한다. ASM을 위한 여러개의 디스크그룹을 생성할 수 있다. 백업과 복구 작업을 위한 ASM을 사용하려 한다면, 오라클에서는 이러한 목적의 분리된 별개의 디스크 그룹을 생성하는걸 추천한다. ASM인스턴스를 설치하고 디스크 그룹을 생성하려면 : 디스크에서 소프트웨어를 설치하려면, 마운트되지 않은 디스크를 먼저 마운트한다. 몇몇 플랫폼에서는 드라이브에 디스크를 넣을때 자동으로 마운트한다. 자동으로 마운트되지 않는다면 마운트하기에 관한 플랫폼-특정 정보를 보기 위해 "Mounting Discs" 섹션을 참고한다. OUI 를 시작하기 위해서 설치파일의 위치에 따라 다음 스텝을 완료한다. Note: 오라클 유저로 로그인하고 유저의 환경을 맞춘 터미널 세션에서 OUI를 시작한다. 디스크에 설치파일이 있으면, DVD 의 db디렉토리에서 다음 명령어를 실행한다 : $ cd /tmp $ /directory_path/runInstaller 하드디스크에 설치파일이 있다면 db디렉토리로 변경하여 다음 명령어를 실행한다 : $ ./runInstaller OUI가 나타나지 않으면, "X Window Display Errors" 섹션에서 문제해결 정보를 참조한다. Welcome 화면에서 Advanced Installation을 선택하고 Next를 클릭한다. 설치타입 선택 화면에서 Enterprise Edition, Standard Edition, Custom 등을 선택하고 Next를 클릭한다. Home Detail 지정 화면에서 ASM인스턴스 의 이름과 위치를 입력한다. 예를들어 이름은 OraDB10g+ASM 로 하고 디렉토리는 다음과 같이 할 수 있다 : /u01/app/oracle/product/10.2.0/asm Next를 클릭한다. 제품 필요요구사항 체크 화면에서 요구사항을 만나면 next를 클릭한다. Configuration Option 화면에서 Configure Automatic Storage Management (ASM) 을 선택하고 ASM SYS 패스워드를 입력한다, 그다음 Next 를 클릭한다. Configure Automatic Storage Management화면에서 다음 설정을 입력한다 : Note:이 화면은 ASM 인스턴스와 함께 사용할 디스크 그룹을 생성할수 있게 해준다. 디스크그룹을 생성하기 위한 여분의 파티션을 갖고 있어야 한다. Disk Group Name: 디스크 그룹의 이름을 입력한다. Redundancy: 디스크그룹안의 디스크들을 위한 redundancy level을 세팅하기 위하여 다음 선택중 하나를 선택한다. - High: 디스크그룹의 내용들은 기본적으로 3-way 미러가 된다. 디스크그룹을 high redundancy로 생성하려면 적어도 3개의 failure group을 지정해야한다. (최소 3개의 장치) - Normal: 디스크그룹의 내용은 기본적으로 2-way 미러가 된다. 하지만 3-way 미러이거나 머리되지 않은 특정한 파일들을 생성하도록 선택할 수 있다. - External: ASM은 디스크그룹의 내용을 미러하지 않는다. 이 redundancy level은 다음과 같은 경우에 선택한다. 1) 디스크그룹이 RAID 장치와 같은 자체적인 데이터보호를 제공하는 장치들을 포함할 경우 2) 적절한 백업전략이 있는 (예를들면) 개발환경과 같은 무중단접근이 필요하지 않는 데이터베이스를 사용할 경우 Add Disks: 디스크 recovery path를 /dev/raw 등과 같이 입력 Next를 클릭한다. 설치화면에서 이미 설치된 내용들을 확인하고 Install을 클릭한다. 이 인스턴스에 다른 디스크그룹을 추가하려면 $ORACLE_HOME/bin 에서 DBCA를 수동으로 실행하여 Configure Automatic Storage Management 옵션을 선택한다. 이 다음부터 생성한 추후 데이터베이스들은 ASM을 사용할 수 있다. ASM 설치전에 생성한 데이터베이스가 있다면 Enterprise Manager Migrate Database Wizard를 이용해서 마이그레이션 할수 있다. 이 wizard는 Enterprise Manager Grid Control 나 Database Control 에서 사용할 수 있다. 혹은 RMAN으로 마이그레이션할수도 있다. See Also: Enterprise Manager Migrate Database Wizard online Help instructions on how to migrate an existing Oracle Database to Automatic Storage Management Oracle Database Backup and Recovery Advanced User's Guide for information about migrating an existing Oracle Database to Automatic Storage Management using Oracle Database Recovery Manager 3.5.3 Step 3: ASM을 사용하는 오라클 데이터베이스 설치하기 ASM인스턴스와 ASM 디스크그룹을 생성한 후에 ASM을 사용하는 데이터베이스 인스턴스를 생성할 수 있다. ASM을 사용하는 데이터베이스 인스턴스를 생성하려면 : OUI를 실행한다. Welcome 화면에서 Advanced Installation 을 선택하고 Next를 클릭한다. Installation Type 화면에서 installation type들중 하나를 선택하고 Next를 클릭한다. ( 아 번역하기 귀찮어~ 쓸데없는 내용들... 그냥 OUI 화면에서 Next 팍팍 누르고 넘어가서 DB만들때 ASM 선택하고 인스턴스 만들고 디스크 그룹 만들라는 뜻임. 위에도 나왔는데 계속 반복해서 이야기함. 오라클 매뉴얼 꼼꼼하구만~ ) 3.5.4 Step 4: ASM 설치된것을 테스트 하기 ASM 설치를 테스트하려면 asmcmd 커맨드라인 유틸리티로 로그인하면, ASM 디스크그룹 파일과 디렉토리를 관리할수 있게 해준다. 하려면 : 쉘 윈도우를 열어서 ORACLE_SID와 ORACLE_HOME 환경변수를 ASM 인스턴스에 맞게 임시로 지정해준다. For example, if the Automatic Storage Management SID, which is named +ASM and is located in the asm subdirectory of the ORACLE_BASE 예를들어 ASM SID가 +ASM이고, 디렉토리가 ORACLE_BASE 디렉토리면 다음 명령어로 필요한 세팅을 해준다 : Bourne, Bash, or Korn shell: $ ORACLE_SID=+ASM $ export ORACLE_SID $ ORACLE_HOME=/u01/app/oracle/product/10.2.0/asm $ export ORACLE_HOME C shell: % setenv ORACLE_SID +ASM % setenv ORACLE_HOME /u01/app/oracle/product/10.2.0/asm SQL*Plus를 이용하여 ASM에 SYS로 SYSDBA권한으로 접속하여 인스턴스를 시작시킨다 : # $ORACLE_HOME/bin/sqlplus "SYS/SYS_password as SYSDBA" SQL> STARTUP 디스크그룹, redundancy 레벨, 여유량을 다음 명령어로 확인한다 : SQL> SELECT NAME,TYPE,TOTAL_MB,FREE_MB FROM V$ASM_DISKGROUP; See Also: Oracle Database Utilities for more information about asmcmd "Managing Automatic Storage Management" for information about other tools that you can use to manage Automatic Storage Management Oracle Database Administrator's Guide for a more detailed description of Automatic Storage Management
99 AIX 6.1에 오라클 9i 설치
조인상
13176 2012-03-23
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 일명 <certi> 가 되지 않는 버전 궁합이기 때문에 가급적 설치하지 않는 쪽이 좋음. AIX 6.1 부터는 aio가 자동으로 관리되기 때문에 Oracle 9i 설치본의 rootpre.sh 를 실행할때 aio 가 동작하고 있지 않다고 걸림. 해서 rootpre.sh 스크립트의 다음 부분을 수정하여 건너뜀. # Asynchronous I/O echo " Configuring Asynchronous I/O..." | tee -a $LOG aio=`lsdev -C -t aio|awk '{print $2}'` case $aio in *Available*) echo "Asynchronous I/O is already defined" | tee -a $LOG ;; *Defined*) mkdev -l aio0 | tee -a $LOG chdev -P -l aio0 -a autoconfig='available' ;; *) echo "Asynchronous I/O is not installed on this system." >> $LOG # cat << END #Asynchronous I/O is not installed on this system. #You will need to install it, and either configure it yourself using #'smit aio' or rerun the Oracle root installation procedure. #END ;; esac 위와 같이 해당부분을 remark 해 버리고 넘어감. 패치시에도 runInstall 실행시 AIX 5200, 5100 버전이 아니라면서 실행이 불가함. 패치디렉토리의 install/oraparam.ini 파일을 [Certified Versions] Solaris=5.8,5.9 Linux=redhat-2.1AS HPUX=B.11.00,B.11.11 Decunix=V5.1A,V5.1 AIX=5200,5100 --> AIX=6100,5200,5100 위와 같이 수정하여 설치진행하여야 함.
98 ORA-04063: package body "EXFSYS.DBMS_EXPFIL_EXP" has errors
조인상
16127 2012-01-04
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 에러내용 : export 시에 에러 발생. EXP-00008: ORACLE error 4063 encountered ORA-04063: package body "EXFSYS.DBMS_EXPFIL_EXP" has errors ORA-06508: PL/SQL: could not find program unit being called ORA-06512: at "EXFSYS.DBMS_EXPFIL_DEPASEXP", line 61 ORA-06512: at line 1 EXP-00083: The previous problem occurred when calling EXFSYS.DBMS_EXPFIL_DEPASEXP.schema_info_exp . exporting user history table . exporting default and system auditing options . exporting statistics Export terminated successfully with warnings. 에러내용 확인 04063, 00000, "%s has errors" // *Cause: Attempt to execute a stored procedure or use a view that has // errors. For stored procedures, the problem could be syntax errors // or references to other, non-existent procedures. For views, // the problem could be a reference in the view's defining query to // a non-existent table. // Can also be a table which has references to non-existent or // inaccessible types. // *Action: Fix the errors and/or create referenced objects as necessary. 해결 : EXFSYS 스키마가 존재하지 않으면 설치해줘야 한다. 이 스키마는 기본적으로 설치되는 "typical installation" 항목에 포함되지 않는다. SYSDBA 로 로그인한후 @$ORACLE_HOME/rdbms/admin/catexf.sql 실행
97 AIO on HP-UX filesystem
조인상
10393 2011-11-01
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 멤버만 조회가능 http://www.ischo.net/5086
96 Diagnosing and Resolving ORA-4030 errors (Oracle Metalink)
조인상
10171 2011-10-31
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 멤버만 조회가능. http://www.ischo.net/5061
95 Master Note for Diagnosing ORA-4030 (Oracle Metalink)
조인상
9820 2011-10-31
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 멤버만 조회가능. http://www.ischo.net/5063