又是奇淫技巧系列文章,本次将给大家讲一下在Oracle 10g以下版本要如何才可以查看dblink的密码的方法。
DBlink作为跨域数据访问的重要手段,在同一企业不同项目之间需要产生数据交互的场景中使用得比较多。虽然它会产生安全性低、性能较差、传输不稳定等诸多问题,但是对于开发人员来说确实非常方便。
由于要访问远程数据库,因此创建dblink时是需要写入远程数据库登录用户名和密码的,但在某些交接不清的情况下(内部管理混乱且出现交接断层时),会造成信息缺失。但生产的东西你又不想碰(前面已经说了交接不清了,一碰就死),若是10g以下的OracleDB是可以通过命令找回来的。
重申:本方法只适用于Oracle 10g以下版本且使用DBA权限登录,亲测可用。
- 先查询dblink:
SELECT * FROM SYS.link$;
- 通过查询dblink对应的用户信息可以定位到密码:
SELECT * FROM SYS.link$ l, SYS.user$ u
WHERE l.owner# IN (
SELECT kzsrorol
FROM x$kzsro)
AND l.owner# = u.user#;
由于10g以下的都是采取明码的保存方式可以这样找回来,10g以后就不是明文保存了,所以没有办法实在不行就创建一个新的dblink吧。
如果是以创建新dblink来处理的思路来解决的话,要按照 “创建 -> 验证 -> 删除 -> 重命名” 这套流程来进行以确保万无一失。因为使用新的dblink最怕的是什么?是不能穷举所有需要使用的地方,这个时候没有办法了,只能通过重命名将新的dblink替代掉旧的,在命名上保持一致,在这之前需要先将旧的dblink删除或者改名。