一个很久的问题:关于oracle表空间释放的问题!求助!!(100分)

  • 主题发起人 主题发起人 success_mtc
  • 开始时间 开始时间
S

success_mtc

Unregistered / Unconfirmed
GUEST, unregistred user!
我用oracle 8i ,前面改了许多表结构,删了数万条记录,现在表空间700多M,而导的DMP
只有2M,如果我的表空间申请少于800M,则导不进去,是一个空库,导入后占用表空间700多M
请问怎样才能删除多余的表空间!(200张表,有视图、触发器等)
 
是不是使用oracle的系统存储过程可以搞定的.
 
请说详细点,oracle的系统存储过程和自己写的存储过程有什么不一样,我也写了一些存储过程
还有快照、链路等、是oracle不能释放已占用的表空间,还是在下参数、设置失误、请教了!
各位帮帮我,这个问题已经困扰我数月了!!!
 
怎么?!!
没有DBA吗?!!
没有OCP吗?!!
帮帮我,解决立刻加分!
 
专家去哪了,都去度假了吗?
帮帮我!
 
有人吗,救我!
 
exp的时候加上 COMPRESS=Y 参数
 
truncate table can release space
 
to Pipi.
我在exp的时候加上 COMPRESS=Y 参数,可是再在其他机子上做实验,不让我imp,为什么!
请教了!
 
可以用ALTER TABLE TableName DEALLOCATE UNUSED释放未使用的空间
或者先用Compress=y(这是默认参数)完全导出,然后再导入

不让IMP是什么意思? 什么错误?
 
如果全部是空表, 则用下面的SQL语句生成一些SQL再执行:
select
'truncate table '||table_name||' drop storage;'
from user_tables
然后用
ALTER DATABASE DATAFILE 'YOUR_DATA_FILE_NAME' RESIZE YOUR_NEW_DATA_SIZE
缩小数据文件的大小。
 
在其他机子上不行,本机则可以吗?
imp的机器和exp的机器的oracle注册表:NLS_LANG 的值要一样
 
to Pipi.xianjun, yyanghhong,
多谢各位大力帮助,我的表空间减少到了500M(最初为800M), 用Compress=y完全导出,然后再导入
但是我的.DMP只有2M多,还是有点大!
但这是默认参数,我导出时不跟为什么不可以?!
共有200张表,用ALTER 不太现实,而且许多表有数据(有用的),请各位再帮我出出主意!
各位, 再解决一点,马上加分!
先谢了!!!
 
导出文件只有2M???
你这样做应该就可以了:
先用ROWS=N导出数据结构,然后用我上面的SQL把所有表Truncate一遍
完成后你看占有的表空间大小? 应该是很小的
此时再用ROWS=Y IGNORE=Y的方式导入。
 
那你只能查查是哪个表占了空间了
 
手工建表啊,自动建表很容易得肥胖病的说

还有,可以在DBA STUDIO中调整表空间
 
500M和2M ,差距实在太大了!!!
有没有勇气试一试:
确认导出以后,全部删除以前的表和库。
然后重新导入。

不要怕,imp命令导入数据很快的。就是小心确认数据完整。
笨办法,见笑!
 
是了,你imp的时候那些用户都还在的吗?
你是按用户导入吗?
 
后退
顶部