一个oracle数据库用户或asp.net中使用的多个用户

时间:2013-02-07 02:37:08

标签: oracle multiple-users

我对oracle数据库中的这两个场景中的每一个都有一个关于性能的问题: -

背景: 我为企业使用oracle数据库开发asp.net业务应用程序

之一:

我创建一个数据库用户并在asp.net应用程序的连接字符串中使用此用户在执行某些业务逻辑时连接到db,因此如果20个最终用户同时使用此asp.net应用程序,那么所有这些都是以一个用户身份连接到数据库

2:

我创建了多个数据库用户(2到5个用户),并在连接字符串池中使用它们,因此如果20个最终用户同时使用asp.net应用程序,那么并非所有用户都连接到db

什么是更好的

2 个答案:

答案 0 :(得分:0)

我不确定Oracle的细节......但一般来说,一个好的模型如下:

  1. 创建多个数据库用户,每个用户具有不同级别的数据库访问权限,具体取决于他们的角色。这些数据库用户不对应于实际用户,而是对应于角色,可能大约4:对创建/删除/更新表等的完全访问权限,对更新表的写访问权限,从表中选择的读访问权,执行存储过程和函数

  2. 对于ASP.NET应用程序所需的任何数据类型的修改,请将此操作封装在存储过程中。基本上,您在存储过程级别编写数据访问接口。

  3. 创建“stored_procedure_executor”db用户,其访问权限仅允许执行某些存储过程(和函数)。该用户无权直接从表中访问CREATE / DROP / UPDATE / SELECT。

  4. 在ASP.NET应用程序中,您只需要为“stored_procedure_executor”数据库帐户存储/提供连接字符串(db用户登录信息)。

  5. 在开发,维护和支持期间,您需要能够直接创建/ DROP / UPDATE / SELECT,为此您可以创建具有适当访问级别的其他db用户。但是您将从数据库管理工具使用这些数据库帐户,而不是通过ASP.nET。因此,登录信息永远不需要在ASP.NET级别公开。

  6. 这主要受安全问题的指导,但也可以提高性能,因为它会强制您考虑访问数据的方式/模式,从而允许您优化数据库的结构,以及作为最常用查询的实现(嵌入在存储过程中)。

答案 1 :(得分:0)

它很好,但我的情况是:我观察到20个最终用户同时运行应用程序时性能下降,所以这是因为我所有的数据库工作作为db的单个用户或者可以通过使用多个用户来增强???????????????????????