Informix数据库培训教材(上)

更新时间:2024-06-20 19:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Informix数据库培训教材(上)

目 录

一、 Informix数据库简介 …………………………………………………………3

二、 Informix数据库的安装及初始配置………………………………………….5

三、 Informix---online动态服务器组织结构…………………………………..14

四、 Informix---online动态服务器空间管理…………………………………..18

五、 Informix---online动态服务器模式管理…………………………………..21

六、 Informix---online动态服务器容错机制…………………………………..23

七、 Informix---online动态服务器日志管理…………………………………..27

八、 Informix---online动态服务器内部操作…………………………………..29

九、 Informix---online动态服务器数据移动…………………………………..32

十、 Informix---online动态服务器监控命令…………………………………..36

十一、Informix---online动态服务器性能调整…………………………………..44

十二、Informix---SQL语言简介………………………..………………………….50

附录A: 与数据库有关的核心参数………………………………………………...68

附录B: ONLINE配置参数的说明……………………………………………………69

附录C: INFORMIX5的安装及初始配置…………………………………………….72

1

Informix数据库培训教材(上)

第一章 Informix 数据库简介

一、 系统特点

◆ 以unix开放系统为其主要运行环境的大型数据管理系统 ◆ 采用分布式c/s体系结构,具有极高的运行效率

◆ 全新动态可伸缩体系结构(dynamic scalible achi-tectue)

二、 机制简介

数据库服务器提供数据操作和管理:开发工具是用户用以开发利用应用程序的必要的环境和工具。

数据库服务器与数据库应用程序之间构成一种完全彻底的C/S结构体系。应用程序接收程序操作指令后以结构化查询语言SQL的形式传到数据库服务器。数据库服务器接收送来的指令进行编译并检查其操作的合法性,然后返回正确的查询和操作结果。

对于多个数据库服务器可以安装在同一台机器上,此时数据库通过计算机的内存来与服务器进行数据操作的请求和返回。即:互联形式的集中式数据库管理系统。

数据库、服务器安装在不同的计算机上。此时它们之间通过网络来传输数据操作的亲求和返回。即:C/S的数据库管理系统

二者的区别只是硬件的构成和用户应用程序运行的操作规程平台不同。意味着两种形式相互转移时仅仅需要改变应用程序和数据库所在网络的节点以及不同操作系统间应用程序的移植和重新编译连接,应用程序几乎不需要改变。

三、 产品介绍

1.产品分类

●数据库服务器I-SEI-ONLINE

●数据库开发工具4GL系列(I-SQL;4GL RDS;4GL C;4GL ID;ESQL/C);NEWERA系列具有事务驱动能力,面向对象的基于各种图形的开发工具 ●网络数据库互联产品

2.产品简介

2

Informix数据库培训教材(上)

Informix—SE简便的数据库系统用于少量用户、小数据库和不需要多媒体以及高效联

机事务处理。Informix—SE+informix—NET 构成C/S但不支持分布式数据查询和操作。

Informix—online 高效联机事务处理能力。用于50用户、1GB数据库以下,提供多媒体支持、多种数据安全机制。Informix—online+informix—Star 构成C/S或分布式系统。

Informix—online Dynamic Server 采用网络通信虚拟处理器实现C/S。多线索多进程机制,支持决策支持,提供动态可伸缩体系结构和双机数据备份的机制。

Informix—sql 高效简洁的UNIX 平台字符的开发工具。用于监控数据库运行和简单的应用开发。

Informix—4GL 多平台多操作系统的字符界面的开发工具,有C 编译版、快速版RDS和调试工具ID。

Informix—NewEra 最新的多平台多操作系统同时支持图形和字符界面。面向对象并具有事件驱动能力。

Informix—Esql 嵌入 SQL 语句的语言(如C)预编译器。即可独立开发也可与 I-4GL 、I-SQL、I-NewEra 相互补充。

3

Informix数据库培训教材(上)

第二章 informix 数据库的安装及初始化配置

操作流程:

1. 建立informix用户

用户组为informix, 用户目录可设为/usr/Informix

大体来说informix 数据库的安装步骤如下: ●为每一台机器安装软件 ●配置推荐的核心配置参数 ●准备磁盘空间 ●设置所需环境变量 ●创建一个 sqhlosts文件 ●在$INFORMIXDIR/etc目录下设置onconfig文件 ●利用oninit初始化online 2.安装盘挂载

将Informix安装盘挂载到系统中 命令为mount /dev/cd0/mnt

如果希望将 informix 安装在硬盘的一个单独的分区上还需要将该分区挂载到相应目录下,假定分区为Informix,则:

命令为 mount /dev/informix /usr/Informix

3.设置环境变量

环境变量 INFORMIXDIR 设置为informix产品所在的目录 PATH 包括INFORMIXDIR/bin INFORMIXSERVER 设置为onconfig参数中的DBSERVERNAME值

Informix必须的环境变量如上所示。一般来说,所有环境变量在.profile文件中设置。以下例子中假定DBSERVERNAME 为online:

在/.profile 、 /etc/profile、/usr/informix/.profile 中设置以下变量:

INFORMIXDIR=/usr/informix INFORMIXSERVER=online TERM=ansi

PATH=$PATH:/usr/informix/bin

4

Informix数据库培训教材(上)

export INFORMIXDIR INFORMIXSERVER TERM PATH

4.创建sqlhosts文件

客户机与服务器的连接包括三个部分。环境变量 INFORMIXSERVER 是指向通讯配置文

件内某一条目的指针。通讯配置文件的默认路径和名称为$INFORMIXDIR/etc/sqlhosts。该文件的第一个字段包含了配置参数的DBSERVERNAME的值,该值只能有一个。

也可以通过设置环境变量INFORMIXSQLHOSTS 来改变通讯配置文件的存储路径及名称。

该文件的记录格式如下:

#dbservername nettype hostname servicename 各字段的含义为:

● dbservername onconfig 文件中的DBSERVERNAME的值 ● nettype 对于共享内存连接应设为onipcshm

对于tli tcp/ip 连接应设为ontlitcp 对于scokets tcp/ip 连接应设为onsoctcp ● hostname 机器的主机名

