Kamil Zadora Asked: 2009-05-04 15:30:49 +0800 CST2009-05-04 15:30:49 +0800 CST 2009-05-04 15:30:49 +0800 CST Oracle 数据库的隐藏特性 772 当我的日常工作围绕着 Oracle 数据库时,我想知道是否有任何隐藏的功能可以在日常使用数据库时派上用场,无论是作为开发人员还是作为 DBA? oracle 5 个回答 Voted Best Answer Leigh Riffel 2009-05-05T06:01:47+08:002009-05-05T06:01:47+08:00 作为一名 Oracle DBA,我发现增加对可见的 Oracle 数据库特性的了解比未记录和不可预测的隐藏特性有用得多。如果您还没有,请从概念指南(pdf) 开始,然后阅读管理员指南(pdf)。如需进一步阅读选项,请参阅此处和此处的一些 stackoverflow 问题。 friol 2009-05-17T00:29:56+08:002009-05-17T00:29:56+08:00 不知道这有多“隐藏”,但从 9i 版本开始,引入了Flashback Query机制。 使用闪回查询,您可以查看过去某个时间点的 Oracle 对象的内容和结构(只要这些信息仍然存储在 undo 表空间中),例如: select * from mytable AS OF TIMESTAMP TO_TIMESTAMP ('2009-05-16 10:20:20', 'YYYY-MM-DD HH24:MI:SS')); 从“mytable”中检索 5 分钟前的记录。 Mark Regensberg 2009-05-05T00:10:39+08:002009-05-05T00:10:39+08:00 在过去的几年中,Oracle 技术支持偶尔会向我提供未记录的参数,但通常它们未记录的原因(~= 隐藏)是因为它们确实应该仅用于故障排除和特定问题。 此页面(由 Donald Burleson 撰写)对如何查找未记录的包和视图进行了很好的细分,但我没有太多理由使用... MarlonRibunal 2009-05-13T15:30:12+08:002009-05-13T15:30:12+08:00 查找活动会话: SELECT SID, Serial#, UserName, Status, SchemaName, Logon_Time FROM V$Session WHERE Status=‘ACTIVE’ AND UserName IS NOT NULL; 如果您有 RAC 配置: 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/ Olaf 2009-05-17T01:40:40+08:002009-05-17T01:40:40+08:00 鉴于隐藏的功能可能是您意想不到的功能,我会投票支持您不希望自己被利用的东西(只是因为您不知道必须禁用它们)。 我记得一个关于甲骨文黑客的演讲中的恐怖情景(我相信是这个——也有视频)。最令人印象深刻的功能是完整的数据库加密,它似乎可用但未获得许可。因此,如果您受到攻击并且有人以所需权限利用 SQL 注入,他们可能会触发数据库的加密,当它要求输入密码时,您将在下次重新启动时识别该加密。由于加密是“行业标准”,因此您最好有一个未加密的备份,或者如果攻击者要求,则准备支付赎金。 这对于作为开发人员或 DBA使用并不方便,但作为具有安全意识的 DBA值得了解。 如果我错误地引用了谈话并得到了错误的谈话,请告诉我,我会更深入地挖掘。
作为一名 Oracle DBA,我发现增加对可见的 Oracle 数据库特性的了解比未记录和不可预测的隐藏特性有用得多。如果您还没有,请从概念指南(pdf) 开始,然后阅读管理员指南(pdf)。如需进一步阅读选项,请参阅此处和此处的一些 stackoverflow 问题。
不知道这有多“隐藏”,但从 9i 版本开始,引入了Flashback Query机制。
使用闪回查询,您可以查看过去某个时间点的 Oracle 对象的内容和结构(只要这些信息仍然存储在 undo 表空间中),例如:
从“mytable”中检索 5 分钟前的记录。
在过去的几年中,Oracle 技术支持偶尔会向我提供未记录的参数,但通常它们未记录的原因(~= 隐藏)是因为它们确实应该仅用于故障排除和特定问题。
此页面(由 Donald Burleson 撰写)对如何查找未记录的包和视图进行了很好的细分,但我没有太多理由使用...
查找活动会话:
如果您有 RAC 配置:
参考:http ://dbalink.wordpress.com/2008/06/08/find-active-sessions-in-oracle-database/
鉴于隐藏的功能可能是您意想不到的功能,我会投票支持您不希望自己被利用的东西(只是因为您不知道必须禁用它们)。
我记得一个关于甲骨文黑客的演讲中的恐怖情景(我相信是这个——也有视频)。最令人印象深刻的功能是完整的数据库加密,它似乎可用但未获得许可。因此,如果您受到攻击并且有人以所需权限利用 SQL 注入,他们可能会触发数据库的加密,当它要求输入密码时,您将在下次重新启动时识别该加密。由于加密是“行业标准”,因此您最好有一个未加密的备份,或者如果攻击者要求,则准备支付赎金。
这对于作为开发人员或 DBA使用并不方便,但作为具有安全意识的 DBA值得了解。
如果我错误地引用了谈话并得到了错误的谈话,请告诉我,我会更深入地挖掘。