oracle 批量获取synonym同义词的ddl文

一、通过查询dba_synonyms表中的字段,拼接成一个ddl文。

getSynonymSql.sql

  select -- s.*,
            'CREATE OR REPLACE '||decode(s.OWNER,'PUBLIC','PUBLIC ','')||'SYNONYM '||
            decode(s.OWNER,'PUBLIC','',s.OWNER||'.')||s.SYNONYM_NAME||' FOR '||
            decode(s.TABLE_OWNER,NULL,NULL,s.TABLE_OWNER||'.')||s.TABLE_NAME||
            decode(s.DB_LINK,NULL,NULL,'@'||s.DB_LINK)||';' as cmd
     from dba_synonyms s
     where s.DB_LINK is not null
     order by s.OWNER, s.SYNONYM_NAME;

二、把查询的结果输到txt文件中
getSynonymRunSql.sql

set lin 160
set pages 9999
--C:\sr\db\getSQL\synonyms.txt 要输出的文件
spool C:\sr\db\getSQL\synonyms.txt
--C:\sr\db\getSQL\getSynonymsSql 查询sql文件
@"C:\sr\db\getSQL\getSynonymsSql"
spool off
exit; 

三、连接数据库并执行第二步的sql语句。
runAll.bat

#通过SQLplus连接数据库,并执行getSynonymRunSql.sql
sqlplus username/password@dbName @getSynonymRunSql.sql

结语:
其实我 是想做成可以连接不同DB也能导出,无奈时间有限。大家有啥想法欢迎评论探讨。
说明,我现在的做法是做多个getSynonymRunSql.sql 然后连接不同的DB去获取。

sqlplus username/password@dbName1 @getSynonymsRunSql01.sql

sqlplus username/password@dbName2 @getSynonymsRunSql02.sql

sqlplus username/password@dbName3 @getSynonymsRunSql03.sql

sqlplus username/password@dbName4 @getSynonymsRunSql04.sql

sqlplus username/password@dbName5 @getSynonymsRunSql05.sql

sqlplus username/password@dbName6 @getSynonymsRunSql06.sql

原创文章转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whl826661099

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值