728x90

Oracle에서 날짜/시간은 소수점으로 시간 단위를 표현합니다.

  • 1 = 1일
  • 1/24 = 1시간
  • 1/1440 = 1분 (1 / (24 * 60))
  • 1/144 = 약 10분 (1 / (24 * 6))

그러므로:

1/24/(60/10) = 1/144 = 10분(interval of 10 minutes)

728x90
반응형

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

[ORACLE] SELECT ~ FOR UPDATE  (5) 2024.10.08
[Oracle] ROLLUP  (0) 2024.08.19
[Oracle]ORA-02185: a token other than WORK follows COMMIT  (0) 2024.07.05
[Oracle] EXECUTE IMMEDIATE 문 ( 동적 SQL)  (1) 2024.07.04
[SQL] 계층형 쿼리 ( CONNECT BY )  (0) 2024.03.05
728x90

 

 

 

 

  • 이벤트 이름: DLM cross inst call completion
  • 상황: 한 RAC 인스턴스의 세션이 다른 인스턴스에 있는 리소스(락, 캐시 블록 등)에 접근하려 할 때, DLM을 통해 cross-instance 호출을 하며, 그 호출이 완료되기를 기다리는 시간 동안 이 대기 이벤트가 발생합니다.
  • 유형: 일반적으로 GC(Global Cache) 관련 처리 또는 락 해제, 변경, 동기화와 관련되어 있습니다.

 

📋 주요 발생 원인

 
🔄 락 관리 동기화 한 인스턴스의 세션이 다른 인스턴스에서 소유한 리소스에 대해 잠금 요청 시
💽 캐시 퓨전 처리 지연 GC 관련 처리 (예: 블록 송신, 요청 큐 지연 등)
📡 네트워크 지연 인스턴스 간 통신이 느리거나 일시적으로 병목 발생 시
🧠 CPU 바운드 대상 인스턴스에서 CPU가 과도하게 사용 중일 경우, DLM 응답이 지연될 수 있음

 

📎 관련 대기 이벤트 비교

이벤트설명
gc current block busy 다른 인스턴스에서 블록을 보내주는 중
gc cr block busy CR 요청에 대한 블록이 아직 전달되지 않음
gc current request 요청 블록을 기다리는 중
DLM cross inst call completion DLM 호출을 타 인스턴스에 요청하고 완료되기를 기다림

 

728x90
반응형
728x90

블록 클린아웃은 트랜잭션에 의해 설정된 로우 Lock을 해제하고 블록 헤더에 커밋 정보를 기록하는 오퍼레이션이다.

대량의 갱신 작업이 있고 나서는 해당 블록들을 일일이 찾아 다니며 클린아웃을 수행하려면 시간이 오래 걸려 오라클은 대량 갱신 작업 후에는 커밋 정보를 트랜잭션 테이블에만 기록하고 커밋을 빠르게 끝낸다.

 

항상 이 방식으로 작동하는것은 아니며, 오라클은 delayed 블록 클린 아웃과 커밋 클린아웃 두 가지 매커니즘을 사용한다.

 

(1) Delayed 블록 클린아웃

트랜잭션이 갱신한 블록 개수가 총 버퍼 캐시 블록 개수의 1/10을 초과할 때 사용하는 방식이다. 커밋 이후 해당 블록을 액세스하는 첫 번째 쿼리에 의해 클린아웃이 이루어지며, 이때 아래와 같은 작업을 수행한다.

 

1. ITL 슬롯에 커밋 정보 저장 --> active 상태의 블록이, 다른 트랜잭션이 변경 시킨 사항이 ITL에 아직 기록되지 않았다면 ITL슬롯에 기록된 트랜잭션 ID를 이용해 undo 세그먼트 헤더에 있는 트랜잭션 테이블 슬롯을 찾아가 현재 상태를 확인하고 커밋된 상태면 이를 ITL슬롯에 반영.

2. 레코드에 기록된 lock byte 해제

3. online redo에 logging

 

(2) 커밋 클린아웃(=fast 블록 클린아웃) 

트랜잭션이 갱신한 블록 개수가 버퍼 캐시 블록 개수의 1/10을 초과하지 않을때는 커밋 시점에 곧바로 블록 클린아웃을 수행한다.

다만, 이 경우에도 커밋 시점에는 '불완전한 형태의 클린아웃'을 수행하며 해당 블록을 갱신하는 다음 트랜잭션에 의해 완전한 클린아웃이 이루어진다.

 

ITL 슬롯에 커밋 정보만 저장하고 로우 헤더의 lock byte는 해제하지 않는다. 

 

