ORACLE/SQL2018. 7. 6. 11:36
반응형

COUNT(*) OVER () : 전체행 카운트


COUNT(*) OVER (PARTITION BY 컬럼) : 그룹단위로 나누어 카운트


MAX(컬럼) OVER() : 전체행 중에 최고값


MAX(컬럼) OVER(PARTITION BY 컬럼) : 그룹내 최고값


MIN(컬럼) OVER () : 전체행 중에 최소값


MIN(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 최소값


SUM(컬럼) OVER () : 전체행 합


SUM(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 합


AVG(컬럼) OVER () : 전체행 평균


AVG(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 평균


STDDEV(컬럼) OVER () : 전체행 표준편차


STDDEV(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 표준편차


RATIO_TO_REPORT(컬럼) OVER () : 현재행값/SUM(전체행값) 퍼센테이지로 나타낼경우 100곱하면 됩니다.


RATIO_TO_REPORT(컬럼) OVER (PARTITION BY 컬럼) : 현재행값 / SUM(그룹행값) 퍼센테이지로 나타낼경우 100곱하면 됩니다

반응형
Posted by [PineTree]
ORACLE/TroubleShooting2016. 10. 19. 12:01
반응형

이 문서는 sysdba 로 접속하는 중 발생할 수 있는 ORA-1031 또는 ORA-1017 오류에 대한 진단을 위해 사용되는 몇가지 단계에 대해 설명을 목적으로 합니다.

최신 버전에서 인증 실패와 같은 에러는 ORA-01031에서 ORA-01017 로 변경되었습니다. 그래서 이제부터는 모든 인증 실패에 관련해서는 "ORA-01017: invalid username/password; logon denied" 에러 메시지가 보일 것이고, 이미 데이터베이스에 접속이 된 상태에서 발생하는 불충분한 권한으로 인한 오류에 대해서만 ORA-01031에 만나게 될 것입니다.

질문을, 도움말을, 그리고 문서를 통해 당신의 경험을 공유하십시오.

당신은 오라클 고객들과, 오라클 직원들 그리고 업계 전문가들과 함께 이 주제에 대해 토론하고 싶으십니까?

귀하가 질문하고 또는 다른이로 부터 도움을 받을수 있는 그리고 귀하의 경험을 공유할 수 있는 포럼 가입은 여기를 클릭하십시오.
포럼을 통해 많은 주제에 대해 토론과 도움되는 정보를 얻기 위해 오라클 지원 커뮤니티에 접속하기 위해서는 여기를 클릭하십시오.

진단 절차

기본 개념

사용자는 다음의 방법 중 하나를 사용하여 오라클 서버에 SYSDBA 로 접속할 수 있습니다:

OS 인증
암호 파일 인증


사용자는 암호파일(password file) 인증을 통해 원격 시스템으로 부터 SYSDBA 로 데이터베이스에 연결해야만 합니다. 오라클 서버가 윈도우즈에서 실행될 경우 원격에서 SYSDBA 로 연결시 사용자 이름과 암호를 넣지않고 안전하게 연결할 수 있습니다.

오라클 11g 부터 SYSDBA 에 대한 인증방식이 보다 강화 되었습니다. 자세한 사항은 문서 457083.1 를 참고하십시오.




SYSDBA OS 인증

OS 인증은 OS 에 의해 관리되는 정보로 데이터베이스에 연결하는 사용자의 ID 를 확인하는 절차를 거치게 됩니다. OS 사용자는 다음과 같은 조건이 부합될 경우 OS 인증 방법을 사용할 수 있습니다:

1. 사용자가 특정 그룹의 구성원입니다.
2. OS 인증은 서버의 설정(sqlnet.authentication_services가 올바르게 설정되어야 함)을 통해 허용됩니다.

OS 사용자는 sysdba 로 접속하기 위해 반드시 OSDBA 그룹에 소속되어야 합니다. 유닉스의 경우 기본 이름은 dba 입니다. 윈도우즈의 경우 그룹이름은 ORA_DBA 입니다.

유닉스의 경우, sqlnet.authentication_services 값은 반드시 (ALL) 혹은 (BEQ, <other values>) 로 설정되어야 합니다. 윈도우즈의 경우 반드시 (NTS) 로 설정해야 합니다.



SYSDBA 암호 파일 인증


원격에서 SYSDBA 로 접속할 경우 제공된 자격 증명은 암호 파일의 내용을 비교하여 이루어집니다.

암호파일 인증은 데이터베이스 매개 변수인 remote_login_password 의 값이 "shared" 혹은 "exclusive" 인 경우에만 가능합니다.

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;




Note: OS 인증과 암호파일 인증 모두가 가능할 경우 OS 인증이 사용됩니다. 이는 귀하가 사용자이름/암호 조합으로 연결할 수 있음을 의미합니다. 자세한 사항은 <문서 242258.1> 를 참고하십시오.




OS 인증을 사용하여 SYSDBA 접속시 ORA-1031 오류 해결방법.

1. 사용자가 OSDBA 그룹에 소속되어 있는지 확인하십시오.

유닉스의 경우

A. 사용자가 소속된 그룹을 확인하십시오:



[oracle@seclin4 ~]$ id
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba) context=user_u:system_r:unconfined_t




B. $ORACLE_HOME/rdbms/lib/config.[cs] 파일에 정의된 OSDBA 그룹이 무엇인지 확인하십시오.

리눅스의 예제::

[oracle@seclin4 ~]$ cat $ORACLE_HOME/rdbms/lib/config.c

/* SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access. */
/* Refer to the Installation and User's Guide for further information. */

/* IMPORTANT: this file needs to be in sync with
rdbms/src/server/osds/config.c, specifically regarding the
number of elements in the ss_dba_grp array.
*/

#define SS_DBA_GRP "dba"
#define SS_OPER_GRP "dba"
#define SS_ASM_GRP ""

char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP, SS_ASM_GRP};

AIX 의 예제:



[celcaix3]/grdbms/64bit/app/oracle/product/1120/rdbms/lib> cat config.s
# SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access.
# Refer to the Installation and User's Guide for further information.

.rename H.10.NO_SYMBOL{TC},""
.rename H.11.NO_SYMBOL{TC},""
.rename H.12.NO_SYMBOL{TC},""
.rename H.13.NO_SYMBOL{RO},""
.rename H.14.NO_SYMBOL{RO},""
.rename H.15.NO_SYMBOL{RO},""
.rename H.16.ss_dba_grp{TC},"ss_dba_grp"

.lglobl H.13.NO_SYMBOL{RO}
.lglobl H.14.NO_SYMBOL{RO}
.lglobl H.15.NO_SYMBOL{RO}
.globl ss_dba_grp{RW}

# .text section

# .data section

.toc
T.16.ss_dba_grp:
.tc H.16.ss_dba_grp{TC},ss_dba_grp{RW}
T.10.NO_SYMBOL:
.tc H.10.NO_SYMBOL{TC},H.13.NO_SYMBOL{RO}
T.11.NO_SYMBOL:
.tc H.11.NO_SYMBOL{TC},H.14.NO_SYMBOL{RO}
T.12.NO_SYMBOL:
.tc H.12.NO_SYMBOL{TC},H.15.NO_SYMBOL{RO}

.csect ss_dba_grp{RW}, 3
.llong H.13.NO_SYMBOL{RO}
.llong H.14.NO_SYMBOL{RO}
.llong H.15.NO_SYMBOL{RO}
# End csect ss_dba_grp{RW}

.csect H.13.NO_SYMBOL{RO}, 3
.string "dba"
# End csect H.13.NO_SYMBOL{RO}

.csect H.14.NO_SYMBOL{RO}, 3
.string "dba"
# End csect H.14.NO_SYMBOL{RO}

.csect H.15.NO_SYMBOL{RO}, 3
.string ""
# End csect H.15.NO_SYMBOL{RO}
.llong 0x00000000

# .bss section


솔라리스의 예제:



.section ".text",#alloc,#execinstr
/* 0x0000 7 */ .file "x.c"

.section ".data",#alloc,#write
/* 0x0000 9 */ .global ss_dba_grp
/* 0x0000 10 */ .align 8

.global ss_dba_grp
ss_dba_grp:
/* 0x0000 17 */ .align 8
/* 0x0000 18 */ .xword (.L12+0)
/* 0x0004 24 */ .align 8
/* 0x0004 25 */ .xword (.L13+0)
/* 0x0008 26 */ .type ss_dba_grp,#object
/* 0x0008 27 */ .size ss_dba_grp,16

.section ".rodata1",#alloc
/* 0x0008 13 */ .align 8


.L12:
/* 0x0008 15 */ .ascii "dba\0"
/* 0x0014 20 */ .align 8


.L13:
/* 0x0014 22 */ .ascii "dba\0"




위의 예제에서 우리는 사용자가 config.c 파일에서 SS_DBA_GRP 값과 일치한 "dba" 그룹의 구성원임을 확인하였습니다. 만약 그룹이 정상적으로 설정되어 있는 연결에 문제가 있다면 오라클의 그룹 구성원(group membership) 이 올바른지 확인을 위해 문서 67984.1 의 스크립트를 사용하십시오.



NSCD 이슈

OS 인증을 사용한 sysdba 접속시, /etc/passwd 와 /etc/group 로 부터 정보를 캐싱하는 nscd 서비스(/etc/nscd.conf 로 부터 설정됨) 의 문제로 ora-1031 오류가 간혈적으로 발생할 수 있습니다. 만약 이 서비스를 중지할 경우 문제가 해결된다면 OS 공급업체에 문의하시기 바랍니다.



/etc/group 이슈

만약 /etc/group 화일이 어떤 다른 그룹명들을 가지고 있고 이것이 많은 수의 멤버들을 가지고 있어 그 라인의 길이가 길어진다면, OS인증을 사용하는 sysdba로의 접속은 설명하기 어려운 다른 요인으로 인해 어쩌면 실패할 지도 모릅니다, 이 때는 note 13092226.8 에 나와 있는 대안을 참조하십시오.



윈도우즈의 경우

윈도우즈에서 OS 인증을 사용하기 위해서는 OS 사용자는 반드시 아래 두개의 그룹 중 하나의 구성원 이어야 합니다:

ORA_DBA
ORA_<%ORACLE_SID%>_DBA
두번째 그룹의 구성원이 되는 것은 %ORACLE_SID% 로 지정된 인스턴스에 접속시 OS 사용자가 OS 인증을 사용하는 것을 허락합니다.

OS 사용자가 이 두개의 로컬 그룹의 구성원인지 확인하십시오.

OS 사용자의 이름을 가져오기 위해서는:


D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>echo %username%
dbadmin

로컬 그룹의 구성원 목록을 확인하기 위해서는:


D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>NET LOCALGROUP ORA_DBA
Alias name ORA_DBA
Comment Members can connect to the Oracle database as a DBA without a password
Members

-------------------------------------------------------------------------------
dbadmin
NT AUTHORITY\SYSTEM
The command completed successfully.





D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>set oracle_sid=d1v10204

D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>NET LOCALGROUP ORA_%ORACLE_SID%_DBA
Alias name ORA_d1v10204_DBA
Comment Members can connect to instance d1v10204 as a DBA without a password

Members
-------------------------------------------------------------------------------
dbadmin
The command completed successfully.

만약 사용자가 이 그룹의 구성원이지만 접속시 문제가 발생한다면, 아래 링크를 참고하여 C 프로그램을 컴파일하고 오라클 그룹 구성원 설정이 올바르게 되어 있는지 여부를 확인하기 위해 오라클 실행파일을 다시 수행하십시오:

http://msdn.microsoft.com/en-us/library/aa370655(VS.85).aspx




2. $ORACLE_HOME/network/admin/SQLNET.ORA 에 설정된 SQLNET.AUTHENTICATION_SERVICES 매개변수 값을 확인 하십시오



유닉스의 경우

만약 강력한 인증 방법을 사용하지 않는 경우에 이 매개변수는 설정하지 말아야 합니다. 만약 이 방법이 사용될 경우 아래의 값 중 하나를 매개변수로 설정하십시오:



SQLNET.AUTHENTICATION_SERVICES = (ALL)


or



SQLNET.AUTHENTICATION_SERVICES = (BEQ,<the strong auth method>)

<강력한 인증 방법> 은 다음의 값을 조합할 경우입니다: TCPS, KERBEROS5, RADIUS


NOTE: SQLNET.AUTHENTICATION_SERVICES 의 값에 공백이 선행되면, ORA-1031 가 발생할 수 있습니다.

윈도우즈의 경우

이 매개변수는 NTS 로 설정해야 합니다:



SQLNET.AUTHENTICATION_SERVICES = (NTS)

필요한 경우 귀하는 NTS 옆에 다른 강력한 인증 방식을 추가할 수 있습니다:


SQLNET.AUTHENTICATION_SERVICES = (NTS,TCPS)



Note: 매개변수가 NONE 으로 설정된 경우 OS 인증은 사용할 수 없으며 사용자는 데이터베이스 연결시 유효한 사용자 이름/암호 조합을 제공해야 합니다.

위와 마찬가지로 SQLNET.AUTHENTICATION_SERVICES 의 값에 공백이 선행되면, ORA-1031 가 발생할 수 있습니다.



Note:
윈도우즈에서 OS 인증 방식을 사용하여 sysdba 로 접속할 수 없는 사용자는 도메인 사용자일 수 있습니다. 귀하가 다음의 상황에 부합되는지 확인하십시오:
A) 사용자가 로컬 ora_dba 그룹의 직접적인 구성원인지가 중요합니다. (자세한 내용은 <문서 1065023.1> 참고하십시오.)

B) 오라클 서비스는 반드시 로컬에서 SYSDBA 로 접속할 수 있는 도메인 사용자에 대한 그룹 구성원을 확인할 수 있는 사용자로 기동되어야 합니다. ( 자세한 내용은 <문서 1071638.1> 를 참고하십시오.)

