1. 连接到数据库
2. 用 list tablespaces 判断哪个tablespace处于quiesce状态和和取得对象(object)ID
3. 判断对象ID对应的表
a)用 db2 "select tabname from syscat.tables where tablid=对象ID" 得到表名
b)用 db2 list history 判断是那个表
4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce状态
如何实施已删除表的恢复(Dropped Table Recovery)
1. 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。
2. 对要实施Drop Table Recovery的表空间(限regular tablespace),执行:
alter tablespace 表空间名 dropped table recovery on
3. 用 list history dropped table all for 数据库名 得到删除表的tableid(例如 0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。
4. 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to 目标目录 。 在该目录下被删除的表中的数据导出,例如导出至 ../NODE0000/data文件。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。
如何备份数据库
db2 "backup database sample tablespace (syscatspace, userspace1) online to /dev/rmt0 without prompting"
or
db2 "backup database sample user db2admin using db2admin to c:ackup with 3 buffers buffer 1000 without prompting"
如何生成所有对象的DDL
db2look -d DB_NAME -a -e -m -l -f -o filename.sql
如何恢复数据库
以下是引用片段:
restoredbdb1to/tstdb2/catalogintodbnewlogpath/tstdb2/db2logbuffer2048
replaceexistingredirectparallelism16;
settablespacecontainersfor1using(path'/tstdb2/db2tmp');
settablespacecontainersfor2using
(device'/dev/rtstcontlv00'2621440,device'/dev/rtstcontlv01'2621440,
device'/dev/rtstcontlv02'2621440,device'/dev/rtstcontlv03'2621440);
restoredbdb1continue;
恢复完成后,执行db2s命令,如果出错,再执行如下命令:
db2 rollforward db db to end of logs and complete
如何查看数据库目录
1)首先用 db2 list database directory 命令查看系統資料庫目錄(System Database Directory)中有沒有該資料庫。
如果有,應該再確定該資料庫是沒有用的資料庫之後用 db2 drop database 資料庫名將其刪除。
2)如果沒有,再用 db2 list database directory on location 看在本端資料庫目錄(Local Database Directory)中有沒有該資料庫,location指定資料庫的位置(如Windows下的C: ,Unix下的/home/db2inst1)。
如何更改本地系统名称
1.db2set db2system=新系统名
2. db2 terminate
3. db2 uncatalog node 原节点名
4. db2 terminate
如何使用DB2MOVE
以下是引用片段:
Db2moveDB_NAMEaction-uUSERID–pPASSWORD
Action:export,import,load
Options如下:
OptionDefaultNotes
-tctable-creatorsall_creatorsEXPORT.Wildcard
-tntable-namesall_user_tablesEXPORT.Wildcard
-snschema-namesall_schemasEXPORT.Wildcard
-tstblspace-namesall_tablespaceEXPORT.Wildcard
-tftablesfromfile
-ioimport-optionREPLACE_CREATEIMPORT_only.
-loload-optionINSERTLOAD_only.
-llobpathscurrent_dirseparated_by_commas.NO
-uuseridlogged_on_userid
-ppasswordlogged_on_password
-awallow-warningsfalseinclude
warningsduringexport.
例如:
Db2move ehrdb export –u ehr –p ehr
Db2move ehrdb import –u her –p ehr
IMPORT如何避免日志满出错
在使用IMPORT命令向数据库出入数据时,如何避免日志空间满错误?
在执行IMPORT命令时, 如果使用循环日志, 有时会出现日志满错误,
这时可用COMMITCOUNT参数来解决.
因为日志空间满往往是因为所有的日志均处于活动状态导致的.
而COMMIT执行后, 会释放所占据的资源, 其中包括日志 .
这样, 被当前事务使用的日志在COMMIT命令执行后, 即变成非活动状态了.
如何处理日志
-日志处理
DB2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式下,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为归档日志模式。
目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。至于采用何种模式,可以通过修改数据库配置参数(LOGRETAIN)来实现: 归档日志模式:db2 update db cfg for using logretain on 注:改为on后,查看数据库配置参数logretain的值时,实际显示的是recovery。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(BACKUP PENDING)状态。这时,需要做一次对数据库的脱机备份(db2 backup db ),才能使数据库状态变为正常。
循环日志模式:db2 update db cfg for using logretain off
-处理步骤
必须按照以下正确的步骤进行操作:
要求必须使用DB2命令PRUNE进行清理,不建议使用rm命令删除。
删除前应保证应用已停止(即联机已下来)。
查看当前使用的日志文件目录及第一活动日志文件
用 “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。
备份好要删除的归档日志
删除归档日志 以应用用户(如BTP)登录,执行:
$ db2 connect to
$ db2 prune logfile prior to S???????.LOG
注:S???????.LOG为查看到的第一活动日志文件。此命令可以将当前第一活动日志文件之前的归档日志文件全部删除。
如何清理db2diag.log文件
db2diag.log,是用来记录DB2数据库运行中的信息的文件。可以通过此文件,查看记录的有关DB2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。
文章来源于领测软件测试网 https://www.ltesting.net/