즉 커밋 클린아웃시에는 online redo에 로그를 남기지 않는다. 로깅 시점을 미룸

그러고 나서 해당 블록을 갱신하려고 currnt 모드로 읽는 시점에 비로소 lock byte를 해제하고 완전한 클린아웃을 수행함.

그리고 그 내역을 online redo 에 로깅. 이를 delayed 로깅 블록 클린 아웃이라고 부름.

728x90
반응형
728x90

db 기동 시 발생하는 ORA 메세지

1
2
3
4
5
6
7
8
9
10
11
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
 
Total System Global Area 2147481656 bytes
Fixed Size            8898616 bytes
Variable Size          486539264 bytes
Database Buffers     1644167168 bytes
Redo Buffers            7876608 bytes
Database mounted.
Database opened.

 

 

 

해결 방법 : 파라미터 파일에서 사용되지 않는 파라미터 제거

위 메세지는 해당 버전에서 지원하지 않는 파라미터를 파라미터파일에 삽입했을 때 발생하는 에러메세지임

 

 

현재 버전에서 지원하지않는(deprecated) 파라미터 목록 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> 
set lines 200 pages 1000
select name from v$parameter where isdeprecated = 'TRUE' order by name;
 
NAME
--------------------------------------------------------------------------------
active_instance_count
asm_preferred_read_failure_groups
background_dump_dest
buffer_pool_keep
buffer_pool_recycle
cluster_database_instances
commit_write
cursor_space_for_time
db_block_buffers
fast_start_io_target
instance_groups
lock_name_space
log_archive_start
parallel_adaptive_multi_user
plsql_debug
plsql_v2_compatibility
rdbms_server_dn
remote_os_authent
resource_manager_cpu_allocation
sec_case_sensitive_logon
serial_reuse
sql_trace
unified_audit_sga_queue_size
user_dump_dest
 
24 rows selected.

 

 

현재 파라미터 파일 확인

spfile 을 사용하고 있어서 보기 좋게 pfile을 생성

1
2
3
4
5
6
7
8
9
SQL> show parameter spfile
 
NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
spfile                     string     /app/oracle/product/19c/dbs/sp
                         fileorcl19.ora
SQL> create pfile from spfile;
 
File created.

 

 

현재 db 의 파라미터 파일 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ cat $ORACLE_HOME/dbs/initorcl19.ora
orcl19.__data_transfer_cache_size=0
orcl19.__db_cache_size=1526726656
orcl19.__inmemory_ext_roarea=0
orcl19.__inmemory_ext_rwarea=0
orcl19.__java_pool_size=0
orcl19.__large_pool_size=16777216
orcl19.__oracle_base='/app/oracle'#ORACLE_BASE set from environment
orcl19.__pga_aggregate_target=419430400
orcl19.__sga_target=2147483648
orcl19.__shared_io_pool_size=117440512
orcl19.__shared_pool_size=469762048
orcl19.__streams_pool_size=0
orcl19.__unified_pga_pool_size=0
*.audit_file_dest='/app/oracle/admin/ORCL19/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/app/oracle/oradata/ORCL19/control01.ctl','/app/oracle/oradata/ORCL19/control02.ctl'
*.db_block_size=8192
*.db_name='orcl19'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCL19XDB)'
*.local_listener='LISTENER_ORCL19'
*.log_archive_dest_1='location=/app/oracle/arch'
*.log_archive_format='%t_%s_%r.arc'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=393m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sga_target=2147483648
*.undo_tablespace='UNDOTBS1'

확인 결과 지원하지 않는 파라미터인 sec_case_sensitive_logon 파라미터가 적용되어 있음

 

 

해당 파라미터 제거

1
2
3
SQL> alter system reset sec_case_sensitive_logon scope=both;
 
System altered.

 

 

db 재기동 후 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
 
Total System Global Area 2147481656 bytes
Fixed Size            8898616 bytes
Variable Size          486539264 bytes
Database Buffers     1644167168 bytes
Redo Buffers            7876608 bytes
Database mounted.
Database opened.

ORA 메세지가 발생하지 않음

 

 

원인 : 해당 버전에서 지원하지 않는 파라미터 사용

해당 버전에서 지원하지 않는 파라미터를 파라미터파일에 삽입했을 때 발생하는 에러메세지임

해당 파라미터를 제거해줌으로서 해결

 

12cR1 문서에 아래와 같이 호환성을 위해서만 유지된다고 나와있음

