ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:24.65KB ,
资源ID:6555958      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6555958.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(db2relocatedb 工具.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

db2relocatedb 工具.docx

1、db2relocatedb 工具db2relocatedb 工具使移动数据库和表空间容器更容易的一款工具简介:db2relocatedb 工具允许 DB2 UDB for Linux、 UNIX 和 Windows 的 DBA 物理地移动整个数据库、一个或多个表空间容器的位置,而不必进行任何备份和恢复。本文可以帮助您了解何时以及如何使用 db2relocatedb,并通过一个实际的生活示例,让 DBA 自信能够像使用 DB2 工具栏中的其他工具那样熟练地使用该工具。随 DB2 UDB V7 和 V8 一起提供的 db2relocatedb 工具,可以成为了解其功能和用法的 DBA 手中的一件利

2、器。该工具可以帮助 DBA 物理地移动整个数据库、一个或多个表的空间容器的位置,而不必进行任何备份和恢复操作(这些操作可能需要花费很多时间和资源)。它还允许重新命名数据库和转换数据库所属的实例。虽然 DB2 手册中提供了 db2relocatedb 工具的说明,但人们通常是通过口头传播了解它的。他们非常希望尝试一下这个工具,但因为该工具所做的是改变,比如修改内部数据库结构、文件等,人们使用它的时候感到非常不安。本文将讨论该工具,说明什么时候使用它,以及如何使用它,并通过一些实际的生活示例,让 DBA 自信能够像使用 DB2 工具栏中的其他工具那样熟练使用它。什么是 db2relocatedb?

3、除了保存的用户数据以外,DB2 数据库还有大量的内部元数据,这些数据描述了用户数据存放位置、用户数据属于谁,以及如何引用它们。元数据总是被 DB2 隐藏在“幕后”,用户和 DBA 都不会直接接触它。就最基本的层面而言, db2relocatedb 是这样一种工具,即如果没有其他的办法,或者在数据库内完成这些操作造成的代价不可接受或者太繁琐(和使用 db2relocatedb 相比),那么可以使用它来改变这些元数据。 比方说,修改和数据库相关的名称和路径可以使用 DB2 的备份和恢复命令来完成。先备份数据库,然后用新的名称和/或路径恢复。备份操作可以在线完成,但恢复操作是离线的,而且其间数据库不

4、能用,如果有可用性要求,那么这种情况是不可接受的。 另外一个示例是改变表空间容器的位置,也可以通过备份和恢复(更具体地说是重定向恢复)完成。但是,如果表空间是 DMS,那么可以首先使用 ALTER TABLESPACE SQL 语句向新的位置添加容器,然后再从原来位置删除容器。这种方法的副作用是操作必须按顺序进行,每一步操作之后都可能出现表空间重新调整。 可以用 db2relocatedb 工具执行相同的任务,而且,在多数情况下,与在 DB2 “内部”执行相比,db2relocatedb 工具所需的时间(和工作量)更少。但是这些只是其功能的一部分,下面列出了该工具能够于其中发挥重要作用的所有任

5、务: 修改数据库名。 修改数据库创建的路径/驱动器。 更改一个或多个表空间容器。 改变和数据库有关的日志路径 改变和数据库有关的实例 将数据库复制/移动到同一台(也可以不同)机器上,并进行上述一项或多项修改。 现在必须明确一点,因为有时候人们常常会混淆(后面还将详细说明)。当使用 db2relocatedb 改变数据库或者其容器的位置时, 您必须负责移动或复制文件可以使用选择的任何方法)。该工具本身不会物理地移动任何东西,只能改变 DB2 的内部元数据,以反映您所作的修改。 在哪里可以找到 db2relocatedb 工具?db2relocatedb 工具最初在 DB2 UDB V7 Fixp

