Oracle TimesTen
来源:互联网 发布:mac存储没有桌面选项 编辑:程序博客网 时间:2024/04/25 09:48
在 Linux 上安装 PHP 和 Oracle TimesTen In-Memory Database
作者:Christopher Jones
2012 年 4 月发布
本文介绍如何在 Oracle Linux 6 上安装并使用 PHP 脚本语言和 Oracle TimesTen In-Memory Database。文中介绍了 PHP OCI8 扩展,它既适用于 Oracle Database 也适用于 TimesTen Database。
市场营销描述最好地概述了 TimesTen:
Oracle TimesTen In-Memory Database (TimesTen) 是一个功能完备、经过内存优化的关系数据库,它具有持久性和可恢复性。它为应用程序提供了即时响应和极高的吞吐能力,可以满足数据库密集型应用程序的需要。TimesTen 部署在应用程序层,运行在完全装入物理内存 (RAM) 的数据库上。应用程序使用标准 SQL 接口访问 TimesTen 数据库。对于现有应用程序数据存放于 Oracle Database 中的客户,TimesTen 作为内存中缓存数据库来部署,可自动完成 TimesTen 与 Oracle Database 之间的数据同步。
大多数标准 PHP OCI8 特性也适用于 TimesTen,但 TimesTen 是不同于 Oracle Database 的另外一种数据库,因此对于有些 PHP OCI8 特性,不能期望它们按原来的方式工作,它们也许根本不能工作。特别是 PHP OCI8 提供的 LOB 支持不可用,尽管 TimesTen 11g 第 2 版现在允许存储 LOB。集合支持不可用,您在处理绑定时可能会遇到一些小问题,尤其在代码编得不怎么好时。错误消息有可能不同。如果将现有应用程序迁移到 TimesTen,那么彻底进行测试也很重要,因为 TimesTen 并非支持 Oracle Database 的全部 SQL、PL/SQL 和数据库特性。
安装 TimesTen
按照 Oracle TimesTen In-Memory Database 11g 第 2 版 (11.2.2) 安装指南 安装 TimesTen。下面总结了使用 64 位 Oracle Linux 6.2 时的安装步骤:
- 以 root 身份创建一个新的软件所有者并设置口令:
useradd -m -c "TimesTen Owner" -d /home/ttadmin -s /bin/bash ttadminchmod 755 /home/ttadminpasswd ttadmin
- 创建新的
timesten
组并向其中添加 TimesTen 管理员和 Apache 用户:groupadd timestenusermod -a -G timesten ttadminusermod -a -G timesten apache
- 创建实例注册表:
mkdir /etc/TimesTenchgrp ttadmin /etc/TimesTenchmod 770 /etc/TimesTen/
- 以
ttadmin
用户身份登录。 - 从 TimesTen 下载页面下载“适用于 Linux x86(64 位)的 TimesTen 11.2.2.2.0”。
- 在终端上,解压缩文件
tar -xf timesten112220.linux8664.tar.gz
- 安装 TimesTen:
cd linux8664./setup.sh
除了 有关组和 QuickStart 的问题之外,均接受默认值。提示回答如下:- Instance name:
tt1122
- 安装“Client/Sever and Data manager”
- 安装到
/home/ttadmin
- 创建后台程序目录
/home/ttadmin/TimesTen/tt1122/info
- 后台程序日志位于
/home/ttadmin/TimesTen/tt1122/info
- TimesTen 后台程序的默认端口:
53396
- 不要将访问限制于
ttadmin
组。(这不是默认选项)。将其限制于timesten
组。 - 启用 PL/SQL
- 跳过
TNS_ADMIN
,保留不设置 - TimesTen 服务器监听
53397
- Install the QuickStart and Documentation:yes(默认情况下不安装。)
- 在
/home/ttadmin/TimesTen/tt1122/info
中创建 DemoDataStore - 不对 Oracle Clusterware 使用 Replication
- Instance name:
- 以 root 身份,按照屏幕指示的步骤将启动脚本安装到
/etc/init.d
中:cd /home/ttadmin/TimesTen/tt1122/bin./setuproot -install
TimesTen 现在开始运行。
管理 TimesTen
/home/ttadmin/TimesTen/tt1122/quickstart/ttquickstartenv.sh
始终是一种在访问示例数据库之前设置 Oracle 环境变量的便捷方式。
通过设置环境和运行 ttstatus
命令检查实例的状态:
source /home/ttadmin/TimesTen/tt1122/quickstart/ttquickstartenv.sh
ttstatus
结果应为:
[ttadmin@localhost linux8664]$ ttstatusTimesTen status report as of Tue Apr 17 14:52:03 2012Daemon pid 23629 port 53396 instance tt1122TimesTen server pid 23638 started on port 53397------------------------------------------------------------------------Accessible by group timestenEnd of report
有一个命令行工具可用来访问实例以运行即席查询:
ttisql "dsn=sampledb_1122;uid=appuser"
口令是 oracle
。
如果您需要手动停止或启动此 TimesTen 实例,请以 root
身份登录并运行:
service tt_tt1122 stop
或者
service tt_tt1122 start
如果您想删除该 TimesTen 实例,请先停止它,然后运行:
cd /home/ttadminTimesTen/tt1122/bin/setup.sh -uninstall
创建 TimesTen 示例数据库
创建示例数据库:
- 运行创建脚本:
cd /home/ttadmin/TimesTen/tt1122/quickstart/sample_scripts/createdb./build_sampledb.sh
- 提示输入
adm
、appuser
和xlauser
用户口令时,选择并记住口令。
安装 Apache 和 PHP
安装 Apache 和 PHP:
- 以 root 身份,使用 webserver 和 PHP 的捆绑程序包:
yum install httpd php php-devel
- 编辑
/etc/php.ini
并使用相应的时区添加时区设置,例如:date.timezone = America/Los_Angeles
- 安装 OCI8 扩展:
从 PECL 下载最新 OCI8 扩展并进行解压缩。然后:
tar -xf oci8-1.4.7.tgzcd oci8-1.4.7phpize./configure --with-oci8=instantclient,/home/ttadmin/TimesTen/tt1122/ttoracle_home/instantclient_11_2makemake install
编辑/etc/php.ini
并添加:extension=oci8.so
- 配置 Apache。在
/etc/sysconfig/httpd
中设置:export TNS_ADMIN=/home/ttadmin/TimesTen/tt1122/network/admin/samplesexport LD_LIBRARY_PATH=/home/ttadmin/TimesTen/tt1122/lib:/home/ttadmin/TimesTen/tt1122/ttoracle_home/instantclient_11_2
管理 Apache
如果您需要手动停止和重新启动 Apache,请使用 httpd
服务。由于安装 OCI8 时刚刚更改了配置,现在重新启动它:
service httpd restart
通过创建 /var/www/html/pi.php
文件测试 PHP:
<?phpphpinfo();?>
在浏览器中使用 http://localhost/pi.php 进行加载。
您应得到有关 PHP 的配置信息的页面。检查存在 OCI8 部分。可以通过编辑 /etc/php.ini
并重新启动 Apache 更改配置选项。
使用 PHP OCI8 连接到 TimesTen
前面给出的 ttisql
示例显示了示例凭证和连接字符串。可以在 PHP 脚本中使用这些来连接到 TimesTen。创建脚本/var/www/html/oci8.php
:
<?php $c = oci_connect("appuser", "oracle", "sampledb_1122"); if (!$c) { $m = oci_error(); trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR); } $s = oci_parse($c, "select * from emp"); if (!$s) { $m = oci_error($c); trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR); } $r = oci_execute($s); if (!$r) { $m = oci_error($s); trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR); } echo "<table border='1'>\n"; while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>".($item!==null?htmlentities($item, ENT_QUOTES):" ")."</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?>
使用 http://localhost/oci8.php 运行该脚本。查询结果将显示在表中。
如果您得到的是空白屏幕或出现问题,请检查 /var/logs/httpd/error_log
中的 Apache 日志。确保 SELinux 处于 Permissive 模式:
setenforce permissiveservice httpd restart
配置 TimesTen
如果您使用的是命令行脚本或非永久性连接,则某些情况下,断开与 TimesTen 的连接可能较慢,这是因为在关闭与数据库的最后一个连接时要从 RAM 卸载数据库。可以通过使用 ttRamPolicySet
设置 RAM 策略来解决这一问题。对于 TimesTen 实例,此设置是持久性的。以下代码将最后一个应用程序断开连接之后数据库在 RAM 中保存的时间设置为 5 秒,这会延迟关闭数据库,从而让 PHP 应用程序能够毫无延迟地关闭连接:
$s = oci_parse($cc, "call ttRamPolicySet('inUse', 5)");oci_execute($s);
总结
PHP OCI8 扩展既适用于 Oracle Database 也适用于 TimesTen Database。许多基本脚本无需更改即可用于这两种数据库。但并非所有 PHP OCI8 或 Oracle Database 特性在 Oracle TimesTen 中都受到支持,因此建议小心测试应用程序。
在 PHP 和 Oracle 秘笈 中可以找到有关 OCI8 扩展的通用信息。
- Oracle TimesTen
- Oracle Timesten使用方法总结
- oracle内存数据库timesten
- Linux 平台安装 Oracle Timesten
- Oracle TimesTen内存数据库学习体会
- TimesTen与Oracle字符集查询
- 迁移Oracle数据到TimesTen
- timesten
- Timesten
- Oracle TimesTen企业级应用实践分享
- Oracle 内存数据库TimesTen 的jdbc连接
- Oracle内存数据库Timesten的使用(1)
- Oracle内存数据库Timesten的使用(2)
- Oracle In-Memory database cache --TimesTen
- TimesTen与Oracle BI一体机Exalytics
- 设置TimesTen与Oracle数据库的连通性
- Oracle Community的一个TimesTen thread
- TimesTen修改CacheGroup管理用户在ORACLE端及TT端密码【TimesTen运维基础】
- shell——trap捕捉信号(附信号表)
- Oracle 物化视图
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
- Oracle 安装
- Linux Common
- Oracle TimesTen
- LINUX Command
- Trunc 函数
- 关于Python中的yield
- Linux 命令
- centos 6 手动升级 g++
- Oracle expdp/impdp
- Centos Install
- Java--强制类型转换