数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
我用DB2这些年(四)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

续:恢复数据库

最近不断地有人问我怎么在命令行下面恢复数据库,我给每个人都进行了比较详细的说明;后来感觉这样的事情还是写出来比较好一些,于是就有了想写关于这个东西的念头。我想还是从讲故事开始把。。。。。。

那是一个冬天,很冷很冷的那种。当时做一个项目,采用IBM RS6000小型机作为数据库的服务器,当时是第一次接触这种机器,感觉什么东西都很新鲜。在摆弄了几天之后我真正认识到学会使用CPL环境管理数据库是多么的关键,因为我把系统玩得不正常了,DB2cc在那上面启动不起来了(后来经过查验是AIX系统环境变量的问题)。当时我一下子就蒙到那里了,因为我刚做了备份后Drop了数据库准备重新恢复到另外一个地方的;后面开发还要用呢。这时候出问题可真是要命啊~~这个时候最需要的就是冷静,我回想起当时备份使用的命令行环境,肯定可以用它来恢复数据库的,但是怎么去重定向那些表空间呢?问题就在这里,原来都是用图形界面来完成的根本就没有考虑用命令行来做,弄得现在这么狼狈地。哎!早知如此,何必当初阿!

想想还是从信息中心找下把,不过运气还不错让我给找到了。在Command ReferenceRestore DataBase章节中有个例子是关于重定向表空间的,于是我照着做了,具体过程如下:

第一步:建立一个新的数据库,在这里需要注意它的字符集,例如:

db2 create db test on /home/db2inst1 using codeset GBK territory zh_CN;

codeset GBK territory zh_CN就是指定中文字符集的命令字

第二步:将需要恢复的数据库恢复到这个新建的数据库中,在这个命令运行的时候会有一个提示信息,大概得意思就是说你要恢复的数据库正试图覆盖一个数据库,原来数据库的数据将会被覆盖,你可以不管它,选择Yes就行,因为那个数据库就是你刚才新建的。

db2 restore db test1 from /home/db2inst1/dbback taken at 20040330073123 into test REDIRECT WITHOUT ROLLING FORWARD;

在这个命令中需要指定待恢复数据库的时间戳,REDIRECT WITHOUT ROLLING FORWARD的意思是不要前滚。

第三步:重新定向表空间,我在这里使用的是文件型的表空间容器。

在这里需要注意的是你必须事先知道表空间容器的类型和大小。通过LIST TABLESPACES命令可以查看到数据库表空间的数量、类型和ID。然后通过命令LIST TABLESPACE CONTAINERS For tablespaceID(在前面命令中显示的tablespaceID的值) show detail查看表空间容器的大小类型和位置,如下所示:

Tablespace Containers for Tablespace 0
 
 Container ID                         = 0
 Name                                 = /home/smith/smith/NODE0000/
                                        SQL00001/SQLT0000.0
 Type                                 = Path
 Total pages                          = 895
 Useable pages                        = 895
 Accessible                           = Yes

接下来决定需要重定向表空间容器的类型位置和大小。重定向的表空间容器的size是不能小于当前值。

db2 =set tablespace containers for 4 using (file '/home/db2inst1/ long' 51200);

db2 =set tablespace containers for 3 using (file '/home/db2inst1/temp' 51200);

db2 =set tablespace containers for 2 using (file '/home/db2inst1/user' 102400);

第四步:正式恢复数据库,打完收工。

db2 => restore db test1 continue;




相关文章

相关软件