关于:ORA-01536:表空间不足
来源:互联网 发布:linux cat 指定行号 编辑:程序博客网 时间:2024/05/08 11:39
当用户创建表或向已有的表中插入数据时,提示Ora-01536:表空间不足。用户使用grant resource,解决问题。这不是一种好的作法,特别是在8I及以前的版本的数据中。在理解这一点之前,我们先来看以下几个概念:
- 表空间(tablespace) 在逻辑组成上,数据库首先是由若干个表空间组成的。用来保存用户的各种对象,包括表、索引等等。用户在建立数据库对象时,可以指定保存的目标表空间,如果没有指定,将保存至创建用户时的默认表空间。在创建用户时,管理员可以指定默认表空间,如果不批定,系统将选择系统表空间为用户的默认表空间。
- 系统表空间(system tablespace) 保存数据库数据字典信息、PL/SQL包、过程定义、序列、同义词、视图定义等。每个数据库都必须有一个系统表空间。为了减少系统表空间碎片的发生,用户的数据不应被保存在系统表空间。
- 限额(quota) 就如在UNIX操作系统中可以设定用户可使用的空间限制,在ORACLE中,也可以限定用户可使用空间的最大限额。管理员可以在创建用户时用QUOTA字句进行设定,也可以创建用户可用ALTER TABLE语句修改。
- 角色(ROLE) 用户操作数据库必须有相应的权限。角色是一组数据库权限的集合。可以用GRANT语句授予用户角色的权限。其中RESOUCE角色有点特殊,它隐含了一个叫UNLIMITED TABLESPACE的数据库系统权限。一旦用户被授予此角色,用户将可以在任何表空间创建对象,不再受限额的限止,包括系统表空间(9I中已有所改变)。
现在我们重新回到主题。当用户使用授予RESOURCE角色时,他相应地就会冒一个可能在系统表空间建立对象的风险。下面的例子将为大家揭示隐含的问题:
复制内容到剪贴板
代码:
system@test816.world>create user rudolf identified by nix
2 /
User created.
system@test816.world>grant connect to rudolf;
Grant succeeded.
system@test816.world>alter user rudolf quota 1M on tools;
User altered.
system@test816.world>connect rudolf/nix
Connected.
rudolf@test816.world>create table t (id number) storage (initial 2M) tablespace tools;
create table t (id number) storage (initial 2M) tablespace tools
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'TOOLS'
很好,我们碰到了问题:
复制内容到剪贴板
代码:
rudolf@test816.world>connect system/alibaba
Connected.
system@test816.world>
system@test816.world>
system@test816.world>grant resource to rudolf
2 /
Grant succeeded.
system@test816.world>connect rudolf/nix
Connected.
rudolf@test816.world>create table t (id number) storage (initial 2M)
2 /
Table created.
rudolf@test816.world>
正如所料,授予RESOURCE权限后,一切正常,可是我们的麻烦也从此开始:
复制内容到剪贴板
代码:
rudolf@test816.world>select tablespace_name,table_name from user_tables where table_name = 'T';
TABLESPACE_NAME TABLE_NAME
------------------------------ ------------------------------
SYSTEM T
rudolf@test816.world>
由于疏忽或其实原因,在建表时,没有加上TABLESPACE子句,直接导致对象被创建在系统表空单,而这在ORACLE中是应当绝对的被避免的。为了避免些种情况,我们建议在建立用户时请务必作用default tablespace字句与quota字句,同时,如果您要授予用户RESOURCE、DBA等隐含UNLIMITED TABLESPACE系统权限的角色时,请用REVOKE子句去掉unlimited tablespace 权限:
复制内容到剪贴板
代码:
system@test816.world>l
1 create user rudolf
2 identified by nix
3 default tablespace tools -- suggest,repace 'tools' with your own tablespace
4 temporary tablespace temp -- suggest
5 quota 0 on system -- suggest
6* quota unlimited on tools -- suggest, you can have multiline such as this one, also replace 'unlimted', 'tools' as your need
system@test816.world>/
User created.
system@test816.world>grant connect,resource to rudolf;
Grant succeeded.
system@test816.world>revoke unlimited tablespace from rudolf -- suggest
/
Revoke succeeded.
如果用户已创建,可以:
复制内容到剪贴板
代码:
system@test816.world>alter user rudolf default tablespace tools
2 quota 0 on system
3 quota unlimited on tools
4 /
User altered
.
如果仅为解决ORA-01536错误,用户可以根据错误所示的表空间,看情况加大你的空间限额:
复制内容到剪贴板
代码:
rudolf@test816.world>create table t (id number) storage (initial 2M) tablespace tools;
create table t (id number) storage (initial 2M) tablespace tools
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'TOOLS'
此处提示TOOLS表空间,因此:
复制内容到剪贴板
代码:
system@test816.world>alter user rudolf default tablespace tools
2 quota 0 on system
3 quota 10M on tools
4 /
User altered.
system@test816.world>connect rudolf/nix
Connected.
rudolf@test816.world>create table t (id number) storage (initial 2M) tablespace tools
2 /
Table created
.
------------------------
Rudolf Lu
Welcome to www.cnoug.com
- 关于:ORA-01536:表空间不足
- ORA-01536:表空间不足
- ORA-01653 表空间不足
- Oracle表空间不足ORA-01654
- ORA-01653解决办法,表空间不足
- ORA-01659(oracle数据库表空间不足)
- oracle 表空间不足 ORA-00604 ORA-01653 ORA-02002 ORA-00604 ORA-01653
- import表时,表空间不足导致产生ORA-00604错误
- ora-01653表空间大小不足,以验证成功
- ORA-0163: 表 a 无法通过 128(在表空间 abc 中) 扩展,表空间不足
- 表空间不足
- 表空间不足
- oracle表空间不足
- undo表空间不足
- oracle表空间不足
- 数据库表空间不足
- oracle:SYSAUX 表空间因为开启了审计,表空间满了后报空间不足 ORA-00604 ORA-01653 ORA-02002
- undo表空间不足,ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'
- 注意力训练
- teach youself WPF in 24 hours
- DATAWINDOW技巧
- Kick off meeting--SAP导入
- java环境变量
- 关于:ORA-01536:表空间不足
- Windows的驱动开发模型
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- 网线的直连线与交叉线
- 怎么激活windows 7?
- ASP-server.URLEncode反函数:urldecode
- Struts2、Hibernate3、Spring2、Sitemesh、FreeMarker整合
- Head First C# 中文版 第10章 异常处理 page474
- C#简繁体转换方法(Microsoft.Office.Interop.Word)