解决不同字符集数据库间的数据同步问题

解决不同字符集数据库间的数据同步问题,第1张

解决不同字符集数据间的数据同步问题

首先在原数据库上做一个视图 对保存汉字的字段 加包函数utl_raw_cast_to_raw(保存汉字的字段)

在新数据库上 做个数据库连接 连接指向原数据库 之后对步骤 中的视图中 使用了

utl_raw_cast_to_raw的字段 再用utl_raw_cast_to_varchar 函数转换回来

具体测试环境和测试方法:

:testdb zhs gbk :gsweb us ascii

在 的testdb数据库中建一个表 itax city 其中有一列name中保存汉字

增加一个视图如:

CREATE VIEW V_CITY AS SELECT UTL_RAW CAST_TO_RAW(NAME) AS NAME FROM CITY; SELECT FROM V_CITY;

在 机器上的tnsnames ora文件中增加到 的连接入口

在gsweb数据库中增加到 的数据库链路 如:

SQL> create public database link testdb connect to itax identified by itax using testdb ; Database link created

在gsweb数据库查询

select utl_raw cast_to_varchar (name) from V_city@testdb

不能基于视图来建立物化视图 所以只能先建一个缓冲表 然后每天使用存储过程来填充此表

以达到同步数据之目的

另外 如果仅做查询使用 则在目的数据库上增加一个视图即可

如下所示:

源数据库上的视图:

CREATE VIEW V_fg_wh AS SELECT UTL_RAW CAST_TO_RAW(fg_wh) AS fgwh FROM fg_wh;

目的数据库上的数据链路:

create public database link gsweb connect to gs identified by htjs_ using gsweb ;

目的数据库上的视图:

lishixinzhi/Article/program/Oracle/201311/17577

说交换机为二层设备,是指其包含了物理层和数据链路层(最高层是数据链路层)。。而互联网设备(典型设备是路由器)则包含了物理层、数据链路层和网络层。

数据在传输时,发送端机器从最高端应用层向下依次经过各个层,最后从物理层(网卡)发出,假设经过二层交换机转发,在交换机的接收端,数据从网卡上接收,上传到数据链路层,找到下一个MAC地址,于是又向下,经过网卡(物理层)转发出去。。如果经过三层设备,则是在接收端要上传到网络层,找到对方IP地址,然后又向下,转发出去。。。

不要把X层设备就想成只包含一个层次而已,而是指这个设备从最底层(物理层)开始,向上共包含X层协议。。

你说的是类似dblink之类的远程数据库链路吧?可以用federate,参看:

要配置Federated引擎,需要MySQL50以上的版本,具体配置方法如下:

1查看是否安装了federated引擎

输入命令:show engines;

结果如下:

Engine Support Comment Transactions XA Savepoints

MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO

FEDERATED NO Federated MySQL storage engine

MyISAM YES Default engine as of MySQL 323 with great performance NO NO NO

BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO

MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO

CSV YES CSV storage engine NO NO NO

ARCHIVE YES Archive storage engine NO NO NO

InnoDB DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES

从中可以看出federated引擎没有开启

2开启federated引擎

windows下在myini中加入federated,即可开启;

linux中,需要编译时加入选项,再在myini中加入federated,方可开启

3建立远程数据表链接

假如:在ServerA上有一个数据库dbtestA,在ServerB上有数据库dbtestB,要在ServerB的数据库dbtestB上建立 ServerA的数据库dbtestA上的表tabletestA的数据表链接remote_tabletestA,语句如下:

以下是代码片段:

create table remote_tabletestA engine=federated connection = 'MySQL://root:123123@ServerA:3306/dbtestA/tabletestA';

4使用远程数据表链接

如上例,直接在ServerB的数据库dbtestB上对表remote_tabletestA进行 *** 作,即是 *** 作ServerA上数据库dbtestA的表tabletestA

先源地址,后目的地址。

根据CSDN博客网资料显示,由于数据链路帧的发送和接收是以点对点的方式进行的,因此帧中的地址顺序应该是先指明发送方的地址,再指明接收方的地址,这样接收方才能正确地接收和处理数据。因此,数据链路帧中的地址顺序通常是先源地址,后目的地址。

数据链路帧是在数据链路层中用于传输数据的基本单位,它由帧头、数据和帧尾三部分组成。其中帧头包含了数据链路控制信息,包括帧的起始标志、目的地址、源地址、协议类型等信息。

以上就是关于解决不同字符集数据库间的数据同步问题全部的内容,包括:解决不同字符集数据库间的数据同步问题、osi模型的定义,为什么网络层是第三层,数据链路层是第二层,个人任务应该把这两个换一下、mysql 有没有数据库链路等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9775541.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存