Oracle-12c
將數據文件移動到另一個位置 ORACLE
由於儲存空間不足,我在將 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
命令;這應該更新控製文件中文件的位置。