C) 활성화된 디렉토리 서버(Active Directory Server) 와 RDBMS 서버의 시간이 완벽하게 동기화되어 있는지 확인하십시오. 작은 시간의 차이도 윈도우즈에서 기본으로 사용하는 커버로스(KERBEROS) 인증 방식에서 문제가 발생할 수 있습니다.
이러한 경우 ORA-1031 시간 차이로 인해 간혈적으로 발생할 수 있습니다.

D) 오라클 서비스를 기동한 사용자의 이름에 아스키 캐릭터가 아닌 글자(NON ACSII characters) 를 포함하고 있는지 확인하십시오. 자세한 내용은 <문서 1280996.1> 를 참고하십시오.


ORA-12638 는 로컬보다 액티브 디렉토리(Active directory) 를 통해 관리되는 사용자의 경우에 나타납니다.


윈도우즈에서 OS 사용자가 도메인 사용자일때, ORA-12638 가 발생할 수 있습니다. 이 경우 클라이언트단 SQL*Net 추적 파일(trace file) 을 획득하고 naun5authent 함수에 의해 발생하는 MS 윈도우즈 오류가 있는지 확인하는 것이 중요합니다:

A) 클라이언트의 sqlnet.ora 파일에 다음 줄을 추가합니다. (클라이언트는 RDBMS 서버와 동일할 수 있음):


trace_level_client = 16
trace_directory_client = c:\temp\newsqlnet


B) SYSDBA 로 접속을 시도하고 SQL*Net 추적 파일을 획득합니다. 해당 파일을 열어 "SSPI" 문자열을 찾습니다. 귀하는 아래와 비슷한 내요을 확인할 수 있습니다:


[02-OCT-2011 09:21:02:076] naun5authent: SSPI: 0x8009030c error in InitializeSecurityContext
[02-OCT-2011 09:21:02:076] naun5authent: exit
[02-OCT-2011 09:21:02:076] naunauthent: exit
[02-OCT-2011 09:21:02:076] nau_ccn: get credentials function failed
[02-OCT-2011 09:21:02:076] nau_ccn: failed with error 12638
[02-OCT-2011 09:21:02:076] nacomsd: entry
[02-OCT-2011 09:21:02:076] nacomfsd: entry
[02-OCT-2011 09:21:02:076] nacomfsd: exit
[02-OCT-2011 09:21:02:076] nacomsd: exit
[02-OCT-2011 09:21:02:076] nau_ccn: exit
[02-OCT-2011 09:21:02:076] na_csrd: failed with error 12638
[02-OCT-2011 09:21:02:076] na_csrd: exit
[02-OCT-2011 09:21:02:076] nacomer: error 12638 received from authentication service

C) 아래의 링크를 통해 MS 오류를 검색할 수 있습니다. (위 예제의 경우 0x8009030c):

http://technet.microsoft.com/en-us/library/cc786775%28WS.10%29.aspx

D) 윈도우즈 관리자에게 연락하여 마이크로 소프트로부터의 권고 작업을 수행하도록 하십시오. SSPI 오류에 대한 해결책은 다음과 같습니다:

"로그온을 거부합니다. 정책의 범위를 결정할 때 그룹 정책이 컴퓨터와 사용자 모두 해당되도록 합니다.이렇게 하면 컴퓨터 계정은 암호 재설정이 필요하거나 혹은 문제가 발생한 사용자 계정 정보가 필요할 수 있습니다. 사용자 계정이 올바르게 설정되어 있는지 액티브 디렉토리를 확인하십시오. netdom 이나 nltest 와 같은 유틸리티를 사용하여 컴퓨터 계정의 암호를 테스트하십시오."



3. 1단계와 2단계에 따른 구성사항을 확인 후 다음의 문서에 설명된 문제를 검토하십시오:

Note 69642.1 - UNIX: Checklist for Resolving Connect AS SYSDBA Issues
Note 114384.1 - WIN: Checklist for Resolving CONNECT AS SYSDBA (INTERNAL) Issues

4. 위 문서를 참고했음에도 문제가 해결되지 않으면 SR 을 통해 오라클의 지원을 받으시기 바랍니다. SR 을 통한 지원 요청시 다음의 정보를 제공해 주십시오:

유닉스의 경우

A) $ORACLE_HOME/network/admin/sqlnet.ora
B) $ORACLE_HOME/rdbms/lib/config.c(or config.s)
C) "id" 명령어 출력결과
D) 아래 명령 수행 후 출력되는 추적 파일:


Linux:
strace -o /tmp/strace_sysdba.output -cfT sqlplus / as sysdba



AIX, Solaris:
truss -fea -o /tmp/truss_sysdba.output sqlplus / as sysdba



HP-UX:
tusc -afpo /tmp/tusc_sysdba.output -aef sqlplus / as sysdba



윈도우즈의 경우


A) %ORACLE_HOME%/network/admin/sqlnet.ora
B) "echo %username% 과 "NET LOCALGROUP ORA_DBA" 명령 출력 결과
C) 문서 395525.1 과 문서 374116.1 에 따라 문제 재현시 획득한 클라이언트/서버 SQL*Net 추적파일.

암호 파일 인증 사용시 ORA-1031 문제 해결 방법



1.매개변수 remote_login_passwordfile 의 값을 확인하십시오. 이 값은 EXCLUSIVE 혹은 SHARED 로 설정되어야만 합니다:

SQL> show parameter remote_login_passwordfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE

만약 매개변수가 올바르게 설정되어 있지 않다면, 수정 후 데이터베이스를 재시작 하십시오:



SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;


2. 올바른 이름의 암호 파일이 올바른 디렉토리에 존재하는지와 해당 파일의 소유권 및 권한이 올바르게 설정되어 있는지 확인하십시오



유닉스의 경우

암호 파일은 orapw<ORACLE_SID> 형태로 $ORACLE_HOME/dbs 디렉토리에 존재해야만 합니다. 만약 존재하지 않는다면 orapwd 명령어를 사용하여 재생성하십시오.



$ > orapwd file=$ORACLE_HOME/dbs/orapw<sid> password=<password> force=y ignorecase=n
파일의 권한은 아래와 같아야만 합니다:



