日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle resize什么意思,Oracle调整表空间大小resize

發(fā)布時間:2024/8/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle resize什么意思,Oracle调整表空间大小resize 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SQL> ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\ICAPP\IC_DATA6.ORA' RESIZE 300m;

ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\ICAPP\IC_DATA6.ORA' RESIZE 300m

*

ERROR 位于第 1 行:

ORA-03297: 文件包含在請求的 RESIZE 值以外使用的數(shù)據(jù)

但是

SQL>select d.filename,d.file_id,d.bytes/1024/1024 as d_byte,sum(f.bytes/1024/1024) as free_byte

2?? from dba_data_files d,dba_free_space f

3?? where d.file_id=f.file_id and d.file_id=18

4?? group by d.file_name,d.file_id,d.bytes/1024/1024;

FILE_NAME??????????????????????????? ?FILE_ID????D_BYTE??? FREE_BYTE

---------------------------------??? ---------- ---------- ----------

D:\ORACLE\ORADATA\ICAPP\IC_DATA6.ORA ??? 18?????? 1536???? 1482.0625

可以看到實(shí)際上ID=18的文件只使用了大概50M左右,只是數(shù)據(jù)分布在(按一定的順序)50M甚至在300M以外的地方,所以這里雖然看到只使用了約50M空間,但是卻不能resize datafile.

為此,要改小數(shù)據(jù)文件,我們先要對文件上的表和索引移動一下位置,具體做法如下:

1、移動表前先對表空間做整理

SQL>alter tablespace ic_data coalesce;

2、

在dba_extents找到與ID=18的數(shù)據(jù)文件相關(guān)的表及索引

SQL>select segment_name,partition_name,segment_type

2?? from dba_extents

3?? where file_id=18;

3、

對id=18的文件上的表和索引移動位置

SQL> set heading off

SQL> set echo off

SQL> set feedback off

SQL> set termout on

SQL> spool d:\aaa.sql

//移動表

SQL>select DISTINCT 'alter table '|| segment_name || ' move tablespace test_space;' from dba_extents where segment_type='TABLE' and file_id=18;

//移動索引

SQL>select DISTINCT 'alter?index '|| segment_name || '?rebuild tablespace test_space;' from dba_extents where segment_type='INDEX' and file_id=18;

//移動分區(qū)表

SQL>select DISTINCT 'alter table '|| segment_name || ' move partition '|| partition_name || ' tablespace test_space;' from dba_extents where segment_type='TABLE PARTITION' and file_id=18;

//移動分區(qū)索引

SQL>select DISTINCT 'alter?index '|| segment_name || '?rebuild partition '|| partition_name || ' tablespace test_space;' from dba_extents where segment_type='INDEX PARTITION' and file_id=18;

SQL>spool off

然后執(zhí)行aaa.sql,注意保證test_space有足夠的空間容納這些數(shù)據(jù),

其實(shí)可以不移動所有的數(shù)據(jù),但是總的測驗(yàn)是不是移動了300M以外的數(shù)據(jù),所以還是移動所有數(shù)據(jù)的方便

4、這樣移動了所有的數(shù)據(jù)以后就可以對datafile resize了

SQL> c/9/3

1* ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\ICAPP\IC_DATA6.ORA' RESIZE 300M

SQL> /

數(shù)據(jù)庫已更改。

5、把原來表空間ic_data中的數(shù)據(jù)再移動回來,修改aaa.sql中的表空間名為ic_data再執(zhí)行,然后drop tablespace test_space including contents and datafiles。

以上操作起源于我刪除了database里的一個大表造成很多空間浪費(fèi),想回收空間:)

-----------------------分割線-----------------------------分割線-----------------------------分割線----------------------------

經(jīng)過實(shí)踐,以上方法可以處理

ORA-03297: 文件包含在請求的 RESIZE 值以外使用的數(shù)據(jù)問題。

但是如果一個表空間被多個Oracle用戶使用,在導(dǎo)出sql文件時要指定用戶,否則在執(zhí)行sql文件時會報(bào)錯

總結(jié)

以上是生活随笔為你收集整理的oracle resize什么意思,Oracle调整表空间大小resize的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。