签到天数: 2090 天 连续签到: 2 天 [LV.Master]伴坛终老IIII
|
楼主 |
发表于 2009-6-25 14:05
|
显示全部楼层
informix实用程序
informix实用程序:onstat,onparams,ontape,dbschema,onspa informix实用程序:onstat,onparams,ontape,dbschema,onspaces,onmode,oninit
onstat 工具
onstat 命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取信息,报告当时的系统状况。通常onstat 命令不会进行磁盘I/O操作,也不会对系统资源加锁,所以它对系统性能的影响减少到最小。简言之,onstat是informix提供的一种交互式的系统监控工具。
onstat 的一些常用选项:
onstat -- 列出所有选项
onstat -i 设置进入交互模式
onstat - 显示运行模式和数据库引擎状态
onstat -g sub_option 运行多线索选项
onstat -r <value> 每隔<value>秒后重复选项
onstat -g act 显示系统中所有的活动线索
onstat -g ath -r 2 每隔两秒显示系统中所有的活动的线索
onparams
onparams -a -d logdbs -s 20000 建立日志文件(日志文件刚建立后onstat -l状态为A 即不可用。用ontape -s后才可以用)
onparams -d -l 1 -y 删除日志文件, 只中1为日志的文件number
被删除的日志文件不能是当前使用的日志文件,上面也不能有检查点。
可以使用onmode -l将当前文件移动到新建立的日志文件上。然后再用onmode -c做强制校验。这样以后就可以
删除原 来的日志文件了。
onparams -p -s 50000 -d phydbs -y 移动物理日志文件到新的dbspances上。 在phydbs上建立一个50000大小的chunks
物理日志改变只能在静态方式下进行
另外建立tmpdbs后要应用起来就要修改onconfig.cs文件 :
DBSPACETEMP tmpdbs # Default temp dbspaces
-------------------------------
ontape
ontape -a 自动备份, 备份完成后会停止(指对逻辑日志的备份)
ontape -c 连续备份 一直运行,所以要有专门的终端。要ctrl+c来进行中断。(指对逻辑日志的备份)
ontape -s 备份整个实例
ontape - A 设置数据库日志方式为ANSI
ontape - U 无缓冲日志
ontape - B 缓冲日志
ontape - N 不记录日志
ontape -s -L 0 完全备份 (0, 1, 2分别为完全,1级增量,2级増量)
1)零级(一级或二级)备份
$>ontape -s
$>ontape -s -L 0
$>ontape -s -L 1
$>ontape -s -L 2
2)逻辑日志备份
$>ontape -a
3)连续逻辑日志备份(日志文件满一个备份一个,你可以插盘磁带到磁带机上,让IDS自动备份)
$>ontape -c
4)备份恢复(对应零级备份或一级备份或二级备份)
$>ontape -r
5)备份恢复几个DBSPACE(一定要存在逻辑日志备份,否则物理恢复完后,还是不能用)
$>ontape -r -D dbs1 dbs2 。。。
6)配置HDR时使用的物理恢复
$>ontape -p
7)修改数据库日志模式
$>ontape -s -B db_name 修改为buffer_log
$>ontape -s -U db_name 修改为unbuffer_log
$>ontape -s -N db_name 修改为无日志模式
$>ontape -s -A db_name 修改为ansi logging模式,从这个模式无法改到其它模式,因此一般不要用该项。
另外,我们改完日志后需要做一个零级备份,这时我们可以将TAPEDEV设置为/dev/null ,然后再接着做,就可以了,但作完后一定要将该参数改回来,注意修改LTAPEDEV和TAPEDEV都不用重新启动数据库,改完存盘就能用了。
如果我们不想要逻辑日志备份,我们可以将LTAPEDEV设为/dev/null ,那么逻辑日志会满一个自动备份一个,不用我们去管理了。
-----------------------------
dbschema
例如:
1)导出数据库中所有的表结构到文件db.sql
$>;dbschema -d your_database -t all db.sql
2)导出数据库中所有的存储过程到文件db.sql
$>;dbschema -d your_database -f all db.sql
3)导出数据库中的所有对象(包含表,存储过程,触发器。。。)到文件db.sql
$>;dbschema -d your_database db.sql
4)导出数据库中一个表的结构到文件db.sql
$>;dbschema -d your_database_name -t your_table_name db.sql
5)导出一个存储过程定义到文件db.sql
$>;dbschema -d your_database_name -f your_procedure_name db.sql
6)如果导出更多的表的信息(EXTENT...)
$>;dbschema -d your_database_name -ss db.sql
7)导出数据库中对用户或角色的授权信息
$>;dbschema -d your_database_name -p all
$>;dbschema -d your_database_name -r all
DBSCHEMA 資料庫綱要工具INFORMIX-SQL Version 7.31.UC5
Copyright (C) Informix Software, Inc., 1984-1998
Software Serial Number AAC#J931199
用法:
dbschema [-t tabname] [-s user] [-p user] [-r rolename] [-f procname]
[-hd tabname] -d dbname [-ss] [filename]
-t表格名稱或 \\\"all\\\" 以選擇所有的表格
-s由該用戶所建立的別名,
或 \\\"all\\\" 以選擇所有的使用者
-ss 建立伺服器特定的語法
-p由該用戶所設定的存取權限,
或 \\\"all\\\" 以選擇所有的使用者
-r建立和授權給特定角色
或 \\\"all\\\" 表全部角色 : 不正確的 SE 選項
-f所儲存程序的名稱
或 \\\"all\\\" 以選擇所有已儲存的程序
-d資料庫名稱
檔案名稱是指用來儲存
由 dbschema 所產生的
SQL 敘述的檔案名稱.
-hd 一個指定表格的欄位, 一個特定的表格欄位
的直方圖的分佈
或 \\\"all\\ \" 以選擇所有的表格.
----------------------------------------------
onspaces
onspaces -c -d logdbs -p /home/informix/dbs/logdbs -o 0 -s 500000
-c 新建一个dbspace 其下:-d 指定dbspace名称, -p指定建立在哪个设备上 -s大小 -o偏移量
onspaces -c -d tmpdbs -t -p /home/informix/dbs/logdbs -o 0 -s 500000
建立临时dbspance
onspaces -a logdbs -p /home/informix/dbs/logdbsex -o 0 -s 100000
-a扩充原有的dbspace, 上面是指在原来的dbspan logdbs上加一个大小为100000
onspaces -d phydbs -p /home/informix/dbs/logdbs -o 0
-d删除一个chunck (从dbspanc上面)
onspaces -d tmpdbs
删除一个临时dbspance
---------------------------------------
onmode
onmode -ky 完全关闭数据库 (y是对一切回答为yes,去掉提示)
onmode -sy 宽限的切换到静态方式
onmode -uy 马上切换到静态方式
onmode -my 从静态方式切换到联机方式
说明:联机方式:用户可以连接 (可以用onmode -uy切到静态, 用onmode -ky关闭)
静态方式:用户不可以连接,但可以使用实用程序进行访问IDS (比如onstat) (可以用onmode -m切换到联机)
完全关闭:没有启动服务,什么都不能访问(可以用oninit切换到联机)
onmode -z 断开指定用户的连接
用onstat -u可以看到连接的用户,有一个sessid, 用onmode -z sessid 指定到这个id即可断开指定用户的连接
我发现在informix刚启动时,onstat -u已经有了用户,但并不代表是外面的连接 。在onstat -u中有一列Flags,后面要去看一下什么意思
onmode -l 从当前日志切换到下一个日志 (onstat -l可以看出效果)
onmode -c 强制校验 检查点。 onmode -l后,有可能上一个日志中包含检查点,onmode -c可以强制校验,把检查点转到当前日志
如果一个日志文件中有检查点(标志中有L)那么这个日志不可以备份,不可以删除。所以要做上面的两个操作,就要先onmode -c
---------------------------------
oninit 启动informix服务
oninit -iy 启动并初始化rootdbs, 会删除rootdbs中的所有数据。所以数据库建立后就不能使用oninit -iy. 除非做了备份(就像格式化磁盘)
oninit -sy 启动到静态方式
oninit -V 显示版本信息
============================================================================
语法 oninit [-s] [-i] [-p] [-y]
oninit 将系统从off-line模式变为on-line模式
oninit -s 将系统从off-line模式变为quiescent模式
oninit -i 初始化系统
oninit -p 在共享内存初始化时,不搜索,删除临时表
oninit -y 对提示自动回答yes
oninit -v 加入这个选项显示oninit处理过程
oninit-- 键入此命令可以获得使用帮助
oninit命令用来改变系统的运行模式。其中-i选项用于初始化系统的root dbspace。注意,root-dbspace一旦被初始化,则等于整个数据库系统被初始化。
如果用户希望在计算机启动时自动自动启动动态服务器系统,请在系统初启文件(在许多UNIX系统中为/etc/rc)中加入oninit命令(不加任何选项)。
onmode 命令
语法: onmode [-k] [-m] [-s] [-u] [-y]
onmode -k 执行立即shutdown,将系统变为off-line模式
onmode -m 将系统从quiescent模式变为on-line模式
onmode -s 执行graceful shutdown
onmode -u 执行immediate shutdwon
onmode -y 对提示自动回答yes
onmode 命令同样用于改变动态服务器的运行模式。除了上述选项外,onmode还有很多与改变系统运行模式无关的选项。
利用onspaces命令创建数据空间
语法: onspaces -c [-b] [-d] [-z] [-m] [-o] [-p] [-s] [-t]
-c 创建blobspace或dbspace
-b blobspace blobspace名
-d dbspace dbspace名
-g page size blobpages大小
-m mirror 镜像设备设的全路径名和偏移量(KB)
-o offset 偏移量(KB)
-p pathname chunk设备的全路径名
-s size dbspace大小(KB)
-t 创建临时dbspace
onspaces 命令用于创建数据空间、临时空间和存储blob数据的空间(blobspace)。键入onspaces--可以获得该命令的联机帮助。利用 onstat -D或onstat -d可以看到系统中的关于数据空间的重要信息。包括:chunk的状态、空闲、每一chunk读写的次数。系统中可能包括的多个系统空间,特别当进行数据分片后,我们建议用户最好能利用命令行来创建数据空间。
可以利用如下命令创建数据空间:
onspaces -c -d datadbs1 -o 0 -p /dev/rrvol3 -s 60000
可以用如下的方式创建临时数据空间:
onspaces -c -d tempdbs1 -t -o 0 -p /dev/rrvol5 -s 80000
在系统中,临时数据空间非常重要,通常情况下,应将多个临时数据空间分布在独立的物理设备上。
利用onspaces命令删除数据空间
增加或删除chunks
语法: onspaces -a -d [-m] [-o] [-p]
-a spacename 为dbspace新增chunk
-m pathname 镜像设备的全路径名和偏移量(KB)
-o offset 主设备的偏移量(KB)
-p pathname chunk设备的全路径名
-s size chunk大小
-d spacename 删除chunk
-o offset chunk设备的偏移量(KB)
onspaces不仅能创建数据空间还能删除数据空间、临时数据空间或存储blob数据的空间。在删除数据空间时,必须首先保证它是无用的,即该数据空间上无数据库或表。
如需删除数据空间,请键入如下命令:onspaces -d dbspace_name /blobspace_name
数据空间最初由一个chunk(first chunk)构成,一旦其空间用尽,用户必须追加chunk为了提高系统性能,用户在为数据空间分配chunk 时需要计算以保证它的大小能适应未来的需要,否则在追加chunk的时候,它与先前的chunk在物理上不一定相邻,导致增加读取数据的时间。关于如何计算空间需求将在以后章节中阐述。利用onspaces命令可以对数据空间增加或者删除chunk,除此之外,利用该命令还可以完成如下任务:启动镜像、中止镜像或改变chunk的状态。
例如可以用如下命令为数据空间增加chunk:
onspaces -a -d datadbs1 -0 60002 -p /dev/rrvol3 -s 60000
再如可以用如下方式从数据空间中删除chunk:
onspaces -d datadbs1 -o 60002 -p /dev/rrvol3 -s 60000
onparams 命令
语法:onparams -a -d -p [-d] [-s] [-l]
-a 新增逻辑日志
-d dbspace 指定日志存放的dbspace
-s size 新增逻辑日志的大小(KB)
-d 删除逻辑日志
-l logid 指定删除一个逻辑日志
-p 改变物理日志
-d dbspace 新物理日志存放的dbspace名
-s size 物理日志大小(KB)
系统在初始化时自动地在root dbspace中创建逻辑日志和物理日志。在DBMS系统中,尤其在OLTP环境下,数据库的操作非常频繁,日志中必须记录大量的信息,所以用户最好能将多个日志文件分布在不同的设备上。有一种非常简单的方法: 即按所需大小创建逻辑日志,同时创建一个较小的物理日志,系统初始化完毕后,再将物理日志移至其它设备。关于如何确定所需的物理日志的大小,将在以后的章节详述。 利用onstat -l命令可以看出系统中所有新增的逻辑日志被标识为A。这些逻辑日志只有在系统进行归档后才会真正被使用。为了激活这些逻辑日志有一种简单的方法:执行一次“伪”归档。具体步骤如下:将参数TAPEDEV设置为/dev/null然后运行一次ontape -s。也可以执行onbar -F命令。由于伪归档并不真正归档系统信息,所以千万要适时地对系统进行真正的归档操作。
只有在逻辑日志真正无用时才能将其删除。利用onstat -l 可以看出所有的空闲日志被标记为F。如果逻辑日志中包含事务回滚或快速恢复所需的信息,该逻辑日志是不能被删除的。利用onstat -l命令可以看出接受当前事务的日志被标记为 C。如果逻辑日志包括最后一个检查点记录,它也是不能被删除的,只有当检查点记录被写入下一个日志忠并且上一个日志被备份后,该日志才能被删除。利用 onstat -l命令可以看出包含最后一个检查点记录的日志被标记为L。用户可以利用onmode -c命令强制写检查点记录直至最后一个检查点记录被写入所要求的日志为止。
系统监控界面
sysmaster数据库在系统初始化时自动创建
数据库中包括指向系统共享内存结构数据字典信息
提供瞬时的系统性能和状态信息
提供SQL界面了解数据字典信息
允许管理员将系统管理工作自动化
用于执行重复性的监控任务
系统监控界面(system Monitoring Interface --SMI)是一种基于SQL的系统工具,用户通过SMI可以非常方便地获取系统信息。系统在初始化时,自动地在root dbapace创建sysmaster系统数据库。每一系统包括一个sysmaster数据库,该数据库中的大部分表为虚表,是指向共享内存中数据结构的指针。利用SMI可以自动监控系统,特别是在执行重复任务时。
sysmaster数据库是只读的,即不允许对其进行INSERT UPDATE,或DELETE操作。所有用户都拥有对该数据库的查询权限。
在系统初始化后,用户一定要注意检查sysmaster数据库是否建立成功。创建sysmaster数据库的信息都保存在消息日志文件中(online.log)请注意由于所有的DDL语句都将被记录在日志中,所以一定要在日志文件中留出足够的空间以保证创建sysmaster所需。
sysmaster数据库模式记录在$INFORMIXDIR/etc/sysmaster.sql文件中。
oncheck 命令
检查动态服务器磁盘上的数据结构
定位并修补损坏的索引和数据
有磁盘I/O操作
一些操作在处理时将在表上加锁
oncheck命令用于修复磁盘上损坏的索引和数据页,该命令也可用于检查并打印系统的数据结构。在使用oncheck时一定要当心,因为改命令的某些选项会对表加共享锁,例如:oncheck -pt
为防止对系统的损坏,系统会对所有共享内存中的数据进行一次一致性检查。一旦发现数据页出现一致性错误或发现索引错误,系统将把问题和可能的解决方案(利用oncheck)写入消息日志文件,并返回isam错误代码105。
如果发现一致性错误信息,用户应该立即关闭系统并按消息日志文件中的提示运行oncheck。如果oncheck运行失败,则应尝试卸出表再重新装入;如果是索引得问题,则应先删除索引再重建之。如果所有这些步骤都失败了,只有根据原有的系统归档备份来恢复系统。
下面的命令可以提供extend信息: oncheck -pe |
|