欢迎大家来到测试人生,在你休息的时候你可以畅所欲言,空间里也许有些资料可以帮助到你,来吧,朋友,测试人生欢迎你!!!!

发布新日志

  • db2重定向恢复解决方案

    2010-04-19 12:25:17

    db2的重定向恢复

    db2的重新定向恢复是一个比较快的数据库迁移方式,它通过类似克隆的方式,在新的环境中建立和当前数据库一致的一个新数据库,这里说的

    新的环境包括:1.当前实例下;2不同实例下或者别的服务器下,今天抽了点时间做了一个重新定向恢复的例子,现在分享给大家。

    首先,重新定向恢复的大致包括如下4个步骤:
    (一)       备份数据库BACKUPDATABASEOLDDB TO XX
    (二)       恢复数据库RESTORE DATABASE,这里需要加上重新定向的参数REDIRECT,类似:RESTORE DATABASE OLDDB FROM OLDDBBACKUPDIR

    TAKEN AT XX [TO F(F代表盘符:即需要将数据库恢复到那个盘符) ] INTO NEWDB REDIRECT [WITHOUT ROLLING FORWARD]
    (三)       定义新数据库的表空间容器SET TABLESPACE CONTAINERS 0—tablesapceid USING( FILE/[PATH] “F:\ssss”----容器目录[4096

    ---对于DMS必须设置容器大小])
    (四)       再次恢复数据库,这时候需要增加一个参数:CONTINUE类似:RESTORE DATABASE OLDDB CONTINUE

    我这边用到了2个例子,其一:在当前实例下把当前的数据库DWZXT重新定向恢复为DWZ;其二:在新的实例下恢复重新定向恢复数据库DWZXT为

    DWZ


    第一个例子:当前实例下的重定向恢复

    1.       得到当前实例

    C:\>db2 get instance

    当前数据库管理器实例是:DB2

    2.       查看实例下的数据库

    C:\>db2 list db directory

    系统数据库目录


    数据库1条目:

    数据库别名                      = DWZXT
    数据库名称                      = DWZXT
    数据库驱动器                    = D:\DB2
    数据库发行版级别                = a.00
    注释                            =
    目录条目类型                    =间接
    目录数据库分区号                = 0
    备用服务器主机名                =
    备用服务器端口号                =

    3.       连接到数据库,并进行数据库备份,对应第一步骤

    C:\>db2 connect to dwzxt

       数据库连接信息

    数据库服务器         = DB2/NT 8.2.0
    SQL授权标识         = ADMINIST...
    本地数据库别名       = DWZXT


    C:\>db2 force applications all
    DB20000I FORCE APPLICATION命令成功完成。
    DB21024I 该命令为异步的,可能不会立即生效。


    C:\>db2 backup database dwzxt to e:\dbres

    备份成功。此备份映像的时间戳记是:20080223144514

    4.       恢复数据库,对应第二步骤

    C:\>db2 restore database dwzxt from e:\dbres taken at 20080223144514 into dwz r
    edirect without rolling forward
    SQL1277N 复原已检测到一个或多个表空间容器是不可访问的,或者已将它们的状态设置为

    “必须定义存储器”。
    DB20000I RESTORE DATABASE命令成功完成。

    5.       查看新数据库需要定义的表空间容器,并生成容器目录[文件](在当前命令行编辑器中)
    C:\>db2 list tablespaces

               当前数据库的表空间

    表空间标识                        = 0
    名称                              = SYSCATSPACE
    类型                              =系统管理空间
    内容                              =任何数据
    状态                              = 0x2001100
       详细解释:
         复原暂挂
         必须定义存储器
         可以定义存储器

    表空间标识                        = 1
    名称                              = TEMPSPACE1
    类型                              =系统管理空间
    内容                              =系统临时数据
    状态                              = 0x2001100
       详细解释:
         复原暂挂
         必须定义存储器
         可以定义存储器

    表空间标识                        = 2
    名称                              = USERSPACE1
    类型                              =系统管理空间
    内容                              =任何数据
    状态                              = 0x2001100
       详细解释:
         复原暂挂
         必须定义存储器
         可以定义存储器

    表空间标识                        = 3
    名称                              = USERTMPSP
    类型                              =系统管理空间
    内容                              =用户临时数据
    状态                              = 0x2001100
       详细解释:
         复原暂挂
         必须定义存储器
         可以定义存储器
    由以上可以看出我们需要定义4个系统管理表空间的容器:0:SYSCATSPACE、1:TEMPSPACE1、2:USERSPACE1、3:USERTMPSP,最终建好如下目录:
    C:\>dir E:\dwzx
    驱动器E中的卷没有标签。
    卷的序列号是0E00-006F

    E:\dwzx的目录

    2008-02-23 14:48    <DIR>          .
    2008-02-23 14:48    <DIR>          ..
    2008-02-23 14:49    <DIR>          SYSCTBS
    2008-02-23 14:49    <DIR>          SYSTMPTBS1
    2008-02-23 14:50    <DIR>          USERTMPTBS
    2008-02-23 14:50    <DIR>          USERTBS1
                   0个文件              0字节

    6.       定义新数据库的表空间容器,对应步骤3

    C:\>db2 set tablespace containers for 0 using (path "E:\dwzx\SYSCTBS")
    DB20000I SET TABLESPACE CONTAINERS命令成功完成。

    C:\>db2 set tablespace containers for 1 using (path "E:\dwzx\SYSTMPTBS1")
    DB20000I SET TABLESPACE CONTAINERS命令成功完成。

    C:\>db2 set tablespace containers for 2 using (path "E:\dwzx\USERTBS1")
    DB20000I SET TABLESPACE CONTAINERS命令成功完成。

    C:\>db2 set tablespace containers for 3 using (path "E:\dwzx\USERTMPTBS")
    DB20000I SET TABLESPACE CONTAINERS命令成功完成。

    C:\>db2 list tablespaces

               当前数据库的表空间

    表空间标识                        = 0
    名称                              = SYSCATSPACE
    类型                              =系统管理空间
    内容                              =任何数据
    状态                              = 0x2000100
       详细解释:
         复原暂挂
         可以定义存储器

    表空间标识                        = 1
    名称                              = TEMPSPACE1
    类型                              =系统管理空间
    内容                              =系统临时数据
    状态                              = 0x2000100
       详细解释:
         复原暂挂
         可以定义存储器

    表空间标识                        = 2
    名称                              = USERSPACE1
    类型                              =系统管理空间
    内容                              =任何数据
    状态                              = 0x2000100
       详细解释:
         复原暂挂
         可以定义存储器

    表空间标识                        = 3
    名称                              = USERTMPSP
    类型                              =系统管理空间
    内容                              =用户临时数据
    状态                              = 0x2000100
       详细解释:
         复原暂挂
         可以定义存储器

    7.       再次恢复数据库,对应步骤4

    C:\>db2 restore database dwzxt continue
    DB20000I RESTORE DATABASE命令成功完成。

    Ok,搞定下来看一下连接会不会出问题
    C:\>db2 list db directory

    系统数据库目录

    目录中的条目数= 2

    数据库1条目:

    数据库别名                      = DWZ
    数据库名称                      = DWZ
    数据库驱动器                    = C:\DB2
    数据库发行版级别                = a.00
    注释                            =
    目录条目类型                    =间接
    目录数据库分区号                = 0
    备用服务器主机名                =
    备用服务器端口号                =

    数据库2条目:

    数据库别名                      = DWZXT
    数据库名称                      = DWZXT
    数据库驱动器                    = D:\DB2
    数据库发行版级别                = a.00
    注释                            =
    目录条目类型                    =间接
    目录数据库分区号                = 0
    备用服务器主机名                =
    备用服务器端口号                =<SP

  • 收缩日志脚本

    2010-04-19 11:51:39

    --------------设定当前处理数据库----------------
    use [qcsiteadmin_db]
    go
    -----------------------------------------------

    --建立临时表temp0123456789
    --注意如果该表存在会被删除!!!!!!!!!!!!!!
    if exists (select * from sysobjects where id = object_id(N'[dbo].[temp0123456789]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[temp0123456789]

    GO
    -----------------------------------------------


    dbcc shrinkfile (2)

    create table temp0123456789 (char1 char(4000))

    go

    declare @i int

    declare @j int

    --------------------------------
    DECLARE @DoTimes       int          --收缩次数,建议为10次
    set @DoTimes=10
    --------------------------------

    set @j=0


    while (@j < 500)

    begin

     select @i = 0 

     while (@i < @DoTimes)

     begin

       insert into temp0123456789 values ('a')

       select @i = @i +1

     end

     truncate table temp0123456789

     backup log [qcsiteadmin_db] with truncate_only

     set @j=@j+1

     select @j

    end

    dbcc shrinkfile (2)

    go

    --------------清除临时表---------------
    if exists (select * from sysobjects where id = object_id(N'[dbo].[temp0123456789]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[temp0123456789]

    GO
    --------------------------------------

  • db2常用命令以及示例

    2010-04-19 11:44:56

    近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持xml存储、检索机制,通过XPath进行解析操作,使开发人员免于对xml文件在应用进行解析处理,先对其常用命令进行一下汇总,以免遗忘。

    注意:在执行如下命令时,需要首先安装db2客户端并通过在运行中输入db2cmd进行初始化

    一、基础篇

    1、db2 connect to <数据库名>    --连接到本地数据库名

           db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库

    2、 db2 force application all      --强迫所有应用断开数据库连接

       
    3、db2 backup db db2name<数据库名称>  --备份整个数据库数据

           db2 restore db <db2name>                     --还原数据库

    4、db2 list application --查看所有连接(需要连接到具体数据库才能查看)

    5、db2start    --启动数据库
        
          db2stop --停止数据库

    6、create database <数据库名> using codeset utf-8 territory CN    --创建数据库使用utf-8编码

    7、db2 catalog 命令

    db2 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号>  --把远程数据库映射到本地接点一般为50000

    db2 catalog db <远程数据库名称> as <接点名称>  at node PUB11                       --远程数据库名称到本地接点

    db2 CONNECT TO <接点名称> user <用户名> using <密码>                               --连接本地接点访问远程数据库


    8、数据库导出

    db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql        --导出数据库的表结构,其中用户空间一般为db2admin/db2inst1

    db2look -d <数据库名> -u <用户> -t <表1> <表2>  -e -o <脚本名称>.sql   --导出数据库中表1和表2的表结构

    db2move <数据库名> export              --导出数据库数据

    db2move <数据库名> export -tn <表1>,<表2>       --导出数据库中表和表数据

    9、数据库导入

    db2 -tvf  <脚本名称>.sql       --把上述导出的表结构导入到数据库表结构

    db2move <数据库名> load -lo replace   --把上述“db2move <数据库名> export “导出的数据导入到数据库中并把相同的数据替换掉 


    在实际使用过程中,如果用到db2自增主键,需要使用by default, 而不是always,功能是一样的,但这样在数据移植时候会很方便!

    10、db2 connect reset 或 db2 terminate    --断开与数据库的连接

    11、db2set db2codepage=1208        --修改页编码为1208

    12、db2 describe table <表名>       --查看表结构

    13、db2 list tables                            --查看数据库中所有表结构

            list tables for system                  --列出所有系统表

    14、db2 list tablespaces                  --列出表空间

    二、高级篇


    15、fetch first 10 rows  only   --列出表中前10条数据

    例如:select * from <表名> fetch first 10 rows only

    16、coalesce(字段名,转换后的值)       --对是null的字段进行值转换

    例如:select coalesce(id,1)  from <表名>    --对表中id如果为null转换成1

    17、dayofweek(日期)     --计算出日期中是周几(1是周日,2是周一.......7是周六)

           dayofweek_iso    --计算出日期中是周几(1是周一.......7是周日)
          
     例如:dayofweek(date(2008-01-16))   --它会返回是4,代表星期三
               
                 dayofweek_iso(date(2008-01-16))   --它会返回是3,代表星期三

    18、dayofyear(日期)   --一年中的第几天,范围在1-366范围之内

    注意:参数中日期的格式是YYYY-MM-DD的形式,如果不是需要进行转换,否则函数不能使用

    例如:日期是20080116必须要进行转换

    dayofweek(concat(concat(concat(substr(openDate,1,4),'-'),concat(substr(openDate,5,2),'-')),substr(openDate,7,2))) as week)

    这样格式正确的。

    19、concatt(参数1,连接值)       --把参数1加上连接值组成一个新值。

      例如: concat('aa','b')    --返回是aab


    把oracle表导入到db2数据库中,有些字段类型需要进行转换,具体看:oracle与db2数据类型转换


          以上是自己经常用到一些db2命令,db2命令很多,不常用的没有在上面记录,以后如使用新命令会继续进行更新!
Open Toolbar