异构平台,高手帮忙

latahu 2003-03-26 01:19:37
有谁对Oracle 9i比较熟悉
ERP系统是另一个公司开发,数据库服务器Oracle 9i for Unix
SCM系统是我们公司开发,要提取ERP中的一部分基础数据,SCM系统是Win2000 Server+Oracle 9i+ASP.NET,ERP那边愿意开放部分表,但不愿做其他多余的工作。我该怎样取得Unix下的数据?
1.我在2000 Server上建立快照,用触发器定时更新是否可行?
2.能不能通过微软的ODBC,ADO之类的直接取?

请高手给一个简单的例子,特别是快照和触发器的例子,分数不够我愿意加到500分,另开主题散分。
...全文
28 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzjjww 2003-03-27
  • 打赏
  • 举报
回复
ok
maohaisheng 2003-03-26
  • 打赏
  • 举报
回复
oracle可以很好屏蔽平台差异。
使用定时刷新的快照就可以了,不用使用触发器。

快照的一个例子

--GLOBAL NAME设置为TRUE或者FALSE并不影响快照的使用
--修改数据库名称ALTER DATABASE RENAME GLOBAL_NAME TO "ORCL";是没有必要的
--
--初始化文件

global_names = false
job_queue_processes = 16
job_queue_interval = 60
open_links = 4

--TOM/MAO用户拥有足够权限
--创建快照的语句最好加上模式(用户)的名称

ORCL:主数据库
MYDB:本地数据库

--创建共有数据库链
CREATE PUBLIC DATABASE LINK orcl_link
USING 'ORCL';

--创建私有数据库链(否则快照不会自动刷新
--每次TOM用户刷新的时候会重新连接对方数据库,但是连接的时候没有带用户名和,密码的信息
CREATE DATABASE LINK orcl_link
CONNECT TO tom IDENTIFIED BY mao;

SELECT * FROM global_name@orcl_link;

--在ORCL数据库上创建表SNAP_TABLE
CREATE TABLE SNAP_TABLE (ID CHAR(5),VALUE NUMBER(10,2));

--创建主键
ALTER TABLE SNAP_TABLE ADD CONSDROPTRAINT snap_table_key PRIMARY KEY (ID);

--在ORCL数据库表SNAP_TABLE创建快照日志
CREATE SNAPSHOT LOG ON SNAP_TABLE;

--在MYDB上创建快照
CREATE SNAPSHOT TOM.MY_SNAP
REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/1440
AS SELECT * FROM TOM.SNAP_TABLE@ORCL_LINK;


--在DBA_STUDIO中察看快照查询

--测试快照的刷新
INSERT INTO SNAP_TABLE VALUES('10014',140);
COMMIT ;

--1分钟之后可以看到了刷新的结果

--删除快照
DROP SNAPSHOT MY_SNAP;
DROP SNAPSHOT SNAPOF_SNAP_TABLE;


--重新设置快照刷新
ALTER SNAPSHOT MY_SNAP
REFRESH COMPLETE
START WITH TRUNC(SYSDATE+1)+8/24
NEXT SYSDATE+15/1440*60;






maohaisheng 2003-03-26
  • 打赏
  • 举报
回复
oracle可以很好屏蔽平台差异。
使用定时刷新的快照就可以了,不用使用触发器。

快照的一个例子

--GLOBAL NAME设置为TRUE或者FALSE并不影响快照的使用
--修改数据库名称ALTER DATABASE RENAME GLOBAL_NAME TO "ORCL";是没有必要的
--
--初始化文件

global_names = false
job_queue_processes = 16
job_queue_interval = 60
open_links = 4

--TOM/MAO用户拥有足够权限
--创建快照的语句最好加上模式(用户)的名称

ORCL:主数据库
MYDB:本地数据库

--创建共有数据库链
CREATE PUBLIC DATABASE LINK orcl_link
USING 'ORCL';

--创建私有数据库链(否则快照不会自动刷新
--每次TOM用户刷新的时候会重新连接对方数据库,但是连接的时候没有带用户名和,密码的信息
CREATE DATABASE LINK orcl_link
CONNECT TO tom IDENTIFIED BY mao;

SELECT * FROM global_name@orcl_link;

--在ORCL数据库上创建表SNAP_TABLE
CREATE TABLE SNAP_TABLE (ID CHAR(5),VALUE NUMBER(10,2));

--创建主键
ALTER TABLE SNAP_TABLE ADD CONSDROPTRAINT snap_table_key PRIMARY KEY (ID);

--在ORCL数据库表SNAP_TABLE创建快照日志
CREATE SNAPSHOT LOG ON SNAP_TABLE;

--在MYDB上创建快照
CREATE SNAPSHOT TOM.MY_SNAP
REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/1440
AS SELECT * FROM TOM.SNAP_TABLE@ORCL_LINK;


--在DBA_STUDIO中察看快照查询

--测试快照的刷新
INSERT INTO SNAP_TABLE VALUES('10014',140);
COMMIT ;

--1分钟之后可以看到了刷新的结果

--删除快照
DROP SNAPSHOT MY_SNAP;
DROP SNAPSHOT SNAPOF_SNAP_TABLE;


--重新设置快照刷新
ALTER SNAPSHOT MY_SNAP
REFRESH COMPLETE
START WITH TRUNC(SYSDATE+1)+8/24
NEXT SYSDATE+15/1440*60;






beckhambobo 2003-03-26
  • 打赏
  • 举报
回复
快照不用更新,只要相前表更新,它会自动更新。可以通过用ado直接取,就如同表的作用.
以下快照例子:

Materialized Aggregate View Examples
The following statement creates and populates a materialized aggregate view and specifies the default refresh method, mode, and time:

CREATE MATERIALIZED VIEW mv1 REFRESH FAST ON COMMIT
BUILD IMMEDIATE
AS SELECT t.month, p.prod_name, SUM(f.sales) AS sum_sales
FROM time t, product p, fact f
WHERE f.curDate = t.curDate AND f.item = p.item
GROUP BY t.month, p.prod_name;


The following statement creates and populates the materialized aggregate view sales_by_month_by_state. The materialized view will be populated with data as soon as the statement executes successfully. By default, subsequent refreshes will be accomplished by reexecuting the materialized view's query:

CREATE MATERIALIZED VIEW sales_by_month_by_state
TABLESPACE my_ts PARALLEL (10)
ENABLE QUERY REWRITE
BUILD IMMEDIATE
REFRESH COMPLETE
AS SELECT t.month, g.state, SUM(f.sales) AS sum_sales
FROM fact f, time t, geog g
WHERE f.cur_date = t.cur_date AND f.city_id = g.city_id
GROUP BY month, state;

newusers 2003-03-26
  • 打赏
  • 举报
回复
同意,用DBLINK简单,就像直接存取自己的表一样(因为对方已经开放了他们的表),如
select * from tab@dblink_name,若想更接些,可以建立本地的视图
tuidler 2003-03-26
  • 打赏
  • 举报
回复
数据库是分开的吧,可以考虑用数据链路呀,DBLINK,你查查这方面的文章很多的。
快照也可以的吧,不过没怎么用过。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