Oracle數(shù)據(jù)庫如何更改數(shù)據(jù)文件位置
一、概述
突然收到zabbix報警提示OA數(shù)據(jù)庫服務(wù)器磁盤不足,經(jīng)常查發(fā)現(xiàn)根目錄磁盤空間不足,由于無法添加磁盤來擴容,需要將數(shù)據(jù)庫目錄從/oradata更改到/home/oracle/oradata。
由于數(shù)據(jù)庫文件和表空間具有不同的性質(zhì),將數(shù)據(jù)文件位置更改分為四個步驟:
- 控制文件位置更改
- 數(shù)據(jù)文件位置更改*(不包括臨時數(shù)據(jù)文件)*
- 臨時數(shù)據(jù)文件位置更改
- 日志文件位置更改
二、控制文件位置更改
停止數(shù)據(jù)庫監(jiān)聽,防止有應(yīng)用連接對數(shù)據(jù)庫進行修改。
lsnrctl stop
數(shù)據(jù)庫open的狀態(tài)下
alter system set control_files='/home/oracle/oradata/oa/control01.ctl','/home/oracle/oradata/oa/control02.ctl','/home/oracle/oradata/oa/control03.ctl' scope=spfile;
然后將數(shù)據(jù)庫shutdown
shutdown immediate;
將控制文件移動到新目錄/home/oracle/oradata/oa下
mv /oradata/oa/control* /home/oracle/oradata/oa/
將數(shù)據(jù)庫啟動到mount狀態(tài),至此,控制文件位置更改結(jié)束。
三、數(shù)據(jù)文件位置更改(不包括臨時數(shù)據(jù)文件)
數(shù)據(jù)庫需要在open狀態(tài)下
將表空間全部offline,使用一下命令:
SELECT 'alter tablespace ' || DTS.Tablespace_Name || ' offline;' FROM Sys.Dba_Tablespaces DTS WHERE DTS.Contents <> 'TEMPORARY' AND DTS.Tablespace_Name <> 'UNDOTBS1' AND DTS.Tablespace_Name <> 'SYSTEM';
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter tablespace SYSAUX offline; alter tablespace USERS offline; ...
將這些表空間的數(shù)據(jù)文件復(fù)制到新目錄/home/oracle/oradata目錄下,數(shù)據(jù)文件rename的時候,需要兩邊都有數(shù)據(jù)文件。
使用以下語句生成rename數(shù)據(jù)文件的SQL語句
SELECT 'alter tablespace ' || Ddf.Tablespace_Name || ' rename datafile ''' || Ddf.File_Name || ''' to ''' || '/home/oracle' || Ddf.File_Name || ''';' FROM Sys.Dba_Data_Files Ddf WHERE Ddf.Tablespace_Name <> 'SYSTEM' AND Ddf.Tablespace_Name <> 'UNDOTBS1';
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter tablespace USERS rename datafile '/oradata/ipcc/users01.dbf' to '/home/oracle/oradata/ipcc/users01.dbf'; alter tablespace SYSAUX rename datafile '/oradata/ipcc/sysaux01.dbf' to '/home/oracle/oradata/ipcc/sysaux01.dbf'; ......
執(zhí)行結(jié)束之后,將表空間全部**online,**使用以下語句生成表空間online的SQL語句
SELECT 'alter tablespace ' || Ds.Tablespace_Name || ' online;' FROM Sys.Dba_Tablespaces Ds WHERE Ds.Contents <> 'TEMPORARY' AND Ds.Tablespace_Name <> 'UNDOTBS1' AND Ds.Tablespace_Name <> 'SYSTEM';
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter tablespace SYSAUX online; alter tablespace USERS online; ......
四、臨時數(shù)據(jù)文件位置更改
臨時表空間比較特殊,不能將臨時表空間offline,需要將臨時表空間的臨時數(shù)據(jù)文件offline。
數(shù)據(jù)庫在open狀態(tài)下,生成臨時數(shù)據(jù)文件offline的SQL語句如下:
SELECT 'alter database tempfile ''' || File_Name || ''' offline;' FROM Dba_Temp_Files ORDER BY File_Id;
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter database tempfile '/oradata/ipcc/temp01.dbf' offline; alter database tempfile '/oradata/ricd_temp10' offline; ......
將臨時數(shù)據(jù)文件復(fù)制到/home/oracle/oradata目錄下
生成rename臨時數(shù)據(jù)文件的SQL語句如下:
SELECT 'alter database rename file ''' || File_Name || ''' to ''' || '/home/oracle' || File_Name || ''';' FROM Dba_Temp_Files ORDER BY File_Id;
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter database rename file '/oradata/oa/temp01.dbf' to '/home/oracle/oradata/oa/temp01.dbf'; alter database rename file '/oradata/oa_temp10' to '/home/oracle/oradata/oa_temp10'; ......
執(zhí)行結(jié)束之后,將臨時數(shù)據(jù)文件online,生成臨時數(shù)據(jù)文件online的SQL語句如下:
SELECT 'alter database tempfile ''' || File_Name || ''' online;' FROM Dba_Temp_Files ORDER BY File_Id;
生成的SQL語句如下,使用sysdba賬戶執(zhí)行
alter database tempfile '/home/oracle/oradata/oa/temp01.dbf' online; alter database tempfile '/home/oracle/oradata/oa_temp10' online; ......
至此,臨時數(shù)據(jù)文件位置更改結(jié)束
五、臨時數(shù)據(jù)文件位置更改
數(shù)據(jù)庫可以在mount狀態(tài)或open狀態(tài)下。
查看日志文件狀態(tài)
select group#,thread#,sequence#,members,archived,status from v$log; select member from v$logfile;
當(dāng)日志文件狀態(tài)不為current的時候,將日志文件復(fù)制到新目錄/home/oracle/oradata下,然后可以切換日志文件位置。也可以使用alter system switch logfile,切換日志文件狀態(tài)
SQL> alter database rename file '/oradata/oa/redo01.log' to '/home/oracle/oradata/oa/redo01.log'; SQL> alter database rename file '/oradata/oa/redo02.log' to '/home/oracle/oradata/oa/redo02.log';
至此,日志文件位置更改結(jié)束。當(dāng)所有文件位置均更改結(jié)束時,測試數(shù)據(jù)庫的可用性;如果無問題,可以刪除舊數(shù)據(jù)目錄下的文件。
總結(jié)
到此這篇關(guān)于Oracle數(shù)據(jù)庫如何更改數(shù)據(jù)文件位置的文章就介紹到這了,更多相關(guān)Oracle更改數(shù)據(jù)文件位置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows系統(tǒng)下Oracle?11g完全卸載教程(推薦!)
安裝軟件是首要,雖然不是特別重要,但是錯誤的安裝也是相當(dāng)費勁和抓狂的,所以這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下Oracle?11g完全卸載的相關(guān)資料,文中通過圖文介紹的非常詳細,要的朋友可以參考下2024-06-06Oracle 手動創(chuàng)建數(shù)據(jù)庫步驟詳解
本文給大家介紹oracle手動創(chuàng)建數(shù)據(jù)庫步驟,需要的朋友可以參考下2015-10-10oracle數(shù)據(jù)庫實現(xiàn)獲取時間戳的無參函數(shù)
這篇文章主要介紹了oracle數(shù)據(jù)庫實現(xiàn)獲取時間戳的無參函數(shù)的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08如何使用GDAL庫的ogr2ogr將GeoJSON數(shù)據(jù)導(dǎo)入到PostgreSql中
本文主要介紹了PyTorch中的masked_fill函數(shù)的基本知識和使用方法,masked_fill函數(shù)接受一個輸入張量和一個布爾掩碼作為主要參數(shù),掩碼的形狀必須與輸入張量相同,掩碼操作根據(jù)掩碼中的布爾值在輸出張量中填充指定的值或保留輸入張量中的值2024-10-10Oracle如何設(shè)置表空間數(shù)據(jù)文件大小
這篇文章主要介紹了Oracle如何設(shè)置表空間數(shù)據(jù)文件大小,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Oracle?查詢語句限制只選擇最前面幾行和最后面幾行的實現(xiàn)方式
在Oracle中,可以使用?ROWNUM?關(guān)鍵字來限制查詢結(jié)果的行數(shù),這篇文章主要介紹了Oracle?查詢語句限制只選擇最前面幾行和最后面幾行的實現(xiàn)方式,需要的朋友可以參考下2023-12-12Oracle數(shù)據(jù)庫存儲過程的調(diào)試過程
oracle如果存儲過程比較復(fù)雜,我們要定位到錯誤就比較困難,那么我們就可以用存儲過程的調(diào)試功能,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫存儲過程調(diào)試的相關(guān)資料,需要的朋友可以參考下2022-07-07