为什么在操作Oracle数据库时不建议使用“SYS”?

时间:2017-10-06 06:59:17

标签: oracle

使用Oracle数据库时,我经常读到不应该使用SYS来操作数据库(创建表,约束,序列,同义词等)。为什么不推荐?我的一些同事认为,只要你使用完全限定的描述符,使用SYS应该没有问题。这是真的? 通过将数据库作为SYS操作,可以在哪些场景中导致哪些问题?

2 个答案:

答案 0 :(得分:1)

  

通过操纵a可以在哪些场景中引起哪些问题   数据库为SYS?

SYSSYSTEM都是default用户,通过创建数据库创建。虽然他们有很多权力 - 因为他们被授予DBA role - 他们仍然是普通用户。因为SYS拥有数据字典,所以他被认为比SYSTEM更特殊。

SYS具有SYSTEM不支持的SYSDBA权限。这使SYS成为一个非常强大的用户成为可能。 如果您尝试将shutdown数据库视为普通SYS,则差异会很明显:​​结果是insufficient privileges。但是,如果以SYSDBA连接,则可以。

注意,SYSDBA不是角色,而是privilege

SYS也很特别,因为无法在sys架构中创建触发器。此外,当sys连接到数据库时,不会执行登录触发器。

<强> SYS

SYS是数据库的所有者和数据字典的所有者。

永远不要在SYS架构中创建对象。

无法导出属于SYS的对象。

<强>系统

SYSTEM是特权管理用户,通常拥有Oracle提供的除字典之外的表。不要在SYSTEM下创建自己的对象。

答案 1 :(得分:1)

因为SYS拥有数据库。

它可以做任何事情。如果您的同事忘记使用目标模式为目标对象添加前缀,则可能会损坏SYS模式和/或损坏数据库。

如果有太多人知道​​SYS密码,我会担心。因为它会产生审核问题。当出现问题时,除非他们拥有,否则很难知道谁应该负责任。不是说责备文化是一种好文化,但是当人们知道自己有责任时,人们会更加小心。

这不仅仅是一件安全事。它不仅是你需要担心的意外腐败。使用SYS密码的不良演员可以破坏数据库,窃取代码(IPR),当然还可以窃取机密数据。

也许您只是在谈论开发,而您的组织在生产中正确地做事。我希望如此。

使用SYS就像在铁路轨道上划一条捷径。可能你会没事,但为什么要承担风险呢?