zoukankan      html  css  js  c++  java
  • oracle数据库割接解决方案一

    一、需求

    1、由于新版本上线替换旧版本、两个版本互不兼容、数据库里面有些表不一致,比如表名、字段等等。

    2、要全部保留旧数据库里面的数据信息,同时要保证数据唯一性、正确性、可靠性--完整性。

    3、新版本在数据切割后可以正常运行,整个系统的功能正常、计费正确等。

    二、根据需求,下面将对解决方案进行分解:

    1、由于旧数据库的编码是gbk,而新的数据库是utf-8,所有导数据的时候要注意有没有产生乱码。

         先创建一个gbk的数据库,再创建一个utf-8的数据库。由于割接测试原因需要很多的创建数据库,搞烦了,找个界面的创建数据库方法。

        安装一个xmamager3,注册码:101210-450789-147200 (建议用   xmamager)

        或者安装vnc客户端,不过vnc前提是要在服务器安装服务端(这次vnc没有弹出创建数据库的界面来,不知道啥原因,郁闷)

        安装好xmamager后登录linux服务器,切换到oracle用户。

        # su - oracle

        (设置界面显示的ip地址,即自己的windows机子ip)

        # export DISPLAY=192.168.13.82:0

        (输入启动数据库创建界面命令)

        #dbca

        等一会后,将弹出创建数据库的界面。

        如果弹出来的数据库界面端是乱码,请设置一下编码格式

         #export LANG=en_us.utf8

        一路next,直到下面界面的时候选择字符集编码。


    2、创建完两个数据库后,把旧数据库导入gbk编码的数据库。

        注意:如果是通过linux命令行备份的export文件.dmp后缀的文件,只能通过命令行import,用PL/SQL导入报错。

                可以使用PL/SQL里面自带的tools工具栏里面提供的import tables和export tables备份和恢复,不过功能好像不全,

                比如存储过程、序列等就没有备份,要手动copy脚本执行。烦!

        脚本编码的问题:如果是linux命令行执行脚本,要求utf -8 无 BOM编码,如果有BOM编码将报错。

    3、由于新数据库导旧数据库使用的是在旧数据库那边创建视图,通过视图导入新数据库。

    步骤分解:

    在刚建好的gbk数据库(旧)创建所有新表那边对应的视图。

    例如:

    create or replace view V_product_service(新数据库表名)   as
    select "PRODUCT_ID"(如果新旧字段名一样不用启别名),"PRODUCTION_SERVICE_ID" as SERVICE_ID(新数据库字段) from PRODUCT_DETAIL(旧数据库表名);

    4、要导入旧的数据库gbk的数据到新utf-8数据库,前提必须在utf-8数据库那边创建DataBase links,如下:

    -- Create database link
    create public database link OLD_TMP
      connect to OLD_DB
      using '(DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
    )';

    上面的配置跟PL/SQL的oracle/client/NETWORK/ADMIN/tnsnames.ora配置一样的。

    5、在新utf-8数据库导入时使用的语法:

    insert into product_service(PRODUCT_ID,SERVICE_ID)
    select  PRODUCT_ID,SERVICE_ID from V_product_service@OLD_TMP;
    commit;

    不同服务器和数据库:V_product_service@OLD_TMP;

    相同数据库不同用户名:new.V_product_service(用户名。视图名)

    -------------未完待续

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    BFS visit tree
    Kth Largest Element in an Array 解答
    Merge k Sorted Lists 解答
    Median of Two Sorted Arrays 解答
    Maximal Square 解答
    Best Time to Buy and Sell Stock III 解答
    Best Time to Buy and Sell Stock II 解答
    Best Time to Buy and Sell Stock 解答
    Triangle 解答
    Unique Binary Search Trees II 解答
  • 原文地址:https://www.cnblogs.com/cuker919/p/4878579.html
Copyright © 2011-2022 走看看