12
返回列表 发新帖
楼主: raddisonlee

帮忙测试!用DBMS_METADATA 来取一下远程服务器(DATABASE LINK)上对象的DDL定义

[复制链接]
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
11#
发表于 2005-3-21 07:15 | 只看该作者

Re: Re: Re: 谁请帮忙测试!用DBMS_METADATA这个包 来取出远程服务器(通过DATABASE L

最初由 Yong Huang 发布
[B]

Thanks for the solution. I was messing with dbms_lob.substr last night but forgot the @dblink for it. So all three @dblink parts are needed.

If someone really really wants to avoid using dbms_lob, there *is* a way, although it's not practical. First you have to have a table in the remote DB that has a clob column (if none, create one). Second you have to have such a table locally (not necessarily the same name). Then

insert into lobtabremote@remote select dbms_metadata.get_ddl@remote('TABLE','TEST') from dual; --dual@remote works too but unnecessary
insert into lobtablocal select lobcol from lobtabremote@remote; -- add where clause if needed
select lobcol from lobcol; -- add where clause if needed

Not sure if there's a way to "virtualize" the lob tables so they don't have to physically exist. But all these are just brain exercises. The simple and practical way is use dbms_lob.substr@remote as you showed.

Yong Huang [/B]


不用客气,我也不过是运气比较好,碰巧成功了。

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
12#
发表于 2005-3-21 07:19 | 只看该作者
最初由 raddisonlee 发布
[B]1.    SQL> desc F_ORGAN@ok
名称                                      是否为空? 类型
----------------------------------------- -------- ---------------------------

ORGAN_ID                                  NOT NULL CHAR(40)
ORGAN_NAME                                         CHAR(60)
ORGAN_TYPE                                         CHAR(40)
ORGAN_GRADE                                        CHAR(10)
ORGAN_HIGH                                         CHAR(40)
ORGAN_LEADER                                       CHAR(10)
ORGAN_OFFICE                                       CHAR(80)
ORGAN_TEL                                          CHAR(20)
ORGAN_DESC                                         CHAR(100)
ORGAN_IFHIGH                                       CHAR(1)
ORGAN_BGNDATE                                      DATE
ORGAN_ENDDATE                                      DATE
ORGAN_BGNFILE                                      CHAR(80)
ORGAN_ENDFILE                                      CHAR(80)
ORGAN_REGION                                       VARCHAR2(40)
ORGAN_RESPCNTR                                     CHAR


2.   但是 执行:
SQL> SELECT DBMS_METADATA.GET_DDL@ok('TABLE','F_ORGAN') FROM DUAL;
SELECT DBMS_METADATA.GET_DDL@ok('TABLE','F_ORGAN') FROM DUAL
       *
ERROR 位于第 1 行:
ORA-00904: "DBMS_METADATA"."GET_DDL": 无效的标识符

3.    其中@ok是一个透明网关的连接,是指向SYBASE的。我是得到SYBASE上面的某些对象的DDL,不知道可以吗?谢谢yangtingkun
请再指点! [/B]


sybase数据库就没有希望了,Oracle的包肯定无法取出SYBASE表的定义。

你试试调用SYBASE本身的过程,我很长时间没有用过sybase了,没有印象是否有类似的过程

使用道具 举报

回复
论坛徽章:
2
ITPUB元老
日期:2005-02-28 12:57:00会员2006贡献徽章
日期:2006-04-17 13:46:34
13#
发表于 2005-3-21 08:44 | 只看该作者
使用expdp content=METADATA_ONLY 能达到相同的效果吧

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
14#
 楼主| 发表于 2005-3-21 11:32 | 只看该作者
最初由 wlidflower 发布
[B]透明网关我一般只用来取数据,用标准的SQL2个数据库都能支持
但是那些ORACLE特有的包SYSBASE肯定不能支持的 [/B]



可以顺便讲讲透明网关的实际使用意义吗?取数据的话太抽象!可以具体说说吗?
比如象我现在只知道从ORACLE建立某张与SYBASE某表关连,然后建触发器,更新ORACLE表的同时也更新SYBASE的表,那样好象没有什么使用价值!应该怎么利用好ORACLE   的TRANSPARENT特性呢?

使用道具 举报

回复
论坛徽章:
31
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
15#
发表于 2005-3-21 11:40 | 只看该作者
提醒一句:使用透明网关只可以用标准的 DML ;
TRANSPARENT是一个接口:通过它,我们可以 sqlplus 操纵其他数据库,如 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
16#
 楼主| 发表于 2005-3-21 12:10 | 只看该作者
1.ORACLE这平台上用SQLPLUS对SYBASE 等其他平台进行DDL可以吗?
2.仅仅是DML,那么这个特性是不是就很难应用推广了?
3.有没有实际使用到的例子?比如说分布式应用上有成功采用的吗?因为我没有实际项目经验!而且单位里面用的是SYBASE的ERP!网关到底有什么好的用途呢?请大家提醒!谢谢!

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
17#
 楼主| 发表于 2005-3-22 14:57 | 只看该作者
请多聊聊这方面应用好吗?谢谢各位!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表