ORA-01659: 无法分配超出 2 的 MINEXTENTS (在表空间 SHDATA 中)

转载https://blog.csdn.net/xhiaa/article/details/7868891

转载https://blog.csdn.net/gan690416372/article/details/5272192

参考我的博客https://blog.csdn.net/qq_37358143/article/details/90411426


 

报错:ORA-01659: 无法分配超出 2 的 MINEXTENTS (在表空间 SHDATA 中)

原因:原来是表空间tablespace不够造成的。可以选择扩大表空间,或者设置成自动扩展。

修改tablespace的大小,主要是通过datafile的大小来实现的,修改datafile的大小又有3种方法:1)、使数据文件自增长;2)、改变数据文件大小;3)、添加数据文件。
---------------------------

create tablespace test datafile 'D:\test01.dbf' size 1000m;--这个时候,AUTOEXTENSIBLE是NO,也就是数据文件的大小是固定的,不会自增长。

1)手动来修改数据文件为自增长:alter database datafile 'D:\test01.dbf' autoextend on next 50M maxsize 5000M;这条命令将test01.DBF数据文件设置为按50M大小进行自增长,最大为5000M。

2)改变数据文件大小。将数据文件设置为5000M大小,可以执行命令:alter database datafile 'D:\test01.dbf' resize 5000M;

3)添加数据文件:这应该是最好的一种方式,便于管理,同时还可以设置为文件自增长。以test表空间为例,添加数据文件的命令如下:alter tablespace test add datafile 'D:\test02.dbf' size 1000M autoextend on next 50M maxsize 5000M;这条命令就直接指定了数据文件自增长。


Oracle的存储结构:逻辑上,Oracle的数据存放在tablespaces中,物理上存放在datafiles中。一个tablespace只能属于一个数据库(一个数据库可包括多个tablespace),包括了1个或多个数据文件。Tablespace可进一步分为segments、extents和blocks。一个datafile只属于一个数据库的一个tablespace。和tablespace以及datafile相关的数据字典有:dba_tablespaces、v$tablespace、dba_data_files、v$datafile、dba_temp_files、v$tempfile。


Tablespace的分类有2种,一种分为SYSTEM tablespace和Non-SYSTEM tablespace。
SYSTEM tablespace是随数据库的创建而创建的,包含了数据字典和SYSTEM undo segment;Non-SYSTEM tablespace包括了分配给用户的空间便于数据库的空间管理。
另一种分为permanent、undo、temporary三种tablespace。一般不加特别说明时所创建的permanent tablespace,保存永久性对象;undo tablespace用于保存undo segments以便于回滚操作,而不能包含其他对象;temporary tablespace是用于进行排序操作,能够被多个用户共享,不能包含永久性对象。

Tablespace的状态有3种:ONLINE、OFFLINE、READ ONLY。ONLINE是正常工作的状态,OFFLINE状态下,是不允许访问数据的,SYSTEM tablespace和DEFAULT temp tablespace是不能被OFFLINE的,且带有active undo segments的tablespace也不能被OFFLINE。切换ONLINE和OFFLINE状态的命令是alter tablespace <ts_name> offline/online。当状态变成READ-ONLY时,会产生一个checkpoint,此时数据只能读不能写,但是可以drop对象,相关命令是alter tablespace <ts_name> read only和alter tablespace <ts_name> read write。

删除表空间,使用命令drop tablespace <ts_name>。但是有3个选项需要注意:
INCLUDING CONTENTS:指示删除表空间中的segments;
INCLUDING CONTENTS AND DATAFILES:指示删除segments和datafiles;
CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。
Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

需要注意的是SYSTEM表空间以及具有active segments的表空间是无法删除的。

 


1.创建tablespace test:表示创建一个名为test的tablespace,test的大小为800M,自动增长步长为50M,最大空间是1000M。

create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M;

2.创建tablespace test:表示创建一个名为test的tablespace,test的大小为800M,自动增长步长为50M,没有最大空间限制。

create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize unlimited maxsize UNLIMITED; --是大小不受限制

3.创建tablespace test:表示创建一个名为test的tablespace,test的大小为800M,自动增长步长为50M,最大空间为1000M,

采用local管理方式,unform表示区的大小相同,默认为1000M。

create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local uniform; --unform表示区的大小相同,默认为1000M

 

4.创建tablespace test:表示创建一个名为test的tablesapce,test的大小为800M,自动增长步长为50M,最大空间为1000M,

采用local管理方式,uniform表示区的大小相同为500M。

create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local uniform size 500M; --unform size 500M;表示区的大小相同,为500M

 

 

5.创建tablespace test:表示创建一个名为test的tablespace,test的大小为800M,自动增长步长为50M,最大空间为1000M,

采用local管理方式,automaticate表示区的大小由随表的大小自动动态改变,大表使用大的分区,小表使用小的分区。 create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local autoallocate; --autoallocate表示区的大小由随表的大小自动动态改变,大表使用大区小表使用小区

6.创建tablespace test:表示创建一个名为test的tablespace,sales的大小为800M,自动增长步长为50M,最大空间为1000M,
 temporary表示创建字典管理临时表空间。

create tablespace test datafile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M temporary; --temporary创建字典管理临时表空间 

7.创建临时tablespace test:表示创建一个名为test的temporary tablespace,并且datafile变成tempfile。

create temporary tablespace test tempfile 'D:\test01.dbf' size 800M autoextend on next 50M maxsize 1000M --创建本地管理临时表空间,如果是临时表空间,所有语句中的datafile都换为tempfile 8i系统默认创建字典管理临时表空间,要创建本地管理临时表空间要加temporary tablespace关键字  

 8.创建本地管理临时表空间时,不得使用atuoallocate参数,系统默认创建uniform管理方式 为表空间增加数据文件:

alter tablespace test add datafile 'D:\test02.dbf' size 800M autoextend on next 50M maxsize 1000M;

 9.为表空间增加数据文件 
alter tablespace test add datafile 'D:\test02.dbf' size 800M autoextend on next 50M maxsize 1000M;

 10.更改自动扩展属性
alter database datafile 'D:\test01.dbf' , 'D:\test02.dbf' 'D:\test01.dbf' autoextend off;

11.删除表空间

Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值