正如我日常工作围绕Oracle数据库一样,我想知道是否有任何隐藏function可以与DB一起工作,既可以作为开发人员也可以作为DBA使用?
作为一名Oracle DBA,我发现增加对可见Oracle数据库function的了解远比没有logging和不可预知的隐藏function更有用。 如果您尚未使用概念指南 (pdf),请阅读“ pipe理员指南” (pdf)。 为进一步阅读选项在这里和这里看到一些计算器的问题。
不知道这是如何“隐藏”,但自9i版本以来,引入了闪回查询机制。
使用闪回查询,您可以查看过去某个时刻Oracle对象的内容和结构(只要这些信息仍保存在撤消表空间中),例如:
select * from mytable AS OF TIMESTAMP TO_TIMESTAMP ('2009-05-16 10:20:20', 'YYYY-MM-DD HH24:MI:SS'));
从5分钟前的“mytable”中检索logging。
偶尔在过去的几年中,我通过Oracle技术支持得到了无证的参数,但通常他们没有logging(〜=隐藏)的原因是因为它们只能用于故障排除和特定问题。
这个页面 (由唐纳德Burleson)有如何查找无证包裹和意见,但没有多less我有原因使用…
查找活动会话:
SELECT SID, Serial#, UserName, Status, SchemaName, Logon_Time FROM V$Session WHERE Status='ACTIVE' AND UserName IS NOT NULL;
如果您有RACconfiguration:
SELECT Inst_Id, SID, Serial#, UserName, Status, SchemaName, Logon_Time FROM GV_$Session WHERE Status='ACTIVE' AND UserName IS NOT NULL;
参考: http : //dbalink.wordpress.com/2008/06/08/find-active-sessions-in-oracle-database/
考虑到隐藏的function可能是你不期望的function,我会投票支持你不想利用的东西(因为你不知道你必须禁用它们)。
我记得有关甲骨文黑客的一个讨论(我相信这是一个 – 也作为video )的恐怖szenario。 最令人印象深刻的function是全数据库encryption,似乎是可用的,但没有授权。 因此,如果你受到攻击,有人利用所需的权限利用SQL注入,他们可能会触发数据库的encryption,在下一次重新启动时要求input密码。 由于encryption是“行业标准”,如果攻击者要求,最好有非encryption备份或准备支付赎金。
这不适合用作开发人员或DBA,但作为安全意识的DBA值得了解 。
如果我误以为是错误的话,让我知道,我会深入挖掘。