Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427120
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-17 22:15:07

数据库系统

系统的启动和关闭

 

1)系统的启动

启动数据库管理器:

$ db2start

启动管理服务器:

$ db2admin start

2)系统的关闭

检查是否存在数据库的应用程序连接:

$ db2 list applications

如果存在,就强制断开。

$ db2 force application all

关闭数据库管理器:

$ db2stop

关闭管理服务器:

$ db2admin stop

 

2. 系统运行日志文件的检查

 

DB2系统有两个运行日志文件,确省存放在目录:sqllib/db2dump/下,需要每天检查、定期备份并手工清除其内容:

1)通知日志文件(notification log file):{instance_name}.nfy

2)诊断文件(diagnostic file):db2diag.log

另外,此目录下还会存在一些dump文件,是由于事务、系统错误而生成的内存映像,需要定期备份后删除。

 

3. 系统运行状况检查

 

管理员要随时关注数据库系统的运行。对DB2系统,管理员可以从实例和数据库状态、用户连接、磁盘空间使用等多个方面,检查系统的运行状况。

1)系统版本、实例定义和状态

显示当前DB2系统的版本号和补丁号:

$ db2level

显示操作系统中建立的所有实例名称:

$ db2ilist

显示当前操作的实例名称:

$ db2 get instance

显示当前实例是否处于活动状态:

$ db2_local_ps

$ ps -ef | grep {user_name}

$ ipcs -a | grep {user_name}

显示节点定义及相关信息:

$ db2 list node directory

2)系统配置

显示数据库管理器配置:

$ db2 get dbm cfg

显示管理服务器配置:

$ db2 get admin cfg

显示数据库配置:

$ db2 get db cfg for {database_name}

显示概要文件注册表设置:

$ db2set –all

显示操作系统环境设置:

$ env vi db2profile

3)数据库的定义和运行状态

显示数据库定义及相关信息:

$ db2 list db directory

显示当前被打开的数据库:

$ db2 list active databases

显示数据库的状态:

$ db2 get db cfg for {database_name} | grep “Backup pending”

$ db2 get db cfg for {database_name} | grep “Database is consistent”

$ db2 get db cfg for {database_name} | grep “Rollforward pending”

$ db2 get db cfg for {database_name} | grep “Restore pending”

显示当前用户连接和状态:

$ db2 list applications

$ db2 list applications show detail

显示数据库缓冲池定义:

$ db2 "select * from syscat.bufferpools"

4)表空间、容器的定义和空间使用

显示表空间、容器的定义:

$ db2 list tablespaces

$ db2 list tablespace containers for {tablespace_id}

显示表空间、容器的空间使用:

$ db2 list tablespaces show detail

$ db2 list tablespace containers for {tablespace_id} show detail

如果使用SMS表空间,用下列命令决定是否有可用空间:

$ df –k

5)数据库日志的定义和空间使用

$ db2 get db cfg for {database_name} | grep LOGRETAIN

$ db2 get db cfg for {database_name} | grep USEREXIT

$ db2 get db cfg for {database_name} | grep LOGPRIMARY

$ db2 get db cfg for {database_name} | grep LOGSECOND

6)表和索引定义检查

显示数据库中的用户表:

$ db2 list tables for user

显示表的定义和结构:

$ db2 describe table {table_name}

$ db2 describe table {table_name} show detail

显示表上索引的定义和结构:

$ db2 describe indexes for table {table_name}

$ db2 describe indexes for table {table_name} show detail

可以使用db2look工具,将所有数据库对象的定义和结构导出,进行查看。

 

4. 系统性能状况分析

 

管理员可以根据需要,使用以下方法,收集DB2数据库系统的运行数据,以确定系统性能瓶颈:

获取整个数据库管理器的运行统计信息:

$ db2 get snapshot for dbm > {output_file}

获取所有数据库的运行统计信息:

$ db2 get snapshot for all databases > {output_file}

获取所有应用程序的运行统计信息:

$ db2 get snapshot for all applications > {output_file}

获取所有缓冲池的运行统计信息:

$ db2 get snapshot for all bufferpools > {output_file}

获取单个数据库的运行统计信息:

$ db2 get snapshot for database on {database_name} > {output_file}

获取单个数据库中所有应用程序的运行统计信息:

$ db2 get snapshot for applications on {database_name} > {output_file}

获取单个数据库中所有表的运行统计信息:

$ db2 get snapshot for tables on {database_name} > {output_file}

获取单个数据库中所有表空间的运行统计信息:

