文章目錄
數據遷移計劃
原因:
oracle數據庫數據文件將磁盤空間佔滿導致數據無法寫入,如果刪除歷史數據,表空間不會釋放佔用物理空間不會釋放,所以磁盤依舊是滿的,現在需要騰出部分空間,然後掛在新的盤符爲數據存儲。
需要解決的問題
- 刪除部分歷史數據後表空間不會釋放
遷移計劃
一、備份
二、數據文件遷移
所有的命令執行要在 sqlplus下執行
1. 進入sqlplus
//進入sqlplus oracle命令提示空間
sqlplus /nologs
conn /as sysdba
2. 關閉數據庫
//關閉數據庫
shutdown immediate
3. 移動數據文件位置
比如
將 D:\app\Administrator\admin\orcl\JCPT_CA.DBF
移動到
C:\Users\Administrator\Oracle\JCPT_CA.DBF
4. 啓動數據庫到 mount狀態
//數據庫例程開啓
startup mount
5. 執行數據文件位置更改
//更改數據文件位置
alter database rename file 'D:\app\Administrator\admin\orcl\JCPT_CA.DBF' to 'C:\Users\Administrator\Oracle\JCPT_CA.DBF';
6. 啓動數據庫
alter database open;
7. 重啓驗證
//關閉數據庫
shutdown immediate
//啓動數據庫
startup
三、刪除歷史數據,釋放空間(如果執行了第二步這步可不做)
此步驟主要是爲了刪除數據後 釋放表空間佔用的物理空間
1. 刪除分區表中無用的歷史數據
//查詢所有分區表數據數據文件
//按照時間刪除部分無用表分區 -- update global indexes 如果數據量大 可能會耗時
alter table ‘表名’ drop partition ‘分區’ -- UPDATE GLOBAL INDEXES;
//
2. 查詢表空間中每個數據文件的實際使用空間
select d.bytes total ,s.bytes free,s.tablespace_name tablespace_,
d.file_name file_name,d.file_id file_id
from DBA_FREE_SPACE s ,dba_data_files d
where d.FILE_ID = s.file_id and d.tablespace_name = '表空間名稱'
3. 重設每個數據文件的空間大小爲實際使用大小
//根據上一步得到的使用空間 在以下位置釋放表空間略大於實際使用空間即可
alter database datafile '~/jcpt.dbf' resize 500m;
4. 關閉數據文件的自動擴展
-- 擴建數據文件
alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
-- 關閉表空間自動擴展
alter database datafile '/u01/app/oracle/oradata/fzyz/TS_JOB12_IDX_001.DBF' autoextend off;
5. 擴展數據文件到新的盤符/位置
alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m;
並把jcpt01文件按照3.3.2步驟設置成自動擴展大小。
或者一氣呵成:
alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
這個步驟可能比較耗時,耐心等待
多少不凡、只因不甘
原創 待完善