Oracle-12c

將數據文件移動到另一個位置 ORACLE

  • February 4, 2022

由於儲存空間不足,我在將 DATAFILE 從一個位置移動到另一個位置時遇到了一些問題。我已經設法通過命令(linux)更改控製文件的路徑文件。現在我想將數據文件的路徑文件和日誌更改為另一個,因為我已經手動移動了數據庫的文件夾。

SQL> startup;
ORACLE instance started.

Total System Global Area 6710886400 bytes
Fixed Size                  2939560 bytes
Variable Size            3506439512 bytes
Database Buffers         3187671040 bytes
Redo Buffers               13836288 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/app/oracle/oradata/ENOVIA/system01.dbf'

顯然,數據文件已經被移動到另一個位置,而文件的路徑尚未更改。

如何檢查 SQL 中數據庫的目前位置以及需要使用哪個命令來更改路徑文件?

新位置是home/oradata/ENOVIA

列出數據庫文件位置所需的 SQL 語句類似於:

set lines 230
set pages 50
column file_name format a50
select ddf.FILE_NAME, ddf.TABLESPACE_NAME, ddf.STATUS, ddf.ONLINE_STATUS from dba_data_files ddf;

這將返回如下​​內容:

|              FILE_NAME                  | TABLESPACE_NAME |  STATUS   | ONLINE_STATUS |
|-----------------------------------------|-----------------|-----------|---------------|
| /app/oracle/oradata/ENOVIA/SYSTEM01.DBF | SYSTEM          | AVAILABLE | SYSTEM        |
| /app/oracle/oradata/ENOVIA/SYSAUX01.DBF | SYSAUX          | AVAILABLE | ONLINE        |
| /app/oracle/oradata/ENOVIA/UNDOTS01.DBF | UNDOTS          | AVAILABLE | ONLINE        |
| /app/oracle/oradata/ENOVIA/USERS01.DBF  | USERS           | AVAILABLE | ONLINE        |

找到矛盾的條目後,可以使用以下 SQL 語句對其進行修改:

ALTER DATABASE 
   RENAME FILE '/app/oracle/oradata/ENOVIA/system01.dbf' 
            TO '/home/oradata/ENOVIA/system01.dbf'

參考: 重命名和重定位數據文件(Oracle | Docs)

筆記:

要重命名或重定位 SYSTEM 表空間、預設臨時表空間或活動撤消表空間的數據文件,您必須使用此ALTER DATABASE方法,因為您無法使這些表空間離線。

祝你好運。

alter database rename file命令;這應該更新控製文件中文件的位置。

引用自:https://dba.stackexchange.com/questions/211196