Oracle表空間操作詳解
1.建立表空間:
create tablespace
eg:
create tablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m
2.為表空間增加資料檔案:
alter tablespace
eg:
alter tablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited
3.調整表空間:
alter database datafile 'filepath' resize
eg:
alter database datafile 'c:\2.txt' resize 10m
在實際使用中我們經常會遇到oracle某個表空間佔用了大量的空間而其中的資料量卻只佔用了少量空間,此時我們可以用ALTER DATABASE DATAFILE '***.dbf' RESIZE nnM的命令來收縮表空間,但在收縮的過程中會遇到ora-03297錯誤,表示在所定義的空間之後有資料存在,不能收縮,此時的解決辦法有:
(1). 先估算該表空間內各個資料檔案的空間使用情況:
SQL>select file#,name from v$datafile;
SQL>select max(block_id) from dba_extents where file_id=11;
MAX(BLOCK_ID)
-------------
13657
SQL>show parameter db_block_size
NAME TYPE VALUE
----------------------------- ------- ----------- db_block_size integer 8192
SQL>select 13657*8/1024 from dual;
13657*8/1024
-----------
106.695313
這說明該檔案中最大使用塊位於106M與107M之間,
SQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M;
alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
SQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 107M;
Database altered.
(2).如果某些表佔用了資料檔案的最後一些塊,則需要先將該表匯出或移動到其他的表空間中,然後刪除表,再進行收縮。不過如果是移動到其他的表空間,需要重建其索引。
SQL> alter table t_obj move tablespace t_tbs1;
(2)刪除某個表空間中的某個資料檔案
export該表空間的內容:expdp 使用者名稱/密碼 DUMPFILE=XXX.dmp tablespaces=xxx;
1) shutdown (abort)
2) startup mount
3) alter database datafile 'fullpath_of_removed_DF ' offline drop
在非歸檔模式下,可以使用... offline drop,在歸檔模式下,使用... offline
這個命令的意思並不是從表空間將這個資料檔案徹底刪除,而是說將這個資料檔案“凍結”住:它的scn不在變化,不會再向它寫入任何資料;但是原有存在這個檔案中物件和資料還可以繼續使用。因此在使用這個命令後,通過修改控制檔案將它刪除,資料庫在啟動時就會報檔案丟失的錯誤,並且會在資料字典中產生一個MISGXXXXX的紀錄。因此,以一個資料檔案是無法被直接從資料庫中刪除掉的。
刪除表格空間.
SQL> DROP TABLESPACE users INCLUDING CONTENTS and datafiles;
在drop users表空間時遇到如下錯誤﹕
SQL> DROP TABLESPACE users INCLUDING CONTENTS and datafiles;
DROP TABLESPACE users INCLUDING CONTENTS and datafiles
*
ERROR 在行 1:
ORA-12919: 無法刪除預設永久表格空間
原來在oracle10g中﹐必須為資料庫指定一個預設的永久表空間。而預設是users表空間﹐所以會出現上面的錯誤資訊。
把預設的永久表空間改為system表空間就可以了﹕
SQL> alter database default tablespace system;
4) SQL> alter database open
5)重建被drop掉的表空間,再import前面備份的表空間
impdp 使用者名稱/密碼 DUMPFILE=XXX.dmp tablespaces=xxx;
4.關閉表空間的自動擴充套件屬性:
alter database datafile 'filepath' autoextend off
eg:
alter database datafile 'c:\2.txt' autoextend off
5.開啟表空間的自動擴充套件屬性:
alter database datafile 'filepath' autoextend on
eg:
alter database datafile 'c:\2.txt' autoextend on
6.使表空間離線:
alter tablespace tablespace_name offline
7.使表空間聯機:
alter tablespace tablespace_name online
8.設定表空間為只讀:
alter tablespace tablespace_name read only
9.設定表空間為讀寫:
alter tablespace tablespace_name read write
11.刪除表空間:
drop tablespace tablespace_name
12.刪除表空間的同時,刪除資料檔案
drop tablespace tablespace_name including contents and datefiles
13.檢視每個表空間佔用空間的大小:
select tablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name
10.oracle中如何移動控制檔案,資料檔案,日誌檔案
oracle9i/10G-xG中移動控制檔案,資料檔案,日誌檔案
ORACLE資料庫由資料檔案,控制檔案和聯機日誌檔案三種檔案組成。
windows環境中用: host copy 或 host move 其它均相同。
以下是unix或linux環境中,
一.移動資料檔案:
ALTER TABLESPACE方法(聯機狀態):
用此方法,要求此資料檔案既不屬於SYSTEM表空間,也不屬於含有ACTIVE回滾段或臨時段的表空間。
$ sqlplus '/as sysdba'
#把需要移動的資料檔案對應的表空間offline
SQL> alter tablespace ipas_acct_data offline
#把資料檔案cp到想要放的目錄下。
SQL> !mv /opt/oracle/wacosdata/ipas_acct_data001.dbf /opt/oracle/nms/oradata/ipas_acct_data001.dbf
#修改表空間中資料庫檔案的位置。
SQL> alter tablespace ipas_acct_data rename datafile '/opt/oracle/wacosdata/ipas_acct_data001.dbf' to '/opt/oracle/nms/oradata/ipas_acct_data001.dbf'
#把表空間online。
SQL> alter tablespace ipas_acct_data online
#檢視修改結果。
SQL> select file_name from dba_data_files where tablespace_name = 'IPAS_ACCT_DATA';
ALTER DATABASE方法(離線狀態):
用此方法,可以移動任何表空間的資料檔案。
$ sqlplus '/as sysdba'
SQL> shutdown immediate
SQL> !mv /opt/oracle/oradata/wacos002.dbf /ora10g/oradata/wacos002.dbf
SQL> startup mount
SQL> alter database rename file '/opt/oracle/oradata/wacos002.dbf' to '/ora10g/oradata/wacos002.dbf';
SQL> alter database open;
SQL> set head off
SQL> SELECT file_name from dba_data_files where tablespace_name = 'WACOS';
二. 移動控制檔案:
$ sqlplus '/as sysdba'
#我是用的spfile啟動的,spfile檔案不能修改,所以要做這一步。
SQL> create pfile from spfile
#關閉資料庫。
SQL> shutdown immediate
#cp控制檔案到目標位置。
SQL>cp /opt/oracle/oradata/control* /opt/oracle/oratest/
修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora 檔案中的控制檔案的位置。
#啟動資料庫指定引數檔案。
SQL> startup pfile='/opt/oracle/product/9.2.0.4/dbs/init$ORACLE_SID.ora'
#下次啟動資料庫是直接就可以用startup啟動了。
SQL> create spfile from pfile;
三. 移動重做日誌檔案:
$ sqlplus '/as sysdba'
#關閉資料庫。
SQL> shutdown immediate
#cp日誌檔案到目標位置。
SQL> !cp /opt/oracle/oradata/redo* /opt/oracle/oratest/
#讓資料庫以mount模式啟動。
SQL>startup mount;
#修改資料庫中日誌檔案的位置。
SQL> alter database rename file '/opt/oracle/oradata/redo01.log' to '/opt/oracle/oratest/redo01.log'
SQL> alter database rename file '/opt/oracle/oradata/redo02.log' to '/opt/oracle/oratest/redo02.log'
SQL> alter database rename file '/opt/oracle/oradata/redo03.log' to '/opt/oracle/oratest/redo03.log'
#修改資料庫的狀態。
SQL> alter database open;
#檢視修改結果。
SQL> select * from v$logfile;
增加重做日誌檔案
alter database add logfile 'D:\oracle\oradata\ge01\redo04.log' size 100M;
管理臨時表空間
注意:TEMP資料檔案不能移動,只能通過重建臨時表空間來重建,方法如下:
尤其值得注意:重建臨時表空間的大小一定要足夠大,一定要大於或等於現有臨時表空間的大小,否則會出現:提示:無法通過128(在表空間temp中)擴充套件 temp段。
====================================================================================
Oracle9i為我們提供了一個全域性的臨時表空間。有的時候我們會發現在做了大量的排序操作後,temp表空間並沒有去釋放,而且在更大的程度上面佔用了我們的磁碟空間,其實我們可以通過重建或者切換的手段來使我們的temp表空間得到重生。
首先我們可以先看一下,當前使用者所屬的臨時表空間有那些
SQL> select username ,temporary_tablespace from dba_users;
USERNAME TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS TEMP
SYSTEM TEMP
DBSNMP TEMP
HUJINPEI TEMP
ALAN1 TEMP
PERFUSER TEMP
ALAN2 TEMP
MYUSER TEMP
OUTLN TEMP
WMSYS TEMP
已選擇10行。
檢視當前有那些臨時檔案
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_01.DBF
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_02.DBF
為了切換這個臨時檔案,我們可以重新建立一個臨時表空間
SQL> create temporary tablespace temp2 tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP01.DBF' size 10M ;
表空間已建立。
SQL> alter tablespace temp2 add tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP02.DBF' size 10M;
表空間已更改。
這個時候我們就可以將剛剛建好的TEMP表空間設定為我們資料庫預設的臨時表空間:
SQL> alter database default temporary tablespace temp2;
資料庫已更改。
SQL> select username,temporary_tablespace from dba_users;
USERNAME TEMPORARY_TABLESPACE
------------------------------ ---------------------------
SYS TEMP2
SYSTEM TEMP2
DBSNMP TEMP2
HUJINPEI TEMP2
ALAN1 TEMP2
PERFUSER TEMP2
ALAN2 TEMP2
MYUSER TEMP2
OUTLN TEMP2
WMSYS TEMP2
已選擇10行。
當然我們還可以選擇DROP掉以前舊的TEMP的表空間
SQL> drop tablespace temp including contents ;
表空間已丟棄。
臨時表空間組
Oracle 10g 引進了臨時表空間組(temporary tablespace group)的概念,它允許使用者在不同的會話中同時利用多個臨時表空間。
1. 臨時表空間組的主要特徵
? 一個臨時表空間組必須由至少一個臨時表空間組成,並且無明確的最大數量限制。
? 如果刪除了一個臨時表空間組的所有成員,該組也自動被刪除。
? 臨時表空間的名字不能與臨時表空間組的名字相同。
? 在給使用者分配一個臨時表空間時,可以使用臨時表空間組的名字代替實際的臨時表空間名;在給資料庫分配預設臨時表空間時也可以使用臨時表空間組的名字。
2. 臨時表空間組的有點
使用臨時表空間組而非普通的臨時表空間,有如下好處:
? 由於SQL查詢可以併發使用幾個臨時表空間進行排序操作,因此SQL查詢很少會出現排序空間超出,避免當臨時表空間不足時所引起的磁碟排序問題。
? 可以在資料庫級指定多個預設臨時表空間。
? 一個並行操作的並行伺服器將有效地利用多個臨時表空間。
? 一個使用者在不同會話中可以同時使用多個臨時表空間。
注意:從Oracle10gR2開始,使用RMAN恢復資料庫之後,Oracle會自動重新建立臨時文件,由於臨時文件是Sparse File,所以建立會很迅速,通常您不會感覺得到。
3. 管理 臨時表空間組
臨時表空間組是在建立臨時表空間時通過指定GROUP字句建立的。可以將一個表空間從一個組移動另一個組,或是從一個組中刪除臨時表空間,或是往組裡新增新的表空間。
1. 建立臨時表空間組
建立臨時表空間時指定GROUP:
CREATE SMALLFILE TEMPORARY TABLESPACE "TEMP01"
TEMPFILE '/opt/oracle/oradata/ge01/temp01.dbf' SIZE 50M REUSE
AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT MANAGEMENT LOCAL
UNIFORM. SIZE 1M TABLESPACE GROUP TMP_GROUP_1;
CREATE SMALLFILE TEMPORARY TABLESPACE "TEMP02"
TEMPFILE '/opt/oracle/oradata/ge01/temp02.dbf' SIZE 50M REUSE
AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT MANAGEMENT LOCAL
UNIFORM. SIZE 1M TABLESPACE GROUP "TMP_GROUP_1";
2. 查詢臨時表空間組
SELECT * FROM DBA_TABLESPACE_GROUPS
GROUP_NAME TABLESPACE_NAME
------------- ------------------
TBS_GROUP_1 TEMP01
TBS_GROUP_1 TEMP02
TBS_GROUP_2 TEMP03
TBS_GROUP_2 TEMP04
3. 臨時表空間的移動
可以將“未分組”或“已分組”的臨時表空間移動到指定的 臨時表空間中,或者是移出:
?將未分組的臨時表空間TEMP_01加入分組TBS_GROUP_1
ALTER TABLESPACE TEMP TABLESPACE GROUP "TMP_GROUP_1";
4. 把臨時表空間組指定給使用者
?檢視使用者的預設表空間
SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS;
?建立使用者時指定
CREATE USER zhangzj IDENTITY BY zhangzj
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE tbs_group_1
?修改已有使用者
ALTER USER gedb TEMPORARY TABLESPACE TMP_GROUP_1;
5. 設定資料庫預設臨時表空間組
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TMP_GROUP_1;
6. 同一個使用者的不同session使用不同的臨時表空間
首先用sys使用者查詢:
SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE
測試過程:
新開session1執行
SQL> conn zhangzj/zhangzj
已連線。
SELECT A.TABLE_NAME, B.TABLE_NAME FROM DICT A, DICT B ORDER BY A.TABLE_NAME
新開session2執行
SQL> conn zhangzj/zhangzj
已連線。
SELECT A.TABLE_NAME, B.TABLE_NAME FROM DICT A, DICT B
sys查詢:
SQL> SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE;
USERNAME SESSION_NUM TABLESPACE
----------- -------------- -------------
ZHANGZJ 35743 TEMP01
ZHANGZJ 25683 TEMP02
可以發現,同一個使用者ZHANGZJ的兩個session分別使用了兩個不同的臨時表空間。
6. 刪除臨時表空間組
即:刪除組成臨時表空間組的所有臨時表空間
先檢視要刪除的 臨時表空間組包含哪些 臨時表空間
SELECT * FROM DBA_TABLESPACE_GROUPS
然後刪除 這些臨時表空間,即可
DROP TABLESPACE TEMP01 INCLUDING CONTENTS AND DATAFILES
DROP TABLESPACE TEMP02 INCLUDING CONTENTS AND DATAFILES
---------------------------------------------------------------------
11.查詢表空間的資訊:
select tablespace_name,bytes/1024/1024 file_size_mb,file_name from DBA_DATA_FILES
--注意資料庫中的實體都是以大寫表示
12 如果在資料庫建立期間沒有指定預設表空間,它將預設為 SYSTEM。但您如何才能知道現有的資料庫的預設表空間是哪一個?發出以下查詢:
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
DATABASE_PROPERTIES 檢視顯示預設表空間之外,還顯示一些非常重要的資訊 — 例如預設臨時表空間、全域性資料庫名、時區等
13 在 Oracle Database 10g 中,您可以類似地為使用者指定一個預設表空間。在資料庫建立期間,CREATE DATABASE 命令可以包含子句 DEFAULT TABLESPACE 。在建立之後,您可以通過發出以下命令來使一個表空間變成預設表空間:
ALTER DATABASE DEFAULT TABLESPACE
14 重新命名一個表空間
在資料倉儲環境中(典型地,對於資料中心體系結構),在資料庫之間傳輸表空間是很常見的。但源資料庫和目標資料庫必須不存在擁有相同名稱的表空間。如果存在兩個擁有相同名稱的表空間,則目標表空間中的段必須轉移到一個不同的表空間中,然後重新建立這個表空間— 這個任務說起來容易做起來難。
Oracle Database 10g 提供了一個方便的解決方案:您可以用以下命令來簡單地重新命名一個現有的表空間(SYSTEM 和 SYSAUX 除外) — 無論是永久表空間還是臨時表空間:
ALTER TABLESPACE
一個重要的包DBMS_SPACE_ADMIN:
這個包為本地管理的所有表空間提供帶有故障診斷和修復功能的管理程式。
包含的管理程式有:
SEGMENT_VERIFY:驗證該段盤區對映的一致性
SEGMENT_CURRUPT:標註該段為損壞或有效,以便執行恰當的錯誤恢復
SEGMENT_DROP_CORRUPT:取消一個當前標註為損壞的段(不回收空間)
SEGMENT_DUMP:卸下一個給定段的段頭部和盤區對映
TABLESPACE_VERIFY:驗證該表空間中段的點陣圖和盤區對映是否同步
TABLESPACE_REBUILD_BITMAPS: 重建適當的點陣圖
TABLESPACE_FIX_BITMAPS:在點陣圖中標註適當的資料塊地址範圍為空閒或已用
TABLESPACE_REBUILED_QUOTAS:為給定表空間重建限額
TABLESPACE_MIGERATE_FROM_LOCAL:將一個本地管理的表空間移植為字典管理的表空間
TABLESPACE_MIGRATE_TO_LOCAL:將一個字典管理的表空間移植為本地管理的表空間
TABLESPACE_RELOCATE_BITMAPES:將點陣圖重定位到指定的目的地
TABLESPACE_FIX_SEGMENT_STATES:修改移植被放棄的表空間中資料段的狀態
一些有關表空間資訊的表或檢視:
V$TABLESPACE:來自控制檔案的所有表空間的名稱和編號
DBA_TABLESPACE,USER_TABLESPACE:所有使用者的表空間說明
DBA_SEGMENTS,USER_SEGMENTS:所有使用者表空間種段的資訊
DBA_EXTENTS,USER_EXTENTS:所有使用者表空間中資料盤區的資訊
DBA_FREE_SPACE,USER_FREE_SPACE:所有使用者表空間中的空閒盤區的資訊
V$DATAFILE:關於所有資料檔案的資訊,包括所屬表空間和表空間號
V$TEMPFILE:關於所有臨時檔案的資訊,包括所屬表空間和表空間號
DBA_DATA_FILES:顯示屬於表空間的資料檔案
DBA_TEMP_FILES:顯示屬於表空間的臨時檔案
V$TEMP_EXTENT_MAP:所有本地管理的臨時表空間中所有盤區的資訊
V$TEMP_EXTENT_POOL:由每個例項快取和使用臨時表空間(本地管理的)的狀態
V$TEMP_SPACE_HEADER:顯示每個臨時檔案的已用/空閒空間
DBA_USERS:所有使用者預設的和臨時表空間
DBA_TS_QUOTAS:列出所有使用者表空間限額
V$SORT_SEGMENT:關於一個給定例項的每個排序段的資訊,只有在表空間是TEMPOARY:型別時更新
V$SORT_USER:使用者使用的臨時排序空間和臨時的/永久的表空間
1.如果lz是因為drop table時沒有purge,或者說recyclebin裡還有其他東西的話,那麼需要先“purge recyclebin”,再試試。
2.如果lz已經purge了recyclebin,那很有可能是因為有其他segment在datafile的末尾,需要你找到哪個segment在末尾。
一個小實驗:
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jun 8 18:32:40 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> create tablespace testonce datafile '/u01/app/oradata/test/leviton01.dbf' size 50m;
Tablespace created.
SQL> create table testonce tablespace testonce as select * from dba_objects;
Table created.
SQL> insert into testonce select * from testonce;
50559 rows created.
SQL> /
101118 rows created.
SQL> /
202236 rows created.
SQL> /
insert into testonce select * from testonce
*
ERROR at line 1:
ORA-01653: unable to extend table SYS.TESTONCE by 128 in tablespace TESTONCE
SQL> commit;
Commit complete.
SQL> select sum(BYTES/1024/1024) MB from dba_extents where SEGMENT_NAME='TESTONCE';
MB
----------
49
SQL> create table testonce2 (id number) tablespace testonce;
Table created.
SQL> insert into testonce2 values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> select SEGMENT_NAME,min(BLOCK_ID),max(BLOCK_ID) from dba_extents where TABLESPACE_NAME='TESTONCE'
2 ;
select SEGMENT_NAME,min(BLOCK_ID),max(BLOCK_ID) from dba_extents where TABLESPACE_NAME='TESTONCE'
*
ERROR at line 1:
ORA-00937: not a single-group group function
SQL> select SEGMENT_NAME,min(BLOCK_ID),max(BLOCK_ID) from dba_extents where TABLESPACE_NAME='TESTONCE'
2 group by SEGMENT_NAME;
SEGMENT_NA MIN(BLOCK_ID) MAX(BLOCK_ID)
---------- ------------- -------------
TESTONCE 9 6153
TESTONCE2 6281 6281
前面49M的空間是TESTONCE這張表,TESTONCE2從49.07MB開始佔用datafile
SQL> select 6281*8192/1024/1024 from dual;
6281*8192/1024/1024
-------------------
49.0703125
SQL> select SEGMENT_NAME,min(BLOCK_ID),max(BLOCK_ID),min(EXTENT_ID),max(EXTENT_ID) from dba_extents where TABLESPACE_NAME='TESTONCE'
2 group by SEGMENT_NAME;
SEGMENT_NA MIN(BLOCK_ID) MAX(BLOCK_ID) MIN(EXTENT_ID) MAX(EXTENT_ID)
---------- ------------- ------------- -------------- --------------
TESTONCE 9 6153 0 63
TESTONCE2 6281 6281 0 0
SQL> select SEGMENT_NAME,BLOCK_ID,EXTENT_ID from dba_extents where TABLESPACE_NAME='TESTONCE'
2 ;
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 9 0
TESTONCE 17 1
TESTONCE 25 2
TESTONCE 33 3
TESTONCE 41 4
TESTONCE 49 5
TESTONCE 57 6
TESTONCE 65 7
TESTONCE 73 8
TESTONCE 81 9
TESTONCE 89 10
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 97 11
TESTONCE 105 12
TESTONCE 113 13
TESTONCE 121 14
TESTONCE 129 15
TESTONCE 137 16
TESTONCE 265 17
TESTONCE 393 18
TESTONCE 521 19
TESTONCE 649 20
TESTONCE 777 21
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 905 22
TESTONCE 1033 23
TESTONCE 1161 24
TESTONCE 1289 25
TESTONCE 1417 26
TESTONCE 1545 27
TESTONCE 1673 28
TESTONCE 1801 29
TESTONCE 1929 30
TESTONCE 2057 31
TESTONCE 2185 32
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 2313 33
TESTONCE 2441 34
TESTONCE 2569 35
TESTONCE 2697 36
TESTONCE 2825 37
TESTONCE 2953 38
TESTONCE 3081 39
TESTONCE 3209 40
TESTONCE 3337 41
TESTONCE 3465 42
TESTONCE 3593 43
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 3721 44
TESTONCE 3849 45
TESTONCE 3977 46
TESTONCE 4105 47
TESTONCE 4233 48
TESTONCE 4361 49
TESTONCE 4489 50
TESTONCE 4617 51
TESTONCE 4745 52
TESTONCE 4873 53
TESTONCE 5001 54
SEGMENT_NA BLOCK_ID EXTENT_ID
---------- ---------- ----------
TESTONCE 5129 55
TESTONCE 5257 56
TESTONCE 5385 57
TESTONCE 5513 58
TESTONCE 5641 59
TESTONCE 5769 60
TESTONCE 5897 61
TESTONCE 6025 62
TESTONCE 6153 63
TESTONCE2 6281 0
65 rows selected.
SQL>
SQL> drop table TESTONCE purge;
Table dropped.
SQL> alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 48m;
alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 48m
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
SQL> drop table TESTONCE2;
Table dropped.
SQL> alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 48m;
alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 48m
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
SQL> purge recyclebin;
Recyclebin purged.
這時,因為TESTONCE2的屍體還在datafile的末尾,所以不行。
SQL> alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 48m;
Database altered.
SQL> alter database datafile '/u01/app/oradata/test/leviton01.dbf' resize 1m;
Database altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13024285/viewspace-697479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle表空間操作詳解-入門基礎Oracle
- oracle表空間操作Oracle
- Oracle的表空間quota詳解Oracle
- Oracle表空間傳輸詳解Oracle
- Oracle 表空間 的操作Oracle
- 傳輸表空間操作-OracleOracle
- oracle表空間日常操作管理Oracle
- Oracle表空間相關操作Oracle
- Postgresql表空間詳解SQL
- Oracle create tablespace 建立表空間語法詳解Oracle
- Oracle SQL 基本操作之 表空間OracleSQL
- oracle 10g表空間操作Oracle 10g
- oracle的表空間quota詳講Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- 表空間基本操作
- Oracle切換undo表空間操作步驟Oracle
- Oracle - 表空間相關常用操作語句Oracle
- Oracle表空間Oracle
- oracle 表空間Oracle
- oracle 臨時表空間基本常識和操作Oracle
- oracle temp 表空間Oracle
- 增加oracle表空間Oracle
- oracle undo 表空間Oracle
- oracle users 表空間Oracle
- Oracle表空間管理Oracle
- oracle建立表空間Oracle
- Oracle 表空間管理Oracle
- ORACLE MOVE表空間Oracle
- ORACLE表空間概述Oracle
- Oracle表空間命令Oracle
- Oracle 表空間回收Oracle
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle表移動表空間Oracle
- oracle 表移動表空間Oracle
- Oracle 10g的可傳輸表空間操作Oracle 10g
- 表空間常見的操作
- Oracle undo表空間爆滿的解決Oracle
- MySQL Transportable Tablespace(傳輸表空間) 使用詳解MySql