timesten 安装

1. 安装 

从oracle的网站(http://www.oracle.com/technology/global/cn/software/products/timesten/index.html)下载,timesten的安装文件。 

将下载文件解压后,出现linux86文件夹,执行setup.sh,步骤如下 

○ 输入安装的数据库实例的名字,默认是tt70 

○ 选择你要安装的数据库的类型:1是纯内存数据库,2是oracle的前端缓存型内存数据库。 

○ 选择你要安装的客户端和服务端类型:1数据库和客户端,2只安装数据库,3只安装客户端 

○ 选择你的安装目录 如:/opt/tt70 

○ 创建文件夹并解压安装 

○ 选择你数据实例文件的存储目录 如:/var/timesten/tt70 

○ 该数据库实例的监听端口默认为 17000 

○ 设置该实例access control 

Access Control 提供了一个对TimesTen的一个初级的权限保护功能,它只是对谁能通过正常的途径(比如ttisql、JDBC及ODBC)访问到相应的Data Store做了初级的限制;但并不是说,它对在操作系统级别上对Data Store的文件 以及 Log 文件的访问做除了安全保障。比如 root 用户,即使它不是TimesTen的用户,但root用户可以做他想做的任何事情,比如删除Data Store文件等。所以安装的时候一定要注意,一般建议设置为 yes,Yes时才允许TimesTen创建新的用户 

如果在不更改监听端口的情况下,你可以在安装的时候除了access control选项 

2. linux内核参数: 

i. share memory:timesten需要使用共享内存,你可以通过以下命令在不启动的情况下更改该值。

/sbin/sysctl -w kernel.shmmax=2147483648

可以通过以下两种命令来查看更新后共享内存的值 

/sbin/sysctl -a

或者

cat /proc/sys/kernel/shmmax

ii. kernel.sem: timesten的一个数据库就是一个timesten的子进程,要想设置 kernel.sem是semaphores的缩写,你可以通过以下命令查看当前值

cat /proc/sys/kernel/sem

查看的默认结果是 250 32000 32 128

这四个值分别是 

SEMMSL SEMMNS SEMOPM SEMMNI (对于这个四个值得解释,你可以通过man proc命令查询他们的解释。 

如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置 

SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。 

SEMMNS参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。 

SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010 

你可以通过以下命令在不启动的情况下设置这个值,

echo "5010 641280 5010 128" > /proc/sys/kernel/sem

也可以同通过在/etc/sysctl.conf中增加 kernel.sem = 5010 641280 5010 128的方式修改该值。 

3. timesten的服务端配置 

安装好后(默认实例文件存储目录/var/timesten/tt70),在/var/timesten目录下的文件sys.odbc.ini中配置datasource。 

i. 配置DSN的类型: 

你需要现在[ODBC Data Sources]后面声明你要添加的DSN的驱动类型,TimesTen 7.0 Driver为服务端,TimesTen 7.0 Client Driver为client端 

ii. 配置服务端DSN: 

以下是一个默认的tt70的datasource的配置: 

[TT_tt70] //DSN名称 
Driver=/opt/TimesTen/tt70/lib/libtten.so //驱动,无需更改 
DataStore=/var/TimesTen/tt70/TT_tt70 //数据库文件的存储地址。 
DatabaseCharacterSet=UTF8 

如果你想添加一个你自己的datasource,你可以在文件中添加类似的一段配置。 

以下是timesten的一个配置例子 

[MD_TEST] //DSN名称 
Driver=/opt/TimesTen/tt70/lib/libtten.so 
DataStore=/var/TimesTen/tt70/md_test 
DatabaseCharacterSet=UTF8 
UID=oracle //登录的用户ID 
PWD=Datuu(jiankong) //数据库密码 
PermSize=1300 //永久内存区的大小,即DataStore的大小,单位为M 
Connections=1500 //最大连接数,要小于内核参数kernel.sem的 
你可以参考文章 http://blog.chinaunix.net/u2/64350/showart_504614.html 了解timesten连接的其他属性。 

iii. 用户权限 

关于timesten的用户权限,在timesten的用户默认使用系统用户,当你配置的DSN没有配置UID和PWD属性时,你需以root用户权限登录,登录后默认的数据库用户即为root用户。如果你像使用其他用户,你需要在linux系统中创建该用户,或者直接在timesten中通过create user 用户名 identified by '密码’ 命令创建用户,并且直接赋予该用户权限,grant all to 用户名。这样你在C/S模式下连接DSN该使该用户的用户名和密码才能登录,登录后便是该用户的表空间

4. timesten的客户端配置 

如同timesten的服务端配置一样,你需要在[ODBC Data Sources]声明你的DSN的驱动类型,客户端的驱动为TimesTen 7.0 Client Driver。配置格式如下: 

[RunDataCS_tt70] 客户端的DSN名称 
TTC_SERVER=192.168.2.15:17200 Server端的ip地址和端口号 
TTC_SERVER_DSN=RunData_tt70 要连接的数据库的DSN名称 

5. 使用表的LRU规则 

timesten表可以使用LRU规则,在某个DSN的datastore的内存到达一定阀值的时候进行自动清理,在创建表的建表语最后加入AGING LRU ON语句或者通过alter语句使表的LRU有效。 

timesten的内建存储过程ttAgingLRUConfig(LowUsageThreshHold, HighUsageThreshHold, 

AgingCycle) 

LowUsageThreshHold 内存的使用率到达该值(百分比),停止清理 

HighUsageThreshHold 内存的使用率到达该值时开始清理,清理阀值 

AgingCycle 多少时间检查一次阀值 

6. timesten的一些基本命令 

i. Ttisql 和csttisql 

ttisql命令和csttisql命令是分别连接本地DSN和远程DSN的命令。Ttisql DSN名称即可登陆该DSN,如:ttisql RunData_DT_CLIENTUSER 

ii. Ttadmin 

指定内存加载策略。 

ttadmin -ramPolicy always 指定datestore的数据一直在内存中。 

iii. Ttdestory 

销毁某个datestore,某些连接参数(如:DatabaseCharacterSet,PermSize等)更改需要重建datestore,这样就需要销毁 

该datestore,使用命令ttdestory dsn就可以销毁这个datestore。datestore的创建,实在配置了DSN后第一次连接执行时, 

由timesten自动创建。 

iv. Ttdaemonadmin 

启动,关闭,重启 timesten的命令。 

你可以查看http://logzgh.itpub.net/post/3185/450050 了解更多的timesten的基本命令。 

你也可以通过获取timesten的官方文档,更深入的了解http://www.oracle.com/technology/global/cn/documentation/timesten_doc.html 

一、TT的启停

  停服务:

  1、停止复制与cache 进程;

  2、停掉server进程 ;

  3、卸载内存(对于RAM为手动管理的)

  4、停掉 Daemon

  启服务:

   与停服务操作相反。

  注:操作命令见(二、三)

二、RAM管理

1、设置内存手动策略

 ttadmin -ramloadtt_1122ttadmin -ramunload tt_1122

三、复制进程与cache 进程的启停

  1、复制进程管理

ttAdmin -repStop tt_1122
Command> call ttrepstop ;
Command> call ttrepstart ;

2、cache 进程管理

 Command> call ttCacheStop;Command> call ttCacheStart;

3、Daemon进程管理

ttDaemonAdmin -stop
ttDaemonAdmin -start

4、服务的管理(类似于oracle中的监听)

ttDaemonAdmin  -startserver     
ttDaemonAdmin   -stopserver 

性能优化

一、查看事务信息

ttxactadmin  tt_1122   (查看一个DSN下的所有事务等待)
ttxactadmin -xact  1.1640  tt_1122    (查看一个具体的事务)

二、事务回滚

ttxactadmin -xactIdRollback <xid> <DSN>
ttXactAdmin -xactIdRollback 8.223901 tt_1122

三、根据SQLid 找语句

可以依据 ttXactAdmin 中的SqlCmdID 找到具体的SQL语句

Command> cmdcache by cmdid xxx; 

四、找内存中缓存的SQL语句

我们可以通过以下命令去查看当前内存中执行过的SQL语句。

cmdcache [[by {sqlcmdid | querytext | owner}] <query_substring>

该命令后可以跟三种类型的参数,sqlid ,查询语句,owner

例子:

Command> cmdcache exp ;

< 104919183080, 2048, 0, 1, 0, 1, 5720, TIMESTEN                       , select count(st.id) from 

....

五、执行计划

    The syntax for the explain command is as follows:

    explain [plan for] {[.] | sqlcmdid |  

    | !}

例:  Command> explain sqlcmdid 104901635296 ;

             Query Optimizer Plan:

             .....

例2: Command> explain select * from dual ;

六、统计信息收集

  语法: 

  CALL ttOptEstimateStats ( '表或用户', 1, '51 PERCENT' );

  可以在服务器上部署以下小脚本,用以自动手机统计信息:

[timesten@memdb01 daily_scripts]$ cat collecte_stats.sh

#!/usr/bin/env bash

# This script is used for collecting statistic

. ~/.bash_profile

ttisql "dsn=tt_order;uid=ord;pwd=ord"

set timing on

call ttOptEstimateStats('',1,'100 PERCENT');

connect "dsn=tt_order;uid=ord2;pwd=ord2";

call ttOptEstimateStats('',1,'100 PERCENT');

EOF

exit

注: 第一个参数为空,表示对用户进行收集,否则是收集表的统计信息。

故障收集与问题诊断

一、查看cg最近十次刷新状态

ttisql "dsn=tt_rpt;uid=cacheuser;pwd=xxx;oraclepwd=xxx"

Command> call ttcacheautorefreshstatsget('user1','testcache');

< 9878968, 2015-02-05 09:38:57.000000, 335808300, 4423, 0, 0, 0, 0, 0, 6100, 0, 78430307, 7329877383, 78339899, 14916250, InProgress, 0, 78958692, 100, 2015-02-05 09:36:37.000000, 0 >

< 9878968, 2015-02-05 09:36:57.000000, 335688290, 4422, 72870, 20759, 1939631, 20759, 67850, 4080, 940, 78430307, 7329877383, 78339899, 14916250, Complete, 20785, 78958692, 100, 2015-02-05 09:36:37.000000, 0 >

< 9878968, 2015-02-05 09:34:57.000000, 335568280, 4421, 78170, 20993, 1972278, 20993, 73350, 3960, 860, 78409548, 7327937752, 78319140, 14843380, Complete, 21273, 78937907, 100, 2015-02-05 09:31:22.000000, 0 >

.....

二、查看TT实例的参数配置情况

ttIsql -connstr "dsn=tt_1122" -e "vertical on; version; select sysdate from dual; call tthostnameget; vertical off; call ttrepstateget; call ttconfiguration; call ttlogholds; monitor; exit;"

三、当cg 数据积压后需收集以下信息(开SR的时候oracle 工程师可能会要求提供这些信息)

    1、用cache info.sql 输出oracle端有多少实例连接

    拷贝以下路径的 cacheinfo.sql脚本到可登陆sqlplus 路径,并在目标Oracle数据库中执行该脚本。 

    % cd TimesTen_install_dir/oraclescripts 

    % sqlplus cacheuser/oracle@xxx

    SQL> @cacheInfo 

2、 ttCapture 输出信息

       e.g. ttCapture 

       ttCapture -dest "/home/timesten" tt_1122

    3、 ttSchema -connstr "dsn=" 

       ttschema -list all tt_mdjk >> schema_1122.txt

    4、  ttIsql -connstr "dsn=" -e "vertical on; version; select sysdate from dual; call tthostnameget; vertical off; call ttrepstateget; call           ttconfiguration; call ttlogholds; monitor; exit;"

5、 All ttmesg, tterror, ttcwmesg and ttcwerror logs ( default location is TimesTen info directory ) 

    6、All .inval, .assert or .trace files ( find in database directory )

四、其它关键信息的收集

建议收集以下信息,方便故障时问题的诊断。

1、call ttbackupstatus ; (建议每30分钟收集一次)

  示例脚本:

[timesten@memdb02 ~]$ cat /sdb2/scripts/ttbackupstatus.sh

          #!/usr/bin/env bash

          . ~/.bash_profile

          ttisql tt_mat 

          spool /sdb2/scripts/ttbackupstatus_info_mat.txt  append

          select sysdate from dual ;

          call ttbackupstatus ;

          EOF

          exit;

2、call ttbookmark ; (建议每30分钟收集一次)

  示例脚本:

[timesten@memdb02 ~]$ cat /sdb2/scripts/ttbookmark_mat.sh

#!/usr/bin/env bash

. ~/.bash_profile

ttisql tt_mat 

spool /sdb2/scripts/ttbookmark_info_mat.txt  append

select sysdate from dual ;

call ttbookmark ;

EOF

exit;

3、call ttckpthistory ; (建议每30分钟收集一次)

  示例脚本:

[timesten@memdb02 ~]$ cat /sdb2/scripts/ttckpthistory_mat.sh

#!/usr/bin/env bash

. ~/.bash_profile

ttisql tt_mat 

spool /sdb2/scripts/ttckpthistory_info_mat.txt  append

select sysdate from dual ;

call ttckpthistory ;

EOF

exit;

4、call ttlogholds ; (建议每30分钟收集一次)

  示例脚本:

[timesten@memdb02 ~]$ cat /sdb2/scripts/ttlogholds_mat.sh

#!/usr/bin/env bash

. ~/.bash_profile

ttisql tt_mat 

spool /sdb2/scripts/ttlogholds_info_mat.txt  append

select sysdate from dual ;

call ttlogholds ;

EOF

exit;

5、 sys.monitor 表的信息(建议每分钟收集一次)

  示例脚本:

#!/usr/bin/env bash

. ~/.bash_profile

ttisql "dsn=tt_mat"

spool /data/sys_monitor_date/t_monitor_mat.txt append

select sysdate , a.* from sys.monitor a  ;

exit

备份与还原

1、表机构的备份

   ttschema -list all tt_1122   >> backup_db.txt

2、数据的导出导入

---数据快速备份和恢复

导出数据: ttBulkCp -o mystore mytbl mytbl.dump

导入数据: ttBulkCp -i -e mytbl.err mystore mytbl mytbl.dump

3、实例的备份与还原

增备:

ttbackup -dir /home/timesten/ttbackup -type fileIncrorFull tt_1122

ttbackup -dir /home/timesten/ttbackup -type incrementablStop tt_1122

普通备份:

ttBackup -dir /sdb2/backup_dir/tt_1122_backup   -connstr "DSN=tt_1122"

4、恢复

$ ttRestore -dir /home/timesten/ttbackup -connstr "DSN=tt_1122"

Restore started ...

Restore complete

恢复之后建议cachegroup 全部删掉重建。

如果直接恢复报错的话,可以  ttDestroy tt_1122  一下

5、查询 tns的位置 ttModInstall -tns_admin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

死磕GMSSL通信-java/Netty系列(三)

死磕GMSSL通信-java/Netty系列&#xff08;三&#xff09; 接着上次的博客继续完善&#xff0c;上次其实只是客户端的改造&#xff0c;这次把服务端的也补上&#xff0c;netty集成GMSSL实现GMServer 1、netty_tcnative c代码改造&#xff0c;这个是客户端和服务端都需要都该的…

数据挖掘与机器学习

一. 机器学习的种类 1. 有监督的机器学习 : 分类 : KNN 最近邻 逻辑回归 - 朴素贝叶斯估计 SVM 线性 或 非线性 优化模型 决策树模型 - 随机森林 - 其它集成模型 lightGBM - XGBOOST 回归: 线性 …

驱动云创建保存自己的环境

驱动云创建保存自己的环境 制作镜像方法一方法二报错 上一篇link介绍了如何在驱动云上部署llama2以及驱动云在训练大模型的方便之处。也说到了可以直接使用驱动云现有的环境&#xff0c;免得自己配置环境。 但是有的时候免不了自己想要安装一些包。 驱动云的环境是这样的&…

基于SpringBoot + Vue 的电影售票及影院管理系统(前后端分离)

后端&#xff1a;Spring Boot Mybatis 实现功能&#xff1a; 售票子系统&#xff1a;用户浏览电影信息&#xff0c;电影分类查看&#xff0c;搜索查看&#xff0c;购票操作&#xff08;未实现支付沙箱&#xff09;&#xff0c;超时取消订单等 管理子系统&#xff1a;管理员…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音&#xff0c;然后通过扬声器将声音播放出来。当我们打开电视并选择频道时&#xff0c;电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后&#xff0c;就能够通过扬声器发出声音。电视机声音的产生原理和音…

react中子父组件互相传值

在react中父子组件互相传值&#xff0c;除了使用类似于redux这样状态管理的工具&#xff0c;怎么实现&#xff1f;&#xff1f; 父传子(简单)父:子: 子传父(较麻烦)父&#xff1a;子&#xff1a; 父传子(简单) 父: 子: 子传父(较麻烦) 父&#xff1a; 子&#xff1a;

面试话术1

自我介绍 面试官您好&#xff01;我叫王鹏宇&#xff0c;本科是在西南石油大学读的&#xff0c;是一所双一流大学。我本人对网络安全领域比较有兴趣的&#xff0c;并且想对国家网络安全建设做出贡献。我去年也参加了护网&#xff0c;在那边主要就是负责流量研判&#xff0c;然…

机器学习在基因组学中的应用

机器学习在基因组学中的应用 李升伟1 茅 矛1 陈 竺2 &#xff08;1.特趣生物科技有限公司&#xff0c;广东省深圳市&#xff1b;2.上海交通大学医学院附属瑞金医院&#xff0c;上海市&#xff09; 机器学习在基因组学中的应用已经变得日益重要和普遍&#xff0c;其核心价…

elementui中文官网

Element - The worlds most popular Vue UI frameworkElement&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN/

android gradle引入其他gradle文件

在Android项目中&#xff0c;如果你想在一个Gradle文件中引入另一个Gradle文件&#xff0c;你可以使用apply from语句。以下是一个简单的例子&#xff1a; 假设你有一个通用的Gradle配置脚本common.gradle&#xff0c;它位于项目的根目录下。 common.gradle 文件内容示例&…

一个 .net 8 + Azure 登录 + Ant Design Blazor 的基本后台框架

一个 .net 8 Azure 登录 Ant Design Blazor 的基本后台框架 主界面使用了 Ant Design Blazor 项目模板搭建 后台技术是 .net 8 Blazor run at server 模式 登录方式使用 Azure 实现了菜单导航和路由 此外实现了读取和修改本地Json文件的功能&#xff0c;不是必须的&#x…

搭建Bootstrap5+Webpack项目

我是个前端菜鸡&#xff0c;最近准备学习一点前端知识&#xff0c;先从Bootstrap5开始&#xff0c;毕竟早期Bootstrap还是比较火的。推出的Bootstrap5不再和jQery强制绑定&#xff0c;这里直接按照官方文档上来操作&#xff0c;打包工具我们选择Webpack。 一 前期准备 前期准备…

[MySQL数据库] 索引与事务

1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型&#xff0c;各类索引有各自的数据结构实现. 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、书籍…

【力扣】148. 排序链表

148. 排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,…

深度学习架构(CNN、RNN、GAN、Transformers、编码器-解码器架构)的友好介绍。

一、说明 本博客旨在对涉及卷积神经网络 &#xff08;CNN&#xff09;、递归神经网络 &#xff08;RNN&#xff09;、生成对抗网络 &#xff08;GAN&#xff09;、转换器和编码器-解码器架构的深度学习架构进行友好介绍。让我们开始吧&#xff01;&#xff01; 二、卷积神经网络…

【观察】容器化部署“再简化”,云原生体验“再升级”

自2013年云原生概念被提出以来&#xff0c;云原生技术和架构在过去十多年得到了迅速的发展&#xff0c;并对数字基础设施、应用架构和应用构建模式带来了深刻的变革。根据IDC预测&#xff0c;到2024年&#xff0c;新增的生产级云原生应用在新应用的占比将从2020年的10%增加到60…

Java学习-详述main方法、可变参数、数组的工具类、二维数组

详述main方法 【1】main方法&#xff1a;程序的入口&#xff0c;在同一个类中&#xff0c;如果有多个方法&#xff0c;那么虚拟机就会识别main方法&#xff0c;从这个方法作为程序的入口 【2】main方法格式严格要求&#xff1a; public static void main(String[] args){} p…

线性代数---行列式的性质

1. 行列式的行与列(按原顺序)互换

通过实例学C#之StreamReader类

简介 可以通过此类读取计算机上的文本文件内容。 在程序的Debug文件夹下面新建一个文本文件&#xff0c;命名为test.txt&#xff0c;在里面输入hello world! 构造函数 StreamReader (Stream stream,Encoding encoding) 使用流对象stream以及编码方式encoding来创建一个读取流s…

SpringCloud +UniApp技术开发saas模式的智慧工地云平台源码,支持可视化大屏端、手机端、平板端、PC端

基于微服务架构JavaSpring Cloud UniApp MySql技术开发saas模式的一套智慧工地云平台源码&#xff0c;支持多端展示&#xff1a;可视化大屏端、手机端、平板端、PC端。 智慧工地平台支持项目级、公司级、集团级多级权限划分&#xff0c;可根据企业的组织架构进行项目权限、功能…