oracle表如何释放 oracle如何释放表空间

如何释放Oracle表空间文件,最好提供一下详细的操作过程和说明。拜求!

create

创新互联是一家集网站建设,南丰企业网站建设,南丰品牌网站建设,网站定制,南丰网站建设报价,网络营销,网络优化,南丰网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

or

replace

procedure

ttt

is

begin

delete

from

bbb

where。。。。。。

;

commit;

execute

immediate

'create

table

aaa

as

select

*

from

bbb';

commit;

--删除表bbb所有数据

execute

immediate

'truncate

table

bbb';

commit;

--将临时表aaa的数据转移到bbb表中

insert

into

bbb

select

*

from

aaa;

commit;

--删除临时表aaa

execute

immediate

'drop

table

aaa';

commit;

end;

顺便说一句,你之前为什么要delete表bbb里的数据呢?还有,你存储过程里没end

---------补充------

||是用来区分普通字段和变量字段的

他那个写法不和我这个一样吗?

他那个只不过把我单引号里的sql设置成了一个变量,叫str

Oracle 删除表中记录 如何释放表及表空间大小

解决方案

执行

alter table jk_test move

alter table jk_test move storage(initial 64k)

alter table jk_test deallocate unused

alter table jk_test shrink space.

注意:因为alter table jk_test move 是通过消除行迁移,清除空间碎片,删除空闲空间,实现缩小所占的空间,但会导致此表上的索引无效(因为ROWID变了,无法找到),所以执行 move 就需要重建索引。

找到表对应的索引

select index_name,table_name,tablespace_name,index_type,status  from dba_indexes  where table_owner='SCOTT'

根据status 的值,重建无效的就行了。sql='alter index '||index_name||' rebuild'; 使用存储过程执行,稍微安慰。

还要注意alter table move过程中会产生锁,应该避免在业务高峰期操作!

另外说明:truncate table jk_test 会执行的更快,而且其所占的空间也会释放,应该是truncate 语句执行后是不会进入oracle回收站(recylebin)的缘故。如果drop 一个表加上purge 也不会进回收站(在此里面的数据可以通过flashback找回)。

不管是delete还是truncate 相应数据文件的大小并不会改变,如果想改变数据文件所占空间大小可执行如下语句:

alter database datafile 'filename' resize 8g

重定义数据文件的大小(不能小于该数据文件已用空间的大小)。

另补充一些PURGE知识

Purge操作:

1). Purge tablespace tablespace_name : 用于清空表空间的Recycle Bin

2). Purge tablespace tablespace_name user user_name: 清空指定表空间的Recycle Bin中指定用户的对象

3). Purge recyclebin: 删除当前用户的Recycle Bin中的对象。

4). Purge dba_recyclebin: 删除所有用户的Recycle Bin中的对象,该命令要sysdba权限

5). Drop table table_name purge:  删除对象并且不放在Recycle Bin中,即永久的删除,不能用Flashback恢复。

6). Purge index recycle_bin_object_name: 当想释放Recycle bin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来缓解空间压力。 因为索引是可以重建的。

二、如果某些表占用了数据文件的最后一些块,则需要先将该表导出或移动到其他的表空间中,然后删除表,再进行收缩。不过如果是移动到其他的表空间,需要重建其索引。

1、

SQL alter table t_obj move tablespace t_tbs1;   ---移动表到其它表空间

也可以直接使用exp和imp来进行

2、

SQLalter owner.index_name rebuild;     --重建索引

3、删除原来的表空间

ORACLE如何清理数据可以使表空间立即释放

select

'drop

table

'

||

table_name

||

'

cascade

constraints'

v_name

from

dba_tables

where

tablespace_name

=

'users';

按照表空间名查询所有包含的表,并根据表名拼接删除语句。

执行上面查询语句生成的语句,即可删除所有表。

如何释放oracle临时表空间

重新创建一个临时表空间,把原来的默认临时表空间drop掉(包括里面的临时数据文件)再重新建立

SQL create temporary tablespace temp2

2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp02.pdf' size 512M reuse

3 autoextend on next 640k maxsize unlimited;

Tablespace created.

SQL alter database default temporary tablespace temp2;

Database altered.

SQL drop tablespace temp including contents and datafiles;

Tablespace dropped.

(注意:由于临时表空间的数据文件比较大,所以这步可能会花费比较长的时间)

SQL create temporary tablespace temp

2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp01.pdf' size 512M reuse

3 autoextend on next 640K maxsize unlimited;

Tablespace created.

SQL alter database default temporary tablespace temp;

Database altered.

SQL drop tablespace temp2 including contents and datafiles;

Tablespace dropped.

SQL exit


文章题目:oracle表如何释放 oracle如何释放表空间
当前地址:http://myzitong.com/article/hjecsd.html