● servicename 文件/etc/sercices 中的服务名 对于采用共享内存方式连接的无用

以下为一例:

#dbservername nettype hostname servername online onipcshm scosysv aas

5.安装产品

将informix安装盘挂载到/mnt 目录下以后,依次执行以下命令进行安装: cd /usr/informix

cpio -icvdumBI/mnt/SQL>CPI

./installsql (或./installsqlrf) tar xvf /mnt/ESQL.TAR ./installesql

tar xvf /mnt/ONLINE/ONLINE.TAR ./installonline

6.配置核心参数

根据$INFORMIXDIR/release 目录下有关文件中的核心参数配置要求编辑文件 /etc/conf/cf.d/mtune 中的相应参数的第一列,

注意: 1.修改后的值应介于第二、第三列的值之间 2.如果所要修改的值小于原值,不必修改 例:修改 mtune 文件中相应参数

SHMMAX 409600000 SHMALL 512 SHMMIN 1 SHMMNI 100 SHMSEG 6

MAXUMEM 524287 SEMMNI 8192 SEMMNS 8192 SEMMAP 8192

5

Informix数据库培训教材(上)

Dump Core [N] Dump Count [ 1 ] Dump Directory [/tmp ] Enter pathname for Online message log

◆ 诊断参数

Message Log [/usr/informix/online.log ] 系统消息日志文件路径 Console Msgs. [/dev/console ] 系统控制台信息路径

Alarm Program [/usr/informix/log_full.sh] 报警程序路径及名称

●以下的初始化设置采用系统默认的配置即可 按ESC 键确认直到出现提示: Do you really want to continue? (y/n) WARNING :The ROOT Dbspace will be initialized. All precious data will be destroyed. 键入y即开始初始化。

●初始化完毕后回到菜单:

PARAMETERS: Initialize Shared-Memory perFormance Data-Replication diaGnostics pdQ Add-Log Drop-Log Physical-Log Exit Initialize root dbspace and shared memory configuration. ----------------------Quiescent-------Press CTRL-W for Help.

此时选择exit退出。

9.模式转换

数据库在刚初始化后处于Quiescent (静态)的模式,在使用时应使之处于online (联机)模式。用以下两种方法可实现切换: 采用命令:# onmode—ky ; oninit 采用菜单:onmonitor—mode—online

10.增加开、关机引导程序

◆ 开机自引导程序

系统启动后,为了使数据库能够正常工作,在对数据库操作之前,必

11

Informix数据库培训教材(上)

须使用命令oninit 对数据库进行共享空间的初始化。通常可以将对INFORMIX 数据库系统共享内存的初始化工作放到UNIX 的启动程序中,一般在/etc/rc 2.d目录下增加启动程序S90oninit ,完成INFORMIX数据库系统的初始化工作。S90oninit 文件的内容为:

echo ―INFORMIX-ONLINE : oninit---‖ /usr/Informix/bin/oninit

if [ $? -eq 0 ]

then echo ―okay!‖

else echo ―fail!‖ fi

编辑完此文件后,在执行如下命令为此文件增加可执行权限:

# chmod +x S90tbinit

◆ 增加关机自引导文件

为了数据的安全,我们在关机之前,应该使用onmode 命令将数据库共享空间关闭。为方便起见,我们一般在/ etc/rc0.d 目录下增加一个文件: K01onmode。 文件的内容可以如下:

Echo ―INFORMIX-ONLINE: onmode---‖

/usr/informix/bin/onmode –ky

if [ $? -eq 0 ]

then echo ―OKEY!‖

else echo ―FAIL!‖

fi

编辑完此文件后,在执行如下命令为此文件增加可执行权限:

# chmod +x 01tbmode

11.运行检查

至此online数据库的初始化就完成了,可以使用dbaccess 检查运行情况。

12

Informix数据库培训教材(上)

第三章informix_online 动态服务器组织结构

一、 数据库服务器的组成

动 态 服 务 器 体 系 结 构 共 享 内 存 驻 留 段 缓 冲 区 和 其 它 数 据 结 构 虚拟段用于对话过程和线索的 内存池 磁 盘 消息段用于C/S间利用共享内存的通讯 缓冲区 进 程 Oninit---虚拟处理器 Oninit---虚拟处理器 Oninit---虚拟处理器

动态服务器系统由三个主件构成:

●online 共享内存

●数据库服务器守护进程

●online 数据在磁盘上的存储。

共享内存包括三个段:

●驻留段: 驻留段主要用做磁盘的缓冲。

●虚拟段: 虚拟段用做内存池以支持进程及相关的会话和线索。 ●消息段: 消息段在客户与服务器通讯时做两者间的消息缓冲区。

系统中还包括若干构成数据库服务器的UNIX进程,称为oninit。这些进程被称为虚拟处理器具(VP)。每一VP 隶属于某一虚拟处理器类。而每一处理器类都负责完成一类特殊的任务。

系统的磁盘组件由多个原始磁盘空间组成,称为 chunk 。Chunk 以页(page)为基本单位。多个chunk 的集合逻辑上构成数据库空间 dbspace。数据库空间用于存储数据库、表、系统信息以及物理日志和逻辑日志。一个数据库空间至少包括一个chunk 。

13

Informix数据库培训教材(上)

二、磁盘数据组织结构 数据库 (database ) 数据库空间 ( dbspace ) 数据存储块 (chunk) 镜像数据存储块 (mirror) 数据表 (table ) 数据表空间 (tblspace) 数据连续页 (extent) 记录本 (row) 数据页码 (page)

在动态服务器中以页(page)为基本存储和I/O单位。一个chunk的所有空间都以

页为基本单位进行划分。页大小因机器和操作系统的不同而不同,一般为2K,也可能为4K。它的大小与数据在共享内存中数据缓冲区相一致,所以用户无法改变页的大小。

数据连续页 (extent)是将若干个物理磁盘上连续的页的组成一个数据连续页,以提高数据操作的效率。当用户创建一个表时,online以数据连续页为单位在数据存储块中分配一个连续的空间。