6、ak 4 中引入的。一开始只在 Release Notes 予以说明,后来又被添加到产品文档中。V8 的所有版本中也提供了 db2relocatedb。 db2relocatedb 是一种服务器端工具(也就是说只在数据库所在的系统上运行),因此,所有的服务器安装中都有该工具。您也可以在下面的目录中找到,该目录随平台不同而不同: UNIX:实例目录/sqllib/bin/db2relocatedb Windows:安装 DB2 的驱动器sqllibbindb2relocatedb.exe 基础知识可以在文档中找到 db2relocatedb 工具的语法,但也可以通过命令行查看它。在 V7 中,只

7、需输入 db2relocatedb,不用指定任何选项,就可以查看该语法,但在 V8 中,这样做将返回 DBT1017N 错误,指明语法不正确。不过,运行 db2 ? dbt1017n 可以显示这一错误消息的扩展版本,其中显示了该工具的完整语法: db2relocatedb 的语法DBT1017N The syntax of the DB2RELOCATEDB tool is incorrect.Explanation: The DB2RELOCATEDB tool has the following syntax: db2relocatedb -f : Name of file contain

8、ing configuration information. File format is: DB_NAME=oldName,newName DB_PATH=oldPath,newPath INSTANCE=oldInst,newInst NODENUM=nodeNumber LOG_DIR=oldDirPath,newDirPath CONT_PATH=oldContPath1,newContPath1 CONT_PATH=oldContPath2,newContPath2 . Notes:o Database name, database path, and instance name a

9、re all required fields. If one of these fields is not changing then it is not necessary to list the old and new value for it, just give the old/current one.o Blank lines or lines beginning with a comment character (#) will be ignored.上述消息表明,运行该工具需要指定一个配置文件。该文件由用户创建,告诉该工具需要在内部改变数据库的哪些内容(同样,要记住,实际移动需要

10、移动的文件是由用户来移动的)。下面是所有配置文件参数的详细说明: DB_NAME:必需参数,表示数据库名。如果没有改变数据库名,那么只需指定当前的名称即可(也就是说不需要列出新的数据库名)。但是,如果要改变数据库名,那么就必须指定当前名称和新名称,中间用逗号分开。 DB_PATH: 必需参数,表示数据库最初创建的路径或驱动器(Windows)。如果不改变数据库路径,那么只需指定当前路径即可。但是如果改变数据库路径,那么就必须指定当前路径和新路径,中间用逗号分开。 INSTANCE: 必需参数,表示 DB2 实例名。如果不改变实例名,则只需指定当前实例名即可,否则需要指定当前实例名和新实例名,中