$ db2 get snapshot for tablespaces on {database_name} > {output_file}

获取单个数据库中所有锁的运行统计信息:

$ db2 get snapshot for locks on {database_name} > {output_file}

获取单个数据库中所有缓冲池的运行统计信息:

$ db2 get snapshot for bufferpools on {database_name} > {output_file}

获取单个数据库中所有动态SQL语句的运行统计信息:

$ db2 get snapshot for dynamic sql on {database_name} > {output_file}

需要时,可以复位统计信息,重新开始以上的信息收集:

$ db2 reset monitor all

 

5. 系统配置的改变

 

DB2系统不允许用户直接修改系统的各种配置文件。要改变系统的各种配置,管理员可以使用以下方法:

改变数据库管理器参数设置:

$ db2 update dbm cfg using {parameter_name} {parameter_value}

改变管理服务器参数设置:

$ db2 update admin cfg using {parameter_name} {parameter_value}

改变数据库参数设置:

$ db2 update db cfg for {database_name} using {parameter_name} {parameter_value}

改变概要文件注册表参数设置:

$ db2set {variable_name}={variable_value}

改变数据库缓冲池参数设置:

$ db2 alter bufferpool {bufferpool_name} size {size_value}

 

6. 数据库日志维护

 

DB2系统支持日志的归档和非归档两种模式,确省情况下数据库处于非归档日志模式。可以通过设置LOGRETAINUSEREXIT这两个数据库配置参数中的任何一个,改变数据库日志模式为归档模式:

$ db2 update db cfg for {database_name} using logretain recovery

$ db2 update db cfg for {database_name} using userexit yes

在非归档模式下,管理员不需要维护数据库日志;在归档模式下,管理员需要归档数据库日志,可以采用两种归档方式:自动归档和手工归档。

1)自动归档

设置USEREXIT数据库参数,数据库就自动归档日志。在设置该参数前,用户需要提供一个应用程序,命名为db2uext2,存放在sqllib/bin目录下。在日志文件被写满后,系统自动执行该程序,将这个日志文件从当前目录移动到其它位置进行保存。

2)手工归档

管理员需要定期归档被删除日志目录下不再被系统需要的日志文件,从而保证日志目录下有足够的空间,系统能够在需要时,产生新的日志文件。按照以下的步骤,手工地归档日志文件:

查看当前使用的日志文件目录(参数:path to log files)以及系统仍旧在使用的第一个活动日志文件(参数:first active log file)。

$ db2 get db cfg for {database_name}

假定参数first active log file = S0015555.LOG。这说明当前第一个活动日志文件是S0015555.LOG,由于日志文件的名字被顺序编号,因此在这之前的任何日志文件都可以被归档,然后从当前目录下删除。

使用操作系统命令,将S0015555.LOG之前的所有日志文件拷贝到其它地方进行归档。

从当前目录下删除S0015555.LOG之前的所有日志文件。

$ db2 connect to {database_name}

$ db2 prune logfile prior to S0015555.LOG

$ db2 connect reset

 

7. 备份和恢复处理

 

管理员按照规划、定期地备份数据库。备份信息越完整,在系统故障时就越容易恢复。对DB2系统,除数据库备份之外,其备份还可以包括:运行环境备份、数据库对象的SQL语句定义备份。

1)实例运行环境备份

对实例的运行环境,需要备份:数据库管理器配置、数据库配置、概要文件注册表(profile registry)、磁盘空间的使用和操作系统环境设置。

$ db2 get dbm cfg > {output_file}

$ db2 get db cfg for {database_name} > {output_file}

$ db2set –all > {output_file}

$ db2 list tablespaces show detail > {output_file}

$ db2 list tablespace containers for {tablespace_id} show detail > {output_file}

$ cp .profile {output_file}

$ cp db2profile {output_file}

2)用户创建数据库对象的SQL语句定义备份

使用db2look工具,可以基于整个数据库、也可以基于某个用户,将有关的数据字典信息存放在文本文件中。

$ db2look -d {database_name} -e -o {output_file}

$ db2look -d {database_name} -u {user_name} -e -o {output_file}

3)数据库备份

数据库备份需要在数据库管理器启动后进行。可以在备份前,检查数据库结构的完整性;在备份完成后,检查备份的正确性。

备份前,检查数据库结构是否正确。

$ db2dart {database_name}

根据需要,选用不同的备份方式。

数据库的脱机备份:

$ db2 backup database {database_name} to {backup_path}

数据库的联机完整备份:

$ db2 backup database {database_name} online to {backup_path}

数据库的联机表空间备份:

$ db2 backup database {database_name} tablespace ({tablespace_name}) online to {backup_path}

数据库的联机增量备份:

$ db2 backup database {database_name} online incremental to {backup_path}

在备份完成后,检查备份是否可用。

$ db2ckbkp {backup_file}

4)数据库恢复

数据库恢复需要在数据库管理器启动后进行。可以在恢复前,检查可用的数据库备份,再根据数据库的归档日志模式,决定恢复方式。

显示可用的备份。

$ db2 list history backup all for database {database_name}

根据日志的归档模式,选用恢复方式。

非归档模式下的数据库恢复:

$ db2 restore database {database_name} from {backup_path}

归档模式下,整个数据库的恢复:

$ db2 restore database {database_name} from {backup_path}

$ db2 rollforward database {database_name} to end of logs and complete

归档模式下,单个或者多个表空间的恢复:

$ db2 restore database {database_name} tablespace {tablespace_name} from {backup_path}

$ db2 rollforward database {database_name} to end of logs and complete

 

8. 数据库对象统计信息的维护

 

确定何时、对那些表和索引执行何种程度的统计信息收集,是管理员的工作职责。在DB2系统中,如果重新生成了统计信息,就需要手工、重新生成程序中静态SQL语句的程序包。系统不会在运行过程中自动地生成静态SQL语句的执行计划。

1)管理员根据需要,对表、索引进行不同程度的统计信息收集。

对表进行信息统计,不进行字段列上的数值分布统计:

$ db2 runstats on table {table_name}

对表进行信息统计,在指定字段列上进行数值分布统计:

$ db2 runstats on table {table_name} with distribution on columns({column_name},…)

对表上索引进行信息统计:

$ db2 runstats on table {table_name} for indexes all

对表上索引所使用的字段列进行信息统计:

$ db2 runstats on table {table_name} on key columns and indexes all

2)在统计信息收集完成后,重新生成静态SQL语句的执行包。

使用预编译时生成的绑定文件:

$ db2 bind {bind_file_name}

或者,由系统根据数据库中的现有程序包,重新进行生成:

$ db2rbind {database_name} /l {log_file}

 

9. 数据的磁盘空间整理

 

在对数据的磁盘空间进行整理之前,最好能够确定那些表、索引需要这些操作。这样可以做到有的放矢,避免浪费系统资源。DB2系统通过reorgchk工具,来找出数据库中需要重组的用户表、索引:

$ db2 reorgchk current statistics on table user

对需要重建的表和索引,除了第9.3.11一节所讨论方法之外,在DB2系统中还可以使用下列方法对表、索引进行重组。

对指定的表进行重组:

$ db2 reorg table {table_name}

对指定表的指定索引进行重组:

$ db2 reorg table {table_name} index {index_name}

对指定表的所有索引进行重组:

$ db2 reorg indexes all for table {table_name}

 

10. 数据的导入和导出

 

SQL语句之外,DB2系统提供exportimportloaddb2move工具,进行数据的导入和导出。

1export工具通过SQL语句将要导出数据存放在文本文件中,使用ixf格式可以同时导出表的结构;使用import将数据导入表中。

将要导出数据存放到文本文件中:

$ db2 export to {output_file} of del "{select查询语句}"

导出表的结构和数据存放到输出文件中:

$ db2 export to {output_file} of ixf "select * from {table_name}"

将数据装入指定的表中:

$ db2 import from {input_file} of del insert into {table_name}

创建表并导入数据:

$ db2 import from {input_file} of ixf create into {table_name}

2load工具用来装入数据,可以使用export工具导出的数据。在执行时表间参照、列完整性不会被检查,触发器不会被触发,因此其处理比import工具快。load工具的整个处理过程分为四个步骤,在使用时要仔细考虑和规划,以免造成数据表的破坏。

3db2move工具可以实现数据库系统之间的大数据量移动,可以将整个数据库、单个或者多个表等数据库对象的结构和数据导出到操作系统文件中,可以根据需要,重建数据库、单个或者多个数据库对象等,然后装入数据。

将数据库的结构和数据导出到当前目录下:

$ db2move {database_name} export

将指定表的结构和数据导出到当前目录下:

$ db2move {database_name} export -tn {table_name}

根据当前目录下整个数据库的输出,重建数据库并导入数据:

$ db2move {database_name} import

根据当前目录下单个表的输出,装入数据:

$ db2move {database_name} import -io insert

阅读(932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~