DB2新手上路:修改日志文件大小

刚刚创建的DB2数据库就遇到了一个日志文件的错误:[td=1,1,500]db2 => insert into test_compress select * from testDB21034E 该命令被当作 SQL语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:SQL0964C 数据库的事务日志已满。 SQLSTATE=57011...显示全部
刚刚创建的DB2数据库就遇到了一个日志文件的错误:

[td=1,1,500]db2 => insert into test_compress select * from test
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0964C 数据库的事务日志已满。 SQLSTATE=57011


在DB2中,可以用如下命令修改日志文件大小:

[td=1,1,500]db2 => update db cfg for sample using LOGFILSIZ 50000
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,必须在所有应用程序都与此数据库断开连接之后,更改才会生效。


DB2的提示信息非常详细,告诉我们:对于这些配置参数,必须在所有应用程序都与此数据库断开连接之后,更改才会生效。

其中,我们修改的参数logfilsiz 代表日志文件大小.

其缺省值在UNIX/Windows都为1000 个Block,我的数据库Block size为4k,50000个Block,大小约为195M:

[td=1,1,500]D:DB2NODE0000SQL00001SQLOGDIR>ls -l
total 1200048
-rwxrwxrwa 1 db2admin None 204808192 Jun 27 17:46 S0000000.LOG
-rwxrwxrwa 1 db2admin None 204808192 Jun 27 17:25 S0000001.LOG
-rwxrwxrwa 1 db2admin None 204808192 Jun 27 17:25 S0000002.LOG


DB2的日志修改较Oracle简单,但是在一个繁忙的数据库中,等待所有进程退出数据库显然并不现实,所以可能日志修改生效需要等到下一次数据库重新启动;那么在本质上,Oracle的方法应该更为实用.虽然两者日志的作用可能不同.

转某作者收起
参与2

查看其它 1 个回答xiaoyu1985ban的回答

“DB2的日志修改较Oracle简单,但是在一个繁忙的数据库中,等待所有进程退出数据库显然并不现实,所以可能日志修改生效需要等到下一次数据库重新启动;那么在本质上,Oracle的方法应该更为实用.虽然两者日志的作用可能不同.”

建议将数据库参数BLK_LOG_DSK_FUL设置为YES
2009-11-10
浏览885

回答者

xiaoyu1985ban 最近回答过的问题

回答状态

  • 发布时间:2009-11-10
  • 关注会员:0 人
  • 回答浏览:885
  • X社区推广