分配给系统使用的连续空间的单位称为 数据存储块 ( chunk )。 Informix-online 的数据存放在Chunk 中。Chunk由多个页组成,是online数据存储的最大物理单位。Chunk的大小有管理员设定。它有两种构造方法:其一是直接构造在物理磁盘上,其二是构造在操作系统的文件上。在第一种情况下,操作系统仅仅定义了这个块,但没有格式化这块磁盘。因此再这上面所有操作都由online来完成,操作系统对它不存在任何管理,数据空间在物理上连续,这种数据空间称为原始空间 raw space 而在第二种情况下,操作系统不仅定义还管理这个数据库空间(文件)、数据文件操作时的内存缓冲、输入与输出。数据空间的建立受操作系统的约束,因此是不连续的。这种数据库空间称为非原始设备cooked space 。比较这两种数据的存储空间,后一种在磁盘上不连续,存在着操作系统的缓冲和输入输出的制约,因此在实际应用中,采用原始效率要高于非原始设备。

镜像存储块 (mirror)用于提高数据的可靠性。数据写入时同时写入到chunk 和mirro 中。当online运行时 chunk 发生故障,具有镜像的数据库空间还能继续运行并在适当的时候恢复存在故障的数据存储块所在的磁盘。

数据库空间隔(dbspace ) 是一个或多个 chunk 的逻辑组合。每一数据库空间至少要包含一个 chunk 。数据库和表创建在指定的数据库空间上。系统至少要包含一个数据库空间:根数据存储块 root dbspace 。其它的则是后继数据存储块。在根数据存储块中除了能够存储用户数据外,还具有管理本数据空间的功能,在该空间中存储着所有关于系统的信息。为了提高数据库系统的运行效率,informix 动态服务器7.1 版本中引入了临时数据库的概念。在以往的数据库服务器中,临时数据建立在根数据空间中,其频繁的增加和

14

Informix数据库培训教材(上)

删除会造成许多碎片并降低操作系统的效率,而且数据务份时,临时数据也一起备份,增加了备份量,降低了备份效率。引入临时数据空间后,用户的临时数据或者数据操作的中间结果将存放在临时数据空间中,同时临时数据将不参与数据备份。

数据表空间tblspace。 在逻辑上,数据库存在于数据空间 dbspace 中,数据表存在于数据表空间 tblspace 中,数据库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表记录的数据连续页组成。Online 5 不支持数据表跨越数据库空间存放。在 informix dynamic server 7 中开始允许一个数据表跨越数据库空间存放。这样利用计算机输入输出的并行操作能力,可以同时扫描一个数据表的不同的记录,使得数据表顺序读写的速度大大提高。

三、 共享内存数据组织结构 动态服务器共享内存 驻留段 缓冲区 逻辑日志缓冲区 物理日志缓冲区 逻辑日志缓冲区 其它数据结构 物理日志缓冲区 逻辑日志缓冲区 虚拟段 通讯段 过程池 大缓冲池 MT池 通讯缓冲池 会话池 Light Scan池 排序池

共享内存是指为多个online 用户进程所共同使用的内存段,进程间通讯可以借助它来完成。借助进程间通讯比那些服务器进程各自维护其私有备份的系统有两个好处:1.减少磁盘的I/O次数,因为缓冲区作为一个公共池被管理,对于缓冲区的整个操作也是在系统范围内进行的,而不是每个进程都要依次刷新操作;2.减少了执行时间,因为共享内存仅维护一份数据页或索引页的副本,进程无须为了确保数据是最新的而再读一次缓冲区。

Informix 的动态服务器的共享内存在Informix-online 5 的基础上又增加了两个模块。在online-5 中共享内存中只有驻留段一个区域。动态服务器在其基础上还增加了虚拟区的通讯区。对于驻留区 online-5 通过闩表来控制多个服务进程对数据库系统的并发操作,由于动态服务器采用进程的多线索控制机制来管理多个用户并发数据库系统的访问,因此闩表对于动态服务器来

15

Informix数据库培训教材(上)

说就不需用要了。

驻留段由三部分组成: 系统头信息、内部管理表和数据缓冲池。驻留段主要用做缓冲池。为了保证 online 在某个数据页被修改后在逻辑上和物理上的一致性, online 数据缓冲区还放着数据的逻辑日志和物理日志。驻留段的大小主要由系统参数BUFFERS 决定。

虚拟段主要用做内存池以支持会说话和线索。根据用途的不同,内存池可以进一步分为:会话池、多线索字典池、存储过程池、排序池、大缓冲池以及全局池。内存池的分配和释放是动态进行的。内存池的大小为8K。如果已有虚拟段耗近,动态服务器可以根据 onconfig 参数再次动态申请。虚拟内存的初始大小由参数SHMVIRTSIZE 决定,其增量由参数SHMADD决定,当其整个共享内存的大小不能超过SHNTOTAL。

通讯段主要指通讯缓池。客户与服务器利用共享内存进行通信时,将使用通讯缓池。每一用户连接 (利用共享内存进行通信)大致占用12K的空间,用户连接的数量在参数NETTYPE中定义。

用户可用ipsc 或 onstat---g seg 命令监控共享内存的状态。

操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。

四、 处理器资源组织结构

数据库系统服务器由若干称为 oninit 的UNIX进程组成,在系统中这些进程被称为虚拟处理器(VP)。每一VP属于一个特定的虚拟处理器类,而不同的虚拟处理器分别完成不同的任务。Online 主要有七种虚拟处理器类,其中以下三种是主要的。

● 处理器虚拟处理器类 CPU Virtual Process 是动态服务器虚拟处理资源中用途最广的一种。运行所有用户线索和部分系统线索(占所有线索的95%)、执行核心异步输入输出功能 。

●磁盘输入输出虚拟处理器Disk I/O Virtul Process 有三种,分别是逻辑日志输入输出虚拟处理器、物理日志输入输出虚拟处理器和异步输入输出虚拟处理器。磁盘输入输出虚拟处理器在以下两种情况下执行:1 应用系统数据存储空间存储在非原始设备上;2 应用系统数据存储空间存储在原始 设备上但是CPU VP不提供核心异步输入输出的能力。

