SAP HANA Database 維運管理作業

這一篇我們來介紹關於HANA Database一些日常操作管理

Start and Stop Services

這是最基本的操作了,HANA一般在OS Level 是用 “sapstartsrv”ˊ這個服務來啟動整個HANA system,包括了 Name Server / index server / pre-processor等等服務並且是需要是<sid>adm帳號的權限來操作。
在OS Level 的command 有兩種啟動與關閉服務

OS command for Starting and Stopping SPA HANA

上圖中sapcontrol command 中的00是instance number,另外你也可以使用Cockpit來實現相同的目的,可參考下面示意圖

上圖示計畫係的維護,但若是因為OS或硬體或其他問題造成的就需要做一些log的判斷甚至要把整個log dump給SAP原廠判斷。

On Cockpit

關閉HANA DB的選項,有兩種選項
immediately — 這個選項表示會立刻關閉所有服務,正在進行的transactions會被放棄或是rollback.
Softly-timeout — 這個選項是指HANA DB會等待5分鐘(當然可以自行調整)的時間讓所有的transaction完成(並不會再有新的transaction進入)。五分鐘過後就會採用immediately的方式關服務。

另外也可以使用SQL command開啟與關閉服務,命令如下
•ALTER SYSTEM START DATABASE <tenant name>

  • ALTER SYSTEM STOP DATABASE <tenant name>

若是Scale out(distributed)架構的HANA可採用如下命令

HANA DB的設定

相關的設定都在HANA的configuration file中,並且只能使用HANA相關的tool去修改不可直接在OS中修改,否則可能會有非預期的狀況發生。因為HANA參數檔案很多,通常都是會被分為group或layers.基本上有四類

上面的default 參數的設定只有在兩種狀況下才能修改,一種是來自SAP原廠的建議另一種是來自SAP Notes的文件。修改這些參數的部分可以在Cockpit修改,修該Database layer的參數最少要有 INIFILE ADMIN的系統權限才可以,而修改DB相關參數之後服務要重啟,相關細節可以參考SAP Notes 2036111.

每一個Database(不論是system DB or tenant DB)都會有以下的參數檔
–attributes.ini
–docstore.ini
–dpserver.ini
–esserver.ini
–executor.ini
–extensions.ini
–global.ini
–indexserver.ini

–multidb.ini
–scriptserver.ini
–xsengine.ini

Display/List/Edit Parameters
Changing Parameter values

接著介紹幾個比較重要的參數

上圖參數是指整個HANA System可以用多少的記憶體(這還跟你買的license 等級有關),而changleable是指設定立即生效不用重啟服務。

上圖參數指HANA DB多久一次將memory 中的 DATA寫入到硬碟。 0表示永不寫入(這大都用在非正式環境上)

上圖參數指HANA DB需不需要自動將log備份(沒有啟用也大都用在非正式環境)

上圖參數指HANA DB的log要不要覆寫,若選用複寫哪麼這一個DB將無法將資料回復到某個時間點。

上圖參數指HANA DB的在memory的log buffer,這視乎你的DB workload來調整。

相關的參數檔案路徑
如果是Global parameters會在:
/usr/sap/<SID>/SYS/global/hdb/customer/config/
若是個別的server則會在:
/usr/sap/<SID>/HDB<instance>/<host name>/
每個SID會有自己客製化的參數檔,如下圖

日常性工作

在完成了初始化的設定與有資料開始運作後,我們需要做一次Full backup包含 System DB / Tenant DB / system backup(包含設定檔。

backup in Cockpit

以及System Replication

使用 Cockpit的SQL Console

將Database加入 Database Explorer

哪將DB加入Database Explorer的用意甚麼呢?最主要我們可以監控哪一個Application or SQL statements 最消耗資源(根據我們預先定義好的Threshold)

Tables的日常維運

因為HANA有兩種型態的tables,使用情境如下圖。Row store 用在OLTP Applications 而Column store用在OLAP Applications.

你還可以把這兩種不同型態的table互相轉換,SQL command如下
SQL → ALTER TABLE <table name> ALTER TYPE <ROW or COLUMN>;
在Column Store中,HANA在多核心CPU中使用不同的核心處理不同的Column所以可以達到大規模平行處理資料的能力,甚至若有一個column也能分開由不同的CPU來處理資料。
另外Column可以藉由多主機(scale out)架構來分散(partition)的方式來處理加快處理速度。效益如下
• Distribute across HANA nodes
• Load balancing
• Parallel processing
• Higher performance of delta merge
• Easier maintenance of very large tables

另外Partition有三種模式
Round robin :
資料平均分配在每一台主機上
Hash:
使用雜湊方式(加一些key value)分散資料
Range:
使用一些特定值來分散資料,例如日期或row 的範圍。
若我們要crate 一個分散式的tabel, SQL statements範例如下
CREATE COLUMN TABLE TEST_PARTITION (A INT, B INT, C INT, PRIMARY KEY (A,B)) PARTITION BY RANGE (A) (PARTITION 1 <= VALUES <10,PARTITION 10 <= VALUES <20,PARTITION VALUE = 50, PARTITION OTHERS)
上面的範例是使用Range type的,完成後可以在Cockpit上觀察到相關資訊

Trace Configuration

在維運中 trace configuration是作為triubleshooting 及錯誤分析,以釐清root cause.常用的 Traces有以下幾種(有些預設是沒有開啟的)

Useful Traces

我們會再幾種不同的工具中看到這些Trace file
1. OS Level :
Trace Directories — /usr/sap/<SID>/HDB<instance No.>/<host name>/trace
2. HANA Cockpit
HANA Cockpit console → Database Explorer
3. HANA Web IDE
https://<host name>:43##/sap/hana/ide/trace
4. HANA Studio
HANA Studio console → Administration → Diagnosis Files

若要設定這些Traces的參數則必須要有 TRACE Admin的系統權限,若是"kernel profile”這個還需要附加有 SAP_INTERNAL_HANA_SUPPORT的role. 例如我們要開啟SQL trace, SQL statement如下(當然你也可以在HANA studio或是 cockpit 中的Database explorer設定)
ALTER SYSTEM ALTER CONFIGURATION (‘indexserver.ini’, ‘SYSTEM’) SET (‘sqltrace’, ‘trace’) = ‘on’ WITH RECONFIGURE
另外預設這些沒有trace沒有打開的是因為開啟後會對效能造成一定的影響,所以在解決問題後記得把它們給關閉。

另外若該DB沒有反應的話我們需要透過Cockpit來查看,你會cockpit中的 “Troubleshoot Unresponsive System”來查看。裡面的幾種資訊方便我們診斷
●Connections
●Transactions
●Blocked Transactions
●Threads

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet