请首先确保您的数据库服务器启动了 SSH 服务,再次重做以上步骤,那么您将会看到如下的对话框弹出让您选择表数据要导出的路径。
图 5. 在数据库服务器上选择导出表数据的路径
选择连接数据库的实例用户 db2inst3 的用户目录下的 exportdata 目录,点击 OK. 再在导出向导的 File Name 文本框中输入导出的文件名为 mytb02_exportdata,保持其它设置为缺省值。点击导出表数据向导中的链接 Preview Command, 您将看到为导出操作产生的 DDL,请参考图 6:
图 6. 预览生成的表数据导出 DDL
4. 在上图中点击按钮 Run, 你将会在 Data Studio 的 SQL Results 视图中看到在执行导出的语句时有以下 Warning 产生:
SQL3104N The Export utility is beginning to export data to file
"/home/db2inst3/exportdata/mytb02_exportdata".
SQL3001C An I/O error (reason = "sqlofopn -2079391743") occurred
while opening the output file.
SQL3105N The Export utility has finished exporting "0" rows.
从结果看出,产生输入输出错误,没有一行数据导出,请参考图 7:
图 7. 导出时的 I/O 错误
此时用户应该注意: Data Studio 是采用 ADMIN_CMD 的用户功能函数 UDF 来执行导出操作,而这个 UDF 是用 DB2 的防护用户 (Fenced User) 在 DB2 的地址空间外执行。所以我们应该确保指定一个 DB2 防护用户有写权限的导出路径。本例中 DB2 的防护用户 db2fenc3 对实例用户 db2inst3 的用户目录 /home/db2inst3 没有写权限,所以导出失败。
5. 在服务器所在的机器上创建一个 DB2 防护用户有权读写的目录 /userdata,然后在 DataStudio 的表数据导出向导上选择此目录为表数据导出目录,
再执行此导出操作,DDL 就可以成功执行,请参考图 8:
图 8. 导出数据成功
实例一操作总结:
1. 当 Data Studio 客户端和数据库服务器需要通信时,确保数据库端启用了 SSH 服务,Data Studio 客户端采用 SSH 和数据服务器端通信。
2. DataStudio 采用 ADMIN_CMD 的功能函数导出表数据,此功能函数使用防护用户执行,我们需要确保 DB2 防护用户对指定的导出路径有写权限。本人建议最好实例用户和防护用户都对数据导出目录有写权限。
实例二:在不同的 schema 下迁移数据库对象
本实例将实现将一个 DB2V9.7 数据库某个 Schema 下的数据库对象和相关联的对象全部迁移到另一个 DB2V9.7 数据库下的某个 Schema 下。
环境介绍:
1. 源数据库 SAMPLE 位于 Linux 机器 A, 包含一个名为 SOURCESCHEMA 的 schema, SOURRCESCHEMA 下有一些表,其中有些表包含索引,并且用到了各自指定的表空间,不同的表空间又指定了不同的缓冲池。
2. 目标数据库 TEST 位于 Linux 机器 B,包含一个名为 TARGETSCHEMA 的 schema, TARGETSCHEMA 下没有任何表。
操作目的:
把数据库 SAMPLE 的 SOURCESCHEMA 下的表和相关联的数据库对象迁移到数据库 TEST 的 TARGETSCHEMA 下。
操作步骤:
1. 为数据库 SAMPLE 和 TEST 创建两个数据库连接。
数据库 SAMPLE 下的 SOURCESCHEMA 下包含的表如下图。在这里告诉大家一个小技巧,在 Schema 的列表编辑视图中双击一个 Schema 可以显示这个 Schema 下的所有表,请参考图 9:
图 9. 源 Schema 下的所有表
以下文章点击率最高
Loading…
博主加油感谢博主
读后深有感触thank