● 网络通讯虚拟处理器 Network virtual Process 在C/S和分布式数据库系统的连接中。Online 5 采用附加的产品实现,而Online 动态服务器7 采用网络通讯虚拟处理器来实现。

16

Informix数据库培训教材(上)

第四章 informix_online 动态服务器空间管理

一、 对空间的管理操作

●添加一个dbspace 或 bolbspace

给出dbspace 或 bolbspace 名,然后确定是否需在镜像, mirror[Y/N], 是否临时dbspace Temp[N],给出路径名、偏移量和空间大小。

●改变 dbspace in mirror 状态 mirror 有三种状态:

Y:已镜像,Mirrored; N:没镜像,Not Mirrored;

X—新镜像,但不能使用,Newly Mirrored

注意:

1)可以改变 dbspace 和 bolbspace mirror 状态,但是当主 chunk 已坏时,不能改变成无镜

像,因为此时只有镜像 chunk 在工作。

2)若给一个 dbspace 和 bolbspace 镜像,必须给出镜像 chunk 。但当dbspace 的逻辑日志

正在做备份时,这项工作不能做。

3)若主 chunk 包含逻辑日志,系统会发出让你备份的警告信息,同时,还将 dbspace 的

镜像状态被标识为X。

4)一般来说,镜像 chunk 与主 chunk 尽量不在同一块设备上,这样,当主 chunk 有故障

脱机时,不致影响镜像 chunk 。

●删除一个数据库空间

要删除一个 dbspace 必须满足下面的条件:

1)该 dbspace 必须没有表和数据库,既该 dbspace 必须为零。 2)不能删除 rootds。

当删除一个 dbspace 或 bolbspace ,该 dbspace 或 bolspace 所用的 chunk 就被释放出来。 如果删除的是一个镜像的 dbspace,那所有与之相联系的 chunks 都将被删除。

●dbspace 的状态信息

dbspace---显示出 dbspace 的号,名字, chunks 数目创建时间,mirror 状态,是否临时,

在多个 dbspace 的状态上,按 ctrl—B 或 F3 就进入了 dbspace 的 chunks 状态的信息栏。

显示信息有 chunk ID, chunk offset, Page used, Full pathname, status 其中 status:

P—primary chunk M--- Mirror chunk

17

Informix数据库培训教材(上)

I---Inconsistent O---Online D---Down R---Recovery 改变 chunk 的状态

在光条上按 ctrl –B , 主要从 C---D 或从 D---R

注意:不能将主 chunk 与镜像 chunk 同时改为 D 。

●增加一个 chunk

要给出 dbspace 的名字,其状态是否镜像,然后给出其 pathname。

二、使用 onspace 命令进行空间管理

●onspaces

Onspaces 命令用于创建数据库空间、临时数据空间和 blob 数据的空间。键入

onspace---可获得该命令的联机帮助。系统可能包括多个数据库空间,特别当进行数据分片后,最好能用命令来创建数据库空间。

例:Onspace---c---d datadbsl ---o 0 ---p /dev/rrcol3 ---s 60000 创建数据库存储空间 语法: onspaces ---c [--b] [--d] [--g] [--m] [--o] [--t] ---c 创建 blobspace 或 dbspace ---b blobspace blobspace 名 ---d dbspace dbspace名 ---g page size blobspace 大小 ---m mirro 镜像设备的全路径名和偏移量度(单位 KB) ---o offset 偏移量度(KB) ---s size dbspace 大小 ---t 创建临时 dbspace ---p chunk 设备的全路径名 增加或删除数据库空间 语法:onspaces ---a ---d [---m] [---o] [---p] ---a spacename 为 dbspace 新增 chunk ---m pathname 镜像设备的全路径名和偏移量 ---o offset 主设备的偏移量 ---p pathname chunk 设备的全路径名 ---s size chunk 的大小 ---d spacename 删除 chunk onspaces-- 键入此命令可以获得帮助

18

Informix数据库培训教材(上)

键入数据库空间时,必须保证它是无用的。 例: onspaces ---d dbspaces_name

增 chunk: onspaces –a --d datadbsl --o 60002 ---p/dev/rrol3 –s 60000 删 chunk: onspaces –d datadbsl --o 60002 –p /dev/rrol3 –s 60000

19

Informix数据库培训教材(上)

第五章 informix_online 动态服务器模式管理

一、 OnLine 有下面几种模式:

·脱机 (offline ): OnLine 根本没有运行,没有任何共享内存被分配。 ·联机(OnLine): 系统已启动,允许用户访问数据库。

·静止 (Quiescent): 系统已启动,但不允许DBA以外的用户访问。 ·关闭 (shutdown):允许正处于快速恢复或系统备份恢复的过程中。

二、 改变模式的菜单:

采用 onmonitor 中的相关菜单可以实现 online 数据库工作模式的转化,菜单操作为:

onmonitor---mode—

starup 脱机 → 静止 OnLine 静止 → 联机 Graeful—shctdow 联机 → 静止 Immediate—shutdow 联机 → 静止

Take—office 联机 → 脱机

注: Take—office 相当于先执行 Immediate—shutdow ,然后终止所有 OnLine 守护进程,释放 OnLine 占用的所有用户资源。

三、 改变模式的命令:

●oninit 命令 语法: oninit [s] [i] [p] [y] oninit 将系统从 off-line 模式转换为 on-line模式 oninit --s 将系统从 off-line 模式转换为 quiescent模式 oninit --I 初始化系统 oninit --p 在共享内存初始化时不搜索,删除临时表 oninit --y 对于 提示自动回答 yes oninit-- 键入此命令可以获得帮助 20

Informix数据库培训教材(上)

Oninit 命令用于改变系统的运行模式:其中—I选项用于初始化系统的 root dbspace。

●onmode 命令 语法: onmode [--k] [--m] [--s] [--u] [--y] onmode --k 执行 imemedate shutdown ,将系统变为off-line模式 onmode --m 将系统从 quiescent 模式转换为 on-line 模式 onmode --s 执行提示自动回答 yes onmode --y 对于提示自动回答 yes onmode – 键入此命令可以获得帮助

