TimesTen記憶體碎片(高水位)回收步驟詳解

tangyunoracle發表於2015-03-06

      記憶體是TimesTen記憶體資料庫中最重要的資源,就好比我們熟悉的Oracle資料庫中只有一個System表空間一樣;遺憾的是TimesTen的記憶體資源不單類似Oracle資料庫只有一個System表空間一樣的特例,TimesTen的不單隻有一個表空間,還是一個不支援線上擴容更不能自動擴充套件的表空間。TimesTen的擴容很簡單,只需要修改sys.odbc.ini中的PermSize引數並重新裝載即可,但是畢竟記憶體資源是有限的,我們在實際運維中,經常會出現為了回收記憶體而需要進行記憶體碎片回收,類似Oracle對錶空間的記憶體碎片回收,但是由於TimesTen記憶體碎片回收並不能像Oracle的表空間高水位回收那麼智慧,為了幫助有需要的童鞋,分享實際運維中的記憶體碎片回收方法。

一、遷移並重建主節點,對主節點進行記憶體碎片回收

l   使用TT記憶體庫自帶的ttMigrate工具遷移備節點記憶體庫

1、停止備節應用及其他程式

a)、檢查應用程式

ps -fu timesten  ##除了TT資料庫程式,其餘程式全部停止

b)、檢查備節點的其他程式

ttstatus

c)、停止備節點的TTSERVER程式

ttdaemonadmin -stopserver   ##這裡需要注意是否多個DSN

d)、核查主備節點checkpoint程式是否全部完成

call ttckpthistory

停止主備節點複製程式:

ttadmin -repstop $DSN

 

2、使用ttMigrate工具遷移備節點記憶體資料庫

ttMigrate -c $DSN /ttbackup/m$DSNstandby.dat

 

l  刪除備節點DSN

1、備份TT記憶體庫物件的建立指令碼

ttSchema $DSN

2、unload備節點DSN

call ttckpt;  ##unload前先做兩次checkpoint

call ttckpt;

ttadmin -ramunload $DSN

3、刪除備節點DS

ttdestroy $DSN

4、停止daemon,檢查記憶體段釋放情況

ttdaemonadmin -stop     ##這裡停止daemon需要注意是否有多個DSN

ipcs -map |grep timesten

ps -fu timesten

topas

l  採用之前遷移的備份檔案重建備節點DS

1、使用ttisql拉起例項

ttdaemonadmin -start

ttisql $DSN   ##這裡需要確定autocreate引數是否等於1

Command> host ttadmin -rampolicy manual $DSN

2、使用管理賬號把之前遷移出去的備節點備份遷移回來

ttMigrate -r -connstr "dsn=$DSN;uid=timesten"  /ttbackup/m$DSNstandby.dat

3、啟動主備節點的複製程式並檢查主備複製

主節點:

ttadmin -repstart $DSN

call ttrepstatget;

call ttlogholds;    ##這裡的目的是檢查主節點是否出現長事務,引起主備節點不同步

備節點:

ttadmin -repstart $DSN

Command> call ttRepStateGet;

< STANDBY, NO GRID >

1 row found.

4、檢查記憶體碎片是否釋放,檢查主備複製是否正常

備節點:

Command> dssize m;

Command> call ttblockinfo;

ttadmin -noautoreload $DSN  ##設定不自動載入

ttstatus -debug|grep -i auto

主節點:

call ttbookmark;

ttstatus

檢查主備節點的tterror.log日誌

二、主備切換,遷移並重建主節點記憶體庫

檢查主節點記憶體庫是否正常,檢查複製程式是否正常。

檢查主備同步是否正常

1、停止主備節點的複製程式

停止主備節點複製程式:

ttadmin -repstop $DSN

l  刪除新備節點DSN

1、備份備節點物件的建立指令碼

ttSchema $DSN

2、unload備節點DSN

call ttckpt;  ##unload前先做兩次checkpoint

call ttckpt;

ttadmin -ramunload $DSN

3、刪除備節點DS

ttdestroy $DSN

4、停止daemon,檢查記憶體段釋放情況

ttdaemonadmin -stop     ##這裡停止daemon需要注意是否有多個DSN

ipcs -map |grep timesten

ps -fu timesten

topas

l  使用重建備機指令碼直接重建備機(新的備節點)

1、使用重建備機指令碼直接重建備機

參考《重建備機操作》http://blog.itpub.net/24930246/viewspace-1172765/

2、啟動新備節點的複製程式

ttadmin -repstart $DSN

Command> call ttRepStateGet;

< STANDBY, NO GRID >

1 row found.

3、檢查高水位是否釋放,檢查新主備複製是否正常

新備節點:

Command> dssize m;

Command> call ttblockinfo;

ttadmin -noautoreload $DSN  ##

ttstatus -debug|grep -i auto

新主節點:

call ttbookmark;

ttstatus

檢查主備節點的tterror.log日誌

4、新備節點高水位回收已完成,啟動並檢查業務是否正常執行。

至此,主備節點的記憶體碎片回收操作已經完成。

注意事項:

1、在實施備節點記憶體碎片回收操作如果出現備節點IDLE,可以檢查主節點是否存在長事務,如果存在長事務,先處理長事務。

2、在實施過程中如果出現任何異常,採用緊急重建備機的方式回退。
3、在11.2.1.x版本中存在記憶體碎片回收後無法進入主備模式的情況,建議進行記憶體碎片回收前分析是否可以正常進入主備模式。



Created by Tony.Tang[TangYun]2015.03
------------------------End---------------------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24930246/viewspace-1449934/,如需轉載,請註明出處,否則將追究法律責任。

相關文章