dengwen3 发表于 2016-11-19 03:47:01

DB2报“数据库日志已满”问题解决

  用控制中心直接改会比较容易一点,在数据库名称上点右键-->配置-->日志-->日志文件大小、主日志文件数、辅助日志文件数改大一点。
  也可用命令行db2cmd
  db2 update db cfg for mymakro using LOGFILSIZ 512 --日志文件大小
  db2 update db cfg for mymakro using LOGPRIMARY 20 --主日志
  db2 update db cfg for mymakro using LOGSECOND5 10 --辅助日志
  要将与此数据库的所有连接断开后才会生效。
  [@more@]
  执行批处理时,DB2 报数据库的事务日志已满的错误,解决办法
  辅助日志文件的数目 (LOGSECOND) = 25
  已更改的至日志文件的路径 (NEWLOGPATH) =
  日志文件路径 = D:DB2NODE0000SQL00
  003SQLOGDIR
  溢出日志路径 (OVERFLOWLOGPATH) =
  镜像日志路径 (MIRRORLOGPATH) =
  首个活动日志文件 = S0000005.LOG
  磁盘上已满的块日志 (BLK_LOG_DSK_FUL) = NO
  事务使用的最大活动日志空间的百分比 (MAX_LOG) = 0
  1 个活动 UOW 的活动日志文件的数目 (NUM_LOG_SPAN) = 0
  组落实计数 (MINCOMMIT) = 1
  软检查点前回收的日志文件的百分比 (SOFTMAX) = 100
  启用的恢复的日志保留 (LOGRETAIN) = RECOVERY
  启用的日志记录的用户出口 (USEREXIT) = OFF
  HADR 数据库角色 = STANDARD
  HADR 本地主机名 (HADR_LOCAL_HOST) =
  HADR 本地服务名称 (HADR_LOCAL_SVC) =
  HADR 远程主机名 (HADR_REMOTE_HOST) =
  HADR 远程服务名称 (HADR_REMOTE_SVC) =
  远程服务器的 HADR 实例名 (HADR_REMOTE_INST) =
  HADR 超时值 (HADR_TIMEOUT) = 120
  HADR 日志写同步方式 (HADR_SYNCMODE) = NEARSYNC
  第一个日志归档方法 (LOGARCHMETH1) = LOGRETAIN
  logarchmeth1 的选项 (LOGARCHOPT1) =
  第二个日志归档方法 (LOGARCHMETH2) = OFF
  logarchmeth2 的选项 (LOGARCHOPT2) =
  故障转移日志归档路径 (FAILARCHPATH) =
  错误时重试日志归档次数 (NUMARCHRETRY) = 5
  日志归档重试延迟(秒) (ARCHRETRYDELAY) = 20
  供应商选项 (VENDOROPT) =
  启用的自动重新启动 (AUTORESTART) = ON
  索引重新创建时间和重做索引构建 (INDEXREC) = SYSTEM (RESTART)
  在索引构建期间记录页 (LOGINDEXBUILD) = OFF
  loadrec 会话的缺省数目 (DFT_LOADREC_SES) = 1
  要保留的数据库备份的数目 (NUM_DB_BACKUPS) = 12
  恢复历史保留时间(天数) (REC_HIS_RETENTN) = 366
  TSM 管理类 (TSM_MGMTCLASS) =
  TSM 节点名 (TSM_NODENAME) =
  TSM 所有者 (TSM_OWNER) =
  TSM 密码 (TSM_PASSWORD) =
  自动维护 (AUTO_MAINT) = OFF
  自动数据库备份 (AUTO_DB_BACKUP) = OFF
  自动表维护 (AUTO_TBL_MAINT) = OFF
  自动 runstats (AUTO_RUNSTATS) = OFF
  自动统计信息概要分析 (AUTO_STATS_PROF) = OFF
  自动概要文件更新 (AUTO_PROF_UPD) = OFF
  自动重组 (AUTO_REORG) = OFF
  db2 => quit
  DB20000I QUIT 命令成功完成。
  C:>db2 connect to testdatabase
  数据库连接信息
  数据库服务器 = DB2/NT 8.2.4
  SQL 授权标识 = ADMINIST...
  本地数据库别名 = TESTDATABASE
  connect to testdatabase
  数据库连接信息
  数据库服务器 = DB2/NT 8.2.4
  SQL 授权标识 = ADMINIST...
  本地数据库别名 = TESTDATABASE
  update db cfg for testdatabase using logfilsiz 6000
  DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
  SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,必须在所有应用程序都与此数据库断开连接之后,更改才会生效。
  update db cfg for testdatabase using logprimary 4
  DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
  SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,必须在所有应用程序都与此数据库断开连接之后,更改才会生效。
  update db cfg for testdatabase using logsecond 25
  DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
  C:>db2 ? sql964 (根据错误码查看错误解释)
  SQL0964C数据库的事务日志已满。
  解释:
  已使用事务日志中的所有空间。
  若使用具有辅助日志文件的循环日志,则尝试分配和使用这些日志。当文件
  系统没有更多空间时,不能使用辅助日志。
  若使用归档日志,则文件系统不提供空间来包含新日志文件。
  不能处理该语句。
  用户响应:
  在接收到此消息 (SQLCODE) 时,执行 COMMIT 或
  ROLLBACK,或重试该操作。
  若并发应用程序正在更新数据库,则重试该操作。当另一个应用程序完成事
  务时,可能释放日志空间。
  发出更频繁的落实操作。若事务还未落实,则当落实事务时,可能会释放日志空间。设计应用程序时,应考虑何时落实已更新的事务,以防止日志已满的情况。
  若发生死锁,则更频繁地检查它们。这可以通过减小数据库配置参数DLCHKTIME 来实现。这将检测到死锁,并且很快解决(通过ROLLBACK),这将释放日志空间。若经常发生这种情况,则增大数据库配置参数以允许更大的日志文件。更大的日志文件需要更多空间,但是减少了应用程序重试该操作的需要。若正在安装样本数据库,则删除它并再次安装样本数据库。
页: [1]
查看完整版本: DB2报“数据库日志已满”问题解决