11、间用逗号分开。 NODENUM: 可选参数,表示要操作的数据库分区号。如果没有指定该参数,则默认为 0。关于该参数用法的详细说明,请参阅“Multi-Partitioned Databases”一节。 LOG_DIR: 可选参数,表示数据库日志文件的位置。人们通常用 UPDATE DB CFG USING NEWLOGPATH 命令更改日志文件目录,也可以选择使用该工具改变其他某些路径。 CONT_PATH: 可选参数,用来更改一个或多个表空间容器的位置。可以多次指定该参数来表示需要完成的修改。其中每一项都要包含原来的容器名和新的容器名,中间用逗号分开。 如果要进行多次修改,但修改的类型相同(

12、比如都是从一个公共目录移动到其他目录),那么您可以使用星号通配字符。比如: CONT_PATH=/oldLocation/*, /newLocation/* 提示:如果用相对路径容器创建表空间(即没有给出绝对文件和目录名),那么会在数据库目录中自动创建 DB2(详情请参见下一节)。如果要改变数据库路径(使用 DB_PATH),那么不需要在配置文件中列出所有这些容器。 db2relocatedb 工具会假定所有容器都位于正在移动的数据库目录中。事实上,该工具将假定位于原数据库目录下的所有容器都移动到了新的路径下,因此也不需要列出新路径。下面的 示例 #6 说明了这一点。 数据库目录在创建数据库时

13、,DB2 将创建一个目录,保存默认表空间以及与数据库有关的各种控制文件(如 SQLSPCS.1/2、 SQLDBCON)。该目录的位置取决于用户提供的信息(数据库路径)和环境信息(实例名和分区/节点号)。 注意,创建数据库时,如果没有提供数据库路径,那么可以使用数据库管理员配置参数 DFTDBPATH 的值。默认情况下,在UNIX 中,该参数值是实例所有者的主目录,而在 Windows 中,它是 DB2 的安装路径。 关于 DB2 如何确定数据库目录的位置,让我们看两个简单的示例: 例 #1:单分区数据库 在实例 db2inst1 中执行下面的语句: CREATE DATABASE TESTD

14、B ON /db2/databasePath DB2 将在下面的目录中创建数据库: /db2/databasePath /db2inst1 /NODE0000 /SQL00001 可以看出,DB2 从创建数据库的语句提供的数据库路径(该例中为 /db2/databasePath)开始。然后,DB2 扩展了实例(/db2inst1)的名称。接下来,添加了一个指定数据库分区的目录(/NODE0000)。在该例中,分区号是 0,因为我们处理的是单分区数据库。最后,DB2 添加了一个以 SQL# 形式出现的目录(/SQL00001),而且,相对于同一路径中创建的其他数据库,该目录是惟一的。随着创建的数

15、据库不断增加,分别将该目录命名为 SQL00001、 SQL00002、 SQL00003,依此类推。 例 #2: 多分区数据库 实例 db2mpp 有三个分区(0、 10 和 20)。执行下面的语句将创建一个三分区数据库: CREATE DATABASE MPPDB ON /database 在该例中, DB2 将为这三个数据库分区(路径仅有分区号不同)创建以下三个目录。这些目录可以在同一机器上,也可以在不同的机器上,这取决于分区是逻辑分区还是物理分区。 /database /db2mpp /NODE0000 /SQL00001 /database /db2mpp /NODE0010 /SQ

16、L00001 /database /db2mpp /NODE0020 /SQL00001 此外, DB2 还会在与 SQL# 目录相同的位置上创建一个 sqldbdir 目录。对于上例而言,将会创建以下目录: /db2/databasePath /db2inst1 /NODE0000 /sqldbdir /database /db2mpp /NODE0000 /sqldbdir /database /db2mpp /NODE0010 /sqldbdir /database /db2mpp /NODE0020 /sqldbdir 存储在 sqldbdir 中的信息通称为卷标数据库目录或者本地数据

17、库目录。指明“可以在目录 SQL00001 中找到数据库 TESTDB”的正是这些信息,执行 LIST DB DIRECTORY ON 命令返回的也是这些信息。但重要的是要记住,为了能够找到数据库,该目录对于 DB2(或者像 db2relocatedb 这样的任何工具)是绝对必需的。在下面的例子中可以看到,无论何时使用 db2relocatedb 移动或复制数据库,都必须移动或复制该目录。 多分区数据库如果需要修改多分区数据库(对 V7 使用 DB2 UDB EEE,或者对 V8 使用带数据分区特性的 DB2 UDB ESE),有一些问题需要注意。 首先,每个分区都有自己的元数据子集。因此运行

18、该工具执行的多数操作都要应用于每个分区。无论修改实例名、数据库名,还是修改数据库路径,都需要修改所有的分区。如果不这么做,数据库就无法启动,或者在以后会出现意想不到的结果。但是如果只想改变一个分区中特定表空间容器的位置,那么只需要对该分区运行 db2relocatedb 即可。 其次,准备运行该工具的每个分区都要有自己的配置文件,原因在于必须指定 NODENUM 参数,而该参数必须和所处理的数据库分区号相匹配。 第三,不能使用该工具改变和数据库分区有关的分区号,比方说,不能将数据库分区 10 改为数据库分区 20。 最后,NODENUM 参数“不能”说明该工具要处理的分区。换句话说,如果将配置

19、文件中 NODENUM 设为 10,但该工具却在数据库分区 0(在不同的物理机器上)上运行,那么它不会跑出去寻找分区 10 并在其上运行。如前所述,即使不改变这些信息的值,也必须指定文件中的一些信息(比如多分区数据库中的 NODENUM)。必须提供这些信息,以便该工具能够找到需要的数据库和文件,它们的位置和实例名、数据库路径和数据库分区号等有关。 注意,运行 db2relocatedb 工具之前必须关闭数据库。 例 #1: 修改单分区数据库的名称数据库名:TESTDB 数据库路径:/home/db2inst 实例名:db2inst 场景:希望将数据库名从 TESTDB 改为 NEWNAME。

20、配置文件“example1.cfg” DB_NAME=TESTDB,NEWNAMEDB_PATH=/home/db2instINSTANCE=db2inst命令: db2relocatedb f example1.cfg 例 #2: 修改多分区数据库的名称数据库名:PRODUCTS 数据库路径:/dbdir 实例名:db2mpp1 分区:1, 2, 3 场景:希望将这个三分区数据库的名称从 PRODUCTS 改为 OLDPROD。 配置文件“example2-1.cfg” DB_NAME=PRODUCTS,OLDPRODDB_PATH=/db2dirINSTANCE=db2mpp1NODENU

21、M=1配置文件“example2-2.cfg” DB_NAME=PRODUCTS,OLDPRODDB_PATH=/db2dirINSTANCE=db2mpp1NODENUM=2配置文件“example2-3.cfg” DB_NAME=PRODUCTS,OLDPRODDB_PATH=/db2dirINSTANCE=db2mpp1NODENUM=3命令: If on different physical machines, go to node 1 (else export DB2NODE=1) db2relocatedb f example2-1.cfg If on different phys

22、ical machines, go to node 2 (else export DB2NODE=2) db2relocatedb f example2-2.cfg If on different physical machines, go to node 3 (else export DB2NODE=3) db2relocatedb f example2-3.cfg 如果您是一位有经验的多分区数据库 DBA,那么您可能已经想到了更好的办法,避免必须切换到每个节点并分别执行这些命令。比如可以将上述文件放在所有分区都能访问的地方,然后执行下面的命令: db2_all db2relocatedb

23、f common_location/example2-$DB2NODE.cfg 例 #3: 改变和数据库有关的路径数据库名:SALES 数据库路径:/home/kschlamb 实例名:kschlamb 场景:您发现您已经在实例主目录中创建了数据库,而不是像期望的那样,在一个更大的、专门的文件系统中创建该数据库。新的数据库路径被称为 /salesdb。 如前所述,最初创建数据库时已经建立了下面这两个目录: /home/kschlamb/kschlamb/NODE0000/SQL00001 /home/kschlamb/kschlamb/NODE0000/sqldbdir 首先,要将这两个目录手

24、工移动到下面位置。请记住,数据库路径只是 DB2 使用的目录结构的一部分,因此,在确定目标位置时,必须遵循同样的规则。您可以使用选择的任何 OS 命令移动这些文件(如 cp/rm、 mv 和 tar)。 /salesdb/kschlamb/NODE0000/SQL00001 /salesdb/kschlamb/NODE0000/sqldbdir 然后创建配置文件并运行 db2relocatedb。 配置文件“example3.cfg” DB_NAME=SALESDB_PATH=/home/kschlamb,/salesdbINSTANCE=kschlamb命令: db2relocatedb f

25、 example3.cfg 例 #4: 修改和表空间关联的容器数据库名:FINANCE 数据库路径:/finance/database 实例名:fin 场景:您有三个大文件系统,分别是 /finance/fs1、/finance/fs2 和 /finance/fs3,并希望通过执行下面的 SQL 语句创建跨越这三个文件系统的表空间: CREATE TABLESPACE BIGTS MANAGED BY SYSTEM USING (/financ/fs1/BIGTS, /financ/fs2/BIGTS, /financ/fs3/BIGTS) 但是您没有发现所有的容器名都拼写错了,容器没有使用已

26、经创建的大文件系统,而是出现在根文件系统(通常比较小,如果空间不足可能造成问题)中。当然,一个月后,当发现空间不足时,您认识到了这一点,必须尽快改正过来。 一种办法是采用重定向恢复,但是您可能担心这样做时间太长。另外一种办法就是使用 db2relocatedb。 无论使用什么方法,首先都要将下属目录从原来的位置移动到新的地方(要记住,我们将表空间创建为 SMS,创建为 DMS 操作与此相同,只不过移动的不是目录,而是 DMS 文件)。 /financ/fs1/BIGTS=/financ e/fs1/BIGTS /financ/fs2/BIGTS=/financ e/fs2/BIGTS /fin

27、anc/fs3/BIGTS=/financ e/fs3/BIGTS 下一步是创建配置文件并运行 db2relocatedb。 配置文件“example4.cfg” DB_NAME=FINANCEDB_PATH=/finance/databaseINSTANCE=finCONT_PATH=/financ/fs1/BIGTS,/finance/fs1/BIGTSCONT_PATH=/financ/fs2/BIGTS,/finance/fs2/BIGTSCONT_PATH=/financ/fs3/BIGTS,/finance/fs3/BIGTS# 我们也可以在单个命令中使用通配符表示所有修改,下面三

28、个语句中的任何一个都可以代替上面三个语句:# CONT_PATH=/financ/fs*,/finance/fs*# CONT_PATH=/financ/*,/finance/*# CONT_PATH=/financ*,/finance*命令: db2relocatedb f example4.cfg 例 #5: 将数据库移动到新的机器(更改实例名、数据库路径和数据库名)数据库名:TESTDB 数据库路径:/testinst_filesystem 实例名:testinst 场景:您已经创建了一个测试数据库系统,现在希望将其移动到位于不同机器上的产品系统中。目标实例名为 prodinst,数据库

29、名为 PRODDB,数据库路径为 /proddb。 如前所述,最初创建数据库时创建的目录包括: /testinst_filesystem/testinst/NODE0000/SQL00001 /testinst_filesystem/testinst/NODE0000/sqldbdir 首先要将这两个目录手工移动到产品服务器上的下列目录中。请记住,数据库路径只是 DB2 使用的目录结构的一部分,因此,在确定目标位置时,必须遵循同样的规则。只要能够复制所有的目录和文件,使用任何方法都可以。 /proddb/prodinst/NODE0000/SQL00001 /proddb/prodinst/N

30、ODE0000/sqldbdir 提示:该例中假设在数据库目录之外没有表空间。如果存在这样的表空间,那么必须将这些容器也复制到新的系统中(如果改变其路径,也需要在配置文件中列出)。 根据文件复制方式的不同,这些文件有可能仍然属于原来的实例。使用“chown”将这些文件的所有者更改为新实例的所有者。 然后,创建配置文件并运行 db2relocatedb(必须在产品服务上的新建实例中执行)。 配置文件“example5.cfg” DB_NAME=TESTDB,PRODDBDB_PATH=/testinst_filesystem,/proddbINSTANCE=testinst,prodinst命令

31、: db2relocatedb f example5.cfg 例 #6: 复杂的示例数据库名:TESTDB 数据库路径:/db2/Databases 实例名:db2inst 要创建表空间,需要创建下列目录/文件: /db2/Databases/db2inst/NODE0000/SQL00001/* /db2/Databases/db2inst/NODE0000/sqldbdir/* /db2/Databases/DMS1 /db2/Databases/SMS1/* /largedir/DMS2 /largedir/SMS2/* /dev/rDMS3 场景: 移动数据库,将数据库名和路径分别改为 NEWDB 和 /dbdirectory。此外,还要将 DMS2 和 SMS2 容器从 /largedir 移动到 /dbdirectory。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1