Onmode 命令可以用于改变动态服务器系统的运行模式。

21

Informix数据库培训教材(上)

第六章 informix_online 动态服务器容错机制

一、 错误类型

系统错误---计算机系统发生的错误

磁盘错误---包含内部 OnLine 信息的磁盘变得不可使用

系统失败---与计算机和磁盘相关的部分不可用,或 OnLine 系统的数据被

中断。

二、 恢复机制

包括快速恢复、系统备份恢复、镜像恢复

系统崩溃---由于电源故障或其它原因使系统偏机,OnLine 系统必须能在 计算机重新启动恢复到一个一致状态,快速恢复用于此目的。 磁盘崩溃---包含OnLine 的磁盘有故障,可用备份来恢复,并利用逻辑日 志前滚到磁盘不可用时刻。然若有磁盘镜像,则无妨。

系统故障---整个计算机系统故障时采用磁带备份恢复,并回滚逻辑日志。

三、 快速恢复

◆ 快速恢复的概念

快速恢复是一种自动的容错机制,每当 OnLine 从脱机模式转到静止模式时都会执行。 快速恢复两个目标:

①.物理日志用于保持 OnLine 的物理一致性,将系统恢复到最近一个检查点时

刻。

②.逻辑日志用于保持 OnLine 的逻辑一致性,通过前滚检查点以来的所有已提交

事务和回滚所有未完成的事务而实现的。

快速恢复的目的首先是恢复 online 系统到最后一个检查点,在该检查点系统在物理上一致。然后利用逻辑日志文件中从该检查点开始后的事务记录前滚所有事务,实际上是对该检查点后开始的所有事务均重做一遍,然后回滚所有发生故障时未完成的事务,使所有数据库处于物理和逻辑均保持一致的状态。

快速恢复是 online 的一个特性,允许 online 从断电到 unix 崩溃一类的故障中恢复。快速恢复进程启动后就没有办法停止,每当 online 启动时都会自动发生快速恢复过程。

◆ 两种系统状态

1.正常关机后的状态

当正常关机时,系统完成的最后一个活动是检查点活动。它适使得物理日志清空,并在逻辑日志记录一条检查点记录。信息日志中记录系统已正常关闭。

22

Informix数据库培训教材(上)

物理日志 逻辑日志 空 Checkpoint record 信息日志 Tue Tek 3 13: 44: 18 1998 13: 44: 18 shutdown mode 13: 44: 30 Quiescent mode 13: 44: 31 INFORMIX-Online stopped 2.发生错误以后的状态 物理日志 Tub Feb 3 13: 44: 18 1998 13: 39: 39 checkpoint completed 13: 40: 35 checkpoint completed 13: 41: 28 checkpoint completed 上次检查的前映像 物理日志非空,逻辑日志最后 Checkpointed record 一条记录非 checkpoint,消息日志 Action record 也无关机记录。 Action record Action record

◆ 快速恢复的步骤:分三步

1. 第一步,从物理日志中恢复前映象。方法:将前映象从磁盘中读入共享内存缓冲池

中。然后完成一次检查点工作,将共享内存中的页刷新到磁盘。

这一步的恢复操作是必须的,因为共享内存中修改页可能在检查点操作之前刷新到磁盘上。该步保证了即将开始的前滚过程是在数据的初始状态下进行的。

共享内存缓冲池 CHUNK

物理日志

23

Informix数据库培训教材(上)

2. 第二步,定位检查点记录,并前滚检查点后的所有事务。这将重新执行最后一检查点

的所有事务。

快速恢复的第二步是在逻辑日志中找到最后一个检查点记录。该记录的位置在系统保留页中。读保留页找到记录后,逻辑日志文件中从此记录开始的事务都要前滚,实际上是把自上一个检查点以来所有数据库的修改重新做一遍。

定位检查点记录 TX1 BEGIN work 前滚检查点后的所有记录 TX2 BEGIN work

CHECKPOINT

TX3 BEGIN work

TX4 BEGIN work

TX5 BEGIN work

3. 第三步,回滚未提及的事务

取消所有在发生故障时未完成的事务,保持逻辑一致性。

TX1 BEGIN work

回滚所有未提交的事务

TX2 BEGIN work CHECKPOINT TX3 BEGIN work TX4 BEGIN work TX5 BEGIN work

这保证在发生故障时,完成的事务被完成,没有完成的事务被回滚。为完成全部回滚,由可能读到最后一个检查点以前的逻辑日志文件记录,因为一个事务在活动期间完全可能跨越多个检查点间隔。快速恢复第三步完成后,系统启动过程可以进行下去,系统进入静止状态。

注意:快速恢复只能恢复记录在逻辑日志中的事务。如果使用缓冲模式,完全有可能,一个提交的事务并未将其事务记录写到日志上。在这种情况下,故障发生时,已存在逻辑日志中的事务将丢失。

◆无日志数据库的快速恢复 在地 如果一人数据库没有使用日志模式,则逻辑日志文件中没有事务记录,所以不能进行第二步前滚操作和第三步回滚操作。因此,数据库也只能恢复到最后一个检查点的状态。即最后一次检查点以来对数据库所

24

Informix数据库培训教材(上)

做的修改都会丢失。

◆ 快速恢复操作的消息日志的内容

在快速恢复过程中,与其步骤相关的信息均会记录在 online 的消息日志文件中。以下为一例:

# 发生日期、时间

Wed Fed 11 13:15:40 1978 # 系统首先进行共享内存初始化

13:15:40 INFORMIX-Online Initialized-Shared (Mermory) # 快速恢复第一步,物理恢复过程,5页的前镜像北恢复 13:15:40 Physcial Recovery Stated 13:15:40 Checkpoint complteted

13:15:40 Physcial Recovery complete 5 pages Restored

#快速恢复第二、三步,逻辑日志回滚,恢复了已提交的3个事务,回滚了2个未提交事务,0个事务被打开,0个事务不能获得所 13:15:42 Logical Recovery Complete

