1 、描述IDS 数据库(database server )由哪三个主要组成部分?并解释说明各组成部分的一些主要的概念。


         IDS数据库是一个多线程结构(multithreaded architecture),由内存(shared memory)、CPU(VP)、磁盘(DISK)三个主要部分组成。


VP,IDS数据库中所有的进程统称为virtual processor(vp)。所有的vp属于一个特定的vp class,一个特定的VP CLASS 主要完成特定的一些任务。所有的VPs以root用户运行,在UNIX下对应的进程为oninit进程。


Shared Memory,划分为Resident Portion、Virtual Portion和Message Portion。


A、Resident Portion,常驻内存部分,包含BUFFER POOL和系统其他数据结构


主要用于存储buffer pool(磁盘缓冲数据),其他的结构有:locks(每个LOCK分配44个字节大小),LRU队列(包含FLRU、MLRU),Logical Log Buffers(3个BUFFER),Physical Log Buffers(2个BUFFER)。


B、Virtual Portion,虚拟内存部分,主要为线程控制信息


以pools进行分配,一个pool为8K大小。主要用于:用户SESSION数据,字典信息,存储过程,线程信息,排序等


C、Message Portion,消息内存部分,用于应用程序间通信


当系统初始化时进行分配,用于应用程序连接服务器的信息。


DISK,磁盘。IDS数据库最高层逻辑上由不同的DBSPACE组成,DBSPACE由物理上的chunk组成,chunk对应物理上的raw device或者cooked file。包含数据文件、逻辑文件(逻辑日志文件和物理逻辑文件)。表创建在dbspace上,对应的空间为tablespace,tabspace按extend进行扩展。Extend由连续的page组成,page为最基本的I/O单元。


 


2 、安装IDS 数据库之前需要的准备工作有哪些? 准备完成后,如何配置和初始化数据库服务器,及如何配置网络连接。


   获取IDS安装包后,安装IDS之前的准备工作如下:


A、阅读RELEASE NOTE相关


B、根据RELEASE NOTE相关信息,确认操作系统核心参数的设置正确。


C、根据RELEASE NOTE打操作系统必要的patch。


D、创建informix组和用户


   配置数据库服务器


A、设置环境变量


(1)、将INFORMIXDIR变量设置为你安装数据库服务器产品的目录


(2)、将PATH环境变量设置为包括$INFORMIXDIR/bin


(3)、设置INFORMIXSERVER,指定为缺省的数据库服务器


(4)、将ONCONFIG变量设置为有效onconfig配置文件的名称


B、准备连接文件


(1)、修改$INFORMIXDIR/etc/sqlhosts文件


C、设置配置参数


(1)、修改$INFORMIXDIR/etc/onconfig文件,配置相关参数


D、初始化和启动数据库服务器


(1)、初始化数据库服务器,oninit –i 只有第一次初始化时使用-i选项。


(2)、初始化完成后,需要修改物理日志表空间位置及大小,同时根据需要修改逻辑日志大小和数量。


(3)、根据运行情况,优化修改onconfig文件参数。


 


3 、描述共享内存(shared memory) 的组成部分,如何在ONCONFIG 文件中进行配置?如何进行监控(监控命令的使用)?


Shared Memory,划分为Resident Portion、Virtual Portion和Message Portion。


A、Resident Portion,常驻内存部分,包含BUFFER POOL和系统其他数据结构


主要用于存储buffer pool(磁盘缓冲数据),其他的结构有:locks(每个LOCK分配44个字节大小),LRU队列(包含FLRU、MLRU),Logical Log Buffers(3个BUFFER),Physical Log Buffers(2个BUFFER)。


在onconfig文件中对应的参数情况:buffer pool—BUFFERS,locks—LOCKS,LRU队列—LRUS,Physical Log Buffers—PHYSBUFF,Logical Log Buffers—LOGBUFF


B、Virtual Portion,虚拟内存部分,主要为线程控制信息


以pools进行分配,一个pool为8K大小。主要用于:用户SESSION数据,字典信息,存储过程,线程信息,排序等


在onconfig文件中对应的参数情况:SHMVIRTSIZE SHMADD SHMTOTAL


C、Message Portion,消息内存部分,用于应用程序间通信


当系统初始化时进行分配,用于应用程序连接服务器的信息。


      常用监控命令有:


         onstat – 查看常驻内存大小


         onstat –g seg 查看各类内存的使用情况


         onstat –R 查看LRU队列情况


         onstat –u和onstat –k 查看锁情况


 