1
2
3
4
The SEC_CASE_SENSITIVE_LOGON parameter is deprecated. It is retained for backward compatibility only. 
For more information about the deprecation of this parameter, see Oracle Database Security Guide.
SEC_CASE_SENSITIVE_LOGON매개 변수는 사용되지 않습니다. 이전 버전과의 호환성을 위해서만 유지됩니다. 
이 매개 변수의 사용 중단에 대한 자세한 내용은 Oracle Database Security Guide를 참조하십시오 .
728x90
반응형

'Oracle > Admin' 카테고리의 다른 글

[Oracle] DLM cross inst call completion  (1) 2025.07.25
[Oracle] 블록 클린아웃  (0) 2025.07.23
[Oracle] TNS-12637, TNS-12170, ORA-609  (0) 2025.04.28
[Oracle] oracleasm, udev  (0) 2025.04.09
[Oracle] crs 기동 (asm 권한 위주)  (0) 2025.04.09
728x90

https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrl-state=vorrc9qj7_53&_afrLoop=154992560185424#SYMPTOM

Doc ID 2939270.1
***********************************************************************
Fatal NI connect error 12637, connecting to:
 (LOCAL=NO)

  VERSION INFORMATION:
        TNS for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
        TCP/IP NT Protocol Adapter for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
        Oracle Bequeath NT Protocol Adapter for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
  Time: 27-APR-2025 12:18:14
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12637

TNS-12637: Packet receive failed
    ns secondary err code: 12532
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
Sun Apr 27 12:18:14 2025
opiodr aborting process unknown ospid (35324084) as a result of ORA-609
***********************************************************************


***********************************************************************

Fatal NI connect error 12170.

  VERSION INFORMATION:
        TNS for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
        TCP/IP NT Protocol Adapter for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
        Oracle Bequeath NT Protocol Adapter for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
  Time: 27-APR-2025 07:43:32
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535

TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: <unknown>
Sun Apr 27 07:43:32 2025
opiodr aborting process unknown ospid (28049744) as a result of ORA-609
Sun Apr 27 07:46:31 2025


***********************************************************************

728x90
반응형
728x90

oracleasm과 UDEV은 둘 다 Oracle ASM에서 디스크를 식별하고 접근할 수 있도록 도와주는 디바이스 레이어 매핑 방식이지만, 방식과 유연성, 관리 측면에서 차이가 있습니다. 아래에서 둘의 차이를 비교해볼게요.


✅ 1. 개념적 차이


