db2 数据库日志清理
DB2数据清除方法(自己看书总结四种方法,希望可以帮助大家)
1. 使用DELETE 语句,即:DELETE FROM <表名>该语句将清除表中所有数据,但由于这一操作会记日志,因此执行速度会相对慢一些,另外要注意的是,如果表较大,为保证删除操作的成功,应考虑是否留有足够大的日志空间。
2. 使用NOT LOGGED INITIALLY 选项,即:ALTER TABLE <表名> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE这一方法仅在所操作的表在创建时选择了NOT LOGGED INITIALLY 选项进行定义后才可使用。
整个删除操作将不会记日志,因此执行速度是几种方法中最快的一种,但删除的数据是不可恢复的。
3. 使用IMPORT 或LOAD 命令,即:IMPORT FROM /dev/null OF DEL REPLACE INTO ecif.tb2033--(Unix 系统)或IMPORT FROM <空文件> OF DEL REPLACE INTO <表名>LOAD FROM /dev/null OF DEL REPLACE INTO <表名> NONRECOVERABLE --(Unix 系统)或LOAD FROM <空文件> OF DEL REPLACE INTO <表名> NONRECOVERABLE在这一方法中,REPLACE 导入方式首先会将表中所有数据清空,然后IMPORT/LOAD 又向表中导入了空数据,从而实现了数据的清除操作。
4. 使用DROP/CREATE TABLE 语句,即:DROP TABLE <表名>CREATE TABLE <表名> <字段的定义>如果保存有表的定义语句,或已利用DB2LOOK 命令获得了表定义的脚本,也可先删除整个表,再重新创建表。
如果表较大,用这种方法实现数据清空的速度会快于方法一。
归档日志清理方法
1.归档日志清理方法归档日志对数据库的恢复起到了至关重要的作用,所以,一定要做好归档日志的保存,上一个备份之后的归档日志千万不能随意删除。
每个库都有自己的归档日志,例如,一般stmadc库(实体库为dcold)的日志存放在/db2_log/stmadc 目录下,/db2_log这个目录的磁盘空间应保持比较大,因为每个库在做增删改这些操作时,都会记录日志,日志文件会持续增长。
故每个库的归档日志要做定期处理,防止/db2_log爆满,这就需要保留有用的归档日志,删除过期无用的。
以下为示例:# su - db2admin$ db2 list history backup all for dcold…………略…………略看最后一段,即最后的一次备份情况如下图方法如下:1)对于db2v8.1版本,在做在线备份时,因不支持include logs选项,我们应手动将需要保留的归档日志保存,如上应保存(18135-18139号)日志文件,即将S0018135.LOG、S0018136.LOG、S0018137.LOG、S0018138.LOG、S0018139.LOG拷贝到其它地方保存(如可保存在与这个备份文件的同一目录下),如日后做这个备份文件的恢复时,需要这几个日志文件,否则恢复会失败。
2)因磁盘空间有限,需要清除归档日志时,至少要保存上一个备份之后归档日志,(即删除上一个备份之前的归档日志)删除归档日志示例如下:# su - db2admin$ db2 list history backup all for dcold…………略…………略看最后一段,即最后的一次备份情况先查看,上一次的备份文件是否存在,确认存在有效后,再查看上图中Earliest Log S0018135.LOG这个日志文件,应该删除这个日志序号18135之前的日志,即S0018135.LOG日志文件号及这个18135序列号之后的日志文件便被保留下来了,以用于日后的故障恢复。
db2_数据库日志清理
循环日志模式:db2 update db cfg for using logretain off
10、db2 日志处理
必须按照以下正确的步骤进行操作:
要求必须使用db2命令prune进行清理,不建议使用rm命令删除。
删除前应保证应用已停止(即联机已下来)。
查看当前使用的日志文件目录及第一活动日志文件
如果没有使用参数nonrecoverable,则会出现数据库状态不正确的情况,使用:
db2 list tablesapces show detail 查看状态,如果不是正常状态,则脱机状态进行备份即可。
两个表文件之间update的方法:
db2 "update cdmcrd set offset = (select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno) where cdmcrd.crdno in (select cdmlsl.crdno from cdmlsl)
sql1025nthe database manager was not stopped because databases are still active.
需要使用如下命令可以解决这个问题: db2stop force
08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful.
sql0091nbinding was ended with "3" errors and "0" warnings.
主要是表文件被加锁,不能继续使用;
在进行stop的时候报错:db2stop
db2日志说明
db2日志说明db2日志记录1. 日志的意义:主要在于数据恢复。
Db2实施了提前写日志存档模式,当发出删除、插入或更新数据库中某一数据的SQL调用时,所作出的数据变更首先要写到日志中去。
当发出一条SQL提交确认命令时,DB2首先要把redo所需要的日志写入磁盘。
如果断电的话,所有被提交的事务都会重新做一遍,而未提交的则会rollback。
事务:为了保证数据的可恢复性和一致性引入的概念。
比如执行了两条sql语句,但是他们是为了完成同一件事,因此他们会被当做一个整体。
当发生意外情况时,如果已经commit,但是未写到磁盘,就要执行redo重新执行一遍。
如果还没有commit,就要全部回滚。
日志作用:比如昨天晚上进行了数据库备份,但是今天中午数据库出现了问题(如存储介质损坏)需要恢复,那么只能恢复到昨天晚上的状态,今天上午的数据都没法恢复,这时如果数据库日志没有损坏,就可以通过日记把这段时间的操作重新执行一遍。
2. 日志分为循环日志和归档日志:日志中只记录DML操作(insert,update和delete操作),当我们前台执行了一条insert,update或delete语句,日志中就会相应的记录这条SQL语句的redo操作和undo操作几种操作类型:DDL(Data Definition Language 数据定义语言),用于操作对象和对象的属性(数据库,表,视图等)。
具体表现在Create,Drop 和Alter操作上。
不会对具体的数据进行操作,而是对对象进行操作。
像主键约束、唯一约束、非空约束、外键约束、核查约束和缺省约束这些操作都是使表具有某些特性,所以在这里我认为他们都是表的属性,也属于DDL操作。
DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。
主要表现在Insert,Delete和Update等操作上。
DB2报“数据库日志已满”问题解决
DB2报“数据库日志已满”问题解决用控制中心直接改会比较容易一点,在数据库名称上点右键-->配置-->日志-->日志文件大小、主日志文件数、辅助日志文件数改大一点。
也可用命令行db2cmddb2 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 --辅助日志要将与此数据库的所有连接断开后才会生效。
执行批处理时,DB2 报数据库的事务日志已满的错误,解决办法辅助日志文件的数目(LOGSECOND) = 25已更改的至日志文件的路径(NEWLOGPATH) =日志文件路径= D:\DB2\NODE0000\SQL00003\SQLOGDIR\溢出日志路径(OVERFLOWLOGPATH) =镜像日志路径(MIRRORLOGPATH) =首个活动日志文件= S0000005.LOG磁盘上已满的块日志(BLK_LOG_DSK_FUL) = NO事务使用的最大活动日志空间的百分比(MAX_LOG) = 01 个活动UOW 的活动日志文件的数目(NUM_LOG_SPAN) = 0组落实计数(MINCOMMIT) = 1软检查点前回收的日志文件的百分比(SOFTMAX) = 100启用的恢复的日志保留(LOGRETAIN) = RECOVERY启用的日志记录的用户出口(USEREXIT) = OFFHADR 数据库角色= STANDARDHADR 本地主机名(HADR_LOCAL_HOST) =HADR 本地服务名称(HADR_LOCAL_SVC) =HADR 远程主机名(HADR_REMOTE_HOST) =HADR 远程服务名称(HADR_REMOTE_SVC) =远程服务器的HADR 实例名(HADR_REMOTE_INST) =HADR 超时值(HADR_TIMEOUT) = 120HADR 日志写同步方式(HADR_SYNCMODE) = NEARSYNC第一个日志归档方法(LOGARCHMETH1) = LOGRETAIN logarchmeth1 的选项(LOGARCHOPT1) =第二个日志归档方法(LOGARCHMETH2) = OFFlogarchmeth2 的选项(LOGARCHOPT2) =故障转移日志归档路径(FAILARCHPATH) =错误时重试日志归档次数(NUMARCHRETRY) = 5日志归档重试延迟(秒)(ARCHRETRYDELAY) = 20供应商选项(VENDOROPT) =启用的自动重新启动(AUTORESTART) = ON索引重新创建时间和重做索引构建(INDEXREC) = SYSTEM (RESTART) 在索引构建期间记录页(LOGINDEXBUILD) = OFFloadrec 会话的缺省数目(DFT_LOADREC_SES) = 1要保留的数据库备份的数目(NUM_DB_BACKUPS) = 12恢复历史保留时间(天数)(REC_HIS_RETENTN) = 366TSM 管理类(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) = OFFdb2 => quitDB20000I QUIT 命令成功完成。
数据库清理日志
数据库清理日志数据库清理日志概述数据库日志是数据库系统中非常重要的组成部分。
它记录了所有对数据库的操作,包括增删改查等,以及相关的事务信息。
这些日志信息可以用于恢复数据、故障排除和性能优化等方面。
但是,随着时间的推移,日志文件会变得越来越大,不仅占用磁盘空间,而且也会影响性能。
因此,定期清理数据库日志是非常必要的。
清理方法1.备份并截断日志备份并截断日志是最基本的清理方法。
它可以将当前的事务信息写入到备份中,并将已经提交的事务从当前日志文件中删除。
这样可以避免过多地占用磁盘空间,并且保留了一定量的历史数据以供后续使用。
2.压缩和归档压缩和归档是另一种有效的清理方法。
它可以将历史数据进行压缩和归档,以节省磁盘空间。
同时也可以将归档文件存储到其他位置或设备上,以保证数据安全性。
3.删除旧数据删除旧数据也是一种有效的清理方法。
它可以将一些过时或无用的数据从数据库中删除,并从日志文件中删除相关的事务信息。
这样可以释放更多的磁盘空间,并且可以提高数据库的查询性能。
清理频率清理频率是根据实际情况而定的。
一般来说,数据库日志清理应该在备份之后进行,以确保数据的安全性。
同时也应该根据数据量、系统负载和硬件条件等因素来确定清理频率。
一般情况下,每周或每月进行一次清理是比较合适的。
注意事项1.备份和归档时要注意数据安全性在备份和归档时,要注意数据安全性。
尤其是在将归档文件存储到其他位置或设备上时,要确保数据不会被篡改或泄露。
2.删除旧数据时要谨慎操作在删除旧数据时,要谨慎操作。
一些重要的历史数据可能会被误删,导致无法恢复或造成损失。
3.避免过度清理过度清理可能会导致无法恢复数据或影响系统性能。
因此,在进行数据库日志清理时,应该谨慎处理,并避免过度清理。
总结数据库日志是数据库系统中非常重要的组成部分。
定期清理数据库日志可以避免占用过多的磁盘空间,并保证系统性能。
备份并截断日志、压缩和归档以及删除旧数据是常用的清理方法。
db2数据库日志清理
1、lo ad 方法装入数据:exp ort t o tem pfile of d el se lect* fro m tab lenam e whe re no t 清理条件;l oad f rom t empfi le of delmodif ied b y del prior itych ar re place into tabl enamenonr ecove rable;说明:在不相关的数据表exp ort数据时,可以采取并发的形式,以提高效率;table name指待清理ta ble的名称;m odifi ed by delp riori tycha r防止数据库记录中存在换行符,导致数据无法装入的情况; r eplac e int o对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;n onrec overa ble无日志方式装入;2、查找当前的应用:db2 lis t app licat ion g rep b tpdbs;3、删除当前正在使用的a pplic ation:db2 "fo rce a pplic ation (id1,id2,id3)"id1,id2,id3 是list显示的应用号;4、查看当前应用号的执行状态:db2 g et sn apsho t for appl icati on ag entid 299greprow5、查看数据库参数:db2 getdb cf g for //当前数据库可以省略6、修改数据库的log数据:db2 u pdate db c fg us ing <参数名><参数值>7、d b2sto p for ce的用法:在进行bind的时候出现如下错误:sql0082c an er ror h as oc curre d whi ch ha s ter minat ed pr ocess ing.sql0092nn o pac kagewas c reate d bec auseof pr eviou s err ors.sql0091nb indin g was ende d wit h "3" erro rs an d "0" warn ings.主要是表文件被加锁,不能继续使用;在进行s top的时候报错:d b2sto p8/03/2005 21:46:530 0sql1025nth e dat abase mana ger w as no t sto ppedbecau se da tabas es ar e sti ll ac tive.sql1025n the d ataba se ma nager wasnot s toppe d bec ausedatab asesare s tillactiv e.需要使用如下命令可以解决这个问题: db2stopforce08/03/2005 21:47:49 0 0 sql1064nd b2sto p pro cessi ng wa s suc cessf ul.sql1064ndb2stop proc essin g was succ essfu l.然后启动数据库db2s tart,连接数据库db2s后,重新进行bind即可。
清理数据库日志
清理数据库日志
数据库日志是记录数据库操作的重要文件,但是随着数据库的使用,日志文件会越来越大,占用过多的磁盘空间,影响数据库的性能。
因此,清理数据库日志是必要的操作。
清理数据库日志的方法有两种:一是通过数据库的备份和恢复功能,即备份日志文件并从数据库中删除已备份的日志文件;二是通过设置数据库的自动清理功能,定期清理过期的日志文件。
在进行清理数据库日志的操作时,需要注意以下几点:
1.备份日志文件时要确保备份文件的安全性和可靠性,以免备份文件遭到损坏或丢失。
2.删除日志文件时要谨慎操作,避免误删重要的日志文件,造成数据丢失。
3.定期清理过期的日志文件,可以避免日志文件过多占用磁盘空间,影响数据库的性能。
4.在进行清理数据库日志的操作之前,要先备份数据库,以便出现问题时可以及时恢复数据。
综上所述,清理数据库日志是数据库维护的重要操作之一,可以提高数据库的性能和稳定性,但需要注意安全和可靠性。
- 1 -。
db2数据库日志清理(日志归档)
统计并轨二期部署完成后,数据下行数据量较大,数据库日志增长较快,因此近期需要经常对数据库做日志归档操作,以省局数据库为例步骤如下:1. 以root用户登录数据库服务器(DB2Server)2. 日志归档操作,此操作只能在备份数据库成功之后执行。
如备份不成功,则此部分不能执行。
stma数据库su – db2admindb2 connect to stma user db2admin using db2admindb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetrone数据库db2 connect to rone user db2admin using db2admindb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetroeee数据库db2 connect to roeee user db2admin using db2admindb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetdatacdb数据库db2 connect to datacdb user db2admin using db2admindb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetstmadc数据库db2 connect to stmadc user db2admin using db2admin db2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetdceii数据库db2 connect to dceii user db2admin using db2admindb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetdatactr数据库db2 connect to datactr user db2admin using db2admin db2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetdataprov数据库db2 connect to dataprov user db2admin using db2admin db2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect resetsccmprov数据库(地市为sccmcity)db2 connect to sccmprov user scuser using scuserdb2 get db cfg | grep -E 'First active log file'记录下首活动日志名S00*****.LOG,之后db2 prune logfile prior to S00*****.LOGdb2 connect reset。
数据库日志太大,清理日志文件
数据库⽇志太⼤,清理⽇志⽂件
如果你的数据库出现如下场景,那么你需要对数据库进⾏⽇志清理了。
注:清理后的数据库,可能⽆法对数据库进⾏还原,所以,清理之前需要对数据库进⾏完整备份;
1.没有做任何操作,数据库⽇渐查询缓慢。
2.数据库数据很少,但是⽇志⽂件很⼤
你就需要查看是否⽇志⽂件过⼤,如果⽇志⽂件太⼤,就需要对⽇志⽂件进⾏清理了。
清理输⼊框的脚本如下:
----查询数据库⽇志
USE 数据库名
SELECT NAME, size FROM sys.database_files
-----清空数据库⽇志
USE master
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
USE ssyldb
GO
DBCC SHRINKFILE (N'⽇志.log' , 2, TRUNCATEONLY)
GO
USE master
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL
GO。
DB2_数据库日志管理
1、load 方法装入数据:export to tempfile of del select * from tablename where not 清理条件;load from tempfile of del modified by delprioritychar replace into tablename nonrecoverable;说明:在不相关的数据表export数据时,可以采取并发的形式,以提高效率;tablename指待清理table的名称;modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况;replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;nonrecoverable无日志方式装入;2、查找当前的应用:db2 list application grep btpdbs;3、删除当前正在使用的application:db2 "force application (id1,id2,id3)"id1,id2,id3 是list显示的应用号;4、查看当前应用号的执行状态:db2 get snapshot for application agentid 299 grep row5、查看数据库参数:db2 get db cfg for //当前数据库可以省略6、修改数据库的log数据:db2 update db cfg using <参数名> <参数值>7、db2stop force的用法:在进行bind的时候出现如下错误:sql0082can error has occurred which has terminated processing.sql0092nno package was created because of previous errors.sql0091nbinding was ended with "3" errors and "0" warnings.主要是表文件被加锁,不能继续使用;在进行stop的时候报错:db2stop8/03/2005 21:46:530 0 sql1025nthe database manager was not stopped because databases are still active.sql1025nthe database manager was not stopped because databases are still active.需要使用如下命令可以解决这个问题: db2stop force08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful.sql1064ndb2stop processing was successful.然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。
数据库日志清理策略
数据库日志清理策略
数据库日志清理策略是指将数据库中的日志文件定期或按需进行清理和归档的一系列操作和规定。
1. 定期清理:可以根据实际需求设置清理的频率,例如每天、每周、每月或每季度进行清理一次。
定期清理可以保持数据库的性能和稳定性,并及时释放空间。
2. 根据日志文件大小进行清理:当日志文件达到一定大小时,可以触发清理操作。
可以设置一个日志文件大小的上限,一旦超过该大小就自动清理最旧的日志文件。
3. 基于时间的清理:可以根据日志的时间戳来决定是否进行清理。
可以设置一个保留时间段,在该时间段之前的日志文件会被清理。
4. 数据库备份后清理:在每次数据库备份之后,可以清理备份前的日志文件。
备份后的日志文件往往不再需要,可以及时清理以释放空间。
5. 数据库压缩和归档:将过期的日志文件进行压缩和归档操作,可以节省存储空间并方便后续的管理和检索。
6. 日志文件的分散存储:如果数据库的日志文件很大或增长速度很快,可以考虑将日志文件存储在独立的存储设备或不同的存储介质上,以减少对主存储空间的影响。
7. 日志文件的异地存储:为了防止单点故障,可以将日志文件备份和存储在不同地理位置或不同设备上,以防止数据丢失。
8. 监控和报警机制:建立监控和报警机制,及时监测数据库的日志文件大小、增长速度和存储空间是否足够,以便及时采取相应的清理措施。
需要根据具体的数据库类型、应用场景和需求来确定合适的清理策略,并在实施过程中进行监控和调整。
数据库解决db2事务日志已满及日志磁盘空间已满的问题
数据库解决db2事务⽇志已满及⽇志磁盘空间已满的问题事务⽇志满指当前事务⽆法写⼊到活动⽇志中(主⽇志⽂件和辅助⽇志⽂件已全部⽤完或者没有⾜够当前事务写⼊的空间)⽇志磁盘空间已满指辅助⽇志⽂件还未使⽤完,磁盘空间已经满了。
db2数据库事务⽇志⽂件分为主⽇志⽂件和辅助⽇志⽂件,主⽇志⽂件已分配空间,辅助⽇志⽂件使⽤时再分配。
查看事务⽇志配置(mid为数据库名称):db2 get db cfg for mid运⾏结果:⽇志⽂件⼤⼩(4KB) (LOGFILSIZ) = 1024主⽇志⽂件的数⽬ (LOGPRIMARY) = 13辅助⽇志⽂件的数⽬ (LOGSECOND) = 4已更改的⾄⽇志⽂件的路径 (NEWLOGPATH) =⽇志⽂件路径 = D:\DB2\NODE0000\SQL00003\SQLOGDIR\总事务⽇志容量⼤⼩=(LOGPRIMARY+LOGSECOND)*LOGFILSIZ*4kps:(13+4)*1024*4kb=68mbDB2事务⽇志满解决办法:(1)增⼤⽇志⽂件⼤⼩:db2 udpate db cfg for mid using LOGFILSIZ 8192或者增⼤主⽇志⽂件个数:db2 update db cfg for mid using LOGPRIMARY 15或者增⼤辅助⽇志⽂件个数:db2 update db cfg for mid using LOGSECOND 10(2)停掉引起这个错误的应⽤程序或者停掉所有的应⽤程序,再重启数据库db2 force applications alldb2 force application (应⽤程序句柄通过db2 list applications获取)db2stopdb2start。
db2数据库日志清理
db2数据库⽇志清理1、归档⽇志 当db2数据库使⽤归档⽇志(通过修改参数 LOGARCHMETH1 改成是归档⽇志)的时候,⽇志数量定期不清理,将会越积越多,最后必定会磁盘爆满,访问数据库出问题。
归档⽇志分为三种活动⽇志、联机存档⽇志和脱机存档⽇志。
活动⽇志:该⽇志包含尚未提交或回滚的事务单元的相关信息,以及已提交但尚未写⼊数据库⽂件的事务的信息。
联机存档⽇志:活动⽇志中所有改动对正常处理已不需要,即该⽇志中所记录的事务都已提交并写⼊数据库⽂件时,该活动⽇志转换为联机存档⽇志。
称之为联机,是由于它们与活动⽇志存放在同⼀个⽬录下。
脱机存档⽇志:将联机存档⽇志从活动⽇志⽬录下Copy到另外的地⽅存档,就称为脱机存档⽇志。
这些⽇志可能在数据库前滚恢复的时候仍然需要。
(所谓联机归档⽇志,就是归档⽇志⽂件和活动⽇志⽂件同在⼀个⽬录下;⽽离线归档⽇志,则是归档⽇志与活动⽇志分开存放)2、归档⽇志删除 1、归档⽇志查看 db2 list history archive log all for dbname 2、查看备份时间戳db2 list history backup all for dbname3、清楚时间戳20190712001102 前所有的离线归档⽇志db2 prune history 20190712001102 with force option and delete 注意:db2 prune history 20190712001102 会清楚指定时间戳及之前的所有条⽬(不只是归档信息,还包含备份的)。
默认情况下,不会清楚最后⼀次数据库备份后的归档⽇志信息 4、查看备份历史,找出最近备份数据库的⽇志db2 list history backup all for dbname 5、清除S0000699.LOG之前的联机⼦备份⽇志db2 connect to dbname user user using pwaswd;db2 prune logfile prior to S0000699.LOG3、其他说明查看当前活动⽇志db2pd -db dbname -logsprune logfile prior to XXXXXXX.LOG 除活动⽇志⽬录下的XXXXXXX.log以前的在线归档⽇志⽂件db2 prune history [XXXXXXXXXXXXXX] with force option and delete 清除时间戳以前的离线归档⽇志⽂件。
DB2事务日志使用详解
DB2事务日志使用详解摘要:我们经常接到客户的电话说数据库日志满了,需要快速清除。
对于一些初入门的DB2使用者去维护一个大数据量的系统,这几乎是他们必然会碰到的一个问题。
碰到这样的问题,我们可以不厌其烦的一遍遍向客户解释这个问题的原因,也可以给出非常明确的解决方案,但是对于很多客户看来,这似乎是一个比较无奈的解决方案,他们只能承担着这种操作带来的系统中断。
因此,对于数据库的设计人员,开发人员和维护人员来讲,非常清楚的了解数据库的日志原理与合理的规划一些操作以避免发生这样的情况是非常重要的!下面,我们就对数据库的日志原理和使用..我们经常接到客户的电话,我的数据库日志满了,有没有什么好办法快速清除?尤其对于一些初入门的DB2使用者去维护一个大数据量的系统,这几乎是他们必然会碰到的一个问题。
我们也经常接到客户更紧急的电话,我的数据库不能使用了,因为日志占用太多空间,文件系统满了,就把日志删除了,现在数据库无法使用,这个是生产系统,需要尽快恢复,有什么办法可以让数据库立刻使用?碰到这样的问题,我们可以不厌其烦的一遍遍向客户解释这个问题的原因,也可以给出非常明确的解决方案,但是对于很多客户看来,这似乎是一个比较无奈的解决方案,他们只能承担着这种操作带来的系统中断。
因此,对于数据库的设计人员,开发人员和维护人员来讲,非常清楚的了解数据库的日志原理与合理的规划一些操作以避免发生这样的情况是非常重要的!下面,我们就对数据库的日志原理和使用中经常遇到的问题以及其解决方法跟大家分享下。
1、DB2数据库的日志原理事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logprimary + logsecond的值小于或等于256,logfilsiz的最大为262144,在9.5版本中,日志最大已经可以达到512G,其中logfilsz的大小更改为524286。
db2清理大批量数据的实践分享
“案发”当日(2月29日,四年才相逢的日子):ecif数据库中一张关键表crossindex(ecif客户与其他源系统客户对照关系表,下文均用表A代替)在批量作业处理时异常增大,停止时该表数据为1.4亿条数据。
数据异常增大的原因本文就不在赘述了,详细原因足够写一个长篇回忆录了,说多了全是眼泪。
之前做过统计,此表正常数据应当为1200万条左右。
看到下图结果的时候,有点小崩溃。
一个简单的count(1)后查询“仅”用了3分20秒,异常数据总条数在1.3亿条左右,并且查看了当时的表空间,数据表空间已剩余不多,索引表空间全部被占满了。
确切的说是因为索引表空间占满了,批量数据才得以停止,否则数据量会更大。
命题:一个有业务系统使用的数据库,需要将其中的一张表,从1.4亿条数据中删除1.3亿,最终只保留有用的1200万数据,且索引表空间已满,无法增加表空间。
磁盘空间不足,无法备份。
前提:幸运的是,数据库之前做过优化。
具体有以下几个参数:db2set DB2_SKIPINSERTED=ondb2set DB2_EVALUNCOMMITTED=on这两个参数主要是提高数据库的并行处理能力,确保批量程序处理过程中,其它应用可以查询数据。
其实就是延迟行锁定,当在表扫描或索引扫描期间执行行锁定时,DB2 会先锁定已扫描的每一行然后再确定该行是否符合查询要求,直到确定某行符合查询要求为止。
调整数据库锁列表比例,控制应用在过多情况占用锁资源;update db cfg for ecifdb using MAXLOCKS 30(目前生产环境大多数系统是采取自动配置,大小为97%)调整锁资源大小;update db cfg for ecifdb using LOCKLIST 204800(目前生产环境大多数系统是采取自动配置,大小为496864页)调整锁等待超时时长;update db cfg for ecifdb using LOCKTIMEOUT 40(目前生产环境大多数系统是采取自动配置,大小为1800秒)直白的说,有了以上数据库参数的调整,即使我们去进行数据删除时,也不会导致数据库的崩溃,毕竟数据量有点大。
DB2日常操作规范
DB2日常操作规范DB2是一种关系型数据库管理系统,广泛应用于各种企业级系统中,它的日常操作对于数据库的安全性和性能有很大的影响。
下面是DB2日常操作的规范:一、登录和退出1.不使用默认的管理员账户登录系统,而应该创建并使用具有最低权限的用户账户。
2.每次操作前先登录数据库,操作完成后及时退出数据库。
3.对登录账户进行权限管理,只给予必要的权限,不要滥用特权。
二、备份和恢复1.定期进行数据库备份,备份频率根据系统的重要性和数据的更新频率来确定。
2.备份数据时,应该进行完整备份,同时也可以按需进行增量备份或差异备份。
3.保留足够的备份副本,以便在系统出现故障时能够及时恢复。
4.恢复数据时,应该先进行验证和测试,确保数据的完整性和正确性。
三、数据安全1.对于敏感数据,应该进行加密存储,确保数据在存储和传输过程中的安全性。
2.严格控制数据库权限,并定期审查和更新权限。
3.对于不再需要的账户,应该及时删除或禁用,以防止被滥用。
四、性能优化1.定期进行数据库性能监控,及时发现和解决潜在的性能问题。
2.对于频繁访问的数据表,应该创建适当的索引,以提高查询性能。
3.合理设计数据库的结构和关系,避免冗余和重复数据。
4.控制查询的复杂度,避免不必要的关联查询和高开销的操作。
五、日志管理1.启用数据库的日志功能,在出现故障时能够追踪和恢复数据。
2.定期清理日志文件,以避免占用过多的存储空间。
3.对于关键的操作和数据修改,记录日志以便追溯和审计。
六、事务管理1.使用事务来确保数据的一致性和完整性。
2.在事务处理中,避免锁定过多的资源,以免影响系统的并发性能。
3.对于长时间运行的事务,应该设置合适的超时时间,以防止资源被占用过久。
七、版本管理1.对于数据库结构的修改,应该使用合适的版本控制工具进行管理。
2.在进行结构和数据的修改时,应该先备份数据,以便在出现问题时能够还原。
3.记录每次修改的信息和原因,方便后续追溯和管理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进行数据库恢复的时候使用以下的命令:
restore db db1 to /tstdb2/catalog into db newlogpath /tstdb2/db2log buffer 2048replace existing redirect parallelism 16;set tablespace containers for 1 using (path '/tstdb2/db2tmp');set tablespace containers for 2 using(device '/dev/rtstcontlv00' 2621440, device '/dev/rtstcontlv01' 2621440,device '/dev/rtstcontlv02' 2621440, device '/dev/rtstcontlv03' 2621440 ) ;restore db db1 continue;
7、db2stop force的用法:
在进行bind的时候出现如下错误:
sql0082can error has occurred which has terminated processing.
sql0092nno package was created because of previous errors.
14、多条件匹配查询
查询某个表中条件是b?aaa的记录:
db2 "select * from a where actno like 'b_aaa%'".
查询数据中存在某些字符的记录:
db2 "select * from a where actno like '%-aaa%".
15、数据库恢复的处理
如果没有使用参数nonrecoverable,则会出现数据库状态不正确的情况,使用:
db2 list tablesapces show detail 查看状态,如果不是正常状态,则脱机状态进行备份即可。
两个表文件之间update的方法:
db2 "update cdmcrd set offset = (select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno) where cdmcrd.crdno in (select cdmlsl.crdno from cdmlsl)
解决办法如下:
p570:>db2 rollforward db db to end of logs and completerollforward statusinput database alias = dbnumber of nodes have returned status = 1node number = 0rollforward status = not pendingnext log file to be read =log files processed = -last committed transaction = 2005-11-20-10.59.23.000000db20000i the rollforward command completed successfully.
循环日志模式:db2 update db cfg for using logretain off
10、db2 日志处理
必须按照以下正确的步骤进行操作:
要求必须使用db2命令prune进行清理,不建议使用rm命令删除。
删除前应保证应用已停止(即联机已下来)。
查看当前使用的日志文件目录及第一活动日志文件
由于数据不规范出现错误,强行中断以后,进行操作的时候出现如下错误:
sql0668noperation not allowed for reason code "3" on table "btp.acmmst".
sqlstate=57016
此时,进行反方向操作即可:
db2 "load from /dev/null of del terminate into acmmst nonrecoverable"。
备份好要删除的归档日志
删除归档日志 以应用用户(如btp)登录,执行:
$ db2 connect to
$ db2 prune logfile prior to s???????.log
注:s???????.log为查看到的第一活动日志文件。此命令可以将当前第一活动日志文件之前的归档日志文件全部删除。
4、查看当前应用号的执行状态:
db2 get snapshot for application agentid 299 grep row
5、查看数据库参数:
db2 get db cfg for //当前数据库可以省略
6、修改数据库的log数据:
db2 update db cfg using <参数名> <参数值>
11、如何清理db2diag.log文件
db2diag.log,是用来记录db2数据库运行中的信息的文件。可以通过此文件,查看记录的有关db2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。
可以通过查看实例的配置参数diagpath,来确定db2diag.log文件是放在哪个目录下:db2 get dbm cfg 如果diagnostic data directory path(diagpath) = /home/db2inst1/sqllib/db2dump,则此文件是放在/home/db2inst1/sqllib/db2dump目录下。当文件系统/home的使用率达到80%-90%左右时,应及时删除db2diag.log文件。
sql1064ndb2stop processing was successful.
然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。
8、缓冲池参数修改:
db2 alter bufferpool ibmdefaultbp size 10240
查看本表的数据内容如下:db2 "select * from syscat.bufferpools";
说明:
在不相关的数据表export数据时,可以采取并发的形式,以提高效率;
tablename指待清理table的名称;
Hale Waihona Puke modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况;
replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;
用 “db2 get db cfg for ”命令查看日志文件目录(path to log files)参数,确定数据库当前使用的日志文件目录。 例如:path to log files = /db2log/,说明db2日志存放目录是/db2log
用 “db2 get db cfg for ”命令查看第一活动日志文件(first active log file)参数,该参数对应的日志文件之前的日志文件均为归档日志文件,如果确认没有用,可以删除。 例如:first active log file = s0015913.log,说明当前第一活动日志文件是s0015913.log。
nonrecoverable无日志方式装入;
2、查找当前的应用:db2 list application grep btpdbs;
3、删除当前正在使用的application:
db2 "force application (id1,id2,id3)"
id1,id2,id3 是list显示的应用号;
9、db2 日志处理:
db2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式下,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为归档日志模式。
目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。至于采用何种模式,可以通过修改数据库配置参数(logretain)来实现: 归档日志模式:db2 update db cfg for using logretain on 注:改为on后,查看数据库配置参数logretain的值时,实际显示的是recovery。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(backup pending)状态。这时,需要做一次对数据库的脱机备份(db2 backup db ),才能使数据库状态变为正常。
sql1025nthe database manager was not stopped because databases are still active.
需要使用如下命令可以解决这个问题: db2stop force
08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful.
1、load 方法装入数据:
export to tempfile of del select * from tablename where not 清理条件;
load from tempfile of del modified by delprioritychar replace into tablename nonrecoverable;
13、多字段条件查询和修改