最近有網友提到收縮Oracle資料檔案的問題,這是DBA經常碰到的一個常見問題。通常我們需要收縮相應的資料檔案以減少來自磁碟空間的壓力以及提高資料庫的整體效能。但這並非對於所有情形都是適用的,尤其是生產環境。因為生產環境資料清洗相當較少,因此空間浪費也比較小,而且一旦收縮之後又要重新自動擴充資料檔案,浪費系統資源。對於UAT,DEV環境,多DB,磁碟空間壓力大的情形,收縮一下非常有必要。勒緊褲帶過日子也是常有的事情,哈哈。總之收縮資料檔案會使得磁碟空間得以釋放以及加快資料移轉,RMAN備份等。本文分享了Tom大師的收縮指令碼以及給出了undo,暫存資料表空間,表段收縮的連結。
1、示範收縮資料檔案
robin@ORADB:~/dba_scripts/custom/sql> sql
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Oct 30 15:05:18 2013
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
goex_admin@USBOTST> @shrink_data_files;
VALUE
--------------------
8192
Smallest
Size Current Poss.
FILE_NAME Poss. Size Savings
-------------------------------------------------- -------- -------- --------
/u02/database/USBOTST/oradata/sysUSBOTST.dbf 605 650 45
/u02/database/USBOTST/oradata/USBOTST_archive_idx. 725 1,871 1,146
dbf
/u02/database/USBOTST/oradata/USBOTST_his_idx.dbf 1 32 31
/u02/database/USBOTST/oradata/USBOTST_ipo_idx.dbf 7 10 3
/u02/database/USBOTST/oradata/USBOTST_account_tbl. 6,293 6,293 0
dbf
/u02/database/USBOTST/oradata/USBOTST_rpt_tbl.dbf 21 373 352
/u02/database/USBOTST/oradata/USBOTST_audit_tbl.db 938 966 28
f
/u02/database/USBOTST/oradata/tbs_rman01.dbf 13 50 37
/u02/database/USBOTST/undo/undotbsUSBOTST.dbf 358 7,350 6,992
/u02/database/USBOTST/oradata/USBOTST_archive_tbl. 760 1,950 1,190
dbf
/u02/database/USBOTST/oradata/USBOTST_rpt_idx.dbf 10 359 349
/u02/database/USBOTST/oradata/USBOTST_vou_tbl.dbf 4 145 141
/u02/database/USBOTST/oradata/USBOTST_stock_l_tbl. 4 20 16
dbf
/u02/database/USBOTST/oradata/USBOTST_ca_idx.dbf 1 22 21
/u02/database/USBOTST/oradata/USBOTST_his_tbl.dbf 1 959 958
/u02/database/USBOTST/oradata/USBOTST_vou_idx.dbf 2 90 88
/u02/database/USBOTST/oradata/sysauxUSBOTST.dbf 697 800 103
/u02/database/USBOTST/oradata/spot_data.dbf 81 95 14
/u02/database/USBOTST/oradata/USBOTST_tx_tbl.dbf 16 103 87
/u02/database/USBOTST/oradata/USBOTST_tx_his_tbl.d 88 878 790
bf
/u02/database/USBOTST/oradata/USBOTST_ca_tbl.dbf 1 60 59
/u02/database/USBOTST/oradata/USBOTST_imp_exp_tbl. 60 108 48
dbf
.........................................................................
--------
sum 29,686 -->可被釋放的總空間
44 rows selected.
Database altered.
Database altered.
Database altered.
Database altered.
alter database datafile '/u02/database/USBOTST/oradata/USBOTST_ipo_idx.dbf'
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
---> Author : Leshami --->Blog :
推薦閱讀:
Oracle中的角色和許可權授予
Oracle收集使用者的許可權
Oracle許可權總結
Oracle查詢指定使用者有許可權的所有表
修改檔案目錄許可權導致資料庫連接報錯ORA-12547