Oracle檔案改名實驗記錄
在日常工作中,我們經常會遇到諸如空間被回收、某個磁碟損壞或者需要更換的情況。這個時候,往往需要我們將資料檔案轉移到其他儲存位置上。本篇主要介紹常用的兩種處理手段,權當記錄,供自己和有需要的朋友不時之需。
1、環境準備
我們選擇11g進行試驗。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 – Production
建立一個實驗的表空間用於測試。
SQL> create tablespace mvtbltest datafile '/u01/oradata/WILSON/datafile/mvtbltest01.dbf' size 10m autoextend off
2 extent management local uniform. size 1m
3 segment space management auto;
Tablespace created
SQL> col file_name for a45;
SQL> select file_name, tablespace_name from dba_data_files where tablespace_name='MVTBLTEST';
FILE_NAME TABLESPACE_NAME
--------------------------------------------- ------------------------------
/u01/oradata/WILSON/datafile/mvtbltest01.dbf MVTBLTEST
建立一些實驗物件。
SQL> create table t tablespace mvtbltest as select * from dba_objects ;
Table created
SQL> select tablespace_name, bytes from dba_segments where wner='SYS' and segment_name='T';
TABLESPACE_NAME BYTES
------------------------------ ----------
MVTBLTEST 9437184
我們透過mvtbltest表空間進行試驗。
常用的處理方法有兩個,一個是線上online進行檔案的rename操作,另一個是需要停庫,在啟動過程中進行rename操作。
2、Online檔案重新命名操作
首先我們進行online的檔案重新命名。首先,我們需要明確,無論是online還是停庫操作,表空間檔案都會有一定時間不能使用。兩者的差異在於是否會影響到其他表空間使用。
第一步,我們需要將表空間進行offline操作,此時所有檔案物件將不能被訪問。
SQL> alter tablespace mvtbltest offline;
Tablespace altered
SQL> select count(*) from t;
select count(*) from t
ORA-00376: 此時無法讀取檔案 10
ORA-01110: 資料檔案 10: '/u01/oradata/WILSON/datafile/mvtbltest01.dbf'
第二步,需要在作業系統層面進行檔案的複製操作。此時,最推薦的是使用mv命令操作。如果沒有把握而且空間不緊張,copy也是比較穩妥的方案。
[oracle@bspdev ~]$ cd /u01/oradata/WILSON/datafile/
[oracle@bspdev datafile]$ mv mvtbltest01.dbf /u01/oradata/WILSON/
[oracle@bspdev datafile]$ ls -l | grep mv
[oracle@bspdev datafile]$ cd ..
[oracle@bspdev WILSON]$ ls -l | grep mv
-rw-r----- 1 oracle oinstall 10493952 Apr 23 05:38 mvtbltest01.dbf
第三步,修改表空間對應檔案的連線。
SQL> select file_name, status, online_status from dba_data_files where tablespace_name='MVTBLTEST';
FILE_NAME STATUS ONLINE_STATUS
--------------------------------------------- --------- -------------
/u01/oradata/WILSON/datafile/mvtbltest01.dbf AVAILABLE OFFLINE
SQL> alter tablespace mvtbltest rename datafile '/u01/oradata/WILSON/datafile/mvtbltest01.dbf' to '/u01/oradata/WILSON/mvtbltest01.dbf';
Tablespace altered
SQL> select file_name, status, online_status from dba_data_files where tablespace_name='MVTBLTEST';
FILE_NAME STATUS ONLINE_STATUS
--------------------------------------------- --------- -------------
/u01/oradata/WILSON/mvtbltest01.dbf AVAILABLE OFFLINE
最後,將表空間進行online操作。
SQL> alter tablespace mvtbltest online;
Tablespace altered
SQL> select count(*) from t;
COUNT(*)
----------
72722
應該說,online檔案重新命名是很簡單的操作。過程消耗時間主要在OS層面的檔案複製。
3、停庫檔案重新命名
停庫檔案重新命名是另一種情況。在進行資料還原(從冷備份)過程中,我們經常需要在啟動過程中進行檔案資訊的替換。
我們首先進行停庫處理。
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
在OS層面進行檔案複製。
[oracle@bspdev WILSON]$ ls -l | grep mv
-rw-r----- 1 oracle oinstall 10493952 Apr 23 05:55 mvtbltest01.dbf
[oracle@bspdev WILSON]$ mv mvtbltest01.dbf /u01/oradata/WILSON/datafile/mvtbltest01.dbf
[oracle@bspdev WILSON]$ ls -l | grep mv
[oracle@bspdev WILSON]$ cd datafile/
[oracle@bspdev datafile]$ ls -l | grep mv
-rw-r----- 1 oracle oinstall 10493952 Apr 23 05:55 mvtbltest01.dbf
[oracle@bspdev datafile]$
重新啟動資料庫,進入mount狀態。
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 849530880 bytes
Fixed Size 1339824 bytes
Variable Size 587206224 bytes
Database Buffers 255852544 bytes
Redo Buffers 5132288 bytes
Database mounted.
SQL>
使用rename file命令進行轉換。
SQL> alter database rename file '/u01/oradata/WILSON/mvtbltest01.dbf' to '/u01/oradata/WILSON/datafile/mvtbltest01.dbf';
Database altered.
最後成功啟動資料庫。
SQL> alter database open;
Database altered.
SQL> select count(*) from t;
COUNT(*)
----------
72722
4、結論
資料檔案重新命名是一個很簡單的過程,伴隨著OS層面和控制檔案之間的協調處理。在很多業務處理場景下,很有意義。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-759054/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SVN培訓筆記(下拉專案、同步修改、新增檔案、修改檔案、刪除檔案、改名檔案等)筆記
- !!!提取檔案記錄!!!
- mv 命令 – 移動或改名檔案
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- [20181102]資料檔案改名與awr.txt
- 專案重構經驗記錄
- 大資料實驗記錄大資料
- Oracle實驗8--Merge與歸檔Oracle
- [20210929]帶有回車的檔案如何改名.txt
- 記錄---前端如何實現檔案的線上預覽?前端
- 實驗七 檔案相關
- mysql load 相關實驗記錄MySql
- build.prop檔案學習記錄UI
- Oracle 控制檔案Oracle
- OS實驗八:採用快取記憶體實現檔案讀寫快取記憶體
- Linux 檔案與目錄管理常用命令 記錄Linux
- nginx日誌檔案按天記錄定時清理迴圈記錄Nginx
- springboot使用logback記錄日誌,配置檔案Spring Boot
- ctfshow檔案上傳漏洞做題記錄
- 筆記:Linux命令(目錄和檔案管理)筆記Linux
- 記錄檔案預覽另一種方式
- iOS – RxSwift 專案實戰記錄iOSSwift
- STM32F207DAC實驗記錄
- PHP超低記憶體遍歷目錄檔案和讀取超大檔案PHP記憶體
- SQL Server資料庫還原過程記錄,bak檔案+mdf檔案SQLServer資料庫
- ORACLE 概要檔案管理Oracle
- Oracle 密碼檔案Oracle密碼
- Laravel 指定日誌檔案記錄任意日誌Laravel
- 使用配置檔案方式記錄Python程式日誌Python
- SEO 經驗記錄
- 實驗7 檔案應用程式設計程式設計
- overlay網路隔離實驗失敗記錄
- 《learn to count everything》論文閱讀、實驗記錄
- 怎麼刪除電腦中開啟的檔案記錄?刪除電腦中開啟的檔案記錄方法教程
- Oracle實驗(04):floatOracle
- 檔案管理 檔案目錄概念
- win10批量檔案改名方法 win10系統下如何批量重新命名檔案Win10
- win10批次檔案改名方法 win10系統下如何批次重新命名檔案Win10
- Laravel 大檔案分塊上傳錯誤記錄Laravel