有关DB2的FAQ!

来源:百度文库 编辑:神马文学网 时间:2024/04/29 06:32:33
1、DB2 命令行处理器中命令选项的介绍gEAitug
gEAitug
环境  产品:DB2 UDBgEAitug
平台:跨平台gEAitug
版本:Version 6.1,Version 7.1 gEAitug
问题  介绍 DB2 命令行状态下有关命令选项的用途及设置方法。 gEAitug
解答 在 DB2 命令行处理器中使用命令 db2 list command options,可得到如下输出:gEAitug
gEAitug
命令行处理器选项设置  gEAitug
后端进程等待时间(秒)  (DB2BQTIME) = 1  gEAitug
连接至后端的重试次数  (DB2BQTRY) = 60  gEAitug
请求队列等待时间(秒)   (DB2RQTIME) = 5 gEAitug
输入队列等待时间(秒)   (DB2IQTIME) = 5 gEAitug
命令选项   DB2OPTIONS) = gEAitug
gEAitug
选项  说明 当前设置 gEAitug
------ ------------------------------- ------------ gEAitug
-a 显示 SQLCA  OFF gEAitug
-c  自动落实  ON gEAitug
-e 显示 SQLCODE/SQLSTATE  OFF gEAitug
-f 读取输入文件  OFF gEAitug
-l 将命令记录到历史文件中 OFF gEAitug
-n 除去换行字符 OFF gEAitug
-o 显示输出 ON gEAitug
-p 显示交互式输入提示 ON  gEAitug
-r 将输出保存到报告文件 OFF gEAitug
-s 在命令出错时停止执行  OFF  gEAitug
-t 设置语句终止字符  OFF  gEAitug
-v 回送当前命令 OFF gEAitug
-w 显示 FETCH/SELECT 警告信息 ON gEAitug
-x 不打印列标题 OFF gEAitug
-z 将所有输出保存到输出文件  OFF gEAitug
gEAitug
这些选项的具体功能及其缺省设置为: gEAitug
.a 显示 SQLCA 的数据,缺省为 OFF。 gEAitug
.c 是否自动落实 SQL 命令,缺省为 ON。  gEAitug
.e {c|s} 显示 SQLCODE 或 SQLSTATE,缺省为 OFF。 gEAitug
.f 文件名 将命令的输入从标准输入指定到某一文件,缺省为 OFF。 gEAitug
注:命令“db2 < 文件名”与“db2 -f 文件名”作用相同。 gEAitug
.l 文件名 将命令记录到历史文件中,缺省为 OFF。 gEAitug
.n 除去换行字符,缺省为 OFF。 gEAitug
.o 将输出数据及信息送到标准输出,缺省为 ON。 gEAitug
.p 在交互方式下显示命令行处理器的提示信息,缺省为 ON。 gEAitug
.r 将输出保存到指定文件中,缺省为 OFF。 gEAitug
.s 执行批处理文件中或交互方式下的命令出错时即停止执行操作,缺省为 OFF。 gEAitug
.t 设置语句终止字符,缺省为 OFF。 gEAitug
.v 回送当前命令到标准输出,缺省为 OFF。 gEAitug
.w 显示 FETCH 或 SELECT 警告信息,缺省为 ON。 gEAitug
.x 不打印列标题,缺省为 OFF。 gEAitug
.z 文件名 将所有输出保存到输出文件,缺省为 OFF。 gEAitug
gEAitug
以上选项不要求顺序并可以进行组合使用。若要修改其缺省设置,将选项设为打开,只需在选项前加“+”;而将选项关闭则加“-”。gEAitug
gEAitug
通过设置环境变量 DB2OPTIONS,也可对这些选项进行设置。如在 Intel 系统下使用:set DB2OPTIONS='+c -a';在 UNIX 系统下使用:export DB2OPTIONS='+c -a'。但命令行处理器选项设置的优先级高于 DB2OPTIONS 的设置。gEAitug
gEAitug
另外使用 db2 update command options 命令,同样可以实现通过交互式输入模式或命令文件改变选项设置的功能。如:db2 update command options using c off。gEAitug
gEAitug
2、DB2备份历史文件损坏gEAitug
gEAitug
环境  产品:DB2gEAitug
平台:跨平台gEAitug
版本:DB2 5.2;DB2 6.1 gEAitug
问题  DB2备份历史文件损坏 gEAitug
解答 如果在作数据库备份操作时遇到DB2备份历史文件db2rhist.asc损坏, 错误代码SQL2048的错误,可按照如下步骤操作: 1. 先在NODE000x/SQL000x目录下找到该文件,及其备份文件db2rhist.bak,将db2rhist.asc文件移动到其他目录中。 gEAitug
2. 重新运行备份命令。此命令仍会报同样的错误,但同时DB2系统会自动用db2rhist.bak重新生成db2rhist.asc文件。 gEAitug
3. 再次运行备份命令,它将能够正确运行。 gEAitug
gEAitug
如果按照上面的步骤操作后,仍出同样的错误,则再按如下操作: 1. 先在NODE000x/SQL000x目录下找到该文件,及其备份文件db2rhist.bak,将这两个文件移动到其他目录中。 gEAitug
2. 重新运行备份命令。此命令仍会报同样的错误,但同时DB2系统会自动重新生成这两个文件。 gEAitug
3. 再次运行备份命令,它将能够正确运行。 gEAitug
gEAitug
3、DB2从7.2版本开始支持存储过程的发布,即可以将一个数据库上已编译好的存储过程抽取并安装到其它数据库上,目标数据库所在的服务器上不再需要c编译器。 gEAitug
解答 发布存储过程请按以下步骤:gEAitug
1. 如果数据库是从7.1版本打补丁后升为7.2版本,请用gEAitug
db2updv7 -d 数据库名gEAitug
使DB2可以抽取或安装已编译好的存储过程;gEAitug
gEAitug
2. 在源数据库,编译好存储过程;gEAitug
gEAitug
3. 在源数据库,运行gEAitug
db2 "get routine into 文件名 from procedure 存储过程名"gEAitug
抽取存储过程;gEAitug
gEAitug
4. 上传文件至目标服务器;gEAitug
gEAitug
5. 在目标服务器端,运行gEAitug
db2 "put routine from 文件名"gEAitug
安装已编译好的存储过程。gEAitug
gEAitug
4、DB2数据库中一个表的行长度、列数以及每页行数在表空间中的限制gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 6.x/7.x gEAitug
问题  DB2数据库中一个表的行长度、列数以及每页行数在表空间中的限制 gEAitug
解答 在DB2数据库中一个表的每行长度、列数以及每页行数在表空间中的限制如下:gEAitug
gEAitug
表空间页面大小 表空间中行长度限制(bytes) 表空间中列数限制 表空间中每页最大行数 gEAitug
4K 4005 500 255 gEAitug
8K 8101 1012 255 gEAitug
16K 16293  1012 255 gEAitug
32K 32677 1012 255 gEAitug
注:表空间页面大小只有4K,8K,16K,32K四种。 gEAitug
gEAitug
5、当编译一个复杂的SQL语句时,出现SQL0101N错误,怎么办?gEAitug
gEAitug
环境  DB2 V5.2; DB2 V6.1; DB2 V7.1 gEAitug
问题  某些SQL语句可能非常复杂,比如嵌套调用多个表或触发许多触发器,在对这样gEAitug
的SQL语句进行编译时,出现SQL0101N错误,如何处理  gEAitug
解答 对于一个复杂的SQL语句,在调用多个表或触发多个触发器时, 可能会占用gEAitug
大量的系统资源. gEAitug
当出现SQL0101N错误时, 首先需要确认系统中没有递归的触发器存在.gEAitug
之后可通过增加如下参数的值来解决此问题:gEAitug
gEAitug
1)STMTHEAPgEAitug
2)APPLHEAPSZgEAitug
3)PCKCACHESZgEAitug
gEAitug
6、如何实施已删除表的恢复(Dropped Table Recovery) gEAitug
解答 如何实施已删除表的恢复(Dropped Table Recovery)gEAitug
gEAitug
解答:gEAitug
1. 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。gEAitug
gEAitug
gEAitug
2. 对要实施Drop Table Recovery的表空间(限regular tablespace),执行:gEAitug
alter tablespace 表空间名 dropped table recovery ongEAitug
gEAitug
gEAitug
3. 用 list history dropped table all for 数据库名 得到删除表的tableid(例如 0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。gEAitug
gEAitug
gEAitug
4. 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to 目标目录 。 在该目录下被删除的表中的数据导出,例如导出至 ../NODE0000/data文件。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。gEAitug
gEAitug
7、如何更改本地系统名称gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题 在控制中心(Control Center)中,可以看到编目在节点下的系统名称。可启动控制中心的节点作为本地系统,名称是不能在这里改变的。那么如何改变本地系统的名称呢? gEAitug
gEAitug
解答 首先,从控制中心(Control Center)中知道本地系统所在的原节点名。gEAitug
然后退出控制中心,在命令行处理器中输入以下命令:gEAitug
gEAitug
1. db2set db2system=新系统名gEAitug
2. db2 terminategEAitug
3. db2 uncatalog node 原节点名gEAitug
4. db2 terminategEAitug
gEAitug
重起控制中心,可以看到,本地系统名已更改。gEAitug
gEAitug
8、如何将表空间的状态置为正常gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  quiesce是一种持续状态的锁,它属于一个连接,当该连接失败时,quiesce状态依然存在。如何将表空间的状态置为正常状态? gEAitug
解答 除去quiesce状态:gEAitug
gEAitug
1. 连接到数据库 gEAitug
2. 用 list tablespaces 判断哪个tablespace处于quiesce状态和和取得对象(object)ID gEAitug
3.  判断对象ID对应的表 gEAitug
a)用 db2 "select tabname from syscat.tables where tablid=对象ID" 得到表名 gEAitug
b)用 db2 list history 判断是那个表 gEAitug
4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce状态 gEAitug
gEAitug
gEAitug
9、如何实施联机备份gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  如何实施联机备份? gEAitug
解答 数据库建立时日志方式默认是循环日志模式(Circular Log),这时是无法做联机备份的。所以,希望实施联机备份,首先要将日志方式改为归档日志模式(Archival Log)。gEAitug
gEAitug
以sample数据库为例,可以在控制中心中改变sample数据库的配置参数LOGRETAIN为Recovery,或在命令行下用 db2 update db cfg for sample using LOGRETAIN on。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(BACKUP PENDING)状态。这时,需要做一次对数据库的脱机备份。在控制中心中选择对数据库进行脱机备份或在命令行下用 db2 backup db sample 实施。此后数据库就可以进行联机备份了。gEAitug
gEAitug
可以选择在控制中心中对数据库进行联机备份,或在命令行下用 db2 backup db sample online 实施。gEAitug
gEAitug
注意: 利用联机备份得到的IMAGE文件进行恢复时,还需要相关的日志文件。gEAitug
gEAitug
10、如何在AIX上建立使用裸设备的数据库管理(DMS)表空间gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] AIXgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  如何在AIX上建立使用裸设备的数据库管理(DMS)表空间? gEAitug
解答 1. 用mklv命令建裸设备,语法为: gEAitug
mklv -t jfs -y 设备名 -U 用户名 -G 组名 vg名 lv大小 硬盘 gEAitug
例如: mklv -t jfs -y contest -U db2inst1 -G db2iadm1 rootvg 10 hdisk0 gEAitug
2.  然后创建表空间 gEAitug
1). 连接数据库 gEAitug
2). 创建表空间:注意在命令中要在加引号: gEAitug
db2 "create tablespace 表空间名 managed by database using (device 裸设备名及路径 大小)" gEAitug
例如: db2 "create tablespace tptest managed by database using (device '/dev/rcontest' 80M)" gEAitug
db2 "create tablespace tptest managed by database using (device '/dev/rcgEAitug
gEAitug
1、如何在Unix平台上启动DB2控制中心(Control Center)gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] UnixgEAitug
[版本] 6.x/7.x gEAitug
问题  如何在Unix平台上启动DB2控制中心(Control Center) gEAitug
解答 再Unix平台上启动DB2控制中心需要一下几个步骤,以AIX操作系统为例: gEAitug
gEAitug
1.  安装DB2时选择安装DB2控制中心(Control Center); gEAitug
2. 以root账号登录,输入xhost +命令(每次重新启动Unix后需输入该条命令以启动控制中心); gEAitug
3. 以DB2实例管理员账号登录,输入以下命令 gEAitug
a. db2jstrt gEAitug
b. db2cc gEAitug
这样,就启动了DB2控制中心(Control Center)。 gEAitug
#xhost + gEAitug
#su - db2inst1 gEAitug
$db2jstrt gEAitug
$db2cc  gEAitug
db2cc使用的是jdk118 gEAitug
export JAVA_HOME=/usr/jdk118 gEAitug
export PATH=/usr/jdk118/binPATH gEAitug
gEAitug
2、如何在查询语句中只显示结果的前n条记录gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  在查询语句中,不想显示所有记录,只显示结果的前n条记录 gEAitug
解答 在查询语句中,不想显示所有记录,只显示结果的前n条记录,可以用 fetch first n rows only 跟在查询语句后面实现。gEAitug
gEAitug
以sample数据库中的staff表为例,用如下命令可以得到查询结果的前5条建立:gEAitug
db2 "select * from staff fetch first 5 rows only"gEAitug
gEAitug
3、如何在命令行下查看修改实例和数据库配置参数gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  如何在命令行下查看修改实例和数据库配置参数 gEAitug
解答 在命令行下查看实例的配置参数,可用 db2 get dbm cfg 命令实现。gEAitug
类似地用 db2 get db cfg for 数据库名 可以得到数据库的配置参数。gEAitug
以下是数据库参数的一部分:gEAitug
gEAitug
Log file size (4KB) (LOGFILSIZ) = 250gEAitug
Number of primary log files (LOGPRIMARY) = 3gEAitug
Number of secondary log files (LOGSECOND) = 2gEAitug
gEAitug
修改实例配置参数,用 db2 update dbm cfg using 参数名 新值gEAitug
类似,用 db2 update db cfg for 数据库名 using 参数名 新值 修改数据库配置参数。gEAitug
gEAitug
例如,要修改sample数据库配置参数中的LOGPRIMARY为10,可用以下命令实现:gEAitug
db2 update db cfg for sample using logprimary 10gEAitug
gEAitug
4、如何在命令行下执行DB2脚本(script)gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
问题  如何在命令行下执行DB2脚本(script) gEAitug
解答 在命令窗口中运行DB2脚本,可用 db2 -svtf 脚本文件名 来实现。gEAitug
例如,脚本文件名为sample.sql,运行:db2 -svtf sample.sqlgEAitug
gEAitug
参数中:gEAitug
s 代表遇到错误时中止运行脚本gEAitug
v 代表输出结果到屏幕gEAitug
t 指以;号作为每行的分隔符gEAitug
f 指后面需跟脚本文件名gEAitug
gEAitug
如果希望即使遇到错误也不要中止运行可以去掉参数s。 gEAitug
gEAitug
5、文件標題: 如何解決資料庫別名已存在問題?gEAitug
修訂日期: 2001/10/15gEAitug
文件來源: TSC TeamgEAitug
英文標題: How to eliminate the existed database alias name?gEAitug
產品名稱: DB2 UDBgEAitug
作業平台: 跨平台gEAitug
適用範圍: system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題:gEAitug
gEAitug
如何解決資料庫別名已存在問題?gEAitug
gEAitug
gEAitug
gEAitug
解答:gEAitug
gEAitug
在建立資料庫時遇到資料庫別名已存在的問題時,可以:gEAitug
gEAitug
1)首先用 db2 list database directory 命令查看系統資料庫目錄(System Database Directory)中有沒有該資料庫。gEAitug
如果有,應該再確定該資料庫是沒有用的資料庫之後用 db2 drop database 資料庫名將其刪除。 gEAitug
gEAitug
2)如果沒有,再用 db2 list database directory on location 看在本端資料庫目錄(Local Database Directory)中有沒有該資料庫,location指定資料庫的位置(如Windows下的C: ,Unix下的/home/db2inst1)。gEAitug
如果有,先用 db2 catalog database 資料庫名 on location 將資料庫catalog到節點上,再對其進行刪除處理。 gEAitug
gEAitug
6、文件標題: 如何直接備份DB2資料庫到磁帶設備?gEAitug
修訂日期: 2001/06/06gEAitug
文件來源: gEAitug
英文標題: How to backup DB2 database to a tape library?gEAitug
產品名稱: Database and Data ManagementgEAitug
作業平台: 跨平台gEAitug
適用範圍:system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題:gEAitug
gEAitug
如何直接備份DB2資料庫到磁帶設備?gEAitug
gEAitug
gEAitug
gEAitug
解答:gEAitug
gEAitug
在UNIX和Windows NT作業系統,支援本端的磁帶設備。OS/2作業系統不提供本端磁帶gEAitug
設備支援。下面以Windows作業系統為例,介紹如何將DB2資料庫直接備份到磁帶設備。gEAitug
gEAitug
(1)首先在備份資料庫之前先要初始化磁帶設備,可用INITIALIZE TAPE命令完成此工作gEAitug
,例如initialize tape on \.tape0gEAitug
(2)備份資料庫到磁帶設備,可用backup database命令。如:backup database sample to \.tape0gEAitug
(3)在回復資料庫時要先將磁帶倒帶,可用命令rewind tape。如:rewind tape on \.tape0。gEAitug
(4)回復資料庫sample到一個新資料庫newdb時,可用restore database命令。如:gEAitug
restore database sample from \.tape0 into newdbgEAitug
gEAitug
附註:在備份資料庫到磁帶設備或從磁帶設備回復時,可能需要檢查磁帶機的blockinggEAitug
參數與DB2的資料庫管理(DBM)參數Max requester I/O block size是否符合。如gEAitug
需更詳細資訊可參考DB2的命令手冊。gEAitug
gEAitug
gEAitug
7、文件標題: 怎樣解決DB2資料庫代碼頁不相容的問題gEAitug
修訂日期: 2001/03/10 gEAitug
文件來源: http://www-900.ibm.com/cn/support/viewdoc/FaqDisplay?DocId=1307130000002 gEAitug
英文標題: How to solve DB2 database codepage imcompatablility problem gEAitug
產品名稱: DB2 UDB 7.1/6.1/5.2 gEAitug
作業平台: ALL gEAitug
適用範圍: system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題: gEAitug
gEAitug
怎樣解決DB2資料庫代碼頁(codepage)不相容的問題gEAitug
gEAitug
解答:gEAitug
gEAitug
當發出命令:db2 connect to db_name 後系統出現gEAitug
gEAitug
SQL0332N There is no available conversion for the source code page "819" to the target code page "1386". Reason Code "1". SQLSTATE=57017gEAitug
gEAitug
DB2 要求來源代碼與目標代碼頁是相容的, 在以上的例子中,來源代碼頁為819与目標代碼頁1386不相容,導致了資料庫連接失敗, 解決方法如下:gEAitug
在發出db2 connect 命令失敗的機器上,在DB2 命令視窗中執行如下命令後重新進行連接:gEAitug
->; gEAitug
db2set db2codepage=1386  I instance_namegEAitug
db2 terminate gEAitug
gEAitug
gEAitug
8、在 AIX 和 Solaris 上如何配置存储过程构建器(SPB)?gEAitug
gEAitug
环境  产品: DB2 通用数据库gEAitug
版本: 7.1gEAitug
平台: AIX, Solaris gEAitug
问题  在 AIX 和 Solaris 上如何配置存储过程构建器(SPB)? gEAitug
解答 为了在 AIX 或 Solaris 上配置“存储过程构建器”,需确保在您的系统上安装了“Java 开发者工具箱”(JDK)。DB2 在可用于“控制中心”的系统上安装“Java 运行期环境”(JRE),但是,它将不允许使用“存储过程构建器”。 gEAitug
一旦安装了 JDK,就需要确保 DB2 知道 JDK 的位置,方法是在该实例的数据库管理程序配置文件中设置 JDK 的路径。要设置 JDK 的路径,执行下列步骤: gEAitug
gEAitug
1. 以具有 SYSADM 权限的用户登录系统。 gEAitug
2. 通过输入以下命令来更新数据库管理程序配置文件:  gEAitug
db2 update dbm cfg using jdk11_path /usr/jdk_base gEAitug
其中 /usr/jdk_base 表示 JDK 安装路径。 gEAitug
3. 一旦更新了实例的数据库管理程序配置文件,您就必须停止并重新启动该实例,以使更改生效。要停止并启动当前实例的数据库管理程序,输入下列命令:  gEAitug
db2stopgEAitug
db2start gEAitug
gEAitug
9、在DB2 UDB中如何创建用户定义临时表? gEAitug
解答 可使用 DECLARE GLOBAL TEMPORARY TABLE 语句来定义临时表。此语句需在应用程序中使用。只有在应用程序与数据库断开连接之前,用户定义临时表才是持续的。 gEAitug
gEAitug
gEAitug
此表的说明并不出现在系统目录中,使其对于其他应用程序而言不是持续的,也不能与其他应用程序共享此表。 gEAitug
gEAitug
gEAitug
当使用此表的应用程序终止或与数据库断开连接时,此表中的数据被删除, 此表被隐式卸下。 gEAitug
下面是定义临时表的一个示例: gEAitug
DECLARE GLOBAL TEMPORARY TABLE gbl_tempgEAitug
LIKE empltablgEAitug
ON COMMIT DELETE ROWSgEAitug
NOT LOGGEDgEAitug
IN usr_tbspgEAitug
gEAitug
gEAitug
此语句创建一个名为 gbl_temp 的用户临时表。定义此用户临时表 所使用的列的名称和说明与 empltabl 的列的名称和说明完全相同。隐式定义只包括列名、数据类型、可为空特性和列缺省值属性。未定义所有其他列属性,包括唯一约束、外部关键字约束、触发器和索引。执行 COMMIT 操作时, 若未对该表打开 WITH HOLD 游标,则该表中的所有数据都被删除。不记录 对用户临时表所作的更改。用户临时表被放在指定的用户临时表空间中。此表空间必须存在,否则此表的声明将失败。 gEAitug
gEAitug
10、在使用IMPORT命令向数据库出入数据时,如何避免日志空间满错误?gEAitug
gEAitug
环境  平台: 所有平台gEAitug
版本: DB2 V7,DB2 V6,DB2 V5 gEAitug
问题  在用IMPORT命令向数据库插入大量数据时,如何避免日志空间满错误 gEAitug
解答   在执行IMPORT命令时, 如果使用循环日志, 有时会出现日志满错误, gEAitug
这时可用COMMITCOUNT参数来解决. gEAitug
因为日志空间满往往是因为所有的日志均处于活动状态导致的.gEAitug
而COMMIT执行后, 会释放所占据的资源, 其中包括日志 .gEAitug
这样, 被当前事务使用的日志在COMMIT命令执行后, 即变成非活动状态了.gEAitug
gEAitug
1、在由备份恢复一个数据库时,遇到SQL2542错误,怎麽办?gEAitug
gEAitug
环境  版本:(试用)DB2 V5.0,DB2 V6.1,DB2 V7.1gEAitug
操作系统:(试用)Windows NT,AIX gEAitug
问题  在由备份恢复一个数据库时,遇到SQL2542错误 gEAitug
解答 如果有几个数据库的备份,在做数据库恢复时,需要提供正确的路径和时间戳,如果是用DB2命令行来执行恢复操作,在Windows NT操作系统,可参照如下命令:gEAitug
gEAitug
RESTORE DATABASE SAMPLE FROM D:backups TAKEN AT 19991117125141gEAitug
gEAitug
此命令中要注意路径和时间戳。时间戳可以通过list history命令得到。可参照如下命令:gEAitug
gEAitug
LIST HISTORY BACKUP ALL FOR SAMPLEgEAitug
gEAitug
Op Obj Timestamp+sequence Type Dev Earliest log Current log Backup ID gEAitug
B D 19991117125141001 F D S0000000.LOG S0000000.LOG gEAitug
gEAitug
gEAitug
Contains 2 tablespace(s):gEAitug
gEAitug
00001 SYSCATSPACEgEAitug
00002 USERSPACE1gEAitug
gEAitug
此命令的输出列出了备份的时间戳加上一个3位的数字序列:gEAitug
gEAitug
时间戳+3位的数字序列=19991117125141001gEAitug
gEAitug
所以,可以在restore命令中使用时间戳:19991117125141。gEAitug
gEAitug
如果你有多于一个备份,list history命令将显示所有备份纪录的信息。gEAitug
gEAitug
更多的信息可以参考“IBM DB2 Universal Database 命令手册:第三章 CLP命令”。gEAitug
gEAitug
2、怎么样检查数据库连接有关的错误?gEAitug
gEAitug
环境  产品: DB2 UDBgEAitug
平台: Windows 9x/NT/2000, Unix, LinuxgEAitug
版本: 5.x/6.x/7.x gEAitug
问题  怎么样检查数据库连接有关的错误? gEAitug
解答 以TCP/IP连接为例, 若连接失败,您可以检查下列项目: gEAitug
A) 在服务器上: 1) db2comm 注册表值包括值 tcpip。 gEAitug
输入 db2set DB2COMM 命令, 以检查 db2comm 注册表值的设置。有关详情,请参考管理指南。 gEAitug
2) 正确地更新了 services 文件。  gEAitug
3) 在数据库管理程序配置文件中正确地更新了服务名 (svcename) 参数。 gEAitug
4) 安全服务已启动。输入 net start db2ntsecserver 命令(仅对于 Windows NT 服务器)。 gEAitug
5) 正确地创建并编目了数据库。 gEAitug
6) 数据库管理程序已停止并再次启动(在服务器上输入 db2stop 和 db2start 命令)。 gEAitug
* 如果在启动一个协议的连接管理程序时出现问题, 则会出现警告信息,并将错误信息记录在 db2diag.log 文件中。gEAitug
gEAitug
B) 在客户机上: 1) 正确地更新了 services 和 hosts 文件(若使用过的话)。 gEAitug
2) 使用正确的主机名 (hostname) 或 IP 地址 (ip_address)编目了此节点。 gEAitug
3) 端口号必须匹配,或服务名必须映射为服务器上所用的端口号。 gEAitug
4) 在数据库目录中指定的节点名 (node_name) 指向节点目录中的正确项目。 gEAitug
5) 数据库已正确编目, 它使用在服务器上创建该数据库时编目的服务器的数据库别名(database_alias), 作为客户机上的数据库名 (database_name)。 gEAitug
gEAitug
验证这些项目后,若连接仍失败,则参考 DB2 Troubleshooting GuidegEAitug
gEAitug
3、怎么样获取表结构以及索引的信息?gEAitug
gEAitug
环境  产品: DB2 UDBgEAitug
平台: Windows 9x/NT/2000, Unix, LinuxgEAitug
版本: 5.x/6.x/7.x gEAitug
问题  怎么样获取表结构以及索引的信息? gEAitug
解答 您可以使用"describe" 命令: gEAitug
(1) 显示关于SELECT语句的 SQLDA 信息;gEAitug
(2) 显示表或视图的列信息;gEAitug
(3) 显示表或视图的索引信息;gEAitug
* 命令语法:gEAitug
>;>;-DESCRIBE-------------------------->;gEAitug
>;--+-select-statement---------+->;'--+-TABLE--table-name----------+---+----------+-'gEAitug
'-INDEXES FOR TABLE--table-name--' '-SHOW DETAIL--'gEAitug
gEAitug
例如: gEAitug
1) 下面的例子用于描述 SELECT 语句: gEAitug
gEAitug
db2 "describe select * from staff"gEAitug
gEAitug
SQLDA InformationgEAitug
gEAitug
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 7gEAitug
gEAitug
Column InformationgEAitug
gEAitug
sqltype  sqllen sqlname.data  sqlname.length gEAitug
--------------- ------ -------------- --------------- gEAitug
500 SMALLINT 2  ID  2 gEAitug
449 VARCHAR 9  NAME 4 gEAitug
501 SMALLINT 2  DEPT 4 gEAitug
453 CHARACTER 5  JOB  3 gEAitug
501 SMALLINT 2  YEARS  5 gEAitug
485 DECIMAL 7, 2 SALARY 6 gEAitug
485 DECIMAL  7, 2  COMM 7 gEAitug
gEAitug
2) 下面的例子用于描述表结构: gEAitug
gEAitug
db2 describe table user1.departmentgEAitug
gEAitug
Table: USER1.DEPARTMENTgEAitug
gEAitug
Column gEAitug
name  TypegEAitug
schema  TypegEAitug
name  Length  Scale Nulls gEAitug
--------- ------- ----------- -------- ------ ------ gEAitug
AREA  SYSIBM SMALLINT  2 0 No gEAitug
DEPT  SYSIBM CHARACTER 3 0 No gEAitug
DEPTNAME SYSIBM CHARACTER 20 0 YES gEAitug
gEAitug
3) 下面的例子用于描述索引结构: gEAitug
db2 describe indexes for table user1.departmentgEAitug
gEAitug
Table: USER1.DEPARTMENTgEAitug
gEAitug
gEAitug
Index gEAitug
schema  Index gEAitug
name  Unique gEAitug
rule  Number ofgEAitug
columns  gEAitug
------------ ---------- ------------ ---------------- gEAitug
USER1 IDX1 U  2 gEAitug
gEAitug
4、以空文件为数据文件导入(IMPORT)并替换(REPLACE)目标表和删除(DELETE)表操作的对比(一种可以绕开删除整个表操作时遇到交易日志已满的办法) gEAitug
文章编号:1347131000035 gEAitug
日    期:2001-12-24 gEAitug
gEAitug
打印格式 gEAitug
gEAitug
以空文件为数据文件导入(IMPORT)并替换(REPLACE)目标表和删除(DELETE)gEAitug
表操作的对比(一种可以绕开删除整个表操作时遇到交易日志已满的办法)gEAitug
gEAitug
环境  [产品] DB2 UDBgEAitug
[平台] 跨平台gEAitug
[版本] 5.x/6.1/7.x gEAitug
问题  以空文件为数据文件导入(IMPORT)并替换(REPLACE)目标表和删除(DELETE)表操作的对比 gEAitug
解答 当用DELETE TABLE命令删除整个表中数据时,该操作会逐条删除表中记录,并记入活动的交易日志。当表中数据量很大时,如果活动的交易日志不够大,就会遇到交易日志已满的错误,并回滚日志。即使活动的交易日志足够大,删除数据量很大的表的操作也会占用很多时间。用以空文件为数据文件导入(IMPORT)并替换(REPLACE)表的办法可以解决这个问题。例如gEAitug
IMPORT FROM /dev/null OF DEL REPLACE INTO 目标表名gEAitug
gEAitug
这样交易日志只会记录下该条命令,并立即释放所占的空间,而不会像删除命令一样逐条扫描记录,这就类似于DROP掉该表再创建一个完全相同只是没有数据的表一样。对于属于DMS表空间的表来说,删除命令逐条扫描记录,所占的记录空间仍标记为该表所用,而不立即释放空间,需要用REORG命令才可以释放剩余空间。用 LIST TABLESPACE SHOW DETAIL 可以对比两条命令执行后表空间中的剩余空间的大小。gEAitug
gEAitug
用LOAD命令加REPLACE参数可以达到类似IMPORT命令加REPLACE的效果,但是由于LOAD本身不记日志,所以对于可恢复的数据库,LOAD完成后建议马上做一下联机备份的,相比之下,IMPORT命令加REPLACE操作上比较简单一些。gEAitug
gEAitug
gEAitug
from jourmengEAitug
问题描述: gEAitug
db2的界面都显示不了中文,所有该显示中文的地方都是显示方框 gEAitug
操作系统: gEAitug
win2k(别的我没有试,不知道是不是这样) gEAitug
db2版本: gEAitug
db2 8.1 for win gEAitug
解决方法: gEAitug
控制面板-->;区域选项-->;常规选项卡-->;你的区域设置设成中文(中国) gEAitug
ok,问题解决 gEAitug
gEAitug
问题原因:一般是你把区域设置成非中文(中国),比如我设成了英语(美国),来显示时间(9:05AM)这样格式的 gEAitug
P.S.:win别的平台和db2的别的版本没有试,也许一样:)