TimesTen記憶體碎片(高水位)回收步驟詳解
記憶體是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【新炬網路名師大講堂】TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- oracle回收高水位Oracle
- 記憶體碎片與緩解記憶體
- oracle 回收高水位線Oracle
- oracle回收高水位線Oracle
- win10記憶體佔用高怎麼解決_win10系統記憶體佔用高解決步驟Win10記憶體
- oracle 高水位線詳解Oracle
- Redis的記憶體回收機制和記憶體過期淘汰策略詳解Redis記憶體
- oracle表碎片以及整理(高水位線)Oracle
- TimesTen記憶體資料庫評估和計算表大小及碎片記憶體資料庫
- 一、oracle 高水位線詳解Oracle
- delete與高水位線HWM回收delete
- win10虛擬記憶體怎麼設定 win10虛擬記憶體設定步驟詳解Win10記憶體
- 解決golang 的記憶體碎片問題Golang記憶體
- 增加虛擬記憶體的操作步驟記憶體
- 【記憶體資料庫】TimesTen記憶體資料庫
- 圖解Java記憶體回收機制圖解Java記憶體
- Oracle 找出需要回收高水位的表Oracle
- Java 18 如何改進處理大型物件回收的記憶體碎片問題? -Java物件記憶體
- 記憶體回收介紹記憶體
- Redis記憶體碎片深入分析Redis記憶體
- 詳解Java 虛擬機器(第⑥篇)——記憶體分配與回收策略Java虛擬機記憶體
- TimesTen CacheGroup配置標準操作步驟
- 記憶體資料庫TimesTen介紹記憶體資料庫
- 在AIX5.3中將Oracle SGA定在記憶體中的詳細步驟AIOracle記憶體
- 堆記憶體和棧記憶體詳解(轉載)記憶體
- JVM記憶體模型詳解JVM記憶體模型
- JVM堆記憶體詳解JVM記憶體
- iOS記憶體管理詳解iOS記憶體
- js記憶體回收機制JS記憶體
- .NET記憶體管理、垃圾回收記憶體
- java記憶體垃圾回收模型Java記憶體模型
- Redis效能篇(四)Redis記憶體碎片Redis記憶體
- vnc安裝步驟,vnc安裝步驟詳解VNC
- JVM記憶體回收機制——哪些記憶體需要被回收(JVM學習系列2)JVM記憶體
- JVM原理講解和調優,記憶體管理和垃圾回收,記憶體調優JVM記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Java記憶體管理原理及記憶體區域詳解Java記憶體