【ASK_ORACLE】你需要知道的對資料檔案dbf的一些基礎操作

Attack_on_Jager發表於2022-12-07

實驗環境

搭建平臺:VMware Workstation

OS:OL 7.5

DB:Oracle 12.2.0.1


一些操作命令

我們知道在作業系統OS層面對檔案的操作有複製、移動、重新命名、覆蓋一些操作,在對Oracle資料庫的資料檔案也能實現同樣的操作,只不過區別是使用Oracle的命令而不是OS的命令。

1. 移動dbf

在OS裡,移動命令是mv, Oracle的命令是 move … to …,舉個例子:

(1)建立一個測試表空間

SQL> create tablespace testtbs datafile '/u01/app/oracle/oradata/orcl/testtbs01.dbf' size 100m;

 

然後再檢查一下OS裡只有這一個檔案:

$ updatedb
$ locate testtbs01.dbf
/u01/app/oracle/oradata/orcl/testtbs01.dbf  ##已經確定只有一個

 

(2)移動新建的dbf檔案到新目錄

SQL> alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs01.dbf' to '/home/oracle/orcl/testtbs01.dbf';

 

再次檢查一下:

$ updated && locate testtbs01.dbf
/home/oracle/orcl/testtbs01.dbf  ##已經移動到新目錄了

 

SQL> select file_name,online_status from dba_data_files;  ##在資料庫裡檢查一下(這裡省略了不相關的輸出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/home/oracle/orcl/testtbs01.dbf
ONLINE

 

2. 重新命名dbf

在OS裡, 移動和重名了都是mv命令,Oracle也是如此,都是使用move … to …,舉個例子(由於操作一模一樣,這裡就僅展示命令):

SQL> alter database move datafile '/home/oracle/orcl/testtbs01.dbf' to '/home/oracle/orcl/testtbs0101.dbf';

 

3. 複製dbf

在OS裡,複製命令是cp,Oracle的命令是move … to … KEEP,舉個例子:

(1)給testtbs表空間新增一個dbf檔案

SQL> alter tablespace testtbs add datafile '/u01/app/oracle/oradata/orcl/testtbs02.dbf' size 100m;

 

然後再檢查一下OS裡只有這一個檔案:

$ updatedb
$ locate testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##已經確定只有一個

 

(2)複製dbf到新目錄

SQL> alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs02.dbf' to '/home/oracle/orcl/testtbs02.dbf' 
keep;
$ updatedb
$ locate testtbs02.dbf
/home/oracle/orcl/testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##此時就有兩個同樣的檔案了

 

SQL> select file_name,online_status from dba_data_files;  ##在資料庫裡檢查一下(這裡省略了不相關的輸出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/home/oracle/orcl/testtbs02.dbf
ONLINE
 
/u01/app/oracle/oradata/orcl/testtbs02.dbf
ONLINE

 

 

4. 覆蓋dbf

在OS裡的覆蓋命令是先cp,後rm老檔案,但Oracle一條命令就能搞定move … to … REUSE,舉個例子,比如我們把第3步在/home下的testtbs02.dbf給覆蓋回去:

(1)執行覆蓋操作

SQL> alter database move datafile ‘/home/oracle/orcl/testtbs02.dbf’ to ‘/u01/app/oracle/oradata/orcl/testtbs02.dbf’ reuse;

 

(2)檢查檢查一下OS裡只有這一個檔案

$ updatedb
$ locate testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##已經確定只有一個

 

(3)資料庫裡檢查一下

SQL> select file_name,online_status from dba_data_files;  ##在資料庫裡檢查一下(這裡省略了不相關的輸出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/u01/app/oracle/oradata/orcl/testtbs02.dbf
ONLINE

 

注:

如果是ASM,上面的操作是一樣的,比如執行移動mv操作:

SQL> alter database move datafile '+data/data/orcl/datafile/test01.dbf' to '+data02/data/orcl/datafile/test01.dbf';


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2927164/,如需轉載,請註明出處,否則將追究法律責任。

相關文章