阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

TimesTen内存碎片(高水位)回收步骤详解

130次阅读
没有评论

共计 2512 个字符,预计需要花费 7 分钟才能阅读完成。

内存是 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://www.linuxidc.com/Linux/2016-04/130375.htm

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 版本中存在内存碎片回收后无法进入主备模式的情况,建议进行内存碎片回收前分析是否可以正常进入主备模式。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-04/130374.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2512字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中