程序员人生 网站导航

synonyms

栏目:数据库应用时间:2015-06-04 08:01:59

0.先来个例子:CREATE OR REPLACE SYNONYM IMWSAPP.TB_IWR_MPS_PROCESS_LOG_X FOR IMWS.TB_IWR_MPS_PROCESS_LOG_X;

synonyms是对可以跨schema的表的代理,主要做对表,权限的管理。
跟view视图类似,但是view只能在同1个schema下,
比如:1个synonyms名叫IFINAPP,他本身也是1个schema,可以在他下面建表,同时还可以在他下面建synonyms,让IFINAPP由从多个schema下抽取的1些表组成。

synonyms也像个别名,可以给N多个数据源都起这个别名,这样即便很多app要连到很多不同的jndi下面,也都可以在配置的时候都用这同1个synonyms名字。

synonyms是单向的。如果CIS要用到IRS的表,而CIS的表是建在IFIN这个schema下的,同时IFINAPP是IFIN的synonyms;(1旦有了synonyms的关系,2者就不能有同名的表了)
而IRS的表完全是建在IFINAPP和IFIN(分别在这俩个schema下都建了)下,且2者之间没有synonyms关系。
我们CIS在IFIN下建的view视图,这个视图是去取IRS的表数据。现在问题就来了,CIS根据view是取的IFIN下的表,而IRS这个app取数据的时候是直接取的IFINAPP的表,就致使CIS AND IRS2个app查出来的数据不1致了。


1.q1:IRS表建在IFINAPP,CIS 的view还是建在IFIN,同时IFINAPP做IFIN的synonyms,这样还有问题吗?
A1:有。synonyms是单向的IFINAPP代理IFIN,在IFIN是查不到IFINAPP下的IRS的表的。

2.synonyms的创建必须是以connect sys as sysdba的权限才行。写drs里面用到的sql,自己整体跑1遍都正确而且可以联贯履行才行。

3.q3:trigger要创建synonyms吗?
IMWS下的表aLog,bLog。创建在IMWS下的trigger作用:1旦aLog表中插入数据,bLog表中插入相同的数据。MPS项目连得数据源是IMWSAPP(它对IMWS下面的MPS的表都做了synonyms)
问题就是这个trigger只在IMWS下面,那这样的话向IMWSAPP synonyms对应的aLog中插入数据的时候,IMWS下的bLog还会自动履行trigger,插入数据吗?
A3:会的,trigger是在table的基础上的,虽然存在synonyms,最外层调用都会通过synonyms,但是trigger的定义就是只要aLog插入数据bLog就会插入数据。所以不会受任何影响,不需要再创建trigger的synonyms。



1.创建完了synonym,同时还要授权,不然还是操作不了synonym对应的那张表的
CONNECT AS SYSDBA;

CREATE OR REPLACE SYNONYM IMWSAPP.TB_IWR_MPS_PROCESS_LOG_X FOR IMWS.TB_IWR_MPS_PROCESS_LOG_X;
GRANT ALTER, DELETE, INSERT, SELECT, UPDATE ON IMWS.TB_IWR_MPS_PROCESS_LOG_X TO IMWSAPP;
COMMIT;

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