【发布时间】:2010-10-15 09:13:50
【问题描述】:
select sys.database_name,sys.sysevent,sys.login_user from dual;
这个查询中的 sys 是什么?
我可以查看 sys 中的其他功能吗?
这样做的查询是什么?
这个系统在什么情况下有用?
关于 sys 的信息将存储在数据库中的什么位置?
【问题讨论】:
select sys.database_name,sys.sysevent,sys.login_user from dual;
我可以查看 sys 中的其他功能吗?
这样做的查询是什么?
这个系统在什么情况下有用?
关于 sys 的信息将存储在数据库中的什么位置?
【问题讨论】:
sys 是系统架构。它包含支持 rdbms 的各种表和视图。
您可以查看有关各种模式及其含义的 oracle wiki 文章。
【讨论】:
在许多数据库系统中,包括来自 Oracle、Microsoft 和 Sybase 的主要数据库产品,相关的数据库表组可以被拉到一个模式中。
一些大型系统(以及一些不是那么大的系统)将其用作控制访问的一种方式,或者只是作为一种使事情井井有条的方式。
例如,支持在线目录(例如 Amazon 或 Barnes & Nobel)的表格可能都是 Marketing.*,围绕订单履行的表格 Sales.* 和围绕库存管理的表格 Stock.*。
您注意到的sys 架构是系统表所在的位置 - 您可以查询这些表以了解有关数据库其余部分的详细信息 - 例如列是否已存在。
【讨论】:
我同意贝文的观点。以下是针对您的问题的一些具体答案:
(我会假设你在谈论 Oracle)
我可以看看其他功能吗? 在系统中?
是的,与任何架构一样,您可以使用 Toad、PLSQL Developer 或 Oracle SQL Developer 等数据库开发工具查看 sys 中的过程、函数和包。然而,我的经验表明,参考 Oracle 文档(在线免费提供)比直接跳到源代码更好地了解可用功能。
这样做的查询是什么?
我建议使用上述开发工具之一。如果做不到,请尝试:
select * from user_objects where type in ('PACKAGE', 'PROCEDURE', 'FUNCTION');
一旦您找到了您正在寻找的功能,请使用 SQLPlus 中的 DESCRIBE 命令来确定方法签名和数据类型。
这个系统在什么情况下有用?
SYS 最常被用作管理任务的超级用户,因为它比普通模式拥有更多权限。 SYS 还包含许多 Oracle 所依赖的基础架构 - 不要乱用 SYS 拥有的对象。
关于 sys 的信息将存储在数据库中的什么位置?
使用我上面建议的方法 - 但我建议您阅读在线文档,而不是直接深入研究源代码。
【讨论】: