Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103695704
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-14 12:57:58

   来源:csdn    作者:lisiyong

4、DB2数据库中一个表的行长度、列数以及每页行数在表空间中的限制

环境 [产品] DB2 UDB

[平台] Windows 9x/NT/2000, Unix, Linux

[版本] 6.x/7.x

问题 DB2数据库中一个表的行长度、列数以及每页行数在表空间中的限制

解答 在DB2数据库中一个表的每行长度、列数以及每页行数在表空间中的限制如下:

表空间页面大小 表空间中行长度限制(bytes) 表空间中列数限制 表空间中每页最大行数

4K 4005 500 255

8K 8101 1012 255

16K 16293 1012 255

32K 32677 1012 255

注:表空间页面大小只有4K,8K,16K,32K四种。

5、当编译一个复杂的SQL语句时,出现SQL0101N错误,怎么办?

环境 DB2 V5.2; DB2 V6.1; DB2 V7.1

问题 某些SQL语句可能非常复杂,比如嵌套调用多个表或触发许多触发器,在对这样的SQL语句进行编译时,出现SQL0101N错误,如何处理

解答 对于一个复杂的SQL语句,在调用多个表或触发多个触发器时, 可能会占用大量的系统资源.

当出现SQL0101N错误时, 首先需要确认系统中没有递归的触发器存在. 之后可通过增加如下参数的值来解决此问题:

1)STMTHEAP

2)APPLHEAPSZ

3)PCKCACHESZ

6、如何实施已删除表的恢复(Dropped Table Recovery)

解答 如何实施已删除表的恢复(Dropped Table Recovery)

解答:

1. 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。

2. 对要实施Drop Table Recovery的表空间(限regular tablespace),执行:

alter tablespace 表空间名 dropped table recovery on

3. 用 list history dropped table all for 数据库名 得到删除表的tableid(例如 0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。

4. 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to 目标目录 。 在该目录下被删除的表中的数据导出,例如导出至 ../NODE0000/data文件。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。

7、如何更改本地系统名称

环境 [产品] DB2 UDB

[平台] Windows 9x/NT/2000, Unix, Linux

[版本] 5.x/6.x/7.x

问题 在控制中心(Control Center)中,可以看到编目在节点下的系统名称。可启动控制中心的节点作为本地系统,名称是不能在这里改变的。那么如何改变本地系统的名称呢?

解答 首先,从控制中心(Control Center)中知道本地系统所在的原节点名。

然后退出控制中心,在命令行处理器中输入以下命令:

1. db2set db2system=新系统名

2. db2 terminate

3. db2 uncatalog node 原节点名

4. db2 terminate

重起控制中心,可以看到,本地系统名已更改。

8、如何将表空间的状态置为正常

环境 [产品] DB2 UDB

[平台] Windows 9x/NT/2000, Unix, Linux

[版本] 5.x/6.x/7.x

问题 quiesce是一种持续状态的锁,它属于一个连接,当该连接失败时,quiesce状态依然存在。如何将表空间的状态置为正常状态?

解答 除去quiesce状态:

1. 连接到数据库

2. 用 list tablespaces 判断哪个tablespace处于quiesce状态和和取得对象(object)ID

3. 判断对象ID对应的表

a)用 db2 "select tabname from syscat.tables where tablid=对象ID" 得到表名

b)用 db2 list history 判断是那个表

4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce状态

9、如何实施联机备份

环境 [产品] DB2 UDB

[平台] Windows 9x/NT/2000, Unix, Linux

[版本] 5.x/6.x/7.x

问题 如何实施联机备份?

解答 数据库建立时日志方式默认是循环日志模式(Circular Log),这时是无法做联机备份的。所以,希望实施联机备份,首先要将日志方式改为归档日志模式(Archival Log)。

以sample数据库为例,可以在控制中心中改变sample数据库的配置参数LOGRETAIN为Recovery,或在命令行下用 db2 update db cfg for sample using LOGRETAIN on。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(BACKUP PENDING)状态。这时,需要做一次对数据库的脱机备份。在控制中心中选择对数据库进行脱机备份或在命令行下用 db2 backup db sample 实施。此后数据库就可以进行联机备份了。

可以选择在控制中心中对数据库进行联机备份,或在命令行下用 db2 backup db sample online 实施。

注意: 利用联机备份得到的IMAGE文件进行恢复时,还需要相关的日志文件。

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