解决不能重新创建工具数据库的方法

如何快速清空一个大表中的所有数据

在 DB2 数据库中,如果想快速清空一张大表(类似在 ORACLE 中使用 TRUNCATE TABLE 快速清空一张大表),有两种方法:

  1. 使用 “ ALTER TABLE 表名 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE ” 命令。
  2. 使用空文件为数据文件导入并替换表中数据。
  • 在 windows 平台,可以先使用 EXPORT 导出一个空文件,再使用 IMPORT 命令从空文件中导入并替换该表中数据,比如:
    export to test.ixf of ixf messages log.txt select * from test where 1=2
    import from test.ixf of ixf messages log1.txt replace into test
  • 在 UNIX 平台,除了使用 A 方法以外,还可以使用从空(NULL)中导入并替换该表数据,比如:
    import from /home/null of del replace into test

如果使用“ DELETE TABLE ”命令删除整个大表中的数据,由于这个命令采用逐条删除,并把该操作记入活动的交易日志,将会耗费大量的活动日志空间,有可能造成数据库交易日志已满错误,另外,这样删除大表数据耗费的时间也很长。对于属于 DMS 表空间的表来说,删除命令逐条扫描记录,所占的记录空间仍标记为该表所用,而不立即释放空间,需要用 REORG 命令才可以释放剩余空间。

使用以上两种方法快速清空一张大表,将使 DB2 交易日志只记录该条命令,并立即释放所占用的空间,而不会像删除命令一样逐条扫描记录,从而节省大量的数据库交易日志和处理时间。用 LOAD 命令加 REPLACE 参数可以达到类似 IMPORT 命令加 REPLACE 的效果,但是由于 LOAD 本身不记日志,所以对于可恢复的数据库,LOAD 完成后建议马上做一下联机备份的,相比之下,IMPORT 命令加 REPLACE 操作上比较简单一些。


解决不能重新创建工具数据库的方法

工具目录数据库包含“任务中心”和“控制中心”创建的任务信息。这些任务是由 DB2 管理服务器的调度程序运行的。调度程序和工具目录数据库始终一起工作,缺一不可。调度程序是 DB2 管理服务器的一个特定段,该服务器充当代理程序以读取工具目录数据库,并在其各自的时间里运行任务。

在 DB2 数据库中,一般初次创建工具目录数据库,都会成功,如果是以前创建过工具目录数据库,删除后,想再次重新创建,默认情况下,是无法创建成功的。解决的方法是更新管理服务器(DB2 ADMIN SERVER)配置参数 SCHED_ENABLE 和 TOOLSCAT_DB,具体命令如 28 所示:


清单 28. 更新 DB2 ADMIN SERVER 配置参数

C:/> db2 get admin cfg  管理服务器配置

认证类型 DAS ( AUTHENTICATION ) = SERVER_ENCRYPT 

 DAS 管理权限组名 ( DASADM_GROUP ) = 

 DAS 发现方式  ( DISCOVER ) = SEARCH 
 DB2 服务器系统的名称  ( DB2SYSTEM ) = CYONG 

 Java Development Kit 安装路径 DAS ( JDK_PATH ) 
          = AUTOMATIC ( C:/Program Files/IBM/SQLLIB/java/jdk ) 
 Java Development Kit 安装路径 DAS ( JDK_64_PATH )
     = AUTOMATIC ( C:/Program Files/IBM/SQLLIB/java/jdk ) 

 DAS 代码页  ( DAS_CODEPAGE ) = 0 
 DAS 地域  ( DAS_TERRITORY ) = 0 

联系人列表的位置 ( CONTACT_HOST ) = 
执行到期的任务  ( EXEC_EXP_TASK ) = NO 
调度程序方式   ( SCHED_ENABLE ) = ON

SMTP 服务器  (SMTP_SERVER) = 

工具目录数据库  (TOOLSCAT_DB) = TOOLSDB 
工具目录数据库实例  (TOOLSCAT_INST) = DB2 
工具目录数据库模式  (TOOLSCAT_SCHEMA) = RHETTE 
调度程序用户标识  = 

诊断错误捕获级别  (DIAGLEVEL) = 2 

 C:/> db2 update admin cfg using SCHED_ENABLE off 
 DB20000I UPDATE ADMIN CONFIGURATION 命令成功完成。

 C:/> db2 update admin cfg using TOOLSCAT_DB null 
 DB20000I UPDATE ADMIN CONFIGURATION 命令成功完成。

 C:/> db2 terminate 
 DB20000I TERMINATE 命令成功完成。

 C:/> db2stop 
 2008-04-05 13:21:57 0 0 SQL1064N DB2STOP 处理成功。
 SQL1064N DB2STOP 处理成功。
 
  

 

命令成功完成。这个时候再次重新创建工具目录数据库,就会成功了。


如何获取表结构以及索引的信息

列出表或视图的结构:

DESCRIBE TABLE <TABLE_NAME>  

 

列出 select 语句结果的结构:

DESCRIBE < SELECT STATEMENT>  

 

列出表或视图的索引结构:

DESCRIBE INDEXES FOR TABLE 表名 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值