1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > oracle+怎么清理碎片 oracle碎片整理方法

oracle+怎么清理碎片 oracle碎片整理方法

时间:2019-04-19 08:41:38

相关推荐

oracle+怎么清理碎片 oracle碎片整理方法

采用两种方法:exp imp 和 SQL脚本整理

---- 我们知道,段由范围组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典 dba_segments ,范围的信息可查看数据字典 dba_extents 。如果段的碎片过多, 将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。这个过程可以用 Import/Export (输入 / 输出)工具来完成。

---- Export ()命令有一个(压缩)标志,这个标志在读表时会引发 Export 确定该表所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数 -- 等于全部所分配空间。若这个表关闭, 则使用 Import ()工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如:

exp user/password file=exp.dmp compress=Y grants=Y indexes=Y

tables=(table1,table2);

---- 若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:

imp user/password file=exp.dmp commit=Y buffer=64000 full=Y

---- 这种方法可用于整个数据库。

---- 我们知道,段由范围组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典 dba_segments ,范围的信息可查看数据字典 dba_extents 。如果段的碎片过多, 将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。这个过程可以用 Import/Export (输入 / 输出)工具来完成。

---- Export ()命令有一个(压缩)标志,这个标志在读表时会引发 Export 确定该表所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数 -- 等于全部所分配空间。若这个表关闭, 则使用 Import ()工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如:

exp user/password file=exp.dmp compress=Y grants=Y indexes=Y

tables=(table1,table2);

---- 若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:

imp user/password file=exp.dmp commit=Y buffer=64000 full=Y

---- 这种方法可用于整个数据库。

tmp_val VARCHAR2 (500);

BEGIN

--1.整理空间碎片;

FOR REC IN (SELECT TABLE_NAME FROM USER_TABLES )

LOOP

tmp_val:='ALTER TABLE '||REC.TABLE_NAME ||' MOVE';

BEGIN

EXECUTE IMMEDIATE tmp_val;

DBMS_OUTPUT.put_line (tmp_val);

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line ('Error: ' || tmp_val || '!');

END;

END LOOP;

--2.把索引重建(碎片整理后,很多索引会变成UNUSABLE状态,必须重建后,让它变成void状态)

FOR REC IN (SELECT INDEX_NAME FROM USER_INDEXES ) --WHERE STATUS='UNUSABLE'

LOOP

tmp_val:='ALTER INDEX '||REC.INDEX_NAME ||' REBUILD';

BEGIN

EXECUTE IMMEDIATE tmp_val;

DBMS_OUTPUT.put_line (tmp_val);

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line ('Error: ' || tmp_val || '!');

END;

END LOOP;

END;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。