-rw-r----- 1 oracle oinstall 1536 Jul 21 13:50 orapwdv11201


orapwd 명령어와 관련된 자세한 정보는 <문서 1029539.6> 를 참고하시기 바랍니다.

윈도우즈의 경우

윈도우즈의 경우 암호 파일의 기본 경로는 %ORACLE_HOME%/database 입니다. 암호 파일의 이름은 반드시 pwd<%ORACLE_SID%>.ora 이어야 합니다.
암호 파일 인증을 사용하면 오라클은 아래의 순서에 따라 해당 위치에 암호 파일이 있는지 확인하게 됩니다:

레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HomeXX\ORA_<%ORACLE_SID%>_PWFILE 이 가르키는 폴더
레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HomeXX\ORA_PWFILE 이 가르키는 폴더
기본 경로 (%ORACLE_HOME%/database)


Note: 암호 파일 인증을 설정한다면, 레지스트리 키에 의해 지정된 폴더에 암호 파일이 존재하는지 확인하십시오.




만약 암호 파일이 올바른 위치의 폴더에 존재하지 않으면, orapwd 명령을 사용하여 생성하십시오:



D:\> cd %ORACLE_HOME/database
D:\> orapwd file=pwd<sid>.ora password=<password> force=y nosysdba=n

orapwd 명령어와 관련된 자세한 정보는 <문서 1029539.6> 를 참고하시기 바랍니다.



3. 사용자가 SYSDBA 권한을 부여받았는지 확인하십시오





SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE


만약 사용자가 권한을 부여받지 않았다면, 아래 명령을 수행하십시오:



grant SYSDBA to myadminuser;


myadminuser 는 sysdba 로 접속할 사용자 이름입니다.

4. 데이터 베이스 연결에 사용할 리스너의 설정에 아무런 문제가 없는지 확인하십시오.


리스너 설정에 ORACLE_HOME 매개변수 값이 반드시 올바르게 설정되어야 합니다:



SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = d1v11203)
(ORACLE_HOME = /oracle/product/11203)
(SID_NAME = d1v11203)
)
)


리스너에 정의된 SID 의 경우 ORACLE_SID 로 설정한 인스턴스 이름의 대소문자까지 일치해야만 합니다:



SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = d1v11203)
(ORACLE_HOME = /oracle/product/11203)
(SID_NAME = d1v11203)
)
)






암호 파일 인증시 자주 발생하는 문제들

1) 로드 밸런싱 옵션으로 여러개의 TNS 주소로 맵핑된 TNS 별칭(alias) 을 사용하여 SYSDBA 로 원격 연결시 간혈적으로 ORA-1031 이 발생할 수 있습니다.



TNS 별칭은 tnsnames.ora 파일에 아래와 같이 정의되어 있습니다:

CLIENT_load_balance=
(DESCRIPTION =
(LOAD_BALANCE = yes)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ro-rac1.ro.oracle.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ro-rac2.ro.oracle.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = service.idc.oracle.com)
)
)


최소 하나의 노드에서 암호 파일이 정상적으로 설정되어 있지 않은 경우, 간혈적으로 해당 오류가 발생할 수 있습니다. 이 경우 모든 노드에 대해 암호 파일이 올바르게 설정되어 있는지 확인하십시오.

2) 아래의 오류와 함께 RMAN 보조 연결(auxiliary connections) 이 실패합니다:

RMAN-04006: error from auxiliary database: ORA-01031: insufficient privileges




RMAN 을 실행하기 전에 원격 보조 데이터베이스에 암호 파일이 올바르게 구성되어 있는지 확인하십시오.

3) EM 설치중 emca_repos_config_yyyy_mm_dd_hh_mm_ss.log 파일에서 아래의 오류가 기록될 수 있습니다:


Caused by: oracle.sysman.emdrep.config.ConfigurationException:
Cannot Create Connection:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testemconfig.us.oracle.com)(PORT=1553)))(CONNECT_DATA=(SERVICE_NAME=TESTDB)))
SYS
sysdba
ORA-01031: insufficient privileges



이러한 오류는 sqlplus 에서도 재현됩니다:



[oracle@test dbs]$ sqlplus sys/oracle@r01 as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jun 7 16:02:39 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges

이러한 경우, 위에 설명한 대로 귀하는 암호 파일 인증을 통해 sysdba 연결시 발생할 수 있는 오류 해결 방법을 단계별로 수행하여 해결해야 합니다.



반응형
Posted by [PineTree]
ORACLE/ADMIN2016. 7. 8. 14:23
반응형

오라클 리스터 프로세느 확인

ps -ef | grep LOCAL=NO | awk '{print $2}'

오라클 리스너 프로세스 한꺼 번에 정리

ps -ef | grep LOCAL=NO | awk '{print $2}' | xargs kill -9

반응형
Posted by [PineTree]
ORACLE/SQL2016. 4. 6. 17:29
반응형

출처: http://m.blog.yes24.com/metalzang/post/1785694

나누기 연산 하는 경우거나 평균값을 구하는 경우에 분모 값이 0 인 상태에서 연산을 하면 에러(ORA-01476)가 발생하는데...

이 경우 아래와 같은 예제를 활용하시면 해결하실 수 있습니다.

-- ORA-01476: 제수가 0 입니다.
-- 나누기 연산을 하여 값을 구하는 경우

select a/b result
from (select 100 a, 0 b from dual)

-- ORA-01476: 제수가 0 입니다.
-- 두개의 값에 따라 평균값을 구하는 경우
select avg(a/b) result
from (select 100 a, 0 b from dual)

-- NULLIF 함수를 사용하여 처리
-- 분모가 0 인 경우에 결과값은 0
select nvl(avg(a/nullif(b,0)),0) result
from (select 100 a, 0 b from dual)

-- 결과값 : 2, 0.5
select avg(200/100) result from dual
select avg(100/200) result from dual

-- DECODE 함수를 사용하여 처리.
select decode(b,0,0,null,0, a/b) result
from (select 100 a, 0 b from dual)

-- ORA-01476: 제수가 0 입니다.
-- AVG 함수를 사용하는 경우에는 분자/분모 모두 "0"이 아니여야 하므로
-- 아래와 같이 DECODE, NULLIF 함수를 사용하면 해결할 수 있음.
select decode(sum(b),0,0,null,0, avg(a/b)) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)

-- 131.38125 결과값
-- ROUND 함수로 인한 결과값 반올림(131.4)
select ROUND(decode(sum(b),0,0,null,0, avg(a/b)),1) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)

-- 131.38125 결과값
-- 지정한 소수점 단위로 절삭한다.(131.3)
select trunc(decode(sum(b),0,0,null,0, avg(a/b)),1) result
from (
select 1001 a, 16 b from dual union all
select 2002 a, 10 b from dual
)

반응형

'ORACLE > SQL' 카테고리의 다른 글

oracle table count 오라클 테이블 건수 확인  (0) 2023.07.02
오라클 Count over  (0) 2018.07.06
동시성제어 SELECT FOR UPDATE #1  (0) 2013.03.01
Oracle EXISTS Versus IN  (0) 2010.06.18
NOT IN과 NOT EXISTS의 차이점  (0) 2010.04.02
Posted by [PineTree]
ORACLE/11G2014. 8. 27. 20:23
반응형



In this Document

Purpose
Details
References

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.1.0 to 11.2.0.3 [Release 11.2]
Information in this document applies to any platform.
***Checked for relevance on 19-Jun-2012***

Purpose

To show the option differences between the different editions of Oracle 11.2 server

SOURCE:

Oracle® Database Licensing Information 11g Release 2 (11.2) Part Number E10594-04

      Chapter 1 Oracle Database Editions

Details

Feature/OptionSE1SEEENotes

High Availability

       

Oracle Fail Safe

Y

Y

Y

Windows only

Oracle RAC One Node

N

N

Y

Extra cost option

Oracle Data Guard—Redo Apply

N

N

Y

 

Oracle Data Guard—SQL Apply

N

N

Y

 

Oracle Data Guard—Snapshot Standby

N

N

Y

 

Oracle Active Data Guard

N

N

Y

Extra cost option

Rolling Upgrades—Patch Set, Database, and Operating System

N

N

Y

 

Online index rebuild

N

N

Y

 

Online index-organized table organization

N

N

Y

ALTERTABLE...MOVEONLINEoperations

Online table redefinition

N

N

Y

Using theDBMS_REDEFINITIONpackage

Duplexed backup sets

N

N

Y

 

Block change tracking for fast incremental backup

N

N

Y

 

Unused block compression in backups

N

N

Y

 

Block-level media recovery

N

N

Y

 

Lost Write Protection

N

N

Y

 

Automatic Block Repair

N

N

Y

Requires Active Data Guard option

Parallel backup and recovery

N

N

Y

 

Tablespace point-in-time recovery

N

N

Y

 

Trial recovery

N

N

Y

 

Fast-start fault recovery

N

N

Y

 

Flashback Table

N

N

Y

 

Flashback Database

N

N

Y

 

Flashback Transaction

N

N

Y

 

Flashback Transaction Query

N

N

Y

 

Oracle Total Recall

N

N

Y

Extra cost option

Scalability

       

Oracle Real Application Clusters

N

Y

Y

Extra cost with EE, included with SE

Automatic Workload Management

N

Y

Y

Requires Oracle Real Application Clusters

Performance

       

Client Side Query Cache

N

N

Y

 

Query Results Cache

N

N

Y

 

PL/SQL Function Result Cache

N

N

Y

 

In-Memory Database Cache

N

N

Y

Extra cost option

Database Smart Flash Cache

N

N

Y

Solaris and Oracle Enterprise Linux only

Support for Oracle Exadata Storage Server Software

N

N

Y

 

Security

       

Advanced Security Option

N

N

Y

Extra cost option

Oracle Label Security

N

N

Y

Extra cost option

Virtual Private Database

N

N

Y

 

Fine-grained auditing

N

N

Y

 

Oracle Database Vault

N

N

Y

Extra cost option

Secure External Password Store

N

N

Y

 

Development Platform

       

