频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Informix TRAIN 文档详解(3)

来源:互联网 作者:2 出处:巧巧读书 2006-11-17 进入讨论组
访问地址 http://www.qqread.com/informix/v278419.html

  四、数据库服务器系统的管理

  通过三中的实践,用户可以建立起一个最初步的数据库服务器系统,它有一个数据库空间Dbspace,该数据库空间被称作rootdbs。rootdbs有一个数据存储块chunk。数据库服务器系统的定义、用户数据库和数据库日志都存放在这个chunk中。

然而对于一个实际的数据库应用系统,希望数据库服务器系统的定义、用户数据库和数据库日志分别存放在不同的数据空间中,以达到比较理想的运行效率和方便简洁的数据库系统管理。本章中我们将讨论如何为一个数据库服务器系统增加一个数据库空间Dbspace和如何为一个数据库空间增加一个数据存储块chunk。

  1、增加数据库空间Dbspace

  在自定义Dbspace前,用户必须为用户自定义的Dbspace定义一个数据储存块Chunk,然后启动onmonitor,用Dbspaces中的Craete将该Chunk赋予用户自定义的Dbspace。

  例如在一个SCOUNIX应用系统中,用户需要为其应用数据库系统定义一个数据库空间Dbspace,其名字为workdbs1,并且这个Dbspace的第一个Chunk的大小为100MB,其名字为workdbs1_primary。现在用户决定将workdbs1_primary定义在/dev/rdsk/0sa所对应的磁盘空间上,环境变量INFORMIXDIR=/usr/informix。步骤如下:

  1.1注册到root,

  #cd/usr/informix

  #ln/dev/rdsk/0saworkdbs1_primary

  #chowninformixworkdbs1_primary

  #chgrpinformixworkdbs1_primary

  #chmod660workdbs1_primary

  #exit

  1.2注册到informix,

  $onmonitor

  选择Dbspaces后按Enter键,再选择Create,屏幕上显示出增加Dbspace的格式。

  用户在DbspaceName中输入workdbs1,在Mirror中输入Y。在PRIMARYCHUNKINFORMATION下面的FullPathname中输入/usr/informix/workdbs1_primary,在Size中输入100000。MIRRORCHUNKINFORMATION下面的FullPathname为镜像数据存储块的全路径名,在这里没有输入。然后按ESC键,数据库服务器系统就将用户自定义的数据库空间workdbs1加入rootdbs的管理区(保留页)中。OnLine动态服务器7.1允许用户定义临时数据库空间Tempdbs,如果某一个数据库空间是临时数据库空间则置Temp为Y,否则为N。当某一个数据库空间为临时数据库空间时,它同时需要在共享内存的设置屏幕中的TempDbspace有正确的描述。

  PressESCtobuildanewdbspace.

  PressInterrupttocanceltheoptionandreturntotheDbspacemenu.

  PressF2orCTRL-Fforfieldlevelhelp.

  CREATEDBSPACES

  DbspaceName[workdbs1]Mirror[N]Temp[N]

  PRIMARYCHUNKINFORMATION:

  FullPathname[/usr/informix/workdbs1_primary]

  Offset[]KbytesSize[100000]Kbytes

  MIRRORCHUNKINFORMATION:

  FullPathname[]

  Offset[]

  或者通过命令形式增加Dbspace

  $onspaces-cspacename[-t]-ppathname-ooffset-ssize[-mpathoffset]

  1.3 在用户自定义的数据库空间中建立数据库

  启动isql或dbaccess,选择Query-language后,再选择New项,输入

  CREATEDATABASEstoresINworkdbs1WITHBUFFEREDLOG

  然后按ESC,运行这个SQL命令,一个带BUFFERED日志的数据库stores建立在数据库空间workdbs1中。启动tbmonitor或onmonitor,用户可以在Status中的Database项中看到自己所定义的数据库。

  2、增加数据储存实体Chunck

  数据库空间Dbspace仅仅是数据库存在的逻辑空间,数据库存在于真正的物理空间是数据储存块Chunk,因此它的空间总是有限的,当数据储存接近它的限度时,数据库管理员就要考虑为这个数据库空间增加一个数据储存块Chunk。增加一个数据存储块,其做法如下:

  2.1注册到root;

  #cd/usr/informix

  #ln/dev/rdsk/1saworkdbs2_primary

  #chowninformixworkdbs2_primary

  #chgrpinformixworkdbs2_primary

  #chmod660workdbs2_primary

  #exit

  2.2注册到informix,

  $onmonitor

  选择Dbspaces菜单后,再选择Add_chunk,屏幕上显示出当前系统中所有的数据库空间,移动光标上下键,将选中项移到需要增加Chunk的Dbsapce上,按Ctrl-B键,在屏幕的FullPath-name中输入/usr/informix/workdbs2_primary,并在Size项中输入100000,然后按ESC键。于是数据库服务器系统为数据库空间workdbs1增加一个数据存储块workdbs2_primary的定义。我们可以在Status菜单的Spaces选项中看到自己刚才为workdbs1定义的数据存储块workdbs2_primary。

  PressESCtobuildanewdbspace.

  PressInterrupttocanceltheoptionandreturntotheDbspacemenu.

  PressF2orCTRL-Fforfieldlevelhelp.

  ADDCHUNKS

  DbspaceName[workdbs1]Mirror[N]Temp[N]

  PRIMARYCHUNKINFORMATION:

  FullPathname[/usr/informix/workdbs2_primary]

  Offset[]KbytesSize[100000]Kbytes

  MIRRORCHUNKINFORMATION:

  FullPathname[]

  Offset[]

  或者通过命令形式增加chunk

  $onspaces-aspacename-ppathname-ooffset-ssize[-mpathoffset]

  3、日志管理

  日志是数据库服务器保证当数据库或Unix或主机服务器系统故障恢复后,用户数据库快速复原的安全机制。数据库服务器的日志有两种:物理日志PhysicalLog和逻辑日志LogicalLog。当用户需要取数据而该数据又不在共享内存时,数据库服务器将它从磁盘读出并放入共享内存。这时,如果用户需要修改该记录,数据库服务器在该记录尚未被修改前,将该记录所在的数据页拷贝到物理日志,然后数据库服务器响应用户的修改要求,并将数据修改的轨迹写入逻辑日志。当用户想要滚回操作时,并且在数据修改的过程中数据库服务器没有做过Checkpoint,数据库服务器将物理日志拷贝回该数据页,如果在数据修改的过程中数据库服务器已经做过Checkoint,数据库服务器将根据数据修改时记录在逻辑日志中的数据变化轨迹来恢复原来的数据。不过大家要知道这种机制只有在用户数据库是带日志的情形下才会起作用,由于需要比不带日志的数据库多写日志文件,因此它的效率会低于不带日志的数据库。但是一旦数据库服务器非正常关闭,在后一次启动数据库服务器的时候,数据库服务器会根据上次系统非正常关闭时留下来的日志文件来恢复数据的一致性,这种安全机制是以牺牲数据库操作效率为代价的。

  物理日志保存数据在修改前的映像,一般情况下它占整个日志空间尺寸的1/4,当数据储存实体空间增加后,日志空间的尺寸也需要调大。改变物理日志空间的大小可使用onmonitor工具包,启动onmonitor,选择Parameters菜单项后,再选择Physical-log,按回车,将物理日志的尺寸设置成需要的值,同时也可以将物理日志移到指定数据库空间中。

  PressESCtoaddphysicallog.

  PressInterrupttocanceltheoptionandreturntotheParametersmenu.

  PressF2orCTRL-Fforfieldlevelhelp.

  ADDINGPHYSICALLOG

  PhysicalLogSize[5000]Kbytes

  DbspaceName[rootdbs]

  或者通过命令形式改变物理日志文件的大小与位置:

  $onparams-p-ddbspace_name-sphy_log_size

  逻辑日志保存数据在修改后的映像,一般情况下它占整个日志空间尺寸的3/4。逻辑日志空间的尺寸为逻辑文件尺寸与逻辑日志文件个数的乘积。逻辑日志文件的个数不得少于3个。

  启动onmonitor,如果需要增加逻辑日志文件数选择Parameters菜单项后再选择Add-log,如果需要减少逻辑日志文件数选择Parameter菜单项后再选择Drplog。增加逻辑日志时只需在键盘上输入逻辑日志文件将加入的数据库空间名。如果用户需要将全部逻辑日志移到指定的数据库空间中去,则需要现在指定的数据库空间中加入足够的逻辑日志文件,然后作一次实际的0级备份和逻辑日志的自动备份(这两项备份将在下一节中讲述),最后将原来的数据库空间中逻辑日志文件删除。

  PressESCtoaddalogicallog.

  PressInterrupttocanceltheoptionandreturntotheParametersmenu.

  PressF2orCTRL-Fforfieldlevelhelp.

  ADDINGALOGICALLOG

  LogicalLogSize[5000]Kbytes

  DbspaceName[rootdbs]

  或者通过命令形式改变逻辑日志文件的大小,位置与个数:

  $onparams-a-ddbspace_name-slog_size(增加逻辑日志)

  $onparams-d-llog_id(删除逻辑日志)

  4、数据备份和恢复

  OnLine动态服务器7.1为数据库管理员提供一种联机的增量备份工具,在命令行时,数据库管理员可以用ontape来作数据备份和逻辑日志备份。还提供了一个具有交互界面和菜单驱动数据库备份工具onarchive。

  OnLine动态服务器7.1提供的增量的数据备份,它分成三级,即0级(Level0)、1级(Level1)和2级(Level2)。0级备份为数据库空间的全备份,1级备份是最近一次的0级备份以来的被修改数据备份,2级备份为最近一次0级备份或1级备份以来被修改数据的备份。在连续的两次同一级备份中,后一个备份将备份前一个备份已经备份了的数据,例如昨天和今天都做2级备份,则今天的备份必然包含昨天备份的数据。一次在同一个时候,数据库管理员所保留的数据备份磁盘最多应为三个,即0级备份带、1级备份带和2级备份带。一套完整系统备份还应该包括逻辑日志备份带。

  1建立数据备份

  OnLine动态服务器7.1的命令行数据备份的方法使用ontape命令,数据备份的参数选项为-s,$ontape-s

  这时数据库服务器会提示你将作哪一级的数据备份,你只需在键盘上输入0、1或2,然后按回车即可。

  2恢复数据备份

  OnLine动态服务器7.1的数据恢复既可以在offline状态下进行也可以在online状态下进行。

  OnLine动态服务器7.1采用ontape来恢复数据,在命令行状态下,数据恢复的选项参数为-r, $ontape-r

  3数据备份计划

  有了一个良好的备份和恢复的工具以后,数据库管理员如何用好这个工具将是非常重要了。能否用最少量的磁带、用最短的备份时间来保存最新的时间备份,其关键还在于数据备份的规划。例如这样一个数据备份规划,每月的第一天作0级数据备份,每周的第一天作1级数据备份,每天作2级数据备份,当一天中同时需要作多个数据备份时,只做等级较低一级的数据备份。

  5、数据储存实体镜象管理

  数据储存块Chunk的镜像为数据库服务器系统的高可靠性和高可用性提供了必要的条件。数据储存块的镜像保证了数据库服务器系统在一部分数据磁盘或磁盘控制器故障的时候,数据不受损失和数据库服务器系统的继续运行。

  1为数据储存实体增加镜像实体

  数据储存块Chunk的镜像必须首先在定义该实体所在的数据库空间Dbspace是镜像的,也就是说如果整个数据库空间Dbspace没有定义成镜像的话,那么组成这个Dbspace的数据存储块Chunk也就不能作镜像。

  1.1数据库空间首先被定义为镜像

  这就需要在定义rootdbs和在增加Dbspace时将该Mirror定义成Y。那么对于那些在定义和在增加数据库空间Dbspace时没有定义Mirror为Y的情况怎样改成允许Mirror呢?这时需要数据库管理员首先将数据库服务器系统关闭,修改$INFORMIXDIR/etc/onconfig中的MIRROR。当数据库服务器系统没有被定义为镜像的系统中,该项为0,而被定义为镜像的系统中,该项为1,因此对于那些需要为没有定义成镜像的数据库服务器系统作数据库空间镜像时,数据库管理员必须首先将该项改成1。

  1.2构造镜像

  启动onmonitor,选择Dbspace菜单中的Mirror项打开数据库服务器系统镜像的开关。再选择同一菜单中的Status选项,这里列出了所有的数据库空间的镜像情况,刚才增加镜像的数据库空间的状态为X,说明这个数据库空间Dbspace增加了新的镜像数据存储块。移动上下光标键,将选中项移到Mirror为X的行,按Ctrl-B,管理员可以看到原数据储存块的Status为PO,而刚才增加的镜像数据存储块的Status为MD,标识该镜像实体还没有激活。移动上下光标键,将选中项移到刚才增加的镜像数据存储块上,按Ctrl-B,这时数据库服务器系统自动进入recovery状态,在这个状态下,数据库服务器系统将完成将原数据存储块中信息拷贝到镜像数据存储块的操作。等到全部操作结束,数据库管理员完成了为一个数据库服务器系统增加镜像的工作。

  或者通过命令形式构造镜像。 $onspaces-mspacename-ppath-ooffset-mpathoffset[-y]

  2 恢复损坏的数据储存实体和镜像实体

  当镜像中一对实体之一出现故障时,数据库服务器系统允许继续工作的,不必立即重构镜像。数据库管理员在一个适宜时候对这对实体重构镜像。恢复损坏的镜像,需要首先确认实体所对应的磁盘介质是否已经恢复。

  当更换了实体对应的磁盘介质后,需要操作系统上重新定义这个磁盘介质。在一般情况下,用户所定义的数据储存实体和镜像实体的名字是逻辑的,因此只要重新将这个设备连接到原来的逻辑名字即可。对于那些在数据库服务器系统中直接定义物理设备名为数据存储块的用户,则必须把新设备定义成原来损坏的设备名。

  启动onmonitor,在Dbspaces菜单中选择Status项,这里列出了所有在数据库服务器系统中定义的数据库空间Dbspace的状态,可以看到镜像损坏的数据库空间的Mirror项为M*。移动上下光标键,将选中行移动改行,按Ctrl-B。这时管理员可以看到有损坏的数据存储块的Status项为PD或MD,前者表示原数据储存实体损坏,而后者表示数据镜像实体损坏。

  PressESCtoreturntotheStatusMenu.

  Movearrowkeystomovethecursor

  CHUNKSFORaccount

  ChunkChunkPagesPagesFullPathnameofChunkStatus

  idOffsetInChunkused

  105000025000/usr/informix/workdbs1_primaryPO

  205000050000/usr/informix/workdbs1_mirrorMD

  移动上下光标键,将选中行移至损坏的数据存储块上(/usr/informix/workdbs1_mirror),按Ctrl-B。这时数据库服务器系统自动进入recovery状态,Status为MR,在这个状态下,数据库服务器将完成这个数据库空间表的两个数据存储块的镜像重构的操作。完成这个操作后,数据存储块/usr/informix/workdbs1_mirror的状态便从MR变成MO状态。

  这样,数据库管理员完成了对损坏数据储存实体或数据镜像实体中数据的重构。

更多文章 更多内容请看informix专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章