如题示,我目前拿到的用户,只有 connect角色,其下有一堆同义词能够获取另一个数据库的一些表的数据。
① 直接select * from 表名(同义词名称) 可以直接查看那些表里的数据。
② 如果我用plsqldev 连接,
还能通过ctrl+点击的方式查看表结构的SQL,这么说 理论上表结构是可以获取的。
③ 但是怎样才能获得呢?
网上搜了一下,有个dbms_metadata.get_ddl('')函数
但是 select dbms_metadata.get_ddl('SYNONYM','ABC') from dual 这样的语句只能获得创建同义词的 语句;
像这样:CREATE OR REPLACE SYNONYM "CONN"."ABC" FOR "LOCALDBA"."ABC"
如果 select dbms_metadata.get_ddl('TABLE','ABC') from dual 的话 ,很明显系统会认为 本用户CONN下没有ABC表。

------解决思路----------------------
借助数据字典自己生成语句
select 'create table '
------解决思路----------------------
table_name
------解决思路----------------------
'('
------解决思路----------------------
wmsys.wm_concat(column_name
------解决思路----------------------
' '
------解决思路----------------------
data_type
------解决思路----------------------
decode(data_type,'VARCHAR2','('
------解决思路----------------------
DATA_LENGTH
------解决思路----------------------
')','NUMBER','('
------解决思路----------------------
DATA_LENGTH
------解决思路----------------------
decode(DATA_SCALE,0,'',null,'',','
------解决思路----------------------
DATA_SCALE)
------解决思路----------------------
')',''))
------解决思路----------------------
');' from user_tab_columns group by table_name;
------解决思路----------------------
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。