3 Committed ,2 Rolled back 0 pen 0 Bad locks # 快速 恢复完成后,系统处于静止状态 13:15:44 Quiescent Mode # 系统进入联机模式

13:15:46 On_Line Mode

如果需要获得详细的事务恢复信息,可发使用 tblog 使用程序查看。

四、 镜像恢复

◆ 镜像时,介质失败

Shared Memory

Primary chunk mirror chunk

当使用镜像时,OnLine 系统在主 chunk 失败时,自动切换到镜像 chunk ,并标识主

chunk 为脱机状态,同时写一条消息到消息日志文件,表明 chunk 坏。

如果主 chunk 得镜像 chunk 都坏, OnLine 系统无法被始化,必须先修复 chunk 设备,然后从磁带恢复。

当镜像 chunk 作恢复时,online 系统会同时对两个 chunk 做写操作规程(即 online t系统将同时向两个 chunk 写同样的数据)。

25

Informix数据库培训教材(上)

第九章 informix_online 动态服务器数据移动

Informix的数据移动工具主要有下面几种:

卸载(unload): (dbexport、onunload)

加载(load): (dbimport,onload,dbload)

一、 dbexport

将整个数据库的数据卸载为ascii 形式的文件 语法形式:

dbexport [--c] [--q] [--d] --o 目录 数据库存[--v]

dbexport [--c] [--q] [--d] --t 磁带设备名 --b 块大小 --s 磁带大小 数据库名 --

dbexport [--cqd] --t 磁带设备名 --b 块大小 --s 磁带大小 --f 文件名 数据库名 --ss

其中: --c : 跳过其中的小I/O错误 --q : 屏蔽回显的错误信息 --d :卸载 blob 数据 --v :产生版本信息

--ss:同时生成日志模式、表的初始 extent大小、表的锁模式等。

常用格式举例:

1)、dbexport --o /mnt stores 7

2) 、 dbexport --c –q --t /dev/rmt0 --b 16 --s 24000 stores7

3) 、 dbexport --c --t /dev/rmt0 --b 16 --s 24000 --f /tmp/xx.sql stores7 --ss 将数据库卸载至磁带,并将模式文件卸载为/tmp/xx.sql。

注意: A、下载的数据库必须存在,且用户对其可读;

B、指定的目录必须存在,且用户对其可写;

C、卸载之后,在卸载指定目录或设备产生一个存放卸载信息的子目录,目录名为数据库名加上后缀exp。此目录下将产生数据库名加sql后缀的文件存放模式文件,表名加unl后缀的文件存放每个表的数据。

二、dbimport

将卸载下来的数据加载到数据空间中

31

Informix数据库培训教材(上)

语法形式:

dbimport [--c] [--q] --I [--d dbspace 名] 数据库名

dbimport [--c] [--q] --t 磁带设备 --b 块大小 --s 磁带大小 [--f 文件名] [--d dbspace 名] 数据库名

常用格式举例:

1)、dbimport --i/mnt stores7

2) 、 dbimport --c --I /app/bankstar/define --l buffered single

3) 、 dbimport --c --q --d dbspace2 --t /dev/rmt0 --b 16 --s 24000 stores7

A 、当前数据库空间中不存在与 databasename 同名的数据库;

B、环境污染变量必须设置正确,主要有:

DBDATE、INFORMIXDIR、PATH等。

三、dbload:

用命令文件装入数据

语法形式:

dbload [--r] --d 数据库名 --c 命令文件 [--行数] --l 错误日志文件:

dbload --s 输入结晶文件名

参数项: --c 指定dbload 命令文件的文件名或路径名

--d 指定接收数据的数据库名

--l 指定错误日志文件的文件名或路径名

--r 在装入数据库期间允许其他用户修改表中数据

--s 检查命令文件中语句的语法

dbload 实用程序的功能是将一至多个 ASCII文件中的数据传送到一至多个已有的表中。 使用dbload之前应首先创建ASCII命令文件,该命令文件命名输入数据的文件盒接收数据 的表并将一至多个输入文件的字段映射到数据库中一至多个表

的列上。命令文件的内容只包括FILE语句盒INSERT语句。每条FILE语句命名一个输入数据

文件,并定义该输入文件要插入表中的数据字段。每条INSTERT语句命名一张接收数据库

32

Informix数据库培训教材(上)

表,并定义dbload如何将FILE语句中描述的数据插入到表的列中。

FILE 语句在命令文件中的两种形式:

1.分隔符形式

语法:FILE 文件名 DELIMITER “字段分隔符” 数据行字段数

例: FILE stock.unl DELIMITER "︱"6;

INSERT INTO stock;

2.字符- 位置形式

语法:FILE filename ([fielden start-end [:start-end] [null=null string]])

参数项:

filename 文件名

fileden 数据字段名

start 数据行中某个字段的起始安符位置

-end 以连字符开头,数据行中字段结束字符位置

五、 onunload

以页单位传送二进制数据

onunload 实用程序的功能是将数据库或表写表磁带上,但不能写到一个文件中。该程序采用二进制形式,以磁盘页为单位卸载数据。以这种方式卸载的数据效率高于有dbexport卸下的数据。

读由 onunload实用程序创建的磁带只能使用onload实用程序,接收数据的机器盒创建磁带

的机器必须具有相同的页面大小。

语法形式:

onunload [指定磁带参数] 数据库名

onunload [指定磁带参数] 属主.名表

onunload 指定磁带参数:--l --b 块大小 --s 磁带大小 --t 磁带设备

参数项: --l 指示onunload 从逻辑日志备份参数中分别读取磁带设备、块大小、磁 带大小、磁带大小的值。

33

Informix数据库培训教材(上)

--d 指定磁带设备块大小(以KB)为单位

--s 指定磁带所能存储的数据量

--t 命名安装有输入磁带的磁带设备路径名

如果不指定磁带参数,则onunload 缺省为档案磁带参数。

只有具有数据库DBA特权的用户才可以卸下新数据库或表。若不能获得排他锁则返回出错信息。

五、onload

创建数据库或表

