Understanding Automatic Diagnostic Repository (Doc ID 422893.1)
기능 및 내용 설명
11g New Features RDBMS 진단을 위한 파일 기반 저장소 ADR HOME 내부에 아래 그림처럼 여러 디렉터리를 소유
실제 디렉터리 구성 정보
ADR BASE의 DEFAULT 경로 : $ORACLE_BASE
SQL>set linesize 200 SQL>set pagesize 200 SQL>col name format a23 SQL>col value format a57
SQL>show parameter diagnostic_dest SQL>select * from v$diag_info;
디렉터리 별 설명
alert
XML 포맷의 alert 로그가 저장
cdump
이전 버전의 core_dump_dest 에 해당하는 core_dump가 저장
hm
Health Monitor가 여러 컴포넌트를 검사한 후 일부 파일을 저장
incident
incident 별로 서로 다른 디렉터리에 저장
Incpkg
incident 를 패키징할 때 특정 지원 파일들이 저장
Metadata
alert, incident, pakage 등에 대한 metadata 저장
trace
사용자 trace 및 background trace가 alert 로그의 텍스트 버전과 함께 저장
Problem - Database의 Critical 에러 (예 : ORA-00600, ORA-07445, ORA-04031 등) Incident - 각 사건 숫자 ID 를 내포하고 있는 문제의 단일 occurance. ( Problem 1 회 발생을 의미하며 ORA-00600 에러가 3 번 발생할 경우 ORA-0600 Problem 이 3 번의 Incident가 기록
ADRCI를 이용한 자동 로그 정리
ADR에 접속하여 관리하는 유틸리티, 쉘을 작성하여 ADRCI를 이용한 자동 로그 정리 예시
예시에서는 LISTENER와 RDBMS의 로그를 삭제, 원하는 항목을 추가하여 수행
[oracle@ol7 orcl]$ vi adrci.sh
#!/bin/bash # Usage: PURGE [[-i | ] | # [-age [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]: # # Purpose: Purge the diagnostic data in the current ADR home. If no # option is specified, the default purging policy will be used. # # Options: # [-i id1 | id1 id2]: Users can input a single incident ID, or a # range of incidents to purge. # # [-age ]: Users can specify the purging policy either to all # the diagnostic data or the specified type. The data older than # ago will be purged # # [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]: Users can specify what type of # data to be purged. # # Examples: # purge # purge -i 123 456 # purge -age 60 -type incident # LISTENER (
for i in `adrci exec="show homes"|grep listener`;do echo "adrci exec=\"set home $i;\"" adrci exec="set home $i;purge -age 1800"; done # ADR HOME ADR_HOME=`adrci exec="show home " | grep rdbms` # HOME Check # echo $ADR_HOME adrci exec="set home $ADR_HOME;purge -age 4320 -type ALERT" adrci exec="set home $ADR_HOME;purge -age 1080 -type TRACE
참고
[oracle@ol7 orcl]$ adrci
ADRCI: Release 12.2.0.1.0 - Production on Fri Apr 8 17:45:42 2022
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
ADR base = "/app/oracle" adrci> show homepath ADR Homes: diag/rdbms/orcl/orcl adrci> show homes ADR Homes: diag/rdbms/orcl/orcl adrci> set home diag/rdbms/orcl/orcl adrci> show control ADR Home = /app/oracle/diag/rdbms/orcl/orcl: ************************************************************************* ADRID SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME LAST_AUTOPRG_TIME LAST_MANUPRG_TIME ADRDIR_VERSION ADRSCHM_VERSION ADRSCHMV_SUMMARY ADRALERT_VERSION CREATE_TIME -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- 1335663986 720 8760 2021-12-14 10:54:11.032204 +09:00 2022-04-08 10:43:27.718338 +09:00 1 2 107 1 2021-12-14 10:54:11.032204 +09:00 1 row fetched
<grid adrci> ADRCI(Automatic Diagnostic Repository Command Interpreter) 유틸리티는 Oracle Database 진단 데이터를 관리하는 데 사용하는 명령줄 도구입니다.
ADR_BASE= ORACLE_BASE 파라미터 조회 : show parameter diagnostic_dest 로 확인 11g부터 Background_dump_dest 및 'user_dump_dest'는 무시, 이후 모든 trace 파일이 trace 디렉토리에 저장
select * from v$diag_info;
1. oracle 계정에서 ardci입력 2. 관련 명령어 adrci>show homes --홈경로 확인(adrci 명령어 사용 전) adrci>show problem --문제 확인 adrci>show incident -- adrci>show alert -- alert log 확인(db alert 1, listener 6 등)
SQL>set lines 200 pages 200 SQL>col SNAP_INTERVAL for a25 SQL>col RETENTION for a25 SQL>SELECT DBID, SNAP_INTERVAL, RETENTION FROM DBA_HIST_WR_CONTROL;<<보관 주기 확인(아래 내용은 1시간 마다 수집, 8일 간 보관)
SQL>EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(RETENTION=>60*24*30, INTERVAL=>30); --RETENTION : AWR 보관 주기 / INTERVAL : AWR 수집 주기 -- 설정 최소 범위는 RETENTION=>60*24*8 : 8일(691200초) / INTERVAL=>10 : 10분(10 ~ 52560000분 사이)
SQL>SELECT DBID, SNAP_INTERVAL, RETENTION FROM DBA_HIST_WR_CONTROL;<< 보관 주기 확인
SQL>col TABLESPACE format a10 SQL>SELECT SUBSTR(A.TABLESPACE_NAME,1,30) TABLESPACE, ROUND(SUM(A.TOTAL1)/1024/1024, 1) "TOTALMB", ROUND(SUM(A.SUM1)/1024/1024, 1) "FREEMB", ROUND((ROUND(SUM(A.TOTAL1)/1024/1024, 1)-ROUND(SUM(A.SUM1)/1024/1024, 1))/ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USAGE%" FROM ( SELECT TABLESPACE_NAME, 0 TOTAL1, SUM(BYTES) SUM1, MAX(BYTES) MAXB, COUNT(BYTES) CNT FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME UNION SELECT TABLESPACE_NAME, SUM(BYTES) TOTAL1, 0, 0, 0 FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ) A WHERE A.TABLESPACE_NAME='SYSAUX' GROUP BY A.TABLESPACE_NAME ORDER BY TABLESPACE;
1. OS 유저 생성(공통) 2. 디스크 추가 및 공유 디스크 설정(공통) 3. 라이브러리 설치(공통) 4. 미사용 서비스 및 hugepage, MTU 설정(공통) 5. 파라미터 및 유저 리소스 설정(공통) 6. 환경변수 설정, 권한 설정 7. 그리드 엔진 설치(1번기) 8. Diskgroup 생성(1번기) 9. 오라클 엔진 설치(1번기) 10. 오라클 DB 생성(1번기)
두 개 이상의 Oracle 소프트웨어 제품이 서버에 설치된 경우 계획된 설치의 일부로 Oracle Inventory 그룹을 수동으로 생성합니다. 기본적으로 oraInventory 그룹이 없는 경우 설치 프로그램은 설치 중인 Oracle 소프트웨어에 대한 설치 소유자의 기본 그룹을 oraInventory 그룹으로 사용합니다. 이 그룹이 계획된 모든 Oracle 소프트웨어 설치 소유자에 대한 기본 그룹으로 사용 가능한지 확인하십시오. 파일이 없으면 oraInst.loc다음과 유사한 명령을 입력하여 Oracle Inventory 그룹을 생성합니다.
ASM용 OSDBA 그룹 생성 설치하는 동안 그룹 을 ASM용 OSDBA( asmdba) 그룹으로 지정해야 합니다. 이 그룹의 구성원에게는 Oracle Automatic Storage Management에 대한 액세스 권한이 부여됩니다.
ASM용 OSOPER 그룹 생성 설치 중에 그룹을 ASM용 OSOPER 그룹( )으로 지정하도록 선택할 수 있습니다 . asmoper이 그룹의 구성원에게는 Oracle Automatic Storage Management에 대한 시작 및 종료 권한이 부여됩니다.
데이터베이스 설치를 위한 OSDBA 그룹 생성 각 Oracle 데이터베이스에는 OSDBA 그룹으로 지정된 운영 체제 그룹이 필요합니다. 이 그룹의 구성원에게는 데이터베이스를 관리할 수 있는 SYSDBA 시스템 권한이 부여됩니다.
데이터베이스 설치를 위한 OSOPER 그룹 생성 제한된 데이터베이스 관리 권한(SYSOPER 운영자 권한)으로 운영 체제 사용자 그룹을 식별하려는 경우에만 OSOPER 그룹을 생성하십시오. 대부분의 설치에서는 OSDBA 그룹만 만드는 것으로 충분합니다. 단, OSOPER 그룹을 사용하기 위해서는 다음과 같은 상황에서 생성해야 합니다. OSOPER 그룹이 존재하지 않는 경우, 예를 들어 시스템에 Oracle Database 소프트웨어를 처음 설치하는 경우 OSOPER 그룹이 존재하지만 새로운 Oracle 설치에서 다른 운영 체제 사용자 그룹에 데이터베이스 운영자 권한을 부여하려는 경우
데이터베이스 설치를 위한 OSBACKUPDBA 그룹 만들기 설치하는 동안 그룹을 OSBACKUPDBA 그룹으로 지정해야 합니다. 이 그룹의 구성원에게는 RMAN 또는 SQL*Plus를 사용하여 백업 및 복구 작업을 수행할 수 있는 SYSBACKUP 권한이 부여됩니다.
데이터베이스 설치를 위한 OSDGDBA 그룹 생성 설치하는 동안 그룹을 OSDGDBA 그룹으로 지정해야 합니다. 이 그룹의 구성원에게는 Data Guard 작업을 수행할 수 있는 SYSDG 권한이 부여됩니다.
데이터베이스 설치를 위한 OSKMDBA 그룹 만들기 설치하는 동안 그룹을 OSKMDBA 그룹으로 지정해야 합니다. 이 그룹의 구성원에게는 투명 데이터 암호화 키 저장소 작업을 수행할 수 있는 SYSKM 권한이 부여됩니다.
데이터베이스 설치를 위한 OSRACDBA 그룹 생성 데이터베이스를 설치하는 동안 그룹을 OSRACDBA 그룹으로 지정해야 합니다. 이 그룹의 구성원에게는 Oracle RAC 클러스터에서 Oracle 데이터베이스의 일상적인 관리를 수행할 수 있는 SYSRAC 권한이 부여됩니다.
#필요 시 선택하여 생성, 최소 사항으로 dba만 있어도 설치에 문제는 없음 /usr/sbin/groupadd -g 54321 oinstall /usr/sbin/groupadd -g 54327 asmdba /usr/sbin/groupadd -g 54328 asmoper /usr/sbin/groupadd -g 54322 dba /usr/sbin/groupadd -g 54323 oper /usr/sbin/groupadd -g 54324 backupdba /usr/sbin/groupadd -g 54325 dgdba /usr/sbin/groupadd -g 54326 kmdba /usr/sbin/groupadd -g 54330 racdba
Do you want to continue and let the script make the above mentioned changes (yes/no)? yes
The user may be prompted for a password here since the script would be running SSH on host ol79rac1. Warning: Permanently added 'ol79rac1,192.168.88.79' (ECDSA) to the list of known hosts. grid@ol79rac1's password: grid 입력 Done with creating .ssh directory and setting permissions on remote host ol79rac1. Creating .ssh directory and setting permissions on remote host ol79rac2 THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR grid. THIS IS AN SSH REQUIREMENT. The script would create ~grid/.ssh/config file on remote host ol79rac2. If a config file exists already at ~grid/.ssh/config, it would be backed up to ~grid/.ssh/config.backup. The user may be prompted for a password here since the script would be running SSH on host ol79rac2. Warning: Permanently added 'ol79rac2,192.168.88.80' (ECDSA) to the list of known hosts. grid@ol79rac2's password: grid 입력 Done with creating .ssh directory and setting permissions on remote host ol79rac2.
ssh 정상적으로 맺었는지 확인, remote node 접속 시 패스워드를 묻지 않아야 함
ssh ol79rac2 date #외부 통신 영역 ssh ol79rac2-priv date #내부 interconnect 영역
#interconnect 영역이 ssh 설정되지 않았다면 yes만 눌러주면 설정 완료
해당 스크립트를 돌린 후 grid 설치 중 ssh 연결이 안되어 있다면 수동으로 ssh 연결 맺기
cvuqdisk 패키지 설치(모든 노드, 해당 패키지가 없으면 클러스터 확인 유틸리티(CVU)는 공유 디스크를 찾을 수 없음)
해당 패키지는 oinstall 그룹이 존재해야만 설치되며, 없을 경우 에러나서 설치 불가
echo $GRID_HOME #해당 내용 복사 exit cd /grid/app/12c/grid/cv/rpm ls -l rpm -ivh cvuqdisk-1.0.10-1.rpm
물리적 독립성 : 디스크 블록, 실린더, 바이트, 데이터 항목의 위치와 같은 물리적 구성에 대한 종속성을 제거
접근의 독립성 : 프로그램으로부터 요구되는 레코드와 파일의 탐색과 접근을 위한 접근 경로를 제거
데이터의 독립성 : 데이터가 프로그램 언어, 운영 체계와 처리 환경으로부터 분리
[DBMS의 특징]
중복성 통제 : 데이터의 사전 검증을 통해 중복된 데이터를 최소화함으로써 데이터의 저장, 개발, 성능 및 유지보수 측면에 장점을 갖게 됨
데이터의 일관성 유지 : 중앙 집중식 통제로 동일한 사실을 표현하는 데이터들 간의 불일치를 방지하고 동질성을 보장
메타 데이터 : 데이터의 관계나 특성들이 메타 데이터에 저장, 이런 메타 데이터의 관리로 관련 프로그램들의 수정 없이 데이터의 구조적 변경이 가능
사용자 중심의 데이터 처리 : 데이터 간 복잡한 관계를 DBMS가 처리해 줌으로써 사용자에 의한 데이터 처리가 좀 더 용이함, 대부분의 DBMS는 다중의 사용자를 위해서 다양하고 용이한 인터페이스를 제공
데이터의 정합성 보장 : DBMS는 입력이나 갱신 작업을 수행할 때마다 사용된 데이터가 규칙에 위배되지 않는 정확한 값인가를 검사하여 유효한 데이터만 허용, 이처럼 데이터 정합성을 검증하므로 모든 데이터는 정합성을 유지함
백업 및 복구 기능 : 보관된 데이터의 안정성을 높이기 위해서 데이터의 복제본을 저장할 수 있도록 하는 백업 기능 제공, 또한, 장애가 발생했을 경우 백업 기능으로 생성된 복제 본을 이용하여 데이터를 복원시킬 수 있는 복구 기능 제공
질의 처리 : 데이터를 사용하기 위해 사용자가 질의를 수행할 경우 효과적인 방법으로 데이터에 접근하는 방법을 제공
보안 기능 : 데이터베이스에 대해서 허용된 사용자에 의해서만 접근을 가능하게 할 수 있으며, 처리 가능한 데이터를 확인 및 검사함으로써 개인 정보를 보호할 수 있도록 한다
[DBMS의 단점]
백업 복구의 어려움
고성능 하드웨어 및 고가의 DBMS 구입 비용과 장애에 대한 사전 대비를 위한 백업 및 복구 비용이 큼
[DBMS의 언어]
사용자가 데이터를 정의하고 조작하기 위하여 DBMS에서 제공하는 언어 = SQL
데이터 정의어(DDL) : 데이터 정의어를 통해 데이터베이스를 구성하는 오브젝트가 정의되며 데이터베이스의 메타데이터로 저장, 각 DBMS 마다 많은 데이터 정의어들이 존재, 데이터 테이블 생성(Create Table), 테이블 변경(Alter Table) 및 테이블 삭제(Drop Table)이 존재
데이터 제어어(DCL) : 데이터베이스에 저장된 데이터를 올바르게 유지하기 위해 사용되며 데이터 무결성 또는 보안에 대한 작업을 수행, 사용자에 의해서 사용되기 보다는 데이터베이스 관리자에 의해 사용, 권한 부여(Grant) 및 권한 해제(Revoke)등이 존재
데이터 조작어(DML) : 데이터베이스에 데이터를 입력, 수정 및 삭제 등의 작업을 수행하기 위해서는 각각의 작업에 맞는 DML을 이용, DML은 INSERT(입력), UPDATE(수정), 및 DELETE(삭제)를 의미
데이터 검색어(Query) : 데이터베이스에 저장되어 있는 데이터를 조회하기 위해 사용하는 SQL 언어, 데이터 검색어로는 SELECT를 사용
[관계형 DBMS(RDBMS) 종류]
객체 지향 DBMS : ObjectStore, Open ODB 및 Versant
객체 관계 DBMS : Universal Server가 존재, 오라클은 보완된 기능으로 객체 관계 DBMS의 형태를 갖춤
[오라클 버전 및 제품군]
오라클 엔터프라이즈 에디션(Enterprise Edition) : 단일 시스템 환경뿐만 아니라 클러스터 환경을 지원하며 많은 수의 사용자와 대용량 데이터베이스 운영을 위한 기업용 버전
오라클 스탠다드 에디션(Standard Edition) : 오라클 엔터프라이즈 에디션에 비해 비교적 저렴한 비용으로 중, 소규모 비즈니스 및 부서 단위 환경을 위한 버전
오라클 퍼스널 에디션(Peronal Edition) : 오라클 엔터프라이즈 에디션의 모든 기능을 갖추고 있는 개인용 버전이며 일반적으로 어플리케이션 개발을 위한 개인 사용자 버전
오라클 라이트 에디션(Lite Edition) : 모바일 데이터베이스 구축, 배포 및 관리를 위한 버전
오라클 익스프레스 에디션(Express Edition) : 개발용으로 사용할 수 있는 무료 버전
pgpool을 두가지 방식으로 사용하는 방법을 기술(pgpool이 load balance만 하는 경우, pgpool이 replication을 담당하는 경우)
postgres 기본 경로 변경(/var/lib/pgsql/11/data -> /pgsql/11/data)하여 수행, 변경하지 않는 경우 scp로 파일을 생성할 때, root의 권한이 있는 디렉터리에 생성되지 않음, 설정은 peryh.tistory.com/7?category=871555 참조
오류 메시지는 유닉스 도메인 소켓을 참조하므로 netstat제외하지 않으려면 호출을 조정해야 합니다.
옵션없이 시도하십시오
netstat -nlp | grep 5432
클라이언트가 연결하려고하는 /tmp/.s.PGSQL.5432것이 아니라 서버가 실제로 소켓에서 수신 대기 하고 /var/run/postgresql/.s.PGSQL.5432있다고 생각합니다. 이것은 유닉스 도메인 소켓 디렉토리의 소스 기본값 /tmp이 데비안 패키징에서로 변경 되기 때문에 데비안 또는 우분투에서 수동 컴파일 또는 타사 PostgreSQL 패키지를 사용할 때 발생하는 일반적인 문제 /var/run/postgresql입니다.
가능한 해결 방법 :
타사 패키지에서 제공 한 클라이언트를 사용하십시오 (call /opt/djangostack-1.3-0/postgresql/bin/psql). 우분투 제공 패키지를 모두 제거 할 수 있습니다 (다른 역 종속성으로 인해 어려울 수 있음).
타사 패키지의 소켓 디렉토리가 Debian / Ubuntu와 호환되도록 수정하십시오.
-H localhost대신 TCP / IP를 통해 연결하는 데 사용하십시오 .
올바른 디렉토리를 가리 키려면 -h /tmp이와 동등한 PGHOST설정을 사용하십시오 .
타사 패키지를 사용하지 마십시오.
vi /var/lib/pgsql/11/data/postgresql.conf의 unix_socket_directories = '/var/run/postgresql, /tmp' 주석 해제 후