4 、IDS 有哪几类主要的VP ,并描述如何进行正确的配置?如何进行监控(监控命令的使用)?


   IDS主要的VP类型和配置方式:


A、CPU,运行所有用户线程和一些系统线程,通过ONCONFIG文件配置NUMCPUVPS,在多CPU情况下配置为CPU个数-1;


B、PIO,负责物理日志写任务,系统自动分配1~2个VPS;


C、LIO,负责逻辑日志写任务, 系统自动分配1~2个VPS;


D、AIO,负责磁盘I/O任务;(KAIO),通过ONCONFIG文件进行配置NUMAIOVPS参数,一般配置为CHUNK的个数,当使用KAIO时,配置为2个即可;


   常用监控命令:


       onstat –g ioq 监控AIO队列,监控I/O请求队列LEN和MAXLEN来观察AIO的情况。


       onstat -g rea 监控哪个类型的VP个数不够。


       onstat –g ath 监控活动线程情况。


 


5 、描述IDS 的存储结构,分别写出如何采用raw device 和cooked file 进行表空间的创建。写出DBSPACE 的使用情况的监控方法。


   IDS的存储结构从上之下描述为:DBSPACE(CHUNK),TABLESPACE,EXTEND,PAGE。一个dbspace物理上由一个或者多个chunk组成,tablespace为一个表在dbspace上的存储空间的一个统称,tablespace以extend为单位进行扩展大小,一个extend由连续的page组成,page为IDS中最基本的I/O逻辑单位。


   Dbspace的创建分采用raw device和cooked file两种形式。创建方法类似,分别描述如下:


A、使用raw device创建DBSPACE


(1)、准备raw device


     ln –s /dev/rxy0f /dev/ifmx-raw-001


chmod 660 /dev/ifmx-raw-001


chgrp informix /dev/ifmx-raw-001


chown informix /dev/ifmx-raw-001


(2)、创建dbspace


    onspaces –c –d dbspacename –p /dev/ifmx-raw-001 –o 200000 –s 1000000


B、使用cooked file创建DBSPACE


(1)、准备cooked file


     touch /dev/ifmx-cook-001


chmod 660 /dev/ifmx-cook-001


chgrp informix /dev/ifmx-cook-001


chown informix /dev/ifmx-cook-001


(2)、创建dbspace


           onspaces –c –d dbspacename –p /dev/ifmx-cook-001 –o 200000 –s 1000000


   表空间的监控:可以使用onstat –d来查看表空间的使用情况。


 


6 、解释说明IDS 的逻辑日志、物理日志的作用,分别说明如何进行逻辑日志、物理日志的管理及监控?


   逻辑日志,用于记录系统中进行更新操作信息,包括DML,DDL语句。物理日志用于记录数据修改的前影信息。当系统发生故障时,可以利用逻辑日志物理日志进行恢复。


   逻辑日志的管理和监控:


   A、在onconfig文件进行初始化设置,LOGFILES用来设置逻辑日志的个数,LOGSIZE用来设置每个逻辑日志文件的大小。


   B、增加一个逻辑日志文件的方法:onparams –a –d logspace –s 100000


   C、监控逻辑日志的使用情况,onstat –l ,根据输出报告,分析逻辑日志的buffer是否设置的合理,同时可以监控到逻辑日志的当前使用情况。需要根据系统的实际情况,合理设置逻辑日志文件个数及大小的设置是否合理,一般大数据量情况下,每个逻辑日志文件大小设置为100M,个数可以根据情况设置。


   物理日志的管理和监控:


A、在onconfig文件中进行设置,当系统初始化时,使用了rootdbs,需要从rootdbs中分离,需要为物理日志单独设置dbspace。


B、使用如下命令改变物理日志的位置和大小:onparams –p –d logspace –s 1000000


C、使用onstat –l 命令查看物理日志的缓存使用情况。


  


7 、系统触发CHECKPOINT 的时机有哪些?发生CHECKPOINT 后系统会进行哪些操作?


         Checkpoint有两种类型:full checkpoint和fuzzy checkpoint。


         FULL checkpoint的触发时机有:


A、当使用ontape 或者ON-Bar 进行备份和恢复时;


B、当fast recovery 或者full recovery结束时;


