将您的 Informix 服务器升级到版本 11.70

了解升级后的功能

IBM® Informix® 版本 11.70 有许多新功能,本文旨在帮助您顺利升级 Informix 11.70.xC1,并高效地使用这些新功能。本文探索了一系列有升级影响的功能,对每个功能做一概述。本文也提供了升级后如何使用这些功能的信息、降级信息(如果您想要恢复旧版本)、以及为新功能添加的一些新 onconfig 参数和系统目录变更的信息。

Neelima Doguparthy, 软件工程师, IBM

Neelima Doguparthy 的照片Neelima Doguparthy 是美国 San Jose IBM 的软件工程师。她从 2007 年开始从事 IBM Informixer 研究。作为测试工程师,她进行升级/降级测试、集成测试以及 Informix 的安装测试。



2011 年 2 月 16 日

免费下载:IBM® Informix® 11.7 试用版(包括 Ultimate Edition、Developer Edition 和 Innovator-C Edition)
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

IBM Informix 版本 11.70.xC1 是一个关系数据库服务器,它允许您将服务器从较早的版本(例如,从版本 7.31、9.4、10.0、11.10 或 11.50 到 11.70 )升级(转换)。许多新功能都有升级影响,而且部分新功能是对当前功能的增强。

在升级过程中,有一些关于功能的事情您需要了解,特别是如果您想要返回到旧版本。本文包括以下关键点:

  • 功能的简单描述
  • 各个功能的示例
  • 返回旧版本时看到的降级消息
  • 为新功能添加的新 onconfig 参数(onconfig 参数用于配置数据库服务器)
  • 任何新系统目录变更(系统目录表格有所有关于数据库对象的信息)

先决条件

本文说明了从 11.50.xC7 到版本 11.70.xC1 的升级影响,提供了返回版本 11.50.xC7 的信息。本文假设已经安装了以下设备:

  • Informix 11.50.xC7
  • Informix CSDK 3.50.xC7
  • Informix 11.70.xC1
  • Informix CSDK 3.70.xC1

本文随后的许多讨论也都适用于 11.50.xC7 以外的版本。


功能描述及示例

本文对以下功能进行了说明:

Forest of trees(FOT)索引

FOT 索引类似 B-Tree 索引,但它有多个根节点和较少的级(B-Tree 索引只有一个根节点和更多的级)。您可以将 FOT 索引中的级视作较小的子树(桶)。从子树中检索一个项目,当您创建索引时,可以从所选的列中计算出一个 hash 值。然后这个 hash 值被映射到一个桶中存储,或者获得一个行值。

成功地从 Informix 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令创建一个 FOT:

清单 1. FOT 功能的 SQL 语句
create index fot_indx on tab_1(col1) hash on (col1) with 1000 buckets;

清单 1 中的命令创建了 col1 上 tab_1 表格中的 FOT 索引,有 1000 个桶(子树)。您可以在升级后创建的新表格或者在当前表格上创建一个 FOT。

降级影响:当您想要返回到一个旧版本时,会出现以下消息,而恢复也会被取消:

清单 2. 降级消息
onmode -b 11.50.xC6
Database xdb: Drop FOT index fot_indx before reversion.

使用以下命令停止 FOT:

清单 3. 停止 FOT 的 SQL 语句
drop index  fot_indx;

停止 FOT 索引之后,降级就完成了。

系统目录变更:FOT 索引创建了当前 sysindices 表格中一个新输入。

清单和区间片段

根据离散值的清单可以列出存储残片的片段数据。这种类型的存储残片能够在数据逻辑隔离中有用。如果表格有一定数量的片段键(或者分区键)值,而且在片段键上有同等谓词的表格上查询时,它会很有用处。

成功地由 Informix 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令,创建一个有存储残片清单的表格:

清单 4. 存储残片清单的 SQL 语句
CREATE TABLE tab_list
(id SERIAL, fname CHAR(32), lname CHAR(32), state CHAR(2), phone CHAR(12)) 
FRAGMENT BY LIST (state)
  PARTITION p0 VALUES ("MA", "NH") IN dbsace0,
  PARTITION p1 VALUES ("AZ", "OR") IN dbspace1,
  PARTITION p2 VALUES ("KY", "OH") IN dbspace2,
  PARTITION p3 VALUES (NULL) IN dbspace3,
  PARTITION p4 REMAINDER IN dbspace3;

