【问题标题】:How to make a physical copy of database?如何制作数据库的物理副本?
【发布时间】:2016-07-18 13:54:57
【问题描述】:

我正在寻找使用 Toad 制作 DB2 数据库副本的解决方案。

我已经尝试过这样的db2move 命令:

db2move sample COPY -sn BASESAT -co target_db schema_map "((BASESAT,BASESAT4))" -u SATURNE

BASESAT 是我的数据库,BASESAT4 是我要创建的副本

我收到此错误:

当我尝试使用命令模式时。我得到了这个

【问题讨论】:

  • 你可以使用 db2move 命令。
  • db2move 是操作系统命令,而不是 CLP 命令。它需要从操作系统提示符下运行。
  • 这是交互式输入模式,你应该使用命令模式。
  • 感谢您的回答。我尝试了你的解决方案,我几乎明白了。我收到此错误“无法连接到目标数据库”。我将在我的问题中添加屏幕截图。

标签: db2 toad db2-luw


【解决方案1】:

也许这可以帮助你。

创建一个示例数据库;

 user@host:/home/db2inst1:>db2 "create db sampledb"
DB20000I  The CREATE DATABASE command completed successfully.

user@host:/home/db2inst1:>db2 connect to sampledb

   Database Connection Information

 Database server        = DB2
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLEDB

样本表;

user@host:/home/db2inst1:>db2 "CREATE TABLE SAMPLETABLE  (COL1   CHAR(6)      NOT NULL,   COL2 VARCHAR(24)  NOT NULL)"
DB20000I  The SQL command completed successfully.

插入一个虚拟行;

user@host:/home/db2inst1:>db2 "insert into SAMPLETABLE VALUES ('test1','test2')"
DB20000I  The SQL command completed successfully.

这是出口;

user@host:/home/db2inst1:>mkdir data   
user@host:/home/db2inst1:>cd data/
user@host:/home/db2inst1/data:>db2move sampledb export

Application code page not determined, using ANSI codepage 819

*****  DB2MOVE  *****

Action:  EXPORT

Start time:  Mon Jul 18 17:49:49 2016


Connecting to database SAMPLEDB ... successful!  Server : DB2 Common Server V10.5.7

EXPORT:    147 rows from table "SYSTOOLS"."HMON_ATM_INFO"
EXPORT:      0 rows from table "SYSTOOLS"."HMON_COLLECTION"
EXPORT:      5 rows from table "SYSTOOLS"."POLICY"
EXPORT:      1 rows from table "DB2INST1"."SAMPLETABLE"

Disconnecting from database ... successful!

End time:  Mon Jul 18 17:49:49 2016

生成 ddls。

user@host:/home/db2inst1/data:>db2look -d sampledb -e -a -o db2look.sql
-- Generate statistics for all creators 
-- Creating DDL for table(s)
-- Output is sent to file: db2look.sql
-- Binding package automatically ... 
-- Bind is successful
-- Binding package automatically ... 
-- Bind is successful



user@host:/home/db2inst1/data:>db2 terminate
DB20000I  The TERMINATE command completed successfully.

这是第二个数据库。

user@host:/home/db2inst1/data:>db2 "create db copydb"
DB20000I  The CREATE DATABASE command completed successfully.


user@host:/home/db2inst1/data:>db2 "connect to copydb"

   Database Connection Information

 Database server        = DB2
 SQL authorization ID   = DB2INST1
 Local database alias   = COPYDB

在 db2look 中更改数据库名称,如下所示

CONNECT TO COPYDB;


user@host:/home/db2inst1/data:>db2 -tvf db2look.sql 
CONNECT TO COPYDB

   Database Connection Information

 Database server        = DB2
 SQL authorization ID   = DB2INST1
 Local database alias   = COPYDB


CREATE SCHEMA "DB2INST1"
DB20000I  The SQL command completed successfully.

CREATE TABLE "DB2INST1"."SAMPLETABLE"  ( "COL1" CHAR(6 OCTETS) NOT NULL , "COL2" VARCHAR(24 OCTETS) NOT NULL ) IN "USERSPACE1" ORGANIZE BY ROW
DB20000I  The SQL command completed successfully.

COMMIT WORK
DB20000I  The SQL command completed successfully.

CONNECT RESET
DB20000I  The SQL command completed successfully.

TERMINATE
DB20000I  The TERMINATE command completed successfully.

您也可以使用导入来代替加载。

user@host:/home/db2inst1/data:>db2move copydb load

Application code page not determined, using ANSI codepage 819

*****  DB2MOVE  *****

Action:  LOAD

Start time:  Mon Jul 18 17:57:41 2016


Connecting to database COPYDB ... successful!  Server : DB2 Common Server V10.5.7

Binding package automatically ... /home/db2inst1/sqllib/bnd/db2common.bnd ... successful!

Binding package automatically ... /home/db2inst1/sqllib/bnd/db2move.bnd ... successful!

* LOAD:  table "SYSTOOLS"."HMON_ATM_INFO"      
***  ERROR -3304.  Check message file tab1.msg!
***  SQLCODE:  -3304  -  SQLSTATE:       
***  SQL3304N  The table does not exist.

* LOAD:  table "SYSTOOLS"."HMON_COLLECTION"    
***  ERROR -3304.  Check message file tab2.msg!
***  SQLCODE:  -3304  -  SQLSTATE:       
***  SQL3304N  The table does not exist.

* LOAD:  table "SYSTOOLS"."POLICY"             
***  ERROR -3304.  Check message file tab3.msg!
***  SQLCODE:  -3304  -  SQLSTATE:       
***  SQL3304N  The table does not exist.

* LOAD:  table "DB2INST1"."SAMPLETABLE"        
  -Rows read:          1
  -Loaded:             1
  -Rejected:           0
  -Deleted:            0
  -Committed:          1

**Error occured -1

Disconnecting from database ... successful!

End time:  Mon Jul 18 17:57:43 2016






user@host:/home/db2inst1/data:>db2 "connect to copydb"

   Database Connection Information

 Database server        = DB2
 SQL authorization ID   = DB2INST1
 Local database alias   = COPYDB

user@host:/home/db2inst1/data:>db2 "select * from SAMPLETABLE"

COL1   COL2                    
------ ------------------------
test1  test2                   

  1 record(s) selected.

【讨论】:

    【解决方案2】:

    感谢您的帮助,我得到了解决方案。 如果其他人有同样的问题,以下是步骤: 1-创建要复制的数据库(在我的情况下为BASESAT2) 2-在命令模式下使用 db2move,如下所示: db2move dbname COPY -sn SCHEMA_OF_YOUR_DBname -co TARGET_DB dbname_copy USER 用户名 USING 密码

    这是截图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多