onload 实用程序在指定的dbspace中创建数据库或表,并从输入磁带装入数据,该输入磁带由onunload创建。

语法形式:

onload [指定磁带参数] [创建任选项] 数据库名

onload [指定磁带参数] [创建任选项] 属主.表名

onload 指定磁带参数: --l --b 块大小 --s 磁带大小 --t 磁带设备 参数选项与onunload实用程序相同

onload 创建任选项 --d dbspace --I 原有索引 新索引

参数项: --d dbspace 指定数据库或表的dbspace

--I 原有索引 新索引 指示 onload 存储表索引时为其重新命名(命 令行中需指定表名)

数据库装入之后,运行onload的用户成为属主,而数据库(表、视图、和索引)的属主仍和作onunload 卸出到磁带上的数据库一样。

第十章 informix_online 动态服务器监控命令

34

Informix数据库培训教材(上)

监控ONLINE 系统启动情况的工具主要有以下三类:

●系统监控接口(SIM)

●onstat

●oncheck

一、 系统监控接口(SIM):

系统监控接口(System Monitoring Intetface) ●数据库中包括指向系统共享内存结构数据字典信息 ●提供时的系统性能和状态信息 ●提供sql界面了解数据字典信息 ●用于执行重复性监控任务

系统监控接口是一种基于SQL界面的系统工具,我们通过SQL命令可以非常方便的通过操作online 的内部数据库sysmaster中的内部表/结构,来获取有关的维护信息。Sysmaster 是在online 初始化时,系统自动创建的,每一个系统包括一个Sysmaster 数据库。该数据库中大部分是虚表,是指向共享内存中数据结构的指针。

注:使用SMI有如下限制:

●不能对SMI中的表加锁或使用隔离级别。

●不允许使用insert,delete,update等语句(只读)

●不能使用dbschema,dbexport等命令

●使用selete rowid语句将会产生不可预料的结果

主在的SMI表有:

sysdatabases:online中的数据库信息 systabnames:某数据库中所有表的信息 syslogs:逻辑日志信息 sysdbspaces:数据库信息 syschunks,syslocks等

例1:显示处于脱机(offline) 状态的chunk的序号和所在数据库空间

select chknum.,dbsnum from syschunks where is _offline=l or misline-! 例2:显示满chunk的信息

select chknum, dbsnum from syschunkd where nfree=0

35

Informix数据库培训教材(上)

二、ONSTAT工具

Onstat 工具 ●显示动态服务器共享内存中的信息 ●涉及少量磁盘操作 ●不需要锁等系统资源,对系统性能影响极小 ●提供关于系统有价值的信息 ●命令行交互式监控系统

Onstat命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取住处。报告但是的系统状况。能常 onstat 的命令不会进行磁盘的I/O操作,也不会对系统资源加锁,所以他对系统性能的影响减少到最小。下面介绍一些onstat 的一些常用的选项:

●Onstat -- 列出所有选项

●Onstat --I 设置进入交互模式

●Onstat -- 显示运行模式和数据库引擎状态 ●Onstat --g sub_option 运行多线索选项

●Onstat --r 每隔秒重复选项

●Onstat --g act 显示系统中所有活动的线索

●Onstat --g ath --r 2 每隔两秒显示系统中所有活动的信息

用法:onstat [--abcdfghklmpstuxzBCDFRX][--I] [--r seconds] [--o file] [infile] --a Print all info 显示所有信息 --b Print buffers 显示缓冲区

--c Print confuguration file 显示配置文件信息

--d Print DBspaces and chunks 显示dbspace和chunk信息 --f Print datakip status 显示dataskip状态信息 --g MT subcommand (default:all) 显示onstat子命令 --I interactive mode 进入onstat交互模式 --k Print lockd 显示用户持有锁信息 --l Print logging 显示日志文件信息

--m Print message log 显示消息日志的最后一行 --p Print profile 显示系统资源状况 --s Print latches 显示门闸信息 --t Print TBLspaces 显示表空间信息 --u Print user threads 显示用户使用信息 --B Print all buffers 显示所有缓冲区信息 --D Print DBspaces and detailed chunk stats

--R Print LRU queues 显示LPU队列

--X Print entire list of sharers and waiters for buffers缓冲区全部列表 --F Print page flushers 页刷新进程

36

Informix数据库培训教材(上)

三、几个常用的onstat 选项:

●onstat --m :显示消息日志的最后20行。

消息日志的内容包括:

1.检查点信息 2.读写错误信息

3.ONLINE模式转换信息 4.长事务

5.日志文件满(LOG FILE FULL)

若想显示完整信息,可直接编译消息日志文件。

●onstat --d: 磁盘空间的使用情况,包括DBSPACE和CHUNK信息 例:

RSAM Version 5.0.3UC1 --On_Line—Up 09:45:41 --816 Kbytes Dbspaces

Address number flags fchunk nchunks flags owner name 8040a244 1 1 1 1 N informix rootdbs 1 active, 8 total

Chunks

Address chk/dbs offset size free bpages flags pathname 80409d84 1 1 0 300000 231871 PO- /dev/rdata 1 active ,8 total

其中的FREE项,显示了该CHUNK 的空闲空间大小(Kbytes).

●onstat --l : 日志文件情况 Physical Logging

Buffer bufused bufsize numpages numwrits pages/io P—2 0 16 0 0 0.00 Phybegin physize phypos phyused %used 101782 15000 960 0 0.00

Logical Logging

Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io L—2 0 16 1 1 1 1.0 1.0

Address number flags uniqid begin size used %used 8042e94 1 U---C-L 1 10521a 7500 630 8.40 8042deb0 2 F------- 0 106f66 7500 0 0.00 8042decc 3 F------ - 0 108cb2 7500 0 0.00 8042dec8 4 F------- 0 10a9fe 7500 0 0.00 8042df04 5 F------- 0 10c74a 7500 0 0.00 8042df20 6 F------ 0 10e496 7500 0 0.00 其中:%USED: 使用百分比

37

Informix数据库培训教材(上)

FLAGS 字段的含义:

F:空闲 B:已备份 C:正在接收事物记录 U:正在使用 A:新增日志 L:包含最后一个检查点

