【问题标题】:Is it a bad practice to create a large number of users in an Oracle database?在 Oracle 数据库中创建大量用户是一种不好的做法吗?
【发布时间】:2025-12-10 21:35:01
【问题描述】:

我想为学生门户设计一个数据库。我想创建一个学生角色,所以我需要为每个学生创建一个用户并分配用户的角色。似乎将创建许多用户。会不会有需要大量资源的问题。

【问题讨论】:

  • Oracle 数据库可以处理许多用户。但是,应用程序通常使用单个用户与数据库进行通信。然后应用程序使用自己的逻辑管理用户。
  • @GordonLinoff 所以我的做法是正确的?
  • 您是否将数据库用户帐户(架构)和数据库角色与最终用户登录凭据和授权混淆了?
  • 是的,我对用户帐户(模式)感到困惑
  • 用数据库连接代表最终用户实际上是一个好主意,因为它可以进行深度防御。但是很少这样做,因为例如您不想为它们维护 ACL。如果您真的愿意,Oracle 确实允许代理用户将应用用户切换到最终用户。

标签: oracle


【解决方案1】:

用户帐户的数量不是问题 - 您可以根据需要创建任意数量的帐户。更值得关注的问题是有多少并发用户会话——用户同时登录到数据库中——会有多少?每个用户都需要内存来完成他们的工作,并且必须分配内存。如果您的并发用户会话数超出内存可以容纳的数量,这可能是个问题。阅读更多 herehere。如果您将有大量并发用户,请考虑共享服务器连接设置,而不是默认的专用连接。

【讨论】:

    【解决方案2】:

    您需要注意的另一件事是财务成本影响,具体取决于您是否拥有按用户许可。

    但是,正如其他人已经提到的那样,应用程序通常使用一组凭据连接到数据库,最终用户通常不被定义为数据库用户,因此您将无法使用数据库定义的角色来区分权限.

    您可能有两个由数据库定义的角色 DBA 或 SYSADMIN,以及 PORTAL_APP。

    最终用户角色需要在门户应用程序中处理,这应该在应用程序的前端和后端保持一致。

    【讨论】:

    • 我使用的是 xpress 版本,所以它是免费的,所以我认为我不必面对用户许可证,不是吗?
    • 是的,可能,但更重要的是如前所述,不应将最终用户创建为数据库定义的对象。