暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】达梦逻辑导入使用总结

达梦大学 2021-01-08
1179

本章内容已在如下环境上测试:

①数据库版本:达梦DM8;


一、准备工作

首先创建4个实例,3个初始化参数不同,其中实例2和实例4参数相同。

实例1

1>字符集:GB18030

2>是否以字节为单位:否


实例2

1>字符集:uft8

2>是否以字节为单位:否


实例3

1>字符集:uft8

2>是否以字节为单位:是


实例4

1>字符集:uft8

2>是否以字节为单位:否


二、结果测试

01

数据库字符集问题测试

情景:实例1 ->>实例2   GB18030导入UTF8

实例1上创建用户TEST,并在TEST模式下创建一个表

    create table "TEST"."TABLE_1"
    (
    "char1" VARCHAR(10)
    );

    插入一条数据,将字节填满。

      insert into TEST.TABLE_1 values('哈哈哈哈哈');
      commit;

      导出模式TEST并导入到实例2中。

      实例1导出

      实例2上创建用户TEST导入

      报错字符串截断

      查看导入情况,表结构导入成功但没有数据。

      将源数据改为‘哈哈哈’3个字,这样目的端数据库utf8可以容纳下,然后再次导出导入。

      未发现字符串截断,且数据导入成功。


      02

      字节问题测试

      情景:以字节为单位导入到非字节为单位的数据库,实例3->>实例2

      实例3创建模式,表,插入数据。

        CREATE SCHEMA "CHAR_TEST" AUTHORIZATION "SYSDBA";
        create table "CHAR_TEST"."CHAR_TEST"
        (
        "name1" VARCHAR(5)
        );
        insert into CHAR_TEST.CHAR_TEST values('哈哈哈哈哈哈');
        commit;

        导出实例3模式CHAR_TEST到实例2中。


        03

        系统字符集问题测试

        情景:源端和目的端数据库初始化参数一致。实例2->>实例4

        windows系统字符集为GBK,linux系统字符集为utf8

        使用windows管理工具导出到windows上然后导入到linux,使用linux图形界面管理工具导入。

        创建模式。建个表和插入数据。

          CREATE SCHEMA "WIN_LIN" AUTHORIZATION "SYSDBA";
          CREATE TABLE "WIN_LIN"."TABLE_1"
          (
          "COLUMN_1" CHAR(10),
          "COLUMN_2" CHAR(10));

          insert into WIN_LIN.TABLE_1 VALUES('哈哈哈','啦啦啦');
          commit;

          传输到linux上然后导入。

          虽然日志最下方没有警告,但日志最上方还是有个导入导出字符集不一致警告。

          查看下数据,数据正常

          这种虽然导入成功,但是建议开个终端可以临时设置linux字符集为gbk,然后在这个终端启动管理工具或者使用命令行dimp导入。下面进行测试是否有导入导出字符集不一致警告。


          启动管理工具

          导入未出现导入导出字符集不一致警告。


          04

          关于模式映射导入测试

          实例2创建新用户USER1,创建表和插入数据,使用SYSDBA导出新用户模式。

            create user "USER1" identified by "******"
            default tablespace "MAIN";
            grant "RESOURCE","PUBLIC","VTI","SOI" to "USER1";

            create table "USER1"."TABLE_1"
            (
            "COLUMN_1" CHAR(10),
            "COLUMN_2" CHAR(10)
            );
            insert into USER1.TABLE_1 VALUES('哈哈哈','啦啦啦');

            实例2中导出USER1模式。

            (1)方法1:直接导入实例4中


            若4中没有USER1用户,直接导入会报没有这个用户名错误。

            (2)方法2:实例4创建用户USER1导入


            (3)方法3:模式映射

            举例:源库导出的是USER1模式,目的端导入时可以更改模式名,如把USER1改为USER1BAK;

            成功更改模式USER1为USER1BAK。目的端可以提前建好模式名也可以直接导入会自动创建,前提是目的端的用户有创建模式或有对这个模式下对象操作的权限。



            以上是本次干货攻略的分享内容,希望能给大家带来帮助,谢谢。



            往期回顾

            干货攻略丨DM巧用分区交换将非分区表转换为分区表
            干货攻略丨DM8并行查询
            干货攻略丨DM8-AWR报告
            干货攻略DM8全文索引的使用


            文章转载自达梦大学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论