> For the complete documentation index, see [llms.txt](https://docs.tibero.com/prosync/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/prosync/troubleshooting/common-diagnostics.md).

# 공통 진단

프로세스 종류와 관계없이 공통으로 적용되는 crash/thread 진단 방법과 wallet 운영을 설명한다.

## 프로세스 Crash / Thread 장애

ProSync 프로세스의 signal 처리에는 일반적인 Unix 데몬과 다른 특성이 있다.

* SIGSEGV, SIGBUS, SIGILL, SIGFPE 등의 fault가 발생하면 core 파일 대신 `$PRS_HOME/var` 하위의 `prosync.out.<pid>` 파일에 callstack이 기록된다.
* Control Thread가 아닌 worker thread에서 crash가 발생하면 해당 thread만 종료될 수 있다. 따라서 프로세스 PID가 살아 있어도 필수 thread가 `DEAD` 상태일 수 있다.
* SIGINT, SIGTERM, SIGHUP 신호는 무시된다. 지원되는 종료 방법은 Admin의 `SHUTDOWN` 명령이다.

### 진단 절차

프로세스가 비정상 동작하거나 응답하지 않는 경우 다음 순서로 점검한다.

1. `$PRS_HOME/var` 하위에서 `prosync.out.<pid>` 파일을 찾아 callstack을 확인한다.
2. `STATUS <inst_id>` 명령으로 모든 thread의 상태를 확인한다. 프로세스가 running이라도 개별 thread가 죽어 있을 수 있다.
3. 필요 시 `ALLOCDUMP`, `TRACEDUMP`, `JCDUMP` 등의 dump 명령으로 in-memory 상태를 수집한다. 명령 문법은 [명령어 목록](/prosync/administration/admin/command/lists.md)을 참고한다.
4. 종료 제어는 `prs_adm`의 `SHUTDOWN` 명령을 사용한다.
5. 일반 `kill` 신호(SIGINT/SIGTERM/SIGHUP)는 무시되므로, `SHUTDOWN`으로도 종료되지 않는 경우 최종 수단으로 SIGKILL(`kill -9`)을 사용한다.

{% hint style="info" %}
**참고**

수집된 `prosync.out.<pid>` 파일과 dump 파일은 버그 리포트 시 함께 전달한다. [Bug Report](/prosync/troubleshooting/bug-report.md)를 참고한다.
{% endhint %}

***

## Wallet 운영

설치 시 생성되는 cfg 파일에는 `PRS_PWD=#encrypted`와 같이 기록되는데, `#encrypted`는 암호화된 암호 문자열이 아니라 실제 암호를 wallet 파일에서 읽으라는 표시(sentinel)다.

암호가 저장되는 wallet 파일은 다음과 같다.

<table><thead><tr><th width="320">파일</th><th>용도</th></tr></thead><tbody><tr><td><code>var/&#x3C;instance>/.wallet</code></td><td>일반 DB 접속 암호</td></tr><tr><td><code>var/&#x3C;instance>/.wallet_asm</code></td><td>Oracle ASM 인스턴스 접속 암호 (ASM 구성 시 생성)</td></tr><tr><td><code>var/&#x3C;instance>/.wallet_tde</code></td><td>TDE wallet 암호</td></tr><tr><td><code>var/&#x3C;instance>/.wallet_tde_hsm</code></td><td>HSM PIN</td></tr></tbody></table>

운영 시 다음 사항을 지켜야 한다.

* 설정 파일(`config`)만 다른 노드로 복사해서는 프로세스를 기동할 수 없다. 노드 이관 시에는 wallet 파일을 함께 이관해야 한다.
* wallet 파일은 백업 대상에 포함해야 하며, 파일 권한은 ProSync 운영 계정만 읽을 수 있도록 관리한다.
* DB 비밀번호를 변경한 경우에는 wallet을 다시 생성해야 한다.
* TDE를 사용하는 경우 `.wallet`과 별도로 `.wallet_tde`(및 HSM 사용 시 `.wallet_tde_hsm`)가 필요하다.

{% hint style="info" %}
**참고**

`#encrypted` sentinel과 생성되는 설정 파일의 예시는 [Instance 설치](/prosync/installation/prosync/instance.md)의 '설치 결과 확인'을 참고한다.
{% endhint %}
