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 时的安装步骤:

  1. 以 root 身份创建一个新的软件所有者并设置口令:
      useradd -m -c "TimesTen Owner" -d /home/ttadmin -s /bin/bash ttadminchmod 755 /home/ttadminpasswd ttadmin
  2. 创建新的 timesten 组并向其中添加 TimesTen 管理员和 Apache 用户:
      groupadd timestenusermod -a -G timesten ttadminusermod -a -G timesten apache
  3. 创建实例注册表:
      mkdir /etc/TimesTenchgrp ttadmin /etc/TimesTenchmod 770 /etc/TimesTen/
  4. 以 ttadmin 用户身份登录。
  5. 从 TimesTen 下载页面下载“适用于 Linux x86(64 位)的 TimesTen 11.2.2.2.0”。
  6. 在终端上,解压缩文件
      tar -xf timesten112220.linux8664.tar.gz
  7. 安装 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

       

  8. 以 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 示例数据库

创建示例数据库:

  1. 运行创建脚本:
    cd /home/ttadmin/TimesTen/tt1122/quickstart/sample_scripts/createdb./build_sampledb.sh
  2. 提示输入 admappuser 和 xlauser 用户口令时,选择并记住口令。

     

安装 Apache 和 PHP

安装 Apache 和 PHP:

  1. 以 root 身份,使用 webserver 和 PHP 的捆绑程序包:
    yum install httpd php php-devel
  2. 编辑 /etc/php.ini 并使用相应的时区添加时区设置,例如:
    date.timezone = America/Los_Angeles
  3. 安装 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
  4. 配置 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):"&nbsp;")."</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 扩展的通用信息。


0 0
原创粉丝点击