항목 oracleasm UDEV
목적 Oracle 전용 디스크 관리 도구 리눅스 시스템 전반의 디바이스 관리 체계
설계 대상 Oracle ASM에 특화됨 시스템 전체 디바이스 규칙 관리 (Oracle 외에도 사용 가능)
디바이스 노출 /dev/oracleasm/disks/DISKNAME /dev/mapper/*, /dev/sdX, /dev/nvme*, 사용자 정의 이름 가능
설정 위치 /etc/sysconfig/oracleasm /etc/udev/rules.d/*.rules

✅ 2. 구성 및 사용 방법

oracleasm

  • Oracle에서 제공하는 툴 (oracleasm-support, oracleasm-lib)
  • oracleasm createdisk, oracleasm listdisks, oracleasm scandisks 명령 사용
  • 디바이스 준비, 파라미터 설정, ASM에서 바로 인식

UDEV

  • 리눅스 기본 udev 시스템 사용
  • 디바이스에 대한 규칙을 직접 작성해야 함
  • KERNEL==, OWNER=, GROUP=, MODE= 같은 매핑 조건 사용
  • 디스크 이름, 소유자, 권한 직접 지정 가능

✅ 3. 장단점 비교

 

항목 oracleasm UDEV
간편성 간단한 명령으로 디스크 관리 수동 설정 필요 (규칙 작성)
유연성 Oracle 전용, 제한적 디스크 이름/권한 자유롭게 설정 가능
표준성 Oracle 종속적 리눅스 표준 방식, 다목적
오버헤드 약간 있음 (oracleasm 모듈 필요) 없음 (리눅스 자체 기능)
권장 사용 과거엔 oracleasm 권장 현재는 UDEV가 일반적으로 권장

✅ 4. 현재 Oracle의 권장 방식은?

Oracle은 11g까지는 oracleasm을 많이 사용했지만,
12c 이후부터는 UDEV 사용을 더 권장하고 있습니다.

  • 이유: 표준 리눅스 방식이고, 더 유연하고 범용성이 좋기 때문
  • Oracle 공식 문서에서도 UDEV 기반으로 ASM 디스크 구성하는 예제가 많습니다

✅ 결론 정리


상황 추천 방식
최신 환경 (12c 이상, 특히 19c) UDEV 기반 권장
과거 환경, oracleasm 익숙한 경우 oracleasm 사용 가능 (단, 유지보수 제한적)
혼합 사용 절대 비추천 (충돌 위험)

 

 

✅ 1. ASM 디스크 물리 경로 확인

oracleasm 사용 시:

 
oracleasm listdisks

 

DATA1
DATA2
FRA1
 
oracleasm querydisk -p DATA1

→ 결과:

 
Disk "DATA1" is valid
[8,17] /dev/sdb1

 

→ 실제 물리 디바이스: /dev/sdb1


UDEV 사용 시 (oracleasm 미사용)

보통 /dev/mapper/, /dev/oracleasm/disks/, /dev/asmdisk*, /dev/sdX, /dev/nvmeXnXpX 등이 될 수 있습니다.
UDEV 매핑 규칙은 /etc/udev/rules.d/99-oracle-asm.rules 등에 정의돼 있어요.


🔎 2. 디스크 접근 권한 확인

디바이스의 퍼미션, 소유자, 그룹을 확인합니다:

 
ls -l /dev/sdb1

 

결과 예시:

brw-rw---- 1 grid asmadmin 8, 17 Apr 9 13:00 /dev/sdb1

꼭 확인해야 할 조건:


항목 권장 설정
소유자 (owner) grid (or root)
그룹 (group) asmadmin, asmdba, 또는 dba 중 하나
퍼미션 660 (rw-rw----) 이상
파일 타입 블록 디바이스 (b)

🧑‍💼 3. grid 사용자가 접근 가능한지 확인

 
sudo -u grid dd if=/dev/sdb1 of=/dev/null bs=1M count=1
  • 에러 없이 1+0 records in 이렇게 나오면 접근 OK.
  • Permission denied → UDEV/소유권 문제 있음.

🛠️ 4. 권한 수정 예시 (root 사용자로 실행)

 
chown grid:asmadmin /dev/sdb1
chmod 660 /dev/sdb1

 

또는 UDEV를 사용하는 경우, 규칙 파일 예시:

# /etc/udev/rules.d/99-oracle-asm.rules KERNEL=="sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660"

→ 변경 후 적용:

udevadm control --reload-rules udevadm trigger

✅ 정리


항목 확인 명령
물리 디스크 경로 확인 oracleasm querydisk -p <DISK> 또는 ls -l /dev/...
권한 확인 ls -l 결과에서 owner, group, mode 확인
접근 테스트 sudo -u grid dd if=/dev/sdX of=/dev/null bs=1M count=1
권한 수정 chown, chmod, 또는 udev 사용
728x90
반응형
728x90

🧩 Oracle 19c + RAC 환경에서 crsctl start crs 시 ASM 기동 흐름


🧾 1. 명령어

crsctl start crs
  • 실행 주체: root
  • 설명: CRS(Cluster Ready Services)를 시작하는 명령어. RAC 노드마다 개별적으로 실행됨.
  • 대상 위치: $GRID_HOME/bin/crsctl

🧱 2. 기동 순서 (CRS → ASM 포함)

root가 crsctl 실행
   ↓
ohasd.bin 기동
   ↓
cssd, gpnpd, evmd 등 핵심 데몬 기동
   ↓
Voting Disk 확인
   ↓
ASM 관련 에이전트 기동 (oraagent, orarootagent)
   ↓
+ASM 인스턴스 기동 (oracle binary)
   ↓
디스크 그룹 마운트 (DATA, FRA 등)
   ↓
CRSD 기동 후 나머지 리소스(DB, Listener 등) 기동

🔧 3. 실행되는 bin 파일 목록

구성 요소실행 파일 경로설명
ohasd $GRID_HOME/bin/ohasd.bin 가장 먼저 시작되는 데몬
ocssd $GRID_HOME/bin/ocssd.bin Voting Disk를 사용한 노드 간 동기화
oraagent $GRID_HOME/bin/oraagent.bin ASM 등 리소스 기동/모니터링
orarootagent $GRID_HOME/bin/orarootagent.bin 루트 권한이 필요한 리소스 담당
oracle $GRID_HOME/bin/oracle ASM 인스턴스 자체 실행 (+ASM1, +ASM2 등 SID)
crsd $GRID_HOME/bin/crsd.bin 리소스(서비스, DB 등) 기동

GRID_HOME은 예: /u01/app/19.0.0/grid


💽 4. ASM 디스크 및 디스크 그룹

ASM 디스크 경로 예시

  • /dev/oracleasm/disks/* (oracleasm-lib 사용 시)
  • /dev/mapper/*, /dev/sd*, /dev/nvme* (UDEV으로 매핑 시)

디스크 그룹

  • 보통 DATA, FRA 등의 디스크 그룹 이름을 사용
  • ASM 인스턴스가 기동되며 디스크 그룹을 자동으로 마운트함

👤 5. 실행 주체 (사용자/프로세스)

실행 대상사용자설명
crsctl start crs root 시스템/클러스터 전체 시작
ohasd.bin, crsd.bin 등 root 루트 데몬
oraagent.bin, orarootagent.bin grid / root 리소스 감시 및 실행
ASM 인스턴스 (+ASM1) grid oracle 프로세스로 기동, SID는 +ASM1, +ASM2 형태
ASM 디스크 접근 grid UDEV 혹은 oracleasm 설정으로 grid가 접근 가능해야 함

🔍 참고 확인 명령어

ps -ef | grep asm
# ASM 인스턴스 기동 여부 확인

crsctl stat res -t
# 리소스 상태 및 ASM 리소스 확인

asmcmd lsdg
# 마운트된 디스크 그룹 정보 확인

ls -l /dev/oracleasm/disks/
# ASM 디스크 경로 확인 (oracleasm 사용 시)

ls -l /dev/mapper/
# UDEV 사용 시 디스크 매핑 확인

✅ 요약

항목내용
기동 명령 crsctl start crs (root 실행)
주요 순서 OHASD → CSSD → oraagent → ASM → CRSD
실행 파일 ohasd.bin, ocssd.bin, oraagent.bin, oracle 등
사용자 root (초기 데몬), grid (ASM 인스턴스)
디스크 /dev/oracleasm/disks/*, /dev/mapper/* 등

 


📋 예시 1: crsctl stat res -t 출력 예시

이 명령은 Cluster Resource 상태를 트리 형태로 보여줍니다. ASM 관련 부분 중심으로 발췌한 예시입니다:

$ crsctl stat res -t

--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER        STATE_DETAILS
--------------------------------------------------------------------------------
ora.asm        ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.DATA.dg     ONLINE  ONLINE      node1
                ONLINE  ONLINE      node2
ora.FRA.dg      ONLINE  ONLINE      node1
                ONLINE  ONLINE      node2
ora.cssd        ONLINE  ONLINE      node1
                ONLINE  ONLINE      node2
ora.crsd        ONLINE  ONLINE      node1
                ONLINE  ONLINE      node2
ora.evmd        ONLINE  ONLINE      node1
                ONLINE  ONLINE      node2
ora.node1.vip   ONLINE  ONLINE      node1
ora.node2.vip   ONLINE  ONLINE      node2
...

설명

  • ora.asm : ASM 인스턴스 상태 (노드별로 ONLINE 여부)
  • ora.DATA.dg, ora.FRA.dg: ASM 디스크 그룹 상태
  • ora.LISTENER.lsnr: 리스너 상태
  • ora.nodeX.vip: 가상 IP 상태

상태가 ONLINE이면 해당 리소스가 정상적으로 기동됨을 의미합니다.


🧾 예시 2: ps -ef | grep asm 출력 예시

$ ps -ef | grep asm
grid     12345     1  0 10:10 ?        00:00:00 asm_pmon_+ASM1
grid     12346     1  0 10:10 ?        00:00:00 asm_vktm_+ASM1
grid     12347     1  0 10:10 ?        00:00:00 asm_diag_+ASM1
grid     12348     1  0 10:10 ?        00:00:00 asm_dia0_+ASM1
grid     12349     1  0 10:10 ?        00:00:00 asm_dbw0_+ASM1
grid     12350     1  0 10:10 ?        00:00:00 asm_lgwr_+ASM1
grid     12351     1  0 10:10 ?        00:00:00 asm_ckpt_+ASM1
grid     12352     1  0 10:10 ?        00:00:00 asm_smon_+ASM1
grid     12353     1  0 10:10 ?        00:00:00 asm_rbal_+ASM1
grid     12354     1  0 10:10 ?        00:00:00 asm_gen0_+ASM1
...

설명

  • 프로세스 명: asm_<process>_+ASM1 형태
  • +ASM1: 노드 1의 ASM 인스턴스 이름
  • 주요 백그라운드 프로세스:
    • asm_pmon, asm_smon, asm_ckpt 등은 일반 Oracle 인스턴스와 유사
    • asm_rbal, asm_gen0: ASM 전용 프로세스

 

🔧 1. 리소스 기동 정책

 

리소스(예: DB, Listener, ASM 등)는 Oracle Clusterware에서 자동 기동 여부를 다음 속성으로 관리합니다:

 

확인 방법 

 

crsctl status resource -p 

 

  • AUTO_START: CRS 기동 시 리소스를 자동으로 기동할지 여부
    • always : 항상 자동 기동
    • restore : 이전 상태 복원
    • never : 수동으로만 기동

📌 2. 설정 확인 방법

 
crsctl status resource ora.orcl.db -p | grep AUTO_START
  • 예시 출력: AUTO_START=restore

✍️ 3. 설정 변경 방법

 
crsctl modify resource <resource_name> -attr "AUTO_START=<값>"

예시

  1. DB 인스턴스를 항상 자동으로 기동하도록 설정:
 
crsctl modify resource ora.orcl.db -attr "AUTO_START=always"
  1. 리스너 자동 기동 끄기:
 
crsctl modify resource ora.LISTENER.lsnr -attr "AUTO_START=never"
  1. 변경 후 반영 여부 확인:
 
crsctl status resource ora.orcl.db -p | grep AUTO_START

🛠️ 4. 기타 관련 속성

  • ENABLED: 해당 리소스를 CRS가 관리 대상으로 할지 여부
    • ENABLED=1 → CRS에서 관리함
    • ENABLED=0 → CRS에서 관리하지 않음
    • 변경 방법:
    • bash
      복사편집
      crsctl modify resource ora.orcl.db -attr "ENABLED=0"
  • TARGET: 대상 상태 (기동 시도 여부)
    • ONLINE, OFFLINE 등
    • 보통 crsctl start/stop resource 명령으로 수동 제어

✅ 실무 팁

상황설정 예시
PROD 환경에서 무조건 자동 기동 AUTO_START=always
테스트 환경, 수동 기동 선호 AUTO_START=never
재기동 시 이전 상태 그대로 복구 AUTO_START=restore (기본값)

 

728x90
반응형

'Oracle > Admin' 카테고리의 다른 글

[Oracle] TNS-12637, TNS-12170, ORA-609  (0) 2025.04.28
[Oracle] oracleasm, udev  (0) 2025.04.09
[Oracle] Clusterware(CRS) not coming up  (0) 2025.04.03
[Oracle] 라이선스 정책 정리  (1) 2025.02.03
[Oracle] view 데이터 보존 기간  (0) 2025.02.03
728x90
Clusterware(CRS) not coming up:-

1. From root user check crs :-
# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

 

2. Try to stop and start it:- 

# crsctl stop crs
CRS-2796: The command may not proceed when Cluster Ready Services is not running
CRS-4687: Shutdown command has completed with errors.
CRS-4000: Command Stop failed, or completed with errors.

# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

# crsctl start crs
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

 

 

3. Stop High availabilty service and crs resources:- 

crsctl stop res -init -all
root@dbwr1 ~]# crsctl stop res -init -all
CRS-2500: Cannot stop resource 'ora.diskmon' as it is not running
CRS-2673: Attempting to stop 'ora.asm' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.storage' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.gipcd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.crf' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.evmd' on 'dbwr1'
CRS-2677: Stop of 'ora.asm' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.storage' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.crsd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.ctssd' on 'dbwr1'
CRS-2677: Stop of 'ora.evmd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.gipcd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.crsd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.crf' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'dbwr1'
CRS-2677: Stop of 'ora.cssd' on 'dbwr1' succeeded
CRS-4000: Command Stop failed, or completed with errors.



crsctl stop has
[root@dbwr1 ~]# crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'dbwr1'
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'dbwr1' has completed
CRS-4133: Oracle High Availability Services has been stopped.


Verify no crs processes should be running :-
ps -ef|grep d.bin

[root@dbwr1 ~]# ps -ef|grep d.bin
root      6302  4587  0 19:56 pts/0    00:00:00 grep --color=auto d.bin


Note: Kill if any process is still running .


4. Now start crs :-
crsctl start crs

ASM instances and databases will also come up in current node.


5. If any ASM Disk group is dismounted then :-
ALTER DISKGROUP <Disk_Group_Name> MOUNT;
 
==============================================================
[root@opendb01 opendb01]# crsctl stop crs
[root@dbwr1 ~]# crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'dbwr1'
CRS-2673: Attempting to stop 'ora.crsd' on 'dbwr1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'dbwr1'
CRS-2673: Attempting to stop 'ora.chad' on 'dbwr1'
CRS-2677: Stop of 'ora.chad' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'dbwr1'
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'dbwr1'
CRS-2673: Attempting to stop 'ora.asm' on 'dbwr1'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'dbwr1'
CRS-2677: Stop of 'ora.scan1.vip' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.dbwr1.vip' on 'dbwr1'
CRS-2677: Stop of 'ora.dbwr1.vip' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.asm' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'dbwr1'
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'dbwr1'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'dbwr1' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'dbwr1' succeeded.
CRS-2672: Attempting to start 'ora.scan1.vip' on 'dbwr2'
CRS-2672: Attempting to start 'ora.dbwr1.vip' on 'dbwr2'
CRS-2676: Start of 'ora.dbwr1.vip' on 'dbwr2' succeeded
CRS-2676: Start of 'ora.scan1.vip' on 'dbwr2' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'dbwr2'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'dbwr2' succeeded
CRS-2799: Failed to shut down resource 'ora.OCR_DISK.dg' on 'dbwr1'
CRS-2794: Shutdown of Cluster Ready Services-managed resources on 'dbwr1' has failed
CRS-2675: Stop of 'ora.crsd' on 'dbwr1' failed
CRS-2799: Failed to shut down resource 'ora.crsd' on 'dbwr1'
CRS-2795: Shutdown of Oracle High Availability Services-managed resources on 'dbwr1' has failed
CRS-4687: Shutdown command has completed with errors.
CRS-4000: Command Stop failed, or completed with errors.


[root@opendb01 opendb01]# crsctl stop crs -f
[root@dbwr1 ~]# crsctl stop crs -f
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'dbwr1'
CRS-2673: Attempting to stop 'ora.crsd' on 'dbwr1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'dbwr1'
CRS-2673: Attempting to stop 'ora.OCR_DISK.dg' on 'dbwr1'
CRS-2677: Stop of 'ora.OCR_DISK.dg' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'dbwr1'
CRS-2677: Stop of 'ora.ons' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'dbwr1'
CRS-2677: Stop of 'ora.net1.network' on 'dbwr1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'dbwr1' has completed
CRS-2677: Stop of 'ora.crsd' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.crf' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'dbwr1'
CRS-2677: Stop of 'ora.crf' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.asm' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'dbwr1'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.evmd' on 'dbwr1'
CRS-2677: Stop of 'ora.evmd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'dbwr1'
CRS-2677: Stop of 'ora.cssd' on 'dbwr1' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'dbwr1'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'dbwr1'
CRS-2677: Stop of 'ora.gpnpd' on 'dbwr1' succeeded
CRS-2677: Stop of 'ora.gipcd' on 'dbwr1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'dbwr1' has completed
CRS-4133: Oracle High Availability Services has been stopped.

==============================================================
[root@RAC01 ~]# crsctl stop crs
CRS-2796: The command may not proceed when Cluster Ready Services is not running
CRS-4687: Shutdown command has completed with errors.
CRS-4000: Command Stop failed, or completed with errors.


[root@RAC01 ~]# crsctl start cluster

 
[root@RAC01 ~]# crsctl check crs
[root@dbwr1 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
728x90
반응형

'Oracle > Admin' 카테고리의 다른 글

[Oracle] oracleasm, udev  (0) 2025.04.09
[Oracle] crs 기동 (asm 권한 위주)  (0) 2025.04.09
[Oracle] 라이선스 정책 정리  (1) 2025.02.03
[Oracle] view 데이터 보존 기간  (0) 2025.02.03
[Oracle] 패치 정책  (1) 2025.01.22
728x90

정의

Call이 어디서 발생하느냐에 따라 User Call과 Recursive Call로 나눌 수 있다.


1) User Call : OCI(Oracle Call Interface)를 통해 외부로부터 들어오는 Call

 

2) Recursive Call : 오라클 내부에서 발생하는 Call, 
- SQL파싱과 최적화 과정에서 발생하는 Data Dictionary 조회, 
- PL/SQL로 작성된 사용자 정의 함수 , Procedure , Trigger로 인한 SQL수행

 특징
1) User Call
User Call 발생 빈도를 결정하는 요소들
 개발자의 기술이 관여
 프레임워크 내에 Array processing을 지원 유무가 중요하다.
 설계 표준 가이드
 사용자 정의 함수/프로시저에 대한 무조건적인 제약
 모듈이 지나치게 단위로 구성되어 SQL이 건건이 호출되는 개발환경

 

 Loop 쿼리를 해소하고, 집합적 사고를 통해 One-SQL로 구현

 Array Processing : Array 단위 Fetch, Bulk Insert / Update / Delete
 부분범위처리 활용
 효과적인 화면 페이지 처리
 사용자 정의함수 / 프로시저 / 트리거의 적절한 활용

2) Recursive Call
     Hard Parsing에 대해 Recursive Call 발생 

     바인드 변수의 적극적 사용, 하드파싱 횟수 절감을 통해 Recursive Call 감소
     Recursive Depth를 크게 만들지 않게끔 프로시저 구성 ( 프로시저 안에 프로시저가 들어있는 횟수 : Recursive Depth )
     Recursive Depth를 크기 만들지 않게끔 지나친 Procedure의 모듈화를 지양
     대용량 데이터 조회시 함수호출이 건건이 발생하지 않게끔, 함수를 부분범위 처리가 가능한 상황에서,
     제한적으로 사용해야함
    조인 또는 스칼라 서브쿼리 형태로 변환.

 

 

728x90
반응형
728x90

Array Processing 활용

# Array Processing 기능을 사용하면 한번의 SQL수행으로 다량의 로우를 insert/update/delete 할수 있다.
  이를 통해 Network를 통한 데이터베이스 Call을 감소시켜 SQL수행시간과 CPU 사용량을 줄일 수 가 있다.

# 예시상황 : "03 데이터베이스 Call이 성능에 미치는 영향"에 있는 예시상황 
1) 3만건인 월요금납부실적 테이블에서 각로우를 fetch하여 읽은 다음 조건에 맞게끔
   납입방법별_월요금집계 테이블에 중복삽입
2) stmt1.setFetchSize(1000); 구문을 통해 월요금납부실적 테이블을 fetch 할때 1000건씩 fetch
3) select시 fetch call    : 30
   insert시 execute call : 30
4) fetch Array processing size    : 1000 (=Fetch Size)
   execute Array processing size : 5000

---------------------------------------------------------------------------------------------------------------------------------
public static void execute (Connection con , String i nput month) 
throws Exception { 
   long rows 0;
   String SQLStmtl "SELECT 고객번호, 납입월 "
               + ", 지로, 자동이체, 신용카드, 핸드폰, 인터넷"
               + "from 월요금납부실적"
               + "where 납입월 ? ";
   String SQLStmt2 "INSERT INTO 납입방법별_월요금집계 " 
               +"(고객변호, 납입월,납입방법묘드, 납입금액) "
               + "VALUES (?, ?, ?, ?)";
con. setAutoCommit(false);
PreparedStatement stmtl = con.prepareStatement(SQLStmt1);
PreparedStatement stmt2 = con.prepareStatement(SQLStmt2);
stmt1.setFetchSize(1000);
stmtl.setString(1, input month);
ResultSet rs = stmtl.executeQuery();

while(rs.next()) {
   String 고객변호 = rs.getString(1);
   String 납입월 = rs.getString(2);
   long 지로 = rs.getLong(3);
   long 지동이체 = rs.getLong(4);
   long 신용카드 = rs.getLong(5);
   long 핸드폰 = rs.getLong(6);
   long 인터넷 rs.getLong(7);
   if( 지로 > 0 )
      insertData (con, stmt2, 고객변호, 납입월, "A", 지로);
   if ( 지동이체 > 0 )
      insertData (con, stmt2, 고객번호, 납입월, "B", 지동이체);
   if ( 신용카드 > 0 ) 
      insertData (con, stmt2, 고객변호, 납입월, "C", 신용카드);
   if ( 핸드폰 > 0 ) 
      insertData (con, stmt2, 고객변호, 납입월, "D" , 핸드폰);
   if ( 인터넷 > 0 )
      insertData (con, stmt2, 고객변호, 납입월, "E" , 인터넷) ;
   if(++rows%1000 == 0) stmt2.executeBatch();
}
---------------------------------------------------------------------------------------------------------------------------------



# Array processing의 효과를 제대로 발휘하려면, 연속된 일련의 처리과정이 모두 Array 단위로 지정되어야 한다.
   ex : insert select문 - select (fetch), insert(execute)의 각각의 단계에서 
Array processing size가 일치해야한다. 만약 select에서 5000건식 Fetch를 한다 하더라도,
         insert 단계에서, 건건이 execute를 수행하면, 병렬로부터 직렬로 처리되는 부분이 병목현상을 야기하기 때문에
         쿼리 처리속도가 빠르지 않다.

 

 

위의 표는 앞 절에서 수행한 3가지 테스트(PL/SQL,JAVA(array가 10),One-SQL)와 방금 확인한 java(array가 1000)결과를 표로 정리한 것.
네트워크를 경유해 발생하는 데이터베이스 Call이 얼마만큼 심각한 성능부하를 일으키는지 알 수 있다. 그 뿐 아니라 One-SQL로 통합하지 않더라도 Array Processing만으로 그에 버금가는 성능개선 효과를 얻을 수 있음을 확인 할 수 있다.

728x90
반응형

+ Recent posts