SAP HANA DB 에서 SYSTEM 계정은 가장 기본 슈퍼 어드민 계정이다.
SAP 에서는 보안상의 이유로 SYSTEM 계정을 사용하지 말고, 별도의 슈퍼 어드민 계정을 생성하여 사용하길 권장한다.
다만, SYSTEM 계정 패스워드가 드물게 필요할 때가 있는데 (SWPM, SUM, DB 복구, DB 업그레이드 등등), 이럴 때 SYSTEM 계정 패스워드를 분실할 경우 난감한 상황을 겪게 된다.
이때, 다음과 같이 HANA DB 의 SYSTEM 계정의 패스워드를 초기화 할수 있다.
SYSTEM DB, SYSTEM 계정의 패스워드 초기화는 DB서버 OS 상에 접근이 가능해야 한다.
✅<SID>adm
계정으로 로그인
DB 를 중지한다.
sapcontrol -nr <instance_number> -function StopSystem HDB
새 세션에서 hdbenv 를 적용하고, SYSTEM DB 의 name server 를 다음과 같은 명령어로 시작한다.
/usr/sap/<SID>/HDB<instance_number>/hdbenv.sh
/usr/sap/<SID>/HDB<instance_number>/exe/hdbnameserver -resetUserSystem
이 후, name server 시작 메세지가 나오면서 SYSTEM 계정 패스워드 초기화 입력이 나오면 신규 패스워드를 입력한다.
resetting of user SYSTEM - new password: <신규 패스워드>
신규 패스워드를 설정 했다면, 패스워드가 재설정되고 name server 는 다시 중지된다.
DB 를 다시 시작하여 SYSTEM 계정 패스워드를 확인한다.
sapcontrol -nr <instance_number> -function StartSystem HDB
SAP HANA 1.0 SPS10 ~ 12 PL2 / 2.0 SPS00 ~ 04 PL7 버전에서는 HANA의 프로그래밍 오류로 SYSTEM DB 의 SYSTEM 계정 패스워드를 정상적으로 재설정했음에도 계정에 접속할 수 없는 이슈가 있다.
아래 SAP Notes 를 참조하기 바란다.
- SAP Notes 3001091 - Your SYSTEM User is Deactivated and Disabled to Connect by Client to the HANA Database
- SAP Notes
TENANT DB 의 경우 더 간단한 방법으로 초기화가 가능하다.
HANA Studio 또는 HANA Cockpit 에서 SQL 을 통해 초기화를 할 수 있다.
ALTER SYSTEM STOP DATABASE <TENANT DB_SID>
ALTER DATABASE <DB_SID> SYSTEM USER PASSOWORD <신규 패스워드>
SAP HANA Studio 의 Landscape 탭에서 대상 TENANT DB 의 Indexserver 의 내부 포트를 확인한다.
Default 설정에 TENANT DB 가 한개라면, 3<instance_number>03
이며,
두번째 TENANT DB 는 3<instance_number>40
, 세번째 TENANT DB 는 3<instance_number>43
순이다.
SYSTEM DB 에서 다음 명령어로 TENANT DB 를 중지한다.
ALTER SYSTEM STOP DATABASE <TENANT DB_SID>
TENANT DB의 OS 서버에 <SID>adm
계정으로 접속하여, 해당 세션에서 hdbenv 를 적용한다.
export DBNAME=<TENANT DB_SID>
./hdbenv.sh
또는
/usr/sap/<SID>/HDB<instance_number>/hdbenv.sh
다음 명령어로 Indexserver 서버를 암호 재설정 옵션으로 시작한다.
internal port 는 위에서 확인한 Indexserver 의 내부 포트를 입력하면 된다.
DBNAME=<TENANT DB_SID> /usr/sap/<SID>/HDB<instance>/exe/hdbindexserver -port <internal port> -resetUserSystem
다음 프롬프트가 뜨면, 신규 패스워드를 입력하고 엔터를 누른다.
패스워드에 특수문자가 포함되어있을 경우 큰따옴표로 감싸줘야 한다.
resetting of user SYSTEM - new password :
(re)activating user SYSTEM... done. 구문이 뜨면, 정상적으로 패스워드가 재설정되었다. 이제 다음 명령어로 TENANT DB 를 시작한다.
ALTER SYSTEM START DATABASE <TENANT DB_SID>