SQLJ

Y

Y

Y

Requires Oracle Programmer

Oracle Developer Tools for Visual Studio .NET

Y

Y

Y

Windows only

Microsoft Distributed Transaction Coordinator support

Y

Y

Y

Windows only

Active Directory integration

Y

Y

Y

Windows only

Native .NET Data Provider—ODP.NET

Y

Y

Y

Windows only

.NET Stored Procedures

Y

Y

Y

Windows only

Manageability

       

Oracle Change Management Pack

N

N

Y

Extra cost option

Oracle Configuration Management Pack

N

N

Y

Extra cost option

Oracle Diagnostic Pack

N

N

Y

Extra cost option

Oracle Tuning Pack

N

N

Y

Extra cost option, also requires the Diagnostic Pack

Oracle Provisioning and Patch Automation Pack

N

N

Y

Extra cost option

Oracle Real Application Testing

N

N

Y

Extra cost option

Database Resource Manager

N

N

Y

 

Instance Caging

N

N

Y

 

SQL Plan Management

N

N

Y

 

VLDB, Data Warehousing, Business Intelligence

       

Oracle Partitioning

N

N

Y

Extra cost option

Oracle OLAP

N

N

Y

Extra cost option

Oracle Data Mining

N

N

Y

Extra cost option

Oracle Data Profiling and Quality

N

N

Y

Extra cost option

Oracle Data Watch and Repair Connector

N

N

Y

Extra cost option

Oracle Advanced Compression

N

N

Y

Extra cost option

Basic Table Compression

N

N

Y

 

Bitmapped index, bitmapped join index, and bitmap plan conversions

N

N

Y

 

Parallel query/DML

N

N

Y

 

Parallel statistics gathering

N

N

Y

 

Parallel index build/scans

N

N

Y

 

Parallel Data Pump Export/Import

N

N

Y

 

In-memory Parallel Execution

N

N

Y

 

Parallel Statement Queuing

N

N

Y

 

Transportable tablespaces, including cross-platform

N

N

Y

Import of transportable tablespaces supported into SE, SE1, and EE

Summary management—Materialized View Query Rewrite

N

N

Y

 

Asynchronous Change Data Capture

N

N

Y

 

Integration

       

Basic Replication

Y

Y

Y

SE1/SE: read-only, updateable materialized view

Advanced Replication

N

N

Y

Multi-master replication

Oracle Streams

Y

Y

Y

SE1/SE: no capture from redo

Database Gateways

Y

Y

Y

Separate product license

Messaging Gateway

N

N

Y

 

Networking

       

Oracle Connection Manager

N

N

Y

Available via a custom install of the Oracle Database client, usually installed on a separate machine

See "Oracle Connection Manager" for more information

Infiniband Support

N

N

Y

 

Content Management

       

Oracle Spatial

N

N

Y

Extra cost option

Semantic Technologies (RDF/OWL)

N

N

Y

Requires Oracle Spatial and the Oracle Partitioning option

References

NOTE:465465.1 - Differences Between Enterprise, Standard and Personal Editions on Oracle 10.2
NOTE:269040.1 - Differences Between Enterprise, Standard and Personal Editions on Oracle 9.2
NOTE:465460.1 - Differences Between Enterprise, Standard and Personal Editions on Oracle 11.1

반응형
Posted by [PineTree]
ORACLE/TroubleShooting2014. 8. 22. 18:44
반응형

In this Document


Symptoms

Changes

Cause

Solution

References


This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.2 and later
HP-UX Itanium

***Checked for relevance on 26-Jul-2012***

Symptoms

On HP Itanium, when trying to create a new 11.2.0.2 database or upgrade an existing database to 11.2.0.2 and the database has controlfiles, datafiles, and/or redo log files located on raw devices, we get errors like:

ALTER DATABASE MOUNT
Errors in file
/u02/oracle/app/oracle/diag/rdbms/demo/demo/trace/demo_ckpt_20205.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/dev/vg11/rcontrol_01.dbf'
...
Errors in file
/u02/oracle/app/oracle/diag/rdbms/demo/demo/trace/demo_m001_20219.trc
(incident=192165):
ORA-00600: internal error code, arguments: [kcidr_io_check_common_2], [1],
[/dev/vg11/rcontrol_01.dbf], [0], [1], [0], [], [], [], [], [], []
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/dev/vg11/rcontrol_01.dbf'
...


Doing a tusc of the startup, eg. with:

$ tusc -fao /tmp/tusc.out sqlplus "/ as sysdba"
SQL> startup mount


we can see permissions errors raised when opening the block device:

open("/dev/vg11/control_01.dbf", O_RDONLY|O_NDELAY|0x800, 060750)
--> ERR#13 EACCES


Note the difference in the file names - rcontrol_01.dbf is the character device whereas control_01.dbf (without the leading "r") is the corresponding block device.

Changes

No changes to the environment, but the 11.2.0.2 database software was just upgraded or installed

Cause

This is the same issue as described in non-published bug:10107681, which was closed as a OS/vendor problem.

From 11.2.0.2 the fix for bug:9956769 is present to add protection to the volumes - from this bug, we have the following:

If you do not want to mount disks used by Oracle ASM on a separate mount
point, then on servers where the system administrator has explicitly granted
to the Oracle Grid Infrastructure installation owner read/write access to any
/dev/rdisk/* files for use by Oracle ASM, you must enable read permissions on
the corresponding block device. You do not need to change the ownership of
the block device.

Solution

Possible solutions are:

1) Relocate database files to filesystem
The problem is only hit when using raw devices (note that the issue is also present when using ASM as it affects eg. disk discovery)

 - or -

2) Explicitly give read permissions on the block devices
This should be done for all database files (controlfiles, datafiles, redo logs) located on raw devices, eg.:

# chmod a+r /dev/vg11/control_01.dbf


- or -

3) Apply HPUX patch PHCO_41479

References


BUG:10252972 - ORA-600 OPENING CONTROLFILE DURING UPGRADE FROM 11.2.0.1.0 TO 11.2.0.2.0 ON RAW
BUG:10331267 - UNABLE TO USE RAW DEVICES WITH 11.2.0.2

반응형

'ORACLE > TroubleShooting' 카테고리의 다른 글

Ksugetosstat Failed: Op = Slsgetkstat, Location = Slsupdatesta  (0) 2015.05.01
mutex 관련 여러가지  (0) 2014.12.16
shared pool  (0) 2014.03.23
SHARED POOL에 대한 점검 사항들  (0) 2014.03.23
Oracle Dump Trace뜨기  (0) 2013.06.23
Posted by [PineTree]
ORACLE/Backup & Recovery2014. 8. 15. 13:18
반응형

출처 :https://hoing.io/archives/268

 

1. TEST Information

Items Description
Test Date 2011 / 12 / 04
CPU VirtualBox VCPUx4
Main Memory 2GB
O/S version RHEL 5.5
Host Name test1, test2
ORACLE_SID testdb1, testdb2
Oracle version 10.2.0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Scenario

 

1) 현재 testdb1 , testdb2  SID RAC(10.2.0.5) 에서 HOT Backup을 이용하여 clonedb를 생성

2) 복제 되는 instance SID copydb 로 할 것이며, single 로 복구를 시도 할 것이다.

3) RAC /oradata/testdb ,  single  /oradata3/copydb 로 복구 할 것이다.

 

 

 

3. HOT BACKUP

 

■ 테스트를 간편하게 하기 위해 alter database begin backup; 으로 백업 진행한다.

 

SQL> alter database begin backup;

 

 Redo Temp Tablespace 파일을 제외한 모든 datafile 을 복사 한다.

$ cp system01.dbf /oradata3/copydb/

$ cp sysaux01.dbf /oradata3/copydb/

$ cp undotbs01.dbf /oradata3/copydb/

$ cp undotbs02.dbf /oradata3/copydb/

$ cp users01.dbf /oradata3/copydb/

 

 

■ 복사 후 end backup  을 실행한다.

 

SQL> alter database end backup;

 

END Backup 을 실행한 시간을 확인한다.

SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') "Time" from dual;

 

Time

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

2011-12-04:12:10:09

 

 

 

 

 

4. TEST Table Creation

 

■ 복사 후 복구 테스트를 위해서 테이블과 데이터를 입력한다.

 

■ 테이블 생성

SQL> create table test01 (no number) tablespace users;

 

■ 데이터 입력

 

BEGIN

for i in 1..1000 loop

insert into test01 values(i);

end loop;

commit;

END;

/

 

 

 log switch   checkpoint 발생

SQL> alter system switch logfile;   -- 수회 실행

 

 

 test table삭제

SQL> drop table test01 purge;

 

 

■ 삭제 시간 확인

SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') "Time" from dual;

 

Time

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

2011-12-04:12:26:00

 

 

 

 

 

5. Ready to clonedb

 

 spfile  pfile을 생성

SQL> create pfile='$ORACLE_HOME/dbs/initCOPYDB.ora' from spfile;

 

 controlfile 재생성을 위해 trace 파일 생성

SQL> alter database backup controlfile to trace as '/oradata3/copydb/recon.sql';

 

 pfile 수정

아래 파라미터를 clonedb 환경에 맞게 수정 한다물론 디렉토리도 생성을 해야 한다.

*.audit_file_dest=

*.background_dump_dest=

*.control_files='

*.user_dump_dest='

*.db_name='testdb'

 

RAC 파라미터 변경아래와 같이 변경

*.instance_number=1

*.cluster_database=false

*.thread=1

*.undo_tablespace='UNDOTBS1'

 

 

 pfile 수정

create controlfile 절을 수정한다.

CREATE CONTROLFILE SET DATABASE "COPYDB" RESETLOGS  NOARCHIVELOG

   REUSE => SET

  NORESETLOGS => RESETLOGS

  

그 외 경로를 clonedb에 맞게 수정한다.

 

복구 하고 open  temp tablespace를 생성 함으로 temp tablespace 생성 절을 별도로 백업 해둔다

ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata3/copydb/temp01.dbf'

SIZE 524288000  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

 

아래와 같이 CHARACTER SET KO16MSWIN949;   까지 유지해서 파일을 작성한다.

 

 

STARTUP NOMOUNT

CREATE CONTROLFILE SET DATABASE "COPYDB" RESETLOGS  NOARCHIVELOG

    MAXLOGFILES 192

    MAXLOGMEMBERS 3

    MAXDATAFILES 1024

    MAXINSTANCES 32

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 (

    '/oradata3/copydb/redo01a.log',

    '/oradata3/copydb/redo01b.log'

  ) SIZE 300M,

  GROUP 2 (

    '/oradata3/copydb/redo02a.log',

    '/oradata3/copydb/redo02b.log'

  ) SIZE 300M,

  GROUP 3 (

    '/oradata3/copydb/redo03a.log',

    '/oradata3/copydb/redo03b.log'

  ) SIZE 300M,

  GROUP 4 (

    '/oradata3/copydb/redo04a.log',

    '/oradata3/copydb/redo04b.log'

  ) SIZE 300M

-- STANDBY LOGFILE

DATAFILE

  '/oradata3/copydb/system01.dbf',

  '/oradata3/copydb/undotbs01.dbf',

  '/oradata3/copydb/sysaux01.dbf',

  '/oradata3/copydb/undotbs02.dbf',

  '/oradata3/copydb/users01.dbf'

CHARACTER SET KO16MSWIN949;

 

 

 

 

6. Creation clonedb

 

 sid를 변경하고 컨트롤 파일을 재생성 한다.

$ export ORACLE_SID=COPYDB

 

SQL*Plus: Release 10.2.0.5.0 - Production on Sun Dec 4 12:48:19 2011

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to an idle instance

SQL> @recon.sql

 

 

■ 시간 기반으로 복구 한다.

 

복구를 진행할 세션에서 복구하기 편한 방식으로 시간 설정을 한다.

SQL> alter session set nls_date_format='YYYY-MM-DD:HH24:MI:SS';

 

 

삭제한 시간이 2011-12-04:12:26:00 이기 때문에 24 분으로 복구 하겠다.

 

SQL> recover database until time '2011-12-04:12:24:00' using backup controlfile;

 

복구를 실시하면 아래와 같이 아카이브 파일을 필요로 한다.

ORA-00279: change 565796 generated at 12/04/2011 12:01:54 needed for thread 2

ORA-00289: suggestion : /oracle/product/102/db/dbs/arch2_14_768267462.dbf

ORA-00280: change 565796 for thread 2 is in sequence #14

 

위에서 알 수 있는 것은 thread 2(RAC에서 2번째 노드의 시퀀스 14번 을 가진 아카이브를 원하는

것이다 .

테스트 환경에서는 파일명이 arc_2_14_768267462.arc  이며경로 및 파일을 입력한다.

 

 

파일명 입력

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/oradata/arch_testdb/arc_2_14_768267462.arc

 

 

이번에는 thread 1 change 565796 을 포함 한 아카이브 파일을 입력 해야 한다.

ORA-00279: change 565796 generated at  needed for thread 1

 

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

 

 

RAC 로 접속해서 쿼리를 수행하여 THREAD1의 565796 변경본이 포함된 아카이브 파일을 찾는다.

SQL> set lines 500

SQL> col name for a50

SQL> SELECT THREAD# ,SEQUENCE# , FIRST_CHANGE#, NEXT_CHANGE#, NAME,

TO_CHAR(FIRST_TIME,'YYYY-MM-DD:HH24:MI:SS') FIRST_TIME  FROM V$ARCHIVED_LOG;

 

 

 

THREAD#  SEQUENCE  # FIRST_CHANGE   # NEXT_CHANGE#      NAME                                   FIRST_TIME

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

           14       553454              567190      /oradata/arch_testdb/arc_2_14_768267462.arc    2011-12-04:05:52:04

           15       567190              567247      /oradata/arch_testdb/arc_2_15_768267462.arc    2011-12-04:12:20:05

           16        567247             567249      /oradata/arch_testdb/arc_2_16_768267462.arc    2011-12-04:12:20:09

           11       553456              567252    /oradata/arch_testdb/arc_1_11_768267462.arc   2011-12-04:05:52:05

           17       567249              567254      /oradata/arch_testdb/arc_2_17_768267462.arc    2011-12-04:12:20:12

           18       567254              567274      /oradata/arch_testdb/arc_2_18_768267462.arc    2011-12-04:12:20:15

           19       567274              567279      /oradata/arch_testdb/arc_2_19_768267462.arc    2011-12-04:12:21:12

           12       567252              567293      /oradata/arch_testdb/arc_1_12_768267462.arc    2011-12-04:12:20:14

 

확인 해 보면 arc_1_11_768267462.arc 파일인 것을 알 수 있다아래와 같이 경로와 파일명을 입력한다.

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/oradata/arch_testdb/arc_1_11_768267462.arc

 

 

 

 

 

ORA-00279: change 567190 generated at 12/04/2011 12:20:05 needed for thread 2

ORA-00289: suggestion : /oracle/product/102/db/dbs/arch2_15_768267462.dbf

ORA-00280: change 567190 for thread 2 is in sequence #15

ORA-00278: log file '/oradata/arch_testdb/arc_2_14_768267462.arc' no longer

needed for this recovery

 

change 567190 for thread 2 is in sequence #15 메세지를 보면 THREAD2의 15 시퀀스 아카이브 파일을

필요로 한다는 것을 알 수 있다경로 및 파일명을 입력한다.

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/oradata/arch_testdb/arc_2_15_768267462.arc

 

 

위와 같은 패턴으로 요청하는 아카이브 파일을 계속 적용해준다.

 

운영중인 RAC에 생성 된 아카이브 보다 더 높은 시퀀스를 요구 한다면 로그 스위치를 발생하여

생성한 아카이브를 적용 시켜준다.

 

계속 적용 시키면 아래와 같이 recovery가 되었다는 메세지를 볼 수 있다.

 

Log applied.

Media recovery complete.

 

resetlogs로 instance를 open한다

SQL> alter database open resetlogs;

  

Temp Tablespace 를 추가한다.

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata3/copydb/temp01.dbf'

SIZE 524288000  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

 

 

■ 예외 처리

아래와 같이 ORA-38856 가 나오게 되면 Unpulbished Bug-4355382 로써

오라클 문서ID: 334899.1 를 참조한다.

ERROR at line 1:

ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled

 

pfile에 _no_recovery_through_resetlogs=TRUE  를 추가한 후 다시 resetlogs로 open한다.

 

open 후 test01 테이블이 복구 되었는지 조회해 본다.

 

select count(*) from test01;

  COUNT(*)

----------

      1000

반응형
Posted by [PineTree]
ORACLE/ADMIN2014. 8. 15. 13:09
반응형
출처 :https://community.oracle.com/message/1701073#1701073

제품 : ORACLE SERVER

작성날짜 : 2004-11-30


SEGMENT SHRINK 관련 10G 신규 기능
===========================



PURPOSE
-------
Oracle10g에서는, 세그먼트를 shrink 시킬 옵션이 존재하며, 이 기능을 활용하면 DBA가가 공간을 좀더 효율적으로 활용할 수
있다 이 기능은, 또한 질의 처리 속도 개선에도 도움이 된다. 


Explanation
-----------
1. 준비 사항

Init.ora 파라미터인 'Compatible' 값이 10.0 이상이어야 함.
세그머트는, AUTO Segment Space Managed Tablespace에 존재해야 함.

2. 동작 방법

1) 테이블의 row movement 기능을 활성화 시킨다.
SQL> ALTER TABLE scott.emp ENABLE ROW MOVEMENT;

2) 테이블을 shrink 시키지만, HWM (High Water Mark)을 shrink 시키지 않는다.
SQL> ALTER TABLE scott.emp SHRINK SPACE COMPACT;

3) 테이블과 HWM을 shrink 시킨다.
SQL> ALTER TABLE scott.emp SHRINK SPACE;

4) 테이블 및 관련된 인덱스를 모두 shrink시킨다.
SQL> ALTER TABLE scott.emp SHRINK SPACE CASCADE;

5) MView 형태의 테이블을 shrink시킨다.
SQL> ALTER TABLE <table name> SHRINK SPACE;

6) 인덱스만 shrink 시킨다.
SQL> ALTER INDEX <index nam> SHRINK SPACE;


3. 적용 대상

1) Normal Table
2) Index
3) Lob
4) IOT
5) MView


4. Query/DML Concurrency

Segment shrink를 할 때의 online 처리는, DML-호환 락을 사용한다. 따라서 DML은
shrink를 처리 하는동안에도 사용할 수 있다. space-release/HWM 조정을 하는 단계에서는,
테이블에 대해 DML고 호환되지 않는 락을 사용한다 따라서, DML은 shink가 끝날 때 까지
잠시 중단되나.

shrink를 실행함으로써 발생하는 DML 처리 관련 에러는 없다.

쿼리는 세그먼트의 HWM에 대한 캐쉬를 사용한다. 오라클은, HWM이 언제나 커질 것으로 간주한다. 따라서
CR은 세그먼트 헤더 및 익스텐트 맵 블럭에 대해서는 필요하지 않다. 세그먼트 HWM이 작아지는 유일한
경우는, drop 또는 truncate 작업 뿐이다.

오라클은, drop/truncate DDL와 질의처리가 동시에 존재할 수있게 허용하는데, 이것은 질의 처리가
락을 필요로 하지 않기 때문이다. 만약 drop/truncate 작업이 끝난 후라면, 해당 공간은 다른 세그먼트에
의해 사용되며, 질의는 "8103 - object does not exist"라는 에러 메시지와 함께 실패하게 된다.

세그먼트를 shrink하는 동안, 세그먼트의 HWM가 변경된다면, 해당 세그먼트와 관련된 비트맵 블럭과 
세그먼트 헤더의 incarnation number가 변경된다. 후속 데이터 블럭 관련 작업은 새로 부여된
incarnation number를 사용한다.

만약 이 단계에서 실행되는 질의가 있었다면, "10632 - invalid rowid" 에러와 함께 실패하는데
다음과 같은 조건이 만족 되어야 한다.

1) 갱신된 비트맵 블럭을 읽는다 (새로운 inc#). 이 경우 failure는, 해당 공간이 재 사용되지 않았다면
발생하게 된다.

2) 공간이 동일한 객체 또는 다른 객체에 의해 재 활용 되었다.


5. Online Segment Shrink와 관련된 제약사항

ASSM의 세그먼트는 shrink 가능하다. 그러나, ASSM 테이블스페이스에 위치하는 객체
가운데 다음과 같은 객체에는 제약사항이 따른다 :

1) 클러스터에 속하는 테이블
2) long 컬럼을 포함한 테이블
3) on-commit materialized view와 연관된 테이블
4) rowid based materialized view와 연관된 테이블
5) Lob index


6. Shrink 수행시 의존 관계 관리와 제약사항 

세그먼트를 shrink 하는동안, 고려되는 유일한 의존 관계는, 테이블 - 인덱스간 관계이다.
인덱스는, shrink 후에도 unusable 상태로 남지 않는다.

세그먼트 shink를 과정에서 압축 (compaction)단계는 insert/delete 작업을 쌍으로 처리하여
이루어진다. DML trigger는 데이터를 이동하는 단계에서는 호출되지 않는다. 데이터의 내용이
변경되는 것이 아니므로, trigger가 호출 될 필요가 없다.

ROWID에 기반을 둔 trigger는, shrink를 하기 전 disable 시켜야 하는데 이것은 shink 하는동안
트리거가 호출 되지 않도록 하기 위해서이다.

on-commit materialized view와 연관된 세그먼트는 shrink 시킬 수 없다.
Primary key를 기반으로 한 materialized view는, shrink를 시킨 이후에 refresh 또는 rebuild
할 필요가 없다.

하지만, rowid에 기반을 둔 materialized view에 대해서는 refresh 또는 rebuild를 수행해 주어야
한다.


7. 가용성

세그먼트 shrink는, 온라인중에 수행될 수 있다. 따라서, 객체에 대한 가용성이 향상 되었다.
DML 작업은 세그먼트 shrink 중에도 수행 가능하나, parallel DML을 수행될 수 없다.

세그먼트를 shrink 시키는동안 데이터는 압축(compaction) 단계에서 이동이된다. 압축 단계가 진행되는
동안 개별 row 또는 데이터 블럭에 대한 lock이 사용된다.
이 상황은, lock을 이용해, update나 delete와 같은 concurrent DML이 수행되는 상황과 유사하다.
압축은, 작은 트랜잭션 다뉘로 수행되므로, 객체에 대한 가용성은 심각하게 영향을 받지 않는다.

하지만, 세그먼트를 shrink 시키는 특정 단계에서는 (HWM을 조정하는 단계), 세그먼트는, exclusive 모드로
lock이 걸린다.
이 단계는 매우 짧은 기간이며, 객체에 대한 가용성에 미치는 영향이 최소호 된다.


8. 보안

세그먼트 shrink를 수행하기 위해서는 객체에 대해서 ALTER 시키는 권한과 동등한 권한이 필요하다.


9. 상세 예제

SQL> set serveroutput on
SQL> declare
2 v_unformatted_blocks number;
3 v_unformatted_bytes number;
4 v_fs1_blocks number;
5 v_fs1_bytes number;
6 v_fs2_blocks number;
7 v_fs2_bytes number;
8 v_fs3_blocks number;
9 v_fs3_bytes number;
10 v_fs4_blocks number;
11 v_fs4_bytes number;
12 v_full_blocks number;
13 v_full_bytes number;
14 begin
15 dbms_space.space_usage ('SYSTEM', 'T_SHRINK', 'TABLE', v_unformatted_blocks,
16 v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes,
17 v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes);
18 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
19 dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks);
20 dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks);
21 dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks);
22 dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks);
23 dbms_output.put_line('Full Blocks = '||v_full_blocks);
24 end;
25 /
Unformatted Blocks = 0
FS1 Blocks = 0
FS2 Blocks = 1
FS3 Blocks = 1
FS4 Blocks = 3
Full Blocks = 0

PL/SQL procedure successfully completed.

SQL> alter table t_shrink shrink space compact;
alter table t_shrink shrink space compact
*
ERROR at line 1:
ORA-10636: ROW MOVEMENT is not enabled

SQL> ALTER TABLE t_shrink ENABLE ROW MOVEMENT;
Table altered.

SQL> ALTER TABLE t_shrink SHRINK SPACE COMPACT;
Table altered.

SQL> set serveroutput on
SQL> declare
2 v_unformatted_blocks number;
3 v_unformatted_bytes number;
4 v_fs1_blocks number;
5 v_fs1_bytes number;
6 v_fs2_blocks number;
7 v_fs2_bytes number;
8 v_fs3_blocks number;
9 v_fs3_bytes number;
10 v_fs4_blocks number;
11 v_fs4_bytes number;
12 v_full_blocks number;
13 v_full_bytes number;
14 begin
15 dbms_space.space_usage ('SYSTEM', 'T_SHRINK', 'TABLE', v_unformatted_blocks,
16 v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes,
17 v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes);
18 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
19 dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks);
20 dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks);
21 dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks);
22 dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks);
23 dbms_output.put_line('Full Blocks = '||v_full_blocks);
24 end;
25 /
Unformatted Blocks = 0
FS1 Blocks = 0
FS2 Blocks = 0
FS3 Blocks = 0
FS4 Blocks = 2
Full Blocks = 1

PL/SQL procedure successfully completed.

SQL> ALTER TABLE t_shrink SHRINK SPACE;
Table altered.

SQL> declare
2 v_unformatted_blocks number;
3 v_unformatted_bytes number;
4 v_fs1_blocks number;
5 v_fs1_bytes number;
6 v_fs2_blocks number;
7 v_fs2_bytes number;
8 v_fs3_blocks number;
9 v_fs3_bytes number;
10 v_fs4_blocks number;
11 v_fs4_bytes number;
v_full_blocks number;
13 v_full_bytes number;
14 begin
15 dbms_space.space_usage ('SYSTEM', 'T_SHRINK', 'TABLE', v_unformatted_blocks,
16 v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes,
17 v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes);
18 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
19 dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks);
20 dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks);
21 dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks);
22 dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks);
23 dbms_output.put_line('Full Blocks = '||v_full_blocks);
24 end;
25 /
Unformatted Blocks = 0
FS1 Blocks = 0
FS2 Blocks = 0
FS3 Blocks = 0
FS4 Blocks = 1
Full Blocks = 1

PL/SQL procedure successfully completed.



Example
-------


Reference Documents
-------------------
<Note:242090.1>


    반응형
    Posted by [PineTree]
    ORACLE/11G2014. 7. 2. 15:44
    반응형
    목적
    해결책
    참고

    적용 대상:

    Oracle Database - Enterprise Edition - 버전 11.2.0.1 to 11.2.0.4 [릴리즈 11.2]
    이 문서의 내용은 모든 플랫폼에 적용됩니다.

    목적

    이 문서에는 11.2.0.1에서 11.2.0.2 또는 11.2.0.N  이후 버전으로 out-of-place 수동 데이터베이스 업그레이드를 수행하는 방법이 나와 있습니다.

    문의하기, 도움 받기 및 이 문서로 경험 공유

    다른 Oracle 고객, Oracle 직원 및 업계 전문가와 함께 이 주제에 대해서 자세히 살펴보고 싶습니까?

    Click here to join the discussion where you can ask questions, get help from others, and share your experiences with this specific article.
    여기를 눌러 기타 문서 및 도움이 될 만한 주제에 대한 토론을 찾아보고 데이터베이스 조정을 위한 기본 My Oracle Support Community 페이지에 액세스하십시오.

    해결책

    11.2.0.2 및 이후 패치셋은 전체 릴리스입니다. 11.2 패치셋 설치 프로그램은 기존 11.2 설치를 업데이트하지 않습니다. 
    설치 프로세스는 out-of-place 업그레이드를 수행하든 in-place 업그레이드를 수행하든 새 설치를 수행합니다. 
    (11.2 Upgrade Guide 3장 "Known Issue When Starting an In-Place Upgrade for Release 11.2.0.2" 참조)


    11.2.0.2부터 패치셋을 두 가지 방법으로 적용할 수 있습니다:

    • Out-of-place 업그레이드 (권장)
    • In-place 업그레이드
    •  
      "In-Place" 업그레이드는 옵션이지만 권장되지 않습니다.
      이 업그레이드는 수행할 수 있지만 11.2.0.2 용 설치 프로그램을 실행하는 것만으로 11.2.0.1을 가리킬 수 없습니다. 

      "In-Place" 업그레이드 단계는 업그레이드 가이드(아래 참조)에 설명되어 있습니다.
      http://download.oracle.com/docs/cd/E11882_01/server.112/e17222.pdf
      섹션 3-39

    자세한 내용은 다음 노트를 참조하십시오:

    Note 1189783.1 Important Changes to Oracle Database Patch Sets Starting With 11.2.0.2
    Note 1320966.1 Things to Consider before upgrading to 11.2.0.2.x regarding performance/wrong results


    참조: 이 문서에서 참조가 11.2.0.1을 나타낼 때 현재 설치된 11.2(11.2.0.1-11.2.0.N) 버전을 나타내는 것일 수 있습니다. 참조가 11.2.0.2를 나타낼 때 11.2 패치셋(11.2.0.2-11.2.0.N)의 새 버전일 수 있습니다.


     1 단계
    ======

    11.2.0.2 이상 RDBMS 소프트웨어를 다운로드합니다.
    See NOTE:753736.1 - Quick Reference to Patchset Patch Numbers 를 참조하십시오.
    여러 파일이 필요할 수 있으므로 패치셋 추가 정보에서 다운로드에 필요한 파일에 대한 전체 지침을 검토합니다. 각 패치셋에 대한 추가 정보에는 특정 지침이 나와 있습니다.

    다음도 검토하십시오:

    Note 549617.1 : How To Verify The Integrity Of A Patch/Software Download? [Video]
    Note 169706.1 : Oracle Database Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2)


    2 단계
    ======

    최신 11.2 RDBMS 소프트웨어를 새로운ORACLE_HOME에 설치합니다..

    11.2 설치부터 모든 기본 RDBMS 구성 요소가 설치됩니다. 유일한 옵션은 구성 요소가 링크 설정되거나 링크 해제(활성 상태이며 사용할 수 있는지)되었는지 여부입니다. 사용자 정의 설치는 사용할 수 없습니다.

    데이터베이스가 Oracle 텍스트 테마를 사용 중이거나 Oracle Multimedia 데모 및 기타 데모를 설치하려는 경우 이 항목은 기본 설치에 포함되어 있지 않기 때문에 11.2.0.2 예제 CD(이전에는 Companion CD)를 설치해야 합니다.

    "opatch lsinventory -detail" 을 이전 및 새로운 ORACLE_HOME 에 대해 실행하여 설치된 제품을 비교할 수 있습니다.

    다음 사항도 참조하십시오.
    /opt/oracle 을 ORACLE_BASE 로 사용 중인 경우 rootupgrade.sh 가 실패합니다. 자세한 내용은 다음을 참조하십시오:

    Note: 1281913.1 Root Script Fails if ORACLE_BASE is set to /opt/oracle


    3 단계
    ======

    최신 11.2 RDBMS 소프트웨어를 설치한 후 실행 중인 이전 인스턴스에 대해 11.2.0.1 인스턴스를 이전 ORACLE_HOME 및 spool/run 11.2.0.2 $ORACLE_HOME/rdbms/admin/utlu112i.sql 스크립트를 사용하여 시작합니다.

    사전 업그레이드 정보툴 실행은 DBUA 를 사용하여 업그레이드하거나 수동으로 업그레이드하는 경우 필수 항목입니다. 그렇지 않은 경우 오류가 발생할 수 있습니다:

    SQL> SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
    2 FROM registry$database
    3 WHERE tz_version != (SELECT version from v$timezone_file);
    SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
    *
    ERROR at line 1:
    ORA-01722: invalid number

     

    최신 11.2 릴리스로 업그레이드하기 전에 11.2 사전 업그레이드 스크립트 스풀 파일을 검토하고 문제를 수정해야 합니다.


    알려진 문제
    ++++++++++++++++
    11.2.0.2 는 시간대 버전 14 를 사용합니다. 11.2.0.1 은 시간대 버전 11 을 사용합니다. 이후 버전은 시간대 데이터 이후 버전에서도 사용될 수 있습니다.

    최신 홈의 DBUA 는 "시간대 버전 및 TIMESTAMP WITH TIME ZONE 데이터 업그레이드" 상자체크박스가 선택된 경우 포함된 버전으로 시간대를 자동으로 업그레이드합니다.

    수동으로 업그레이드하는 경우:
    BMS_DST 패키지를 사용하여 최신 11.2 버전으로 업그레이드한 후 시간대 버전을 업그레이드하거나 11.2.0.1 시간대를 해당 시간대 버전으로 업그레이드합니다. 업그레이드하기 전에 11.2.0.1 시간대 버전을 다른 버전으로 업그레이드하려는 경우 utlu112i.sql 을 재실행해야 합니다.

    다음을 참조하십시오:

     Note 1201253.1 Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset


    4 단계
    ======

    dba_registry 의 모든 구성 요소가 적합하며 부적합한 데이터 딕셔너리 객체가 dba_objects 에 없는지를 확인하려면 아래 My Oracle Support 에서 dbupgdiag.sql 스크립트를 실행합니다.

    Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)


    dbupgdiag.sql 스크립트에서 부적합한 객체를 보고하는 경우 $ORACLE_HOME/rdbms/admin/utlrp.sql 을 여러 번 실행하여 부적합한 객체 수에 변경이 없을 때까지 데이터베이스의 부적합한 객체를 검증합니다.

    $ cd $ORACLE_HOME/rdbms/admin
    $ sqlplus "/ as sysdba"
    SQL> @utlrp.sql


    부적합한 객체를 검증한 후 데이터베이스에서 dbupgdiag.sql 을 다시 한 번 재실행하고 모두 정상인지 확인합니다.

    5 단계
    ======

    일괄 처리 및 cron 작업 모두를 사용 안함으로 설정한 다음 데이터베이스 전체 백업을 수행합니다.

    예제
    ----------
    데이터베이스의 전체 백업을 수행하려면 다음 단계를 완료합니다:

    1. RMAN 으로 사인온:
    rman "target / nocatalog"
    2. 다음의 RMAN 명령어들을 수행하라:
    RUN
    {
    ALLOCATE CHANNEL chan_name TYPE DISK;
    BACKUP DATABASE FORMAT 'some_backup_directory%U' TAG before_upgrade;
    BACKUP CURRENT CONTROLFILE FORMAT 'controlfile location and name';
    }


    참조: Oracle Database Backup and Recovery User's Guide

    참고: 전체 콜드 백업의 경우 먼저 데이터베이스를 종료하십시오.

    6 단계
    =======

    데이터베이스를 정상적으로 종료합니다.


    7 단계 (윈도우즈 플랫폼만 해당)
    ========================


    1) 환경 변수 ORACLE_HOME 이 11.2.0.1 설치를 가리키도록 설정합니다.

    2) ORACLE_HOME 셋으로 11.2.0.1 Oracle Database 서비스를 정지하여 11.2.0.1 설치를 가리키도록 합니다.

      C:\> NET STOP OracleServiceORCL


    3) %ORACLE_HOME%\bin\ ORADIM 이진을 사용하여 11.2.0.1 Oracle 서비스를 삭제합니다.

    C:\> ORADIM -DELETE -SID ORCL


    4) 환경 변수 ORACLE_HOME 이 11.2.0.2 설치를 가리키도록 설정합니다.

    5) 11.2.0.1%ORACLE_HOME%/database 에서 11.2.0.2 %ORACLE_HOME%/database 로 init.ora/spfile 및 비밀번호 파일(orapw<sid>.ora)을 복사합니다.

    6) 11.2.0.1 %ORACLE_HOME%\network\admin(또는 $TNS_ADMIN) 위치에서 11.2.0.2 %ORACLE_HOME%\network\admin(또는 %TNS_ADMIN%) 위치로 구성 파일(listener.ora, sqlnet.ora, tnsnames.ora 등)을 복사합니다.

    7) DB 콘솔/DB 콘트롤이 구성되어 있고 사용되는 경우 다음 디렉토리 두 개와 해당 콘텐츠를 11.2.0.1에서 11.2.0.2로 복사합니다. DB 콘솔/DB 콘트롤이 구성되지 않은 경우 이 디렉토리가 존재하지 않을 수 있습니다.
               ORACLE_HOME/<hostname_dbname>
               ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>


    8) 11.2.0.2 를 사용하여 명령 프롬프트에서 Oracle 11.2.0.2 서비스를 생성합니다.

    %ORACLE_HOME%\bin\ ORADIM 
    C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA


    예제:

    C:\> ORADIM -NEW -SID ORCL -SYSPWD  pass_with_sysdba_priv  -STARTMODE AUTO -PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA

     

    PASSWORD = 새 Oracle Database 11g 릴리스 2(11.2) 
    데이터베이스 인스턴스에 대한 비밀번호입니다. 이는 
    SYSDBA 권한에 접속한 사용자의 비밀번호입니다. -SYSPWD 옵션은 필수가 아닙니다. 
    지정하지 않는 경우 운영 체제 인증이 사용되며 
    비밀번호가 필요하지 않습니다.



    8 단계 (Unix 및 Linux)
    ================
    =
    대상 11.2.0.2 ORACLE_HOME을 구성합니다.

    1) 환경 변수 ORACLE_BASE, ORACLE_HOME, PATH, NLS_10 및 LIBRARY_PATH 가 11.2.0.2 설치를 가리키도록 설정되었는지 확인합니다.

    ORACLE_SID 를 업그레이드 할 11.2.0.1 DB 이름으로 설정합니다.

    etc/oratab 파일은 Oracle Database 11g 릴리스 2(11.2.0.2) Oracle 홈을 가리킵니다.

    2) Database Vault 를 사용 안함으로 설정합니다.

    Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX


    3) 11.2.0.1 $ORACLE_HOME/dbs 에서  11.2.0.2 $ORACLE_HOME/dbs 로 init.ora/spfile 및 비밀번호 파일(orapw<sid>.ora)을 복사합니다.

    4) 11.2.0.1 $ORACLE_HOME/network/admin(또는 $TNS_ADMIN) 위치에서 11.2.0.2 $ORACLE_HOME/network/admin(또는 $TNS_ADMIN) 위치로 구성 파일(listener.ora, sqlnet.ora, tnsnames.ora 등)을 복사합니다.

    5) DB 콘솔/DB 콘트롤이 구성되어 있고 사용되는 경우 다음 디렉토리 두 개와 해당 콘텐츠를 11.2.0.1 에서 11.2.0.2 로 복사합니다. DB 콘솔/DB 콘트롤이 구성되지 않은 경우 이 디렉토리가 존재하지 않을 수 있습니다.
               ORACLE_HOME/<hostname_dbname>
               ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname_dbname>

    <hostname_dbname>의 실제 이름을 지정합니다.

    6) Oracle Database 11g 릴리스 2(11.2)에 대해 COMPATIBLE 초기화 파라미터가 올바르게 설정되어 있는지 확인하십시오. COMPATIBLE 이 올바로 설정되어 있지 않을 경우 사전 업그레이드 정보 툴에서 데이터베이스 섹션에 경고가 표시됩니다.

    7) 초기화 파라미터의 값을 사전 업그레이드 정보툴에서 가리키는 최소값 이상으로 조정합니다. JVM 을 설치한 고객의 경우 업그레이드하기 전에 java_pool_size 및 shared_pool_size 를 250MB 이상으로 설정해야 합니다. 그렇지 않으면 다음 오류와 함께 JVM 업그레이드가 실패할 수 있습니다:

    ORA-07445: exception encountered: core dump [qmkmgetConfig()+52] [SIGSEGV] [ADDR:0x18] [PC:0x103FFEC34] [Address not mapped to object] []


    9 단계
    ======

    데이터베이스를 수동으로 업그레이드합니다.

    1) sqlplus 를 시작하고 새롭게 설치된 (타겟) $ORACLE_HOME/rdbms/admin 의 catupgrd.sql 스크립트를 실행합니다.

    sqlplus " / as sysdba "
    SQL> spool /tmp/upgrade.log
    SQL> startup upgrade
    SQL> set echo on
    SQL> @catupgrd.sql;
    SQL> spool off
    SQL> Shutdown immediate


    2) catupgrd.sql 스풀 파일에 오류가 있는지 확인합니다.

    3) 일반 모드에서 데이터베이스를 재시작합니다.

    4) SQL> @$ORACLE_HOME/rdbms/admin/catuppst.sql;

    5) SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql;

    6) dbupgdiag.sql 스크립트를 실행(Note: 556610.1 참조)하고 dba_registry 의 모든 구성 요소가 적합하며 dba_objects 에 부적합한 객체가 없는지 확인합니다.



    사후 업그레이드 단계
    ===================

    1) 오라클 클러스터웨어 구성을 업그레이드 합니다.

    당신이 오라클 클러스터웨어를 사용한다면, 데이터베이스에 대한 오라클 클러스터웨어 요소들을 업그레이드 해야만 합니다.

    오라클 데이터베이스 11g 릴리즈 2 (11.2.0.2) 가 출시되면서, 업그레이드 명령은 실행되고 있는 소프트웨어의 버전을 업그레이드하여 구성합니다.

    업그레이드 할 릴리즈에 대해서 srvctl 을 수행하십시오. 예를 들면,

    srvctl upgrade database
    srvctl upgrade 데이터베이스 명령어는 데이터베이스의 구성과 명령어가 수행된 데이터베이스 홈 버전에 대한 모든 서비스들을 업그레이드 합니다.


    구문과 옵션
    다음과 같이 srvctl upgrade database command 를 사용하십시오:

    srvctl upgrade database -d db_unique_name -o Oracle_home
    Table A-161 srvctl upgrade database Options

    옵션에 대한 설명
    -d db_unique_name
     데이터베이스에 대한 유일한 이름
     
    -o Oracle_home
    ORACLE_HOME 의 위치

    2) DBMS_DST를 사용하여 시간대를 최신 버전으로 업그레이드 합니다.

    Note 1201253.1
    Title: Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset


    3) 복구 카탈로그를 업그레이드합니다.
    복구 카탈로그 업그레이드 및 UPGRADE
    CATALOG 명령에 대한 전체 정보는 Oracle Database Backup and Recovery User's Guide 에서 
    프로시저를 설명하는 항목을 참조하십시오.

    4) DBMS_STATS 패키지에서 생성한 통계 자료 테이블 업그레이드

    프로시저를 사용하여 통계 자료 테이블을 생성한 경우 다음 프로시저를 실행하여 이 테이블을 업그레이드합니다:

    EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('scott', 'stat_table');


    예제에서 SCOTT 은 통계 자료 테이블의 소유자이며 STAT_TABLE 은 
    통계 자료 테이블 이름입니다. 각 통계 자료 테이블에 대해 이 프로시저를 수행합니다.

    5) Oracle Database Vault 를 사용으로 설정하고 DV_PATCH_ADMIN 롤을 취소합니다.
    Oracle Database Vault 를 사용하는 경우 데이터베이스를 업그레이드하기 전에 
    사용 안함으로 설정하도록 지침이 제공됩니다. 이제:

    Database Vault 를 사용으로 설정합니다.

    Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX


    SYS 계정에 대한 Database Vault DV_PATCH_ADMIN 롤을 취소합니다.

    참조
    ===========
    Oracle Database
    Upgrade Guide
    11g Release 2 (11.2)
    E17222-06                             <October 2010                         <
    Chapter 3
           Upgrading to the New Release

    http://download.oracle.com/docs/cd/E11882_01/server.112/e17222.pdf

    5. Oracle Warehouse Builder (OWB) component in database will not be upgraded as part of database upgrade. There are few post upgrade steps to be carried to upgrade the component.

    Details in Oracle® Warehouse Builder Release Notes 11g Release 2 (11.2)

    반응형
    Posted by [PineTree]
    ORACLE/ADMIN2013. 5. 19. 22:10
    반응형

    (10gR2)Full UNDO tablespace                                                                       

                                                                                                                               게시일: 2008. 2. 25 오후 9:54



    ============================

    PURPOSE


    10gR2 에서 UNDO tablespace 을 NO AUTOEXTEND로 생성한 경우 ,
    transaction 이 실행중인 database 에서는 UNDO tablespace 가
    FULL인 현상을 보게 됩니다.
    이는 10gR2 에서 max retention 을 보장하는 undo retention 의
    메카니즘이 소개되어 autoextend off 인 경우의 UNDO tablespace
    에서 나타나는 현상입니다.
    dba_undo_extents 에서 많은 UNEXPIRED undo segment 가 보이는 것이
    확인되고 UNDO tablespace 가 100% full 인것처럼 나타나는 현상을 볼 수
    있으며 그럼에도 불구하고 ORA-1555 나 ORA-30036 에러는 발생하지 않습니다.

    Explanation


    다음과 같이 많은 UNEXPIRED undo segment 가 조회됩니다.

    SQL> select count(status) from dba_undo_extents where status = 'UNEXPIRED';

    COUNT(STATUS)

    463

    SQL> select count(status) from dba_undo_extents where status = 'EXPIRED';

    COUNT(STATUS)

    20

    SQL> select count(status) from dba_undo_extents where status = 'ACTIVE';

    COUNT(STATUS)

    21

    dba_free_space 을 조회 결과 UNDO tablespace 의 free space 가 존재합니다.

    SUM(BYTES)/(1024*1024) TABLESPACE_NAME


    ---------------------
    3 UNDOTBS1
    58.4375 SYSAUX
    3 USERS3
    4.3125 SYSTEM
    103.9375 USERS04

    Transaction 이 실행되면 UNDO tablespace 에 free space 가 조회되지 않는
    FULL 인것처럼 보입니다.

    SUM(BYTES)/(1024*1024) TABLESPACE_NAME
    ----------------
    58.25 SYSAUX
    98 USERS3
    4.3125 SYSTEM
    87.9375 USERS04


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    다음은 AUM 에서의 Undo Block 할당 알고리즘은 다음과 같습니다.

    1. current extent 에 free block 이 있으면 다음 free block 이
    할당됩니다.
    2. 그러나, free block 이 없으면, next extent 가 expired 되었다면 next extent 을
    warp 한후 그 next extent 의 처음 block 을 return 합니다.
    3. 만약 next extent 가 expired 되지 않았다면 UNDO tablespace 로부터 먼저
    space 을 찾습니다. 이때 free extent 가 존재한다면 이를 transaction table 에
    할당하고 해당 next extent 의 첫번째 block 을 return 합니다.
    4. 만약 UNDO tablespace 에 free extent 가 없다면 offline 된 transaction table
    에서 steal 합니다.
    offline 된 transaction table 에서 extent 을 deallocate 한후 이를
    current transaction table 에 add한후 그 add 한 extent 의 첫번째 free block 을
    return 합니다.
    5. offline 된 transaction table 에서 찾을수 없으면 , online 되어 있는
    transaction table 에서 steal 합니다. offline 된 transaction table 에서 extent 을
    deallocate 한후 이를 current transaction table 에 add한후 , 그 add 한 extent 의
    첫번째 free block 을 return 합니다.
    6. 1번~5번 까지 하여도 free block 을 얻지 못하면 이제 UNDO tablespace 의 file 을
    extend 합니다.
    file 이 extend 된다면 이후 current transaction table 에 extent 을 add 한후 ,
    그 extent 의 첫번째 free block 을 return 합니다.
    7. 6번 에서 UNDO tablespace 의 file 을 extend 하지 못했다면 , 자기의 transaction table
    에서 unexpired 된 extent 을 재사용합니다. 그런데 이때 모든 extent 가 busy 하다면
    즉 모두 uncommitted 된 정보라면 8번으로 갑니다. 아니라면 wrap 하여 unexpired 된
    extent 을 사용합니다.
    8. offline 된 transaction table 에서 unexpired 된 extent 을 steal 합니다. 이것이
    실패한다면 online 된 transaction table 에서 unexpired 된 extent 을 steal 합니다.
    9. 8 번까지 수행하고도 free block 을 얻지 못하면 이때서야 오라클에서는
    "ORA-30036 unable to extend segment by %s in undo tablespace '%s' " 에러를
    뿌리며 실패합니다.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    fixed size UNDO tablespace 라 함은 autoextend 가 off 라 datafile 을 자동으로
    더 이상 확장할 수 없음을 말합니다.
    autoextend 가 off 인 경우 10.2 부터는 max retention 이 36 시간 입니다.
    undo_retention 을 900 초(15 분) 으로 설정을 한다고 해도 10gR2 에서는
    max retention 이 36 시간이라 이에 해당하는 undo extent 을 UNEXPIRED 으로 만듭니다.
    그러나 이것이 가용한 undo extent 가 없다는 것이 아니고 , transaction 이 실행되게 되면
    UNEXPIRED undo segment 을 재사용하게 됩니다.

    References


    < Note 413732.1 - Full UNDO Tablespace In 10gR2 >

    반응형

    'ORACLE > ADMIN' 카테고리의 다른 글

    psu 패치  (0) 2013.07.25
    shrink 대상 선정 및 shrink작업  (1) 2013.06.03
    10g SYSAUX tablespace 크기 줄이기  (0) 2013.03.04
    Sizing Redo Log Files  (0) 2012.10.12
    Dynamic Intimate Shared Memory  (0) 2012.08.23
    Posted by [PineTree]