欢迎您访问我爱IT技术网,今天小编为你分享的是oracle数据库教程:【ORACLE ORA-1693错误以及表和索引的表空间的移动】,通过学习这些教程,你能够更深层次的掌握Oracle数据库!
ORACLE ORA-1693错误以及表和索引的表空间的移动
本公司 开发 的软件,有客户不能上传大的附件,页面不报任何错误。查看JBOSS日志,同样看不到任何错误,排除了软件本身故障。 在查看 oracle 数据库 日志,发现当上传大的附件时出现错误信息 OEA_1693: MAX # EXTENTS 4096 reached in lobsegment nes.sys_LO
本公司开发的软件,有客户不能上传大的附件,页面不报任何错误。查看JBOSS日志,同样看不到任何错误,排除了软件本身故障。在查看oracle数据库日志,发现当上传大的附件时出现错误信息
OEA_1693: MAX # EXTENTS 4096 reached in lobsegment
nes.sys_LOB0000024832C00008$$
解决过程
上网找了下资料
ORA-1693 max # extents (string) reached in lob segment string.string
Cause: A LOB segment tried to extend past MAXEXTENTS.
Action: If MAXEXTENTS is less than the system max, raise it. Otherwise, you must re-create with larger initial, next or PCTINCREASE parameters.
将表空间的maxextents改为无限制,问题还是存在将该表的maxextents改为无限制
alter table T_ID_CHECK_ACCESSORIES storage (maxextents unlimited)
问题同样不能解决
后来在查看该表结构时意外发现该表用的表空间为USERS 而没有用到我为其创建的表空间test,由于数据库是用IMP导入数据的,可能是当初EXP导出时该用户是用的oracle默认表空间。
由于有以上发现我决定将该表的表空间修改为test
Alter table T_ID_CHECK_ACCESSORIES move tablespace test;
修改该表后测试系统 一切正常能正常传大附件
解决问题后还是一头雾水,为什么该表用USERS表空间会出现ORA-01693问题,改为TEST表空间后正常,USERS和TEST的maxextents都为无限制。
突然想到该用户下面的所有表同样都在USERS表空间中,决定把所有表都移至TEST中由于表较多所以用一个查询生成所需要的命令
Select ‘alter table ‘ || table_name || ‘ move tablespace test; ‘ from user_tables;
然后执行该查询所生成的结果
将该用户下的索引移至表空间TEST
Select ‘alter index ‘|| index_name || ‘ rebuild tablespace test;’
执行该查询生成的命令后,发现有4个表报错
ORA-02327: cannot create index on expression with datatype LOB
检查4个表的结构后,都有个LOB字段那说明有LOB字段的索引不能用正常的
alter index index_name rebuild talespace tablespace_name
网上查询得知我们要移动LOB的索引就必须使用特定的语法来移动LOB的对象,具体的语法如下:
ALTER TABLE table_name MOVE
TABLESPACE new_tbsp
STORAGE(new_storage)
LOB (lobcol) --后面括号里面内容为 LOB 字段名
STORE AS lobsegment
(TABLESPACE new_tbsp
STORAGE (new_storage));
检查是否有索引状态为'UNUSABLE'select index_name from user_indexes t where t.status='UNUSABLE';如果有则对该索引重建alter index index_name rebuild
使用以上语法在修改这4条索引时,正常!!!
所有问题全部解决了,但很多地方还是一头雾水(只怪自己太菜了)只有以后多加强学习,慢慢了解了。我的博客地址是:tianchi.csai.cn 大家来多交流哦!
关于ORACLE ORA-1693错误以及表和索引的表空间的移动的用户使用互动如下:
相关问题:如何在Oracle中建立表和表空间?
答:1.建表空间ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,... >>详细
相关问题:oracle删除表空间后,重新创建相同名字的表空间出...
答:这个原因就是那个数据文件没有删除,虽然表空间删除了。 需要你到test目录下将那个文件进行删除,就可以创建了; 按理说,用你的那个drop命令是可以同时删除表空间和数据文件的。但是好像是有的时候就删除不掉,或者是在客户端执行的原因。 >>详细
相关问题:ORACLE中创建表空间出现错误ORA-01537 该文件已经...
答:出现”错误ORA-01537 该文件已经是数据库的一部分“,表名创建语句中使用的datafile名已经存在并且被使用。修改语句中的datafile明,即可解决问题。 创建表空间的语句create tablespace your_tablespace_name datafile'......' size .... ; >>详细
- 软件测试开发技术之Oracle数据库维护的前瞻性_Ora
- 数据库中Oracle索引的优化设计_Oracle_领测软件测
- oracle性能Statspack使用之命中率调整_Oracle_领
- Oracle数据库和JSP连接要注意的一些问题[1]_Oracl
- 巧用Oracle备份集在测试机上做不完全恢复[2]_Orac
- 软件测试开发技术Oracle数据块损坏及其恢复的总结
- 使用oracle sql loader批量导入数据_Oracle_领测
- Oracle数据库集中复制方法浅议_Oracle_领测软件测
- Oracle11g Direct NFS 测试_Oracle_领测软件测试
- ORACLE数据库的统计数据及其生成方式_Oracle_领测
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
