欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-02 13:53:25
...

在日常管理的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;

 

补充一些权限:

grant CREATE DATABASE LINK  to u8wan;
grant CREATE MATERIALIZED VIEW to     u8wan;
grant CREATE SEQUENCE    to u8wan;
grant CREATE SYNONYM    to u8wan;
grant CREATE VIEW    to u8wan;
grant DEBUG CONNECT SESSION to u8wan;


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

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。
这样就能实现数据库用户的连接数控制。

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


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