




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、配置TimesTen应用层数据库缓存一、 配置TimesTen应用层数据库缓存1、 创建一个新的表空间以SYS用户登录SQL*Plus,命令如下:create tablespace ttusers datafile ttusers.dbf SIZE 40M;2、 创建TimesTen用户执行脚本initCacheGlobalSchema.sql(位于/oraclescripts目录下)创建TimesTen Schema到Oracle数据库3、 创建缓存管理员用户创建一个Oracle账户作为缓存管理员用户,如下命令:create user cacheadm identified by cache
2、admdefault tablespace ttusersquota unlimited on ttuserstemporary tablespace temp;4、 给缓存管理员用户赋予系统权限执行脚本/oraclescripts/grantCacheAdminPrivileges.sql给缓存管理员用户赋予必要的权限5、 给缓存管理员用户赋予数据访问权限缓存管理员用户的职责是监控、同步缓存数据库与Oracle数据库,这个用户须要有访问Oracle中被缓存数据的表的权限,例如:connect hrttorcl grant select on hr.departments to cachead
3、m;grant select, insert, update, delete on hr.employees to cacheadm;grant select, insert, update, delete on hr.job_history to cacheadm;二、 设置缓存数据库1、 创建一个缓存数据库a、 通过定义一个DSN来创建缓存数据库;注意:DSN属性OracleNetServiceName必须为一个有效的TNS服务名称来指定对应的Oracle数据库;属性DatabaseCharacterSet的值必须与Oracle数据库中的字符集一致。DSN的相关属性配置在sys.odbc.
4、ini配置文件中。b、 创建和连接DSN2、 创建一个缓存管理员用户创建缓存管理员用户并赋予ADMIN或CACHE_MANAGER权限,该用户的职责为配置和管理缓存Grid以及创建和加载数据到缓存组中。例如:create user cacheadm identified by cacheadm; grant admin to cacheadm;3、 创建一个缓存表用户为了缓存Oracle中的表,TimesTen缓存数据库中必须存在这样的用户,他拥有缓存Oracle表的能力。例如:create user hr identified by hr; grant create session to h
5、r;4、 将Oracle缓存管理员用户与该缓存数据库关联以缓存管理员用户的身份登录,确保在Oracle数据库中为缓存管理员用户指定了密码。使用内部存储过程ttCacheUidPwdSet将Oracle缓存管理员用户与缓存数据库关联。通过调用存储过程ttCacheUidGet来验证Oracle缓存管理员用户已做了配置。例如:connect dsn=cachedb1_1122;uid=cacheadm;oraclepwd=cacheadm;call ttcacheuidpwdset (cacheadm,cacheadm);call ttcacheuidget;5、 创建缓存Grid(仅一次)a、
6、仅有缓存管理员用户可以创建和管理缓存Grid,一个缓存数据库只能隶属于一个缓存Grid,通过调用内部存储过程ttGridCreate来创建缓存Grid,仅在第一个Grid成员需要执行这个步骤。例如:call ttgridcreate (samplegrid);b、 调用存储过程ttGridInfo来验证缓存Grid是否被创建。例如:call ttgridinfo;6、 将缓存数据库与缓存Grid关联通过调用存储过程ttGridNameSet将当前缓存数据库与缓存Grid关联起来。例如:call ttgridnameset (samplegrid);三、 给缓存数据库添加缓存组缓存组是由缓存到T
7、imesTen内存数据库中的Oracle表集合构成,缓存数据库可以包含一个或多个缓存组。缓存组既可以是只读的也可以是可更新的。对于只读缓存组来说,Oracle数据库中的更新是自动刷新到TimesTen中对应的缓存表中;而对于可更新缓存组,缓存表中的更新会自动更新到Oracle数据库中对应的表里。缓存组中的数据能被预先加载,或按需加载。如果能预先确定要缓存的数据集,缓存组就能被预加载。一个动态缓存组(dynamic cache group)是按需缓存数据的缓存组,如果要缓存的数据集不能被事先确定,这种方式是合适的。两种类型的缓存组:局部缓存组包含的数据只能局限在自己的缓存数据库中使用,而不能被缓
8、存Grid中的其他成员共享。全局缓存组包含的数据能被缓存Grid中的其他成员共享;它确保了缓存Grid中相应缓存数据库中数据的一致性。示例展示了如何创建动态可更新数据的全局缓存组,以及一个只读的局部缓存组1、 启动缓存代理a、 登录ttIsql,输入密码,例如:connect dsn=cachedb1_1122;uid=cacheadm;pwd=cacheadm;oraclepwd=cacheadm;b、 缓存代理进程是负责管理缓存数据库之间的通信和控制从Oracle数据库到TimesTen缓存数据库的数据流。调用存储过程ttCacheStart为当前数据库开启缓存代理,例如:call ttc
9、achestart;2、 定义缓存组a、 输入下面的语句CREATE CACHE GROUP来创建动态可更新全局缓存组,名称为g_awt缓存的表为HR.EMPLOYEES和HR.JOB_HISTORY。语句如下:create dynamic asynchronous writethrough global cache group g_awt from hr.employees ( employee_id number (6) not null,first_name varchar2(20),last_name varchar2(25) not null,email varchar2(25) n
10、ot null,phone_number varchar2(20),hire_date date not null,job_id varchar2(10) not null,salary number (8,2),commission_pct number (2,2),manager_id number (6),department_id number(4),primary key (employee_id),hr.job_history (employee_id number(6) not null,start_date date not null,end_date date not nul
11、l,job_id varchar2(10) not null,department_id number(4), primary key (employee_id,start_date),foreign key (employee_id) references hr.employees (employee_id);b、 输入下面的语句CREATE CACHE GROUP来创建只读局部缓存组,名称为ro缓存表HR.DEPARTMENTS,语句如下:create readonly cache group ro autorefresh interval 5 seconds mode increment
12、al fromhr.departments (department_id number(4) not null primary key,department_name varchar2(30) not null,manager_id number(6),location_id number(4);c、 ttIsql命令cachegroups用于校验数据库中缓存组的定义3、 启动复制代理复制代理进程主要用于TimesTen数据库之间的数据复制,也可以用于Oracle数据库与TimesTen缓存数据库之间的数据同步。如果你有异步直接写缓存组(asynchronous writethrough,AW
13、T),这一步也是需要的。调用存储过程ttRepStart为当前数据库开启复制代理。命令:call ttrepstart;4、 将缓存数据库绑定到缓存Grida、 调用存储过程ttGridAttach将当前缓存数据库增加到缓存Grid中。如果你有全局缓存组或者计划执行全局缓存Grid操作的话,这一步是必需的。命令如下:call ttgridattach (1, cachedb1, tthost1, 9991);tthost1为数据库cachedb1所在的主机名,TCP/IP端口号为9991b、 使用存储过程ttGridNodeStatus可以列出所有绑定到grid的成员,检查cachedb1已经
14、加入到grid(samplegrid)中。命令:call ttgridnodestatus;一旦缓存组创建好并且必需的进程都已启动后,你就可以开始将数据加载到缓存表中。5、 预加载数据到缓存组通过语句LOAD CACHE GROUP可以将Oracle数据库中的数据预先加载到缓存组中。根据缓存组的类型,指定可选的WHERE条件语句来限制数据被缓存的量。对于动态缓存组,当对缓存中的某个表执行CRUD语句时,数据也被加载进来了。下面的例子演示如何将Oracle库表中的数据加载到缓存组里a、 仅当拥有CACHE_MANAGER或LOAD CACHE GROUP权限的用户能加载数据到缓存组。在ttIsq
15、l中输入LOAD CACHE GROUP来操作名为cacheadm.ro的只读缓存组,如下:load cache group ro commit every 256 rows;b、 在ttIsql中输入LOAD CACHE GROUP语句来预加载数据到动态缓存组cacheadm.g_awt中,如下:load cache group g_awt where employees.employee_id 200 commit every 0 rows;注意:对于全局缓存组,如果缓存实例已存在于缓存Grid中的话,语句LOAD CACHE GROUP将会失败。数据加载完之后,对于只读缓存组来说,自动刷
16、新状态被修改为“ON”。一旦定义好的刷新间隔生效,Oracle中自动刷新表的变化被更新到缓存表中。对于异步直接写缓存组来说,一旦复制代理进程启动运行,所有缓存数据库中的更新将同步到Oracle数据库。动态地加载数据到缓存组对于一个动态缓存组,如果查询缓存表没有返回记录的话,将在Oracle中执行查询。如果有记录被返回的话,这些记录被插入到TimesTen缓存表中。全局动态缓存组在查询Oracle数据库之前,先去搜索grid中其他缓存组中的数据。下面的例子展示了如何按需加载数据到动态缓存组中。a、 用户HR登录ttIsql,输入密码,命令如下:connect dsn=cachedb1_1122;uid=hr;pwd=hr;oraclepwd=hr;b、 从hr.employees表中查询数据,这些数据是之前LOAD CACHE GROUP语句加载到缓存里。select employee_id, first_name from employees;c、 为了将数据加载到动态缓存组中,你必须在查询语句中使用WHERE分句紧接主键字段或外键字段
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民营企业法律风险防控案例分析
- 基础垒球教学课程设计
- IPO审计中的关键财务问题解析
- 农家乐经营管理与市场开发方案
- 综合实践活动课程实施策略与案例分享
- 小学教材教辅编写与教学效果调研
- 高三英语词汇专项训练方案设计
- 儿童情商测试题与评估报告范本
- 企业名称2025下半年ESG报告综合报告体外诊断器械
- 租赁合同解除及违约处理范本详解
- 视频监控系统安装施工方案
- -首次执行衔接问题-行政
- GB/T 95-2002平垫圈C级
- 一起重新构想我们的未来:为教育打造新的社会契约
- GB/T 21073-2007环氧涂层七丝预应力钢绞线
- 压力管道特性表
- 高级会计师评审个人业绩报告(精选9篇)
- 血管活性药物(ICU)课件
- “手电筒”模型-高考数学解题方法
- 储能型虚拟电厂的建设与思考分析报告
- 楼地面装饰构造(史上最全面)
评论
0/150
提交评论