C、当数据库服务器当前逻辑日志将要切换到下一个free日志,但这个free日志包含了最后一次checkpoint信息时;


D、当使用onmode –c 命令时;


E、 当数据库服务器正常shutdown时。


FUZZY checkpoint的触发时机有:


A、当系统中的checkpoint interval时间间隔后,并且这段时间内系统中至少有一个修改操作发生时;


B、系统物理日志75%被占用时;


C、当系统检测到下一个即将成为当前逻辑日志的逻辑日志文件中包含“最新checkpoint”信息时;


D、当执行一些系统管理任务时,比如:增加一个chunk或者dbspace等;


E、 当手工执行onmode –c fuzzy命令时。


当checkpoint产生后,系统将执行如下6个步骤的任务来完成一次CHECKPOINT。


Step 1:No Threads in Critical Section,用户线程不能进入关键区域;


Step 2:Physical Log Buffers Flushed to Disk,物理日志缓存刷新到磁盘;


Step 3:Modified Buffers Flushed to Disk,修改记录从内存中刷新到磁盘;


Step 4:CheckPoint Record is Writen,CHECKPOINT信息写入到逻辑日志中;


Step 5:Logical Log Buffer Flushed to Disk,逻辑日志缓存刷新到磁盘;


Step 6:Logically Empty the Physical Log,逻辑上情况物理日志。


 


8 、如何创建临时表空间,如何创建临时表,如何控制临时表的存储DBSPACE


         创建临时表空间的方法和创建普通的表空间类似,首先准备ROW DEVICE 或者COOKED FILE,再进行权限的管理chmod 660,然后使用如下命令进行添加表空间:


         onspaces –c –t –d tempdbs –p /dev/rdsk/device9 –o 10000 –s 500000


         创建临时表的方式有显示的和隐示的两种形式,显示的方式为:create temp table tabname(cols define);隐示的方式为:select * from tabname into temp tmptabname;


我们需要控制临时表的存储dbspace,若需要使用创建的临时表空间,则需要在创建临时表时使用选项:with no log。


 


9 、若采用周日进行全备份,周2 周4 进行增量备份的备份方案。请说明具体的操作步骤?若周3 系统发生故障,请说明如何利用备份进行恢复的步骤?


   备份方案:


      修改ONCONFIG文件中备份参数TAPEDEV, TAPEBLK和TAPESIZE,逻辑日志备份参数LTAPEDEV, LTAPEBLK和LTAPESIZE


      周日全备份,ontape –L 0


      周2周4增量备份,ontape –L 1


   系统恢复步骤:


      首先采用周日的全备份进行恢复到周日的时间点,ontape –r,然后采用周2的增量备份进行增量恢复到周2的时间点,再采用逻辑日志恢复到周3发生故障的时间点。


 


10 、例举出IDS10 ,11 的5 项以上的新特性。


         (1)、性能方面:


         A、可配置的页面大小,可以在ONCONFIG文件中进行不同页面大小的缓冲池的设置。通过降低数据页和索引页的IO操作次数提高存取效率。


         B、单个dbspace上的多个table fragments,降低了总的dbspace数目,分片表达式是针对同一个dbspace,提高了性能并简化了dbspace的管理。


         (2)、管理的增强


         A、ontape使用标准的I/O,可以备份到目录中;


         B、重命名dbspace;


         C、单用户模式,介入静止模式和在线模式之间的模式,DBA可以进行任何维护工作。


         D、SQL管理API


         (3)、安全的增强


         A、列级加密,内置加密函数


         B、安全环境检查,检查$INFORMIXDIR及它的目录权限,检查SQLHOSTS、ONCONFIG文件的权限;


    C、基于标签的访问控制


         (4)、可用性增强


         A、索引的变化,create index 和 drop index 在执行时可以不加独占锁;


         B、恢复表到指定的时间点,可以从0级备份中恢复一个表的部分或者全部数据到用户期望的时间点;


          (5)、开发功能增强


     A、查询的FROM 子句中的派生表


          B、索引自连接查询计划


     C、增加committed read隔离级别,增强了并发性


     D、跨服务器分布式操作中的增强数据类型,BOOLEAN,LVARCHAR


     E、新增SQL内置函数:比如:ADD_MONTHS(),NEXT_DAY,TRUNC(),SYSDATE()等,基本和ORACLE的内置函数一致,便于数据库之间的迁移。