清单 4 中的命令使用清单存储残片根据列状态创建了一个名为 tab_list 的表格。您也可以使用 ALTER FRAGMENT 命令,将当前表格的存储残片计划变为清单。

区间存储残片根据区间值分隔数据。这个类型的存储残片允许 DBA 定义一系列的初始片段和一个区间值。DBA 无需为当前表格创建所有可能的片段。如果初始片段中插入不适合的行时,服务器会根据特定的区间值,自动创建片段。

成功地由版本 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令,创建一个有区间存储残片的表格:

清单 5. 创建区间片段的 SQL 语句
CREATE TABLE tab_interval (id INTEGER, name CHAR(32), dept CHAR(2), hiredate DATE) 
FRAGMENT BY RANGE (id) 
INTERVAL (100) STORE IN (dbspace1, dbspace2, dbspace3)
 PARTITION p0 VALUES IS NULL IN dbspace0,
 PARTITION p1 VALUES < 250 IN dbspace1,
 PARTITION p2 VALUES < 500 IN dbspace2;
 
INSERT INTO tab_interval (id) VALUES (601);

清单 5 中的命令创建了一个名为 tab_interval 的表格,它使用区间存储残片分隔列 id 上的数据。表格有三个初期片段:p0,p1 和 p2。当有 id 列值 >= 500 的行被插入时,服务器就根据指定的特定区间值 100 创建区间片段,在 STORE IN 子句中指定的一个 dbspaces。之前的插入将会创建一个区间片段,片段表示为 >= 600 和 < 700 。您还可以使用 ALTER FRAGMENT 命令,将当前表格的存储残片计划改为区间。清单和区间碎片都可以用于片段索引。

降级影响:如果您有被清单或者区间分隔的表格,您就不能返回到 11.50.xC7,除非放弃这些表格,或者修改这些表格的存储残片计划,使其变为非片段的。如果您想恢复旧版本时,会出现以下消息,降级会被取消:

清单 6. 降级消息
onmode -b 11.50.xC6
Database xdb:Table xuser.tab_list:Drop or alter the fragmentation strategy for Table
before reversion
Database xdb:Table xuser.tab_interval:Drop or alter the fragmentation strategy for Table
before reversion

在表格被放弃或者变更为非片段的时,降级就能成功完成。

清单 7. 放弃清单和区间存储残片的表格
drop tab_list;
drop tab_interval;

系统目录变更:

  • 在 sysfragments 系统目录表格中添加一个新版本的列,跟踪统计信息更改。
  • 除了各个表格片段的行以外,sysfragments 系统目录表格还将有以下信息相关的清单和区间分隔的表格或者索引的行:片段键(或者分区键)、区间值、以及区间片段的 dbspace 清单。
  • 在系统目录表格的战略列中,通过 “L” 显示清单存储残片,“N” 显示间隔存储残片。

片段级统计

这个功能帮助您存储每个片段的数据分布。它允许您定义一个数据变化阈值,统计也只有数据变化阈值到达时才会更新。运行 update statistics 命令,创建或者更新统计。

由版本 11.50.xC7 升级到 11.70.xC1 成功之后,确认您有一个为 SYSSBSPACENAME onconfig 参数定义的有效 smartblob 空间,并确保空间已分配。然后使用以下命令创建片段级统计:

清单 8. 片段级统计的 SQL 语句
CREATE TABLE  tab_frag_stat
  (
    s_suppkey integer not null,
    s_name char(25),
    s_address varchar(40),
    s_nationkey integer,
    s_phone char(15),
    s_acctbal decimal(12,2),
    s_comment varchar(101)
  )
fragment by expression s_suppkey < 11 in dbspace2,
s_suppkey >= 11 and s_suppkey < 21 in dbspace3,
remainder in dbspace10;

ALTER TABLE tab_frag_stat STATCHANGE AUTO,STATLEVEL FRAGMENT;
UPDATE STATISTICS HIGH FOR TABLE tab_frag_stat;

STATCHANGE 配置参数是一个新 ONCONFIG 参数,用于定义阈值。配置参数的整数值为 0 到 100 或者 AUTO;默认值是 10。

STATLEVEL 是用于指定分布是否必须在表格级或者片段级创建的级别。默认值是 AUTO。您还可以设置 STATLEVEL TABLE 或者 STATLEVEL FRAGMENT。当您指定了 STATLEVEL FRAGMENT 时,每个片段就会创建分布。

