informix的oninit命令运行来启动数据库,其中包含的初始化过程就挺值得研究,今天找到了详细描述这个过程的相关文档,记下来供自己参考:
数据库服务器初始化指的是两种活动: 共享内存初始化和磁盘空间初始化
共享内存初始化或者开启或启动服务器将建立数据库服务器共享内存的如下内容:内部表、缓冲区和共享内存通信区域。共享内存将在每次启动数据库服务器时初始化; 共享内存初始化对磁盘空间分配和布局没有影响,不会破坏任何数据。
共享内存初始化将执行快速恢复
磁盘空间初始化使用存储在配置文件中的值以在磁盘上创建根数据库空间的初始化块。当你初始化磁盘空间时,数据库服务器将自动初始化共享内存作为过程的一部分。磁盘空间将在第一次启动数据库服务器时初始化。之后她只在冷恢复期间或者DBA的请求下才初始化空间
警告下:当你初始化磁盘空间时,也就是在oninit后加上参数i,那么您将覆盖该磁盘空间上的所有内容,如果您初始化现有数据库服务器的磁盘空间,较早的数据库数据将不能访问并且他们实际上已经遭到破坏,除非有备份,否则数据已经丢失,这样看来,磁盘空间初始化只能在首次安装后使用。
以下是其具体处理过程 
共享内存初始化步骤:
处理配置文件
创建共享内存段
初始化共享内存结构
启动所有必需的虚拟处理器
进行必要的转换
启动快速恢复
启动检查点
文档配置更改
更新oncfg_servername.servernum文件
更新改待静默方式
删除临时表空间(可选)
设置强制的驻留(如果需要)
更改到联机方式并将控制权还给用户
如果smi表不是当前的,则更新这些表
监视每个检查点的最大用户连接数
磁盘空间初始化过程:
处理配置文件
处理共享内存段
初始化磁盘空间
启动所有必需的虚拟处理器
启动检查点更新oncfg_servername.servernum文件
更改到静默方式
设置强制的驻留(如果指定)
更改到联机方式将控制权还给用户
创建SMI表的sysmaster数据库
创建sysutils数据库
监视每个检查点的最大用户连接数