●onstat -u : ONLINE 的用户情况

userthreads

address flags sessid user tty wait tout locks nreads nwrites 82442014---P---D 1 informix- 0 0 0 17 60008 82442450---P---F 0 informix- 0 0 0 0 1140 8244288c---P---B 10 informix- 0 0 0 8 0 82442cc8---P---D 11 informix- 0 0 0 0 0 4 active, 128 total, 7 maximum concurrent

其中:flags 字段的含义:

第一列:(S:等待 mutex; Y:等待条件;L:等待锁; B:等待缓冲区; C:等待检查点;X:长事务清理;G:等待长缓冲写;T:等待事务) 第二列:(*:事务执行时,发生I/O错误)

第三列:(A:正在备份;B:操作已被记录在日志中;P:分布处理已准备好;C:正在提交;R:正在回滚)

第四列:(P:会话的主线索)

第五列:(R:在read rsdm 调用中;X:进程在关键分区)

第七列:(M:特殊监控;D:特殊线索;C:清理线索;F:特殊清页进程; B:特殊B+树清页线索)

●onstat –k : 用户持有锁的情况 Locks

Address wtlist owner lkltst type tblsnum rowid key#/bsiz 0 active,2000 total, 2048 hash buckts

◆ 锁分为6种:库锁、表锁、页锁、行锁、字节锁、键锁

这几种锁的识别如下:

TYPE TBLSNUM ROWID SIZE 库锁 HDR+X 1000002 205 0 表锁 100000e 0 0 页锁 100 0 行锁 101

字节锁 HRD+B 909 键锁 很大的16进制数

其中:字节锁:更新包含有VARCHAR类型的行时,加在该行上的锁。 键锁:用于索引树上的锁。一般在相应字节上加删除标志。 ◆ 锁的生命期:

1.不使用事务时,操作完成即会释放对应的锁:

2.若使用事务,锁将伴随整个事务。(即随这COMMIT WORK或ROLLBACK

WORK而释放)

◆ 锁的几种类型:共享锁(SHARE),排它锁(EXCLUSIVE),可升级锁

38

Informix数据库培训教材(上)

●onstat -p : 显示系统资源状况(是否充分) Profile

dekreads pagreads bufreads êched dskwrits pagwrits bufwrits êched 181 199 358 49.44 7 8 2 0.00

isamtot open start read write rewrite delete commit rollbk 3 1 1 0 0 0 0 1 0

ovtbls ovlock ovuser ovbuff usercpu syscpu numckpts flushes 0 0 0 0 0.00 0.00 2 239

bufwaits lokwaits lockreqs deadlks dltouts lchwaits ckpwaits compress 0 0 0 0 0 0 0 0

其中:

OVTBLS:指示TBLSPACE值不够,TBLSPACES值应增大 OVLOCK:锁溢出 LOCKS就增大 OVUSER:用户表资源不够 USERS OVBUF:缓冲区资源不够 BUFFERS 以上数字若持续增加,表明相应参数值应调整 DEADLOCKS:检测到的死锁数 DLTOUTS:网络超时死锁

DEADLOCK—TIMEOUT:一般为60秒,若增大此数字,可以减少死锁数,但会增加响应时间,用户看来性更差;若减少此数字,死锁数可能会增大,但会减少响应时间,在用户看来,响应时间变快了。

四、ONCHECK工具

Oncheck工具 ●定位并修复数据与索引的不一致 ●检查动态服务器磁盘上的数结构 ●显示不同数据结构的报告 ●某些选项可能回在它所涉及的表上家一个共享锁

Oncheck 命令用于修复磁盘上损坏的索引的数据页,该命令也可用于检查并打印系统的数据结构,在使用 oncheck 时一定要小心,因为该命令的某些选项会表加共享锁,如:oncheck --pt

为防止对系统损坏,系统会对所有共享内存中的数据进行一致性检查。一旦发现数据页出现一致性错误,系统将把问题和可能的解决方案利用oncheck 写入消息日志文件,并返回isam 错误代码-105

39

Informix数据库培训教材(上)

如果发现一致性错误信息,用户应该立即关闭系统并按消息日志中的提示信息运行

oncheck,如果oncheck 运行失败,则应尝试卸出表在重新装入;如果是索引的错误,应考虑先删除在重建立。如果所有这些步骤都失败了,只有根据原由的系统归档备份来恢复系统。

用法:oncheck {--c CheckOption │ -p PrintOption } [-y │-n] [-q]

[ {database [: [owner . ] table [, fragdbs │ # index ]] │ TBL space

umber │Chunk number } {rowid │page number }]

--c --check ( 检查)

r --reserved pages(保留页)

e --TBLSpace extents and chunk extents c --database catalogs (目录) i --table indexes (表的索引)

I --table indexes and rowids in index (表的索引和索引的rowid)

d --TBLSpace data rows including bitmaps (表空间的数据行包括位图) D --TBLSpace data rows including bitmaps, remainder pages and blobs

--p --print(显示)

r --reserved pages (--cr) (保留页) e --extents report (--ce) (extent) c -- catalog report (--cc) (目录)

k --keys in index (--ci) (索引的键值) l --leafnode keys only (--ci)

L --leafnode keys and rowids (--cI)

d --TBLspace data rows (--cd) database[:[owner.] table [,fragdbs]] [rowid]

D --TBLspace data rows including bitmaps, remainder pages and BLOBs(--cD)

Database [:[owner.]table [,frsgdbs]] [page number]

t --TBLspace report database[:[owner.]table [,fragdbs]]

T --TBLspace disk utilization report database[:[owner.]table[,fragdbs]] p --Dump page for the given

[table[,fragdbs] and rowid │ TBLspace and page number] P --Dump page for the given chunk number and page number [chunk num and page number]

B --BLOBspace utilization for given table(s) Database[:[owner.]table[,fragdbs]]

--q --Quiet mode - print only error messages --n --Answer NO to all questions --y --Answer YES to all questions

五、几个主要的oncheck选项:

40

本文来源:https://www.bwwdw.com/article/1am3.html

Top