清单 8 中的命令创建了一个名为 tab_frag_stat 的分段表格。在您插入行之后,在运行升级统计时,如果任何片段达到阈值,服务器就为那个特殊的片段创建分布。默认阈值是 10%。片段级统计能用于升级发生之后新创建的表格,或者它们能用于当前表格。

降级影响:当您想要恢复到一个旧版本时,服务器就会终止目录变更;不会有降级消息。任何片段级的统计都会停止,所有表格都会在旧版本中使用表格级统计。

系统目录变更:

  • 新的系统目录表格 sysfragdist,为此功能引入。这个表格存储每个片段的分布。
  • sysindices 表格中添加了新的列 ustbuildduration 和 ustlowts。
  • systables 表格中添加了新的列 statlevel 和 statchange。
  • sysdistrib 表格中添加了新的列 ustbuildduration。

ONCONFIG 参数:

  • AUTO_STAT_MODE:有一个默认值 1,它支持自动升级统计操作(片段级统计为 ON 时)。如果为 0 ,则禁用自动升级统计(原始服务器行为)。
  • STATCHANGE:有一个默认值 10,定义阈值改变的百分比。配置参数的整数值从 0 到 100 不等。

存储供应

该功能允许您当存储空间用尽时,自动分配存储空间。如果您使用这个功能,在应用程序可能遇见存储空间用尽的问题时,就不再需要 DBA 干预监视空间。服务器会自动从您指定的存储池添加空间。存储池可以是原始设备、cooked 文件或目录。存储空间可以是 dbspace,sbspace,blobspace,临时 dbspace,或者临时 sbspace。当出现存储空间的用尽时,当前的块能够自动扩展,或新的块能够自动地从存储池添加到特定的存储空间。

成功地由版本 11.50.xC7 升级到 11.70.xC1 之后,您可以使用 SQL 管理 API 命令来实现存储供应。例如,添加一个名为 /work/dbspaces/pool1 的目录到存储池,指定以下内容:

清单 9. 添加目录到存储池的示例
EXECUTE function task("storagepool add", "/work/dbspaces/pool1", 0, 0, 1000, 1);

降级影响:storagepool 表格在降级中自动停止。该功能没有降级消息。

系统数据库变更:

  • sysadmin 数据库中添加了一个新的 storagepool 表格。
  • sysmaster:syschunks 表格中添加了一个新的列 is_extendable。
  • sysmaster:sysdbstab 表格中添加了一个新的列 create_size 和 extend_size。

ONCONFIG 参数:

  • SP_AUTOEXPAND:默认值为 1,它意味着支持自动空间扩展;0 意味着不支持自动空间扩展。
  • SP_WAITTIME:默认值 30,其范围为 0 到 2147483647。
  • SP_THRESHOLD:默认值为 0。服务器视 1 到 50(包括小数)作为阈值百分比,视 1000 及以上为千字节数。在 50 到 1000 之间的值都无效。

可信任上下文

可信任上下文是一个数据库对象,定义了连接的属性。当属性满足时,就允许可信任上下文。连接由一个特定用户实现,并在可信任的客户端进行。DBSECADM(Database Security Administrator)有创建、删除、或者修改可信任环境的权限。

成功地由版本 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下指令创建可信任的环境:

清单 10. 可信任环境的 SQL 语句
CREATE TRUSTED CONTEXT TCX1 BASED UPON CONNECTION USING SYSTEM AUTHID usr3 
ATTRIBUTES (ADDRESS '9.99.999.999')
WITH USE FOR usr2 WITHOUT AUTHENTICATION,usr1 WITH AUTHENTICATION ENABLE;

清单 10 中的命令创建了一个名为 TCX1 的可信任上下文。地址就是 IP 地址,并且当 usr3 请求一个可信任的连接时,请求就被接受,因为 usr3 满足所有连接属性。您可以从用户切换到 usr2,无需提供身份验证信息,因为 usr2 被定义为 TCX1 无需身份验证的用户。然而,您不能在不提供身份验证的情况下切换到 usr1,因为 usr1 是定义为 TCX1 需要身份验证的用户。为了连接到可信任的上下文,您必须有一个客户端,比如 ESQLC,JCC 或者 JDBC。

降级影响:服务器终止系统目录变更,降级不显示任何降级信息就完成。

系统数据库变更:

  • 新表格 systrustedcontext、systcxattributes 和 systcxusers 被添加到 sysusers 数据库。
  • 新的列 succ6、succ7、succ8、fail6、fail7 和 fail8 被添加到 sysmaster:sysaudit 表格。

映射用户

目前,在 UNIX 或者 MS Windows,服务器所有用户都了解操作系统。使用映射用户功能,通过将用户映射到一个适当的用户和组特权,您可以从外部验证用户,无论用户是否拥有一个操作系统。使用这种映射的用户就是映射用户。DBSA 能够将用户映射到当前操作系统用户,或者 DBSA 能够将用户映射到属性的默认值。

可以使用 SSO 或者 PAM 进行验证。想要获得 PAM 验证方面的更多信息,查看 IBM Informix Security Guide 和其他客户指南上 Pluggable Authentication Modules(PAM)的信息。

成功地由版本 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令创建一个映射用户:

清单 11. 映射用户的 SQL 语句
onmode -wf USERMAPPING=BASIC
GRANT ACCESS TO user usr1 WITH PROPERTIES user idsuser;

为了使用这个功能,USERMAPPING 配置参数可以被设置为 basic 或者 admin。通过 PAM 验证 usr1 之后,grant 命令(用于清单 11 中)将 usr1 映射到 idsuser(有操作系统帐户的用户),将 idsuser 的属性给予 usr1。

降级影响:服务器在降级之前终止所有的目录更改;降级无需任何降级消息就能成功完成。

系统数据库变更:在 sysusers 数据库中添加新的表格 sysusermap、syssurrogategroups 和 syssurrogateusers。

ONCONFIG 参数:

  • USERMAPPING:默认值为 OFF,它意味着只有有操作系统帐户的用户能够连接到 Informix。BASIC 值意味着没有操作系统帐户的用户能够连接到 Informix,但是不是作为特权用户。ADMIN 值意味着没有操作系统帐户的用户可以作为特权用户,连接到服务器。

选择性行级审计(SRLA)

这个功能是对当前审计行为的增强。使用这个功能,您可以进行行级的审计。它改进了数据库服务器的性能。为了使用 SRLA 功能,您必须通过设置新的 ADTROWS 配置参数为 1 来配置 adtcfg 文件。您还必须是 DBSSO。

成功地由 Informix 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令创建 SRLA:

清单 12. SRLA 的 SQL 语句
onaudit -c 
onaudit -R 1
onaudit -a -u usr1 -e INRW
ALTER table tab_audit ADD AUDIT;

您可以使用 onaudit -c 检查审计配置。onaudit -R 1 命令用于支持 SRLA。onaudit -a -u _default -e INRW 命令创建用户审计掩码 usr1,而粒度设置为 Insert Row。您可以将粒度设置为 Delete Row(DLRW)、Read Row(RDRW)或 Update Row(UPRW)。以上的 ALTER 命令支持表格 tab_audit 的 SRLA。

您可以创建一个表格 WITH AUDIT 子句,或者改变表格 ADD|DROP AUDIT 子句。

清档 13 中使用的命令显示了生成的审计跟踪。

清单 13. 检查审计跟踪的工具
onshowaudit

降级影响:如果您想恢复旧版本时,会显示以下消息,并且会取消降级。

清单 14. 降级消息
onmode -b 11.50.xC6
Database xdb: Drop the audit property from the table tab_audit before reversion.

使用在清单 15 中的命令终止 SRLA 功能:

清单 15. 终止 SRLA 的 SQL 语句
ALTER table tab_audit DROP AUDIT;

终止 SRLA 之后,降级就成功完成。

创建一个索引禁用的外键约束

用于为外键约束禁用索引的新语句被使用 ALTER 语句添加来使用。创建一个外键时,Informix 自动地在子表上创建一个 B-Tree 索引。在某些情况下,索引不用于任何查询,父表不进行任何升级/删除,也没有查询需要子表上的这个索引。在这种情况下,如果子表被插入、升级或删除,就不需要子表上的 B-tree,并且有多余的开销。

成功地由版本 11.50.xC7 升级到 11.70.xC1 之后,您可以使用以下命令,创建一个索引禁用的外键约束:

清单 16. 索引禁用的外键约束的 SQL 语句
CREATE table tab_parent (col1 int, col2 int) EXTENT SIZE 16;
CREATE unique index indx_parent_col1 on tab_parent(col1);
ALTER table parent add constraint primary key(col1) constraint cons_parent_col1;
CREATE table tab_child(c1 int, c3 varchar(32))  EXTENT SIZE 16;
CREATE index indx_child_c1 on child(c1);

ALTER table child add constraint
(foreign key(x1) references parent (col1) constraint cons_child_c1 index disabled);

清单 16 中的命令创建了一个名为 tab_ parent 的父表,主键限制 cons_parent_col1。表格有惟一的索引 indx_parent_col1。这个命令也创建了名为 tab_child 表格,有惟一的索引 indx_chile_c1 的子表。ALTER 命令创建了外键约束 cons_child_c1,不支持 indx_child_c1 索引。在外键加强过程中,服务器使用顺序扫描,而不是外键索引。外键索引将被禁用,sysobjstate 目录表格也会反映该状态。这个功能对数据仓库应用程序很有用。

降级影响:如果您想恢复旧版本时,会显示以下消息,降级也会被取消:

清单 17. 降级消息
onmode -b 11.50.xC6
Database xdb: Table xuser.child: Drop and recreate this referential constraint 
cons_child_x1 before reversion.

要终止索引禁用的外键约束,重新创建这个参考约束,执行以下命令:

清单 18. 终止和重新创建该功能的 SQL 语句
ALTER table child drop constraint cons_child_c1;
ALTER table child add constraint (foreign key(x1) references parent (col1) 
constraint cons_child_c1);

终止和重新创建索引禁用的外键之后,降级就成功完成了。

用于扩展区段映射的二级分区头文件页的自动分配

在版本 11.70xC1 之前,如果分区页头文件中有许多区段项,如果服务器不能将所有的区段项放入到独立的分区头文件页,升级将会失败。从版本 11.70.xC1 开始,如果您正在从较低版本的 Informix 升级,并且如果一个分区头文件页中有大量区段项,Informix 将会从内部自动分配二级分区头文件页(如果请求)来扩展区段映射,这样升级就能成功完成。如果在升级到 11.70.xC1 之后分配更多区段,并且如果您尝试返回到较老的版本,如果服务器不能将所有区段项放入独立的分区头文件页,降级可能会失败。为了成功降级,您需要在这个分区上运行碎片整理。您可以在 IBM Informix 11.70 信息中心(见 参考资料)找到更多关于碎片整理的信息。

刀片管理器扩展

转换之后,使用来自数据库扩展(DataBlade Module)的 UDT、UDR 或 INDEX 时,数据库扩展就自动注册。

清单 19. 数据刀片模块自动注册的示例
CREATE table tab1 (col1 integer, col2 node);

以上命令创建名为 tab1 的表格,并且它会自动地注册节点数据刀片。

降级影响:如果您想恢复旧版本时,会出现以下消息,并且取消降级。

清单 20. 降级消息
onmode -b 11.50.xC6
Database xdb: Must drop spl/udr (sysbldsqltextin) before attempting reversion.

除了以上提到的降级消息,还有其他很多降级消息。

终止扩展:

清单 21. 终止扩展的 SQL 语句
drop tab1;
execute function sysbldprepare('Node.*', 'drop');
unprep database name.

终止扩展之后,降级就成功完成了。

添加到 Sysadmin 数据库的新任务

新任务(idle_user_timeout、auto_crsd、check_for_ipa、auto_tune_cpu_vps 和 bad_index_alert)被添加到 ph_task 表格。对上述 Blade Manager 扩展,其他新任务(autoreg exe、autoreg vp、autoreg migrate-console 和 autoreg 移植测试)被添加到 ph_task 表格。对上面提到的存储提供功能,mon_low_storage 任务被添加到 ph_task 表格。

降级影响:所有新任务在降级之前都会被服务器终止;不会有降级消息。


结束语

本文提供了一些信息,可以帮助您计划如何实现所有有潜在升级和降级影响的新 Version 11.70 功能。学习了这些升级影响、系统目录变更、新 ONCONFIG 参数、以及降级影响之后,现在您就可以充分利用 Version 11.70 中的新功能了。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=642585
ArticleTitle=将您的 Informix 服务器升级到版本 11.70
publish-date=02162011