oracle数据库割接解决方案一

摘要:
先创建一个gbk的数据库,再创建一个utf-8的数据库。#su-oracle#exportDISPLAY=192.168.13.82:0#dbca等一会后,将弹出创建数据库的界面。例如:createorreplaceviewV_product_serviceasselect"PRODUCT_ID","PRODUCTION_SERVICE_ID"asSERVICE_IDfromPRODUCT_DETAIL;4、要导入旧的数据库gbk的数据到新utf-8数据库,前提必须在utf-8数据库那边创建DataBaselinks,如下:--CreatedatabaselinkcreatepublicdatabaselinkOLD_TMPconnecttoOLD_DBusing'';上面的配置跟PL/SQL的oracle/client/NETWORK/ADMIN/tnsnames.ora配置一样的。

一、需求

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,直到下面界面的时候选择字符集编码。

oracle数据库割接解决方案一第1张

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(用户名。视图名)

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

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

免责声明:文章转载自《oracle数据库割接解决方案一》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kali之msfconsoleC++各大有名库的介绍(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)

ENCRYPTBYASYMKEY() --非对称密钥 ENCRYPTBYCERT() --证书加密 ENCRYPTBYKEY() --对称密钥 ENCRYPTBYPASSPHRASE() --通行短语(PassPhrase)加密 --非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据,它可以从外部文件或程序集中...

[问题]数据库MySQL和Navicat的乱码问题

计算机中存储字符需要使用编码集,早期有ASCII集,但是随着技术的发展,ASCII集不能满足需求,出现了越来越多的字符,比如中文字符等。后来又发展出了Unicode、GB2312、utf8等字符集。字符集多了以后,问题就出现了,如果运行环境和对应使用情况的字符集不形同就会出现乱码或者“?”,如下图所示。 为了让字符能够正确显示,首先我们需要调整MySQL...

sql 数据库实时增量更新

---一下sql可以添加到作业中每秒执行一次   数据过多会消耗性能    --数据表如下,其中字段pid mid time price_type是一个组合主键--pid mid time price price_type uid insert into 增量更新2( pid, mid, times, price, price_type, uid ) s...

PostGIS数据库导入SHP数据

1 - 通过QGIS数据库管理工具将shp导入到postgis数据库 选择数据源中postgis对应的数据库schema(架构),然后选择导入图层或文件,弹出导入矢量图层面板。 关于选项的说明: 1) 源空间参考与目标空间参考无特殊需要,应当与数据源保持一致 2) 编码默认即可,不进行选择,如选择编码UTF-8,会导致中文乱码。 3) 需要注意源shp...

C#连接六类数据库的代码集

本文列出了C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点。 1.C#连接Access 程序代码: 1usingSystem.Data;2usingSystem.Data.OleDb;3..4stringstrConnection="Provider=Microsoft.Je...

大文件数据库脚本导入解决方案

当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库 但是当数据库导出脚本很大,用Microsoft SQl Server Management Studio执行脚本时,往往会遇到“内存不足”的提示 解决办法: 用微软自带的sqlcmd工具,可以导入执行。以SQL Server 2008R版本为例: 第一步:Win+R键入:cmd命...