日期:2014-05-16  浏览次数:20441 次

第三方应用的数据库用户如何创建

在日常管理的Oracle数据库中,会有第三方应用需要操作数据库。第三方应用会要求在数据库中创建一个用户,用于读写自己的对象和其他的对象。

关键点是,这是一个来自第三方应用的用户。我们不清楚它会如何操作数据库对象,如何使用数据库资源。


我碰到过这类用户读了超范围的表,将其表创建在users表空间上,其数据库会话数暴涨导致其他应用不再能连接数据库等等。

因此,需要从权限、使用资源、表空间限额等方面上对这类用户予以限制。

整理了一个这类用户的创建流程。如下所示:

?

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1716560 )

首先,创建第三方用户的数据表空间和临时表空间。

create tablespace tbs_crm datafile '/testdb/datafile/tbs_crm01.dbf' size 10240M;
create temporary tablespace tbs_crm_temp tempfile '/testdb/tempfile/tbs_crm_temp01.dbf' size 10240M;


其次,创建数据库用户

CREATE USER usr_crm IDENTIFIED BY usr_crm
?DEFAULT TABLESPACE tbs_crm
?TEMPORARY TABLESPACE TBS_crm_TEMP
?PROFILE DEFAULT;
?
再次, 授予connect,resource角色

GRANT "CONNECT","RESOURCE" TO usr_crm;

注意,需要从这个用户上撤销unlimited tablespace 系统权限。如果你是10g以下版本,这个操作可以不必去做。
revoke unlimited tablespace from usr_crm;


最后,限定该用户的表空间额度和使用会话数据

alter user usr_crm QUOTA UNLIMITED ON tbs_crm;
使得该用户只能在表空间tbs_crm上创建表和索引等对象。
如果需要新增表空间,如tbs_crm_ind,那么可以继续设置一下。
在user_ts_quotas中可以查到相关信息。


CREATE PROFILE "PROFILE_THIRD" LIMIT SESSIONS_PER_USER 60;
ALTER USER "USR_CRM" PROFILE "PROFILE_THIRD";
使用profile限制该用户的数据库连接数。
需要先创建一个profile,名称为profile_third,继而将用户的profile调整为profile_third。
这样就能实现数据库用户的连接数控制。

再有一些业务用户的表需要读写,可以另外单独授权。


简而言之,在第三方应用的用户管理上,我们需要从表空间限额和系统权限及资源使用上进行限制,保证数据库正常运行。