前段时间接触了oracle,学了一点知识,整理一下,希望给碰到同样问题朋友一个帮助,自己也留下一点记忆,赫赫
1. 使用sys用户对mysysuser 和 commonuser 授权,使用plsql工具实现的;
建议mysysuser用户权限是dba ,connection ,resource
2 使用mysysuser用户登录到xxxxx数据库,创建n_bj_applyorder 和 n_bj_crew 两个表 ,插入所提供的数据
3 创建物理视图基于这两个表如下:
CREATE MATERIALIZED VIEW LOG ON mysysuser.n_bj_applyorder WITH ROWID including NEW VALUES ;
CREATE MATERIALIZED VIEW LOG ON mysysuser.n_bj_crew WITH ROWID including NEW VALUES ;
CREATE MATERIALIZED VIEW mysysuser.crew_applyorder_mv
build immediate
REFRESH fast on commit
AS
SELECT a.rowid a_rowid,b.Rowid b_rowid, a.applyorderid,b.CREWID
FROM mysysuser.n_bj_applyorder a, mysysuser.n_bj_crew b
where a.applyorderid = b.applyorderid;
REFRESH fast on commit
AS
SELECT a.rowid a_rowid,b.Rowid b_rowid, a.applyorderid,b.CREWID
FROM mysysuser.n_bj_applyorder a, mysysuser.n_bj_crew b
where a.applyorderid = b.applyorderid;
查询所创建的物理视图数据,存在数据,这时可以测试插入物理视图,看原表是否有变化及原表有变化是否物理视图有变化等
4 创建同义词对该物理视图:
create synonym
commonuser.syn_crew_applyorder for mysysuser.crew_applyorder_mv
这样程序中就可以使用同义词或者物理视图了去操作表了。我在解决这些技术问题时,是因为工作要求才这么做的,其中也遇到了一些问题,如用户权限问题导致同义词不能操作数据,原表不能插入数据,创建物理视图不能使用inner join 连接等等