`
javasogo
  • 浏览: 1776729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DB2数据库还原故事 — Ubuntu篇

 
阅读更多

背景

公司内部测试用服务器CentOS,本地虚拟机Ubuntu10。开始从生产服务器拿到一个备份,准备弄到本地做测试,这个还原实验进行了很久,开始是比较顺利的。后来就一直卡在一个db2 connect to上,每次连接都会显示下面的错误:

db2 connect to our_database
-- SQL0901N  The SQL statement failed because of a non-severe system error. 
-- Subsequent SQL statements can be processed.  (Reason "Scan interface error".)  
-- SQLSTATE=58004

Google一圈又一圈,没什么符合条件的答案,倒是有个帖子说更新数据库后就正常了。不过当时没有在意,服务器上的版本是:

DB21085I  Instance "db2inst1" uses "32" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23033", and Fix Pack "1".
Product is installed at "/opt/ibm/db2/V9.7".

而本地虚拟机Ubuntu上装的版本是"DB2 v9.7.0.0",仅仅相差最后一个尾数,谁能想到,这竟然就是原因,报错就告诉我直接升级得了,无语了!!!都9.7了,还犯这种数据库还原的错误,真牛!!!

重新安装新版本数据库后,一切正常,下面把这个过程记录下来。

安装数据库

这一步很重要,直接影响到数据库是否能还原成功,最新的是9.7FixPack3,要是以后有更新的就用新的吧。这个过程都是图形安装,比Oracle简单多了,直接在DB2解压目录执行db2setup就可以了。

$ ./db2setup 
DBI1190I  db2setup is preparing the DB2 Setup wizard which will guide
      you through the program setup process. Please wait.


DBI1160I  Non-root install is being performed.

注意红色内容!切到root吧,避免不必要的麻烦。

卸载数据库

一不小心搞错什么就用这招吧!删除功能做得还是相当不错的!照着下面的URL一步步做!

http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/t0007439.html

如果忘记删除数据库,新数据库又无法还原的话,直接进入/home/db2inst/db2inst/,删除你之前还原的或使用过的数据库就行。vdir就能看到你熟悉的数据库了。

查看数据库版本信息

$su - db2inst1

$ whoami
db2inst1

$ db2level
DB21085I  Instance "db2inst1" uses "32" bits and DB2 code release "SQL09073" 
with level identifier "08040107".
Informational tokens are "DB2 v9.7.0.3", "s101006", "IP23218", and Fix Pack 
"3a".
Product is installed at "/opt/ibm/db2/V9.7".

还原数据库

以实例用户身份登录

su - db2inst1

查看数据库还原命令

db2 ? restore db

查看ROLLFORWARD命令

db2 ? rollforward db

这里我是把数据库备份文件放在/home/youbentou/share/Downloads目录下,还原时可根据具体情况做修改。

db2 restore db your_database from /home/youbentou/share/Downloads

DB20000I  The RESTORE DATABASE command completed successfully.

db2 rollforward db your_database to end of logs and stop

-------------------------
                                 Rollforward Status

 Input database alias                   = your_database
 Number of nodes have returned status   = 1

 Node number                            = 0
 Rollforward status                     = not pending
 Next log file to be read               =
 Log files processed                    =  -
 Last committed transaction             = 2010-04-20-21.08.17.000000 UTC

补充一下,有时候备份与还原的PATH可能不一致,这个时候需要手动指明具体PATH,利用工具db2ckbkp可以查看相关的信息:

db2ckbkp -S /mnt/hgfs/Downloads/DB2PTT/YOUR_DB.0.db2inst1.NODE0000.CATN0000.20110409213807.001


	Automatic storage enabled: Yes

	  Number of storage paths: 1

	             storage path: /DB2YOURDB (id = 0, state = 0x0)

	          Header:

	                  flavour: 1
	                  version: 0

	          Storage Group:

	                  flavour: 3
	                  version: 1
	               stateFlags: 0x0
	                  lastLSN: 0000000000000000
	               initialLSN: 0000000000000000
	               nextPathID: 1

还原的时候需要指定ON PATH路径。

创建数据库实例

数据库还原在实例db2inst1上,但有时我们可能会另起一个实例来访问这个数据库。当然,如果你不需要这样的访问机制,那就直接跳到最后的经验总结吧:)

首先创建一个Linux本地用户

sudo adduser timetrac

再创建数据库实例,如果不知道这个命令在哪,可以用下面方法查找:

find / -name db2icrt -type f 2>/dev/null

实例创建:

sudo /opt/ibm/db2/V9.7/instance/db2icrt -u db2fenc1 timetrac
-- DBI1070I  Program db2icrt completed successfully.

关联数据库

有了实例之后,下一步就是建立访问节点,用当前实例用户创建一个指向目标实例的节点,然后把这个节点所提供的数据库挂到当前实例上。过程如下:

timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 catalog local node dbnode instance db2inst1
DB20000I  The CATALOG LOCAL NODE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is 
refreshed.
timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 catalog db your_database at node dbnode
DB20000I  The CATALOG DATABASE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is 
refreshed.
timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 connect to your_database

   Database Connection Information

 Database server        = DB2/LINUX 9.7.3
 SQL authorization ID   = TIMETRAC
 Local database alias   = YOUR_DATABASE

经验总结

db2 ? -- 显示所有db2命令列表

db2 ? command -- 描述db2命令列表的语法

db2 ? error -- 显示相关错误或信息,并告诉用户该如何应对,这个功能非常好,无论什么时候碰到问题都可以用它来询问DB2,来指导我们下一步应该怎样做。比如db2 connect to sample时,可能会出现下面这样的错误:

$ db2 connect to sample
SQL1013N  The database alias name or database name "SAMPLE" could not be 
found.  SQLSTATE=42705

这时就可以执行db2 ? SQL1013N,看看我们该怎么办

$ db2 ? SQL1013N


SQL1013N  The database alias name or database name "<name>" could not be
      found.

Explanation: 

The database name or alias specified in the command is not an existing
database or the database could not be found in the (client or server)
database directories.

User response: 

Ensure that the specified database name exists in the system database
directory. If the database name does not exist in the system database
directory, then the database either does not exist or the database name
has not been cataloged.

If the database name appears in the system database directory and the
entry type is INDIRECT, ensure that the database exists in the specified
local database directory. If the entry type is REMOTE, then ensure that
the database exists and is cataloged on the database directories of the
server node.

For CREATE DATABASE with the AT NODE clause, ensure that the database
name is in the system database directory with an entry type of INDIRECT
and with a catalog node number that does not equal -1.

Federated system users: in addition to the above, verify that the
database names specified in SYSCAT.SERVERS are all valid. Correct any
SYSCAT.SERVERS entry for which the database specified in that entry does
not exist.

 sqlcode: -1013

 sqlstate: 42705

这功能还算贴心,确实不错。

命令位置:/opt/ibm/db2/V9.7/install,/opt/ibm/db2/V9.7/instance,/opt/ibm/db2/V9.7/bin,install目录中工具与安装反安装相关,instance与实例相关,如查看实例,创建/删除实例等,bin里放置常用的工具。

Windows下DB2和Linux下DB2的数据库备份文件不能通用。

关于通信

如何本机访问一切正常,但局域网访问有问题时,需要查看路由或防火墙的配置,具体请查看相关操作系统帮助信息。之前遇到的就是CentOS的防火墙导致无法访问,打开后一切正常。另外还有一点,就是要注意DB2的通信方式,是否是TCPIP,如何设置请参考地址:http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/start/t0004727.htm

参考

http://it.toolbox.com/blogs/db2luw/db2-recovery-basics-part-1-22758

分享到:
评论

相关推荐

    db2数据库安装包、db2数据库安装驱动

    db2数据库安装包 db2数据库链接服务器驱动 db2数据库安装方法

    DB2数据库备份还原.SQL

    DB2数据库备份还原.SQL 命令 介绍 详细操作说明。

    DB2数据库还原

    DB2数据库还原,简单操作事例,希望能够帮助到大家

    DB2数据库性能调整和优化 牛新庄 PDF

    DB2数据库性能调整和优化(第2版)侧重于介绍DB2数据库的性能调优。性能调优是一个系统工程:全面监控分析操作系统、I/O性能、内存、应用及数据库才能快速找到问题根源;深刻理解DB2的锁及并发机制、索引原理、数据库...

    db2数据库培训文档

    db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训...

    DB2数据库备份还原

    文档通过实际案例,简要介绍DB2离线备份还原过程。

    db2数据库的建立及还原

    一、数据库的建立 二、数据库的备份 三、数据库的还原

    JDBC连接DB2数据库需要的jar包

    JDBC连接DB2数据库需要的jar包 JDBC连接DB2数据库需要的jar包 JDBC连接DB2数据库需要的jar包

    DB2 数据库备份还原

    最简单的DB2 数据库 备份还原操作 包括文字 和截图 详细讲解

    Linux系统重启db2数据库命令实例详解.docx

    启动数据库: 启动db2服务:db2start 激活数据库实例:db2 activate database &lt;db_name&gt; 查看激活状态的数据库:db2 list active databases 关闭数据库: 失效数据库实例:db2 deactivate database &lt;db_name&gt; 关闭...

    DB2数据库用户手册

    DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册

    Db2数据库操作的常用命令列表

    Db2数据库操作的常用命令列表, Db2数据库操作的常用命令列表

    DB2数据库实践基础教程

    资源名称:DB2数据库实践基础教程 内容简介:《DB2数据库实践基础教程》是《数据库原理与DB2应用教程》(杨鑫华、丁传华、赵慧敏编著,北京,清华大学出版社,2007年)的配套教材,着重于对实践操作的介绍,包括DB2...

    远程连接db2数据库

    远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库

    db2数据库性能优化小技巧

    db2数据库性能优化小技巧

    DB2数据库实战手册(Part 3)

    1、《DB2数据库实战手册》由DB2china超级版主彭建军(论坛ID:pengjianjun)耗时数月而成; 2、《DB2数据库实战手册》顾名思义是一本以实战教程为主的书籍,内容涵盖了16期DB2入门开窍版和专家坐诊版块中绝大多数...

    DB2数据库数据类型

    DB2数据库数据类型DB2数据库数据类型DB2数据库数据类型

    db2数据库 v11.1版本 安装包,自测可用, 直接下载 点击安装

    db2数据库版本是一款免费软件,用户可以使用它的全部功能。它所有的界面都是使用中文,用起来很方便。 db2数据库版本具备资源占用极低、运行效率高的优点。经过测试,全部Windows系统(包括Win10、Win7、Win8、...

    DB2数据库与SQLServer数据库的异同.doc

    DB2数据库与SQLServer数据库的异同 DB2、Oracle、SQLServer数据库可以说是数据库领域的三座大山。这三座大山各有各的 特色。为此企业在选型的时候往往会在这三个数据库之间犹豫,不知道该选哪个数据库 好。笔者这里...

    DB2数据库常用命令手册

    该资源为日常用的DB2数据库命令,包括一些注意事项(例如启动数据库,停止数据库什么的,最基础的),个人觉得蛮好用的,分享一下

Global site tag (gtag.js) - Google Analytics