2、转自http://hi.baidu.com/ktwmldupqtbhwzd/item/159b8d481b0943efa4c0662c
ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。
解决方法:知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小
首先,undo表空间满是正常的,oracle自然会重用或者扩展它,一般不用管它。然后,现在要解决的话,需要先把undo
tablespace设置成手动,启动数据库,创建新的undo
tablespace。把新的设置成默认的。
假设你的库现在是mounted状态
1
创建PFILE(如果已有就是更新)
SQL>create
pfile
from
spfile
2
关闭数据库
SQL>shutdown
immediate
3
在你的$ORACLE_HOME/dbs目录下面找个叫做
init<数据库>.ora的文件,把其中有undo_management=AUTO的一行改成
undo_management=MANUAL
如果没有就在文件末尾填一行
4
以sysdba身份连接数据库
SQL>connect
"/
as
sysdba"
用刚才改过的文件启动数据库
SQL>
startup
pfile=<刚才的文件全路径和名字>
这步是最关键的,如果成功,后面就没问题了
5
drop掉原来的表空间
SQL>
drop
tablespace
<原来的undo表空间名字>
including
contents
6
创建新的undo表空间
SQL>
create
UNDO
tablespace
undotbs2
datafile
'/u01/app/oracle/oradata/orcl/undotbs02.dbf'
size
100M
autoextend
on
7
关闭数据库,
SQL>shutdown
immediate
在开始那个init文件里设置UNDO_MANAGEMENT=AUTO
和
UNDO_TABLESPACE=UNDOTBS2
8
再做一次第四步
9
更新spfile
SQL>create
spfile
from
pfile
10
关闭数据库,正常重新启动
SQL>shutdown
immediate
SQL>startup
11
去网上教你删undo那个地方骂它。非常想当然的做法。没有任何理由这么做
12
让你的工程师去学oracle
培训
以上步骤的中的第5步可能会出问题。我不确认。。。
但是即使第5步不成功,问题应该也不大
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)