数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
ORA-01650

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

数据库很多表频繁报错 ora-01688 ORA-01650 等错误
ORA-01650: unable to extend rollback segment %s by %s in tablespace %s     
Cause: Failed to allocate extent for the rollback segment in tablespace.    
Action: Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace.
从原因上看 unable to extend 是因为没有邻近的空间可以去扩展
报错的是motorola表空间

首先!我的所有表的next 都是1m pctincrease 0


所以我就先去查motorola 所在表空间最大的邻近空间
SQL>SELECT  max(bytes)       
FROM    dba_free_space       
WHERE   tablespace_name = 'MOTOROLA';

MAX(BYTES)
----------
2126503936

这个结果明显比表的设置 next extent= 1024k 要大
那我们看看RPT_MOT_CELL_PER的参数

SELECT next_extent, pct_increase, tablespace_name   
FROM   dba_tab_partitions      
WHERE  partition_name='P9' AND table_owner = 'MOT_NMC' AND TABLE_NAME='RPT_MOT_CELL_PER';

NEXT_EXTENT PCT_INCREASE
----------- ------------
TABLESPACE_NAME
------------------------------------------------------------
     1048576            0
MOTOROLA


metalink上提供了解决方法:
1.ALTER TABLESPACE motorola COALESCE;

The extents must be adjacent to each other for this to work
 我用了!没有用
2 add datafile 或者 resize
  这个明显是有效果的!后来我加了数据文件以后也是有效果的!

3.修改next
  这个也是有效的

后来我发现我的思路有问题了

早最大的extent 并没有用!

SELECT count(*)    
FROM    dba_free_space       
WHERE   tablespace_name = 'MOTOROLA';
————————

47212

SELECT count(*)    
FROM    dba_free_space       
WHERE   tablespace_name = 'MOTOROLA'
and bytes<1048576;
————————

47208

大部分extent都是小与1m的所以不能分配 oracle不会去找最大!

 

 

 

 

 

 


 




相关文章

相关软件