Oracle 表空间 创建用户

  在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬 盘空间耗竭。所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。为了达到这个目的,我们就可以通过表空间来实现。

  我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属 于这个表空间。如此的话,这个用户的存储容量,就受到这个表空间大小的限制。当然,表空间的优势还不仅仅这些,企业对于数据库的性能要求越高,或者数据库 容量越大,则表空间的优势就会越大。

在数据库设计的时候,我们建议数据库管理员按如下顺序设置表空间。

  第一步:建立Oracle用户表空间。   在设计数据库的时候,首先需要设计表空间。我们需要考虑,是只建立一个表空间呢,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。   到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用 户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不同类型的数 据,设置不同的表空间,以提高其输入输出性能。  

      第二步:建立Oracle用户表空间,并制定用户的默认表空间。   在建立用户的时候,我们建议数据库管理员要指定用户的默认表空间。因为我们在利用CREATE 语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表 空间,显然,这并不是很合理。   另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。 当创建用户时,应该定义它的表空间(default tablespace)。否则,它会使用系统表空间(system tablespace)。这是应该避免的。这是常用的创建用户的一个例子:

CREATE USER XXXXX IDENTIFIED BY xxxxx 
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMPTS01
ACCOUNT UNLOCK;
请注意,首先要确认你的数据库里是否有这二个表空间:USERS和TEMPTS01。如果没有,先要创建表空间USERS及TEMPTS01,然后再创建用户。
1 默认的表空间是存放数据的。而临时表空间是存放查询和缓冲区的数据的
2 临时表空间你可以自己创建。如果你不创建指定的话就会默认使用系统自带的临时表空间。
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。
重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。

临时表空间的主要作用:

索引create或rebuild

, Order by 或 group by
, Distinct 操作
, Union 或 intersect 或 minus
, Sort-merge joins
, analyze.
创建数据表空间_语法:
CREATE TABLESPACE tablespace_name
DATAFILE 'path/filename' [SIZE integer [K|M]][REUSE]
[AUTOEXTEND[OFF|ON [NEXT integer[K|M]]    /*OFF/ON禁止或允许自动扩展数据文件,NEXT指定下次分配给数据文件的磁盘空间*/
[MAXSIZE UNLIMITED|integer[K|M]]]]    /*允许分配给数据文件的最大磁盘空间,UMLIMITED没有限制*/
[DEFAULT STORAGE storage_clause]    /*为在该表空间创建的对象指定默认的存储参数*/
[ONLINE|OFFLINE]    /*空间的可用/不可用设置*/
[LOGGING|NOLOGGING]    /*将来的表、索引等是否进行日志处理*/
[PERMANENT|TEMPORARY]    /*表空间的状态,永久或临时*/
[EXTENT MANAGEMENT[DICTIONARY|    /*如何管理表空间的盘区*/
LOCAL[AUTOALLOCATE|UNIFORM[SIZE integer[K|M]]]]]
创建数据表空间_实例:

创建临时表空间_实例:

创建用户并指定表空间:

给用户授权:


---------------------------------查看用户权限-----------------------
查看所有用户

 


SELECT   *   FROM  DBA_USERS;
SELECT   *   FROM  ALL_USERS;
SELECT   *   FROM  USER_USERS;

查看用户系统权限


SELECT   *   FROM  DBA_SYS_PRIVS;
SELECT   *   FROM  USER_SYS_PRIVS;

查看用户对象或角色权限


SELECT   *   FROM  DBA_TAB_PRIVS;
SELECT   *   FROM  ALL_TAB_PRIVS;
SELECT   *   FROM  USER_TAB_PRIVS;

查看所有角色


SELECT   *   FROM  DBA_ROLES;

查看用户或角色所拥有的角色


SELECT   *   FROM  DBA_ROLE_PRIVS;
SELECT   *   FROM  USER_ROLE_PRIVS;


-------遇到no privileges on tablespace 'tablespace '

alter   user  userquota 10M [ unlimited ]   on  tablespace;
引用:
http://baike.baidu.com/view/2973562.html?fromTaglist
http://blog.chinaunix.net/u2/87262/showart_2303056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值