標籤:alert 移動 move bsp 12c tab cte ada 儲存
Oracle 資料庫 12c 版本中對資料檔案的遷移或重新命名不再需要太多繁瑣的步驟,可以使用 ALTER DATABASE MOVE DATAFILE 這樣的 SQL 陳述式對資料檔案進行線上重新命名和移動。而當此資料檔案正在傳輸時,終端使用者可以執行查詢,DML以及 DDL 方面的任務。另外,資料檔案可以在存放裝置間遷移,如從非 ASM 遷移至 ASM,反之亦然。
一、 重新命名資料檔案:
-- 注意,我這裡是在名為 PDB01 的 pdb 容器內示範的。
SQL> show con_name
CON_NAME
------------------------------
PDB01
-- 查看原資料檔案名
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf
6 rows selected.
-- 重新命名
SQL> ALTER DATABASE MOVE DATAFILE ‘/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf‘ TO
‘/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf‘;
Database altered.
-- 檢查重新命名結果
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf
6 rows selected.
二、遷移資料檔案到其他路徑
-- 注意,我這裡是在名為 PDB01 的 pdb 容器內示範的。
SQL> show con_name
CON_NAME
------------------------------
PDB01
-- 查看資料檔案原路徑
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf
6 rows selected.
-- 檢查資料檔案的確存在原路徑下
[[email protected] ~]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/
[[email protected] pdb01]$ ll bbb*
total 769412
-rw-r-----. 1 oracle oinstall 2105344 May 13 04:22 bbb01.dbf
-rw-r-----. 1 oracle oinstall 2105344 May 13 04:22 bbb02.dbf
-- 遷移資料檔案到新路徑
SQL>ALTER DATABASE MOVE DATAFILE ‘/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf‘ TO ‘/home/oracle/app/oracle/oradata/andycdb/pdb01/new/bbb02.dbf‘;
Database altered.
-- 核實資料檔案是否存在遷移路徑下
[[email protected] pdb01]$ ll
total 769412
-rw-r-----. 1 oracle oinstall 2105344 May 13 04:22 bbb01.dbf
drwxr-x---. 2 oracle oinstall 4096 May 13 04:31 new
-rw-r-----. 1 oracle oinstall 387981312 May 13 04:15 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 272637952 May 13 04:30 system01.dbf
-rw-r-----. 1 oracle oinstall 67117056 May 12 07:02 temp01.dbf
-rw-r-----. 1 oracle oinstall 104865792 May 13 04:30 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 14426112 May 13 04:10 users01.dbf
-rw-r-----. 1 oracle oinstall 5251072 May 12 06:42 users01.dbf.bak
[[email protected] pdb01]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/new
[[email protected] new]$ ll
total 2056
-rw-r-----. 1 oracle oinstall 2105344 May 13 04:31 bbb02.dbf
說明:遷移資料檔案到新路徑,自動完成了作業系統層面資料檔案的移動。
補充(其他幾種遷移類型):
1. 從非 ASM 遷移資料檔案至 ASM:
SQL>ALTER DATABASE MOVE DATAFILE ‘/u00/data/users_01.dbf‘ TO ‘+DG_DATA‘;
2. 將資料檔案從一個 ASM 磁碟群組遷移至另一個 ASM 磁碟群組:
SQL>ALTER DATABASE MOVE DATAFILE ‘+DG_DATA/DBNAME/DATAFILE/users_01.dbf ‘ TO ‘+DG_DATA_02‘;
3. 在資料檔案已存在於新路徑的情況下,以相同的命名將其覆蓋:
SQL>ALTER DATABASE MOVE DATAFILE ‘/u00/data/users_01.dbf‘ TO ‘/u00/data_new/users_01.dbf‘ REUSE;
4. 複製檔案到一個新路徑,同時在原路徑下保留其拷貝:
SQL>ALTER DATABASE MOVE DATAFILE ‘/u00/data/users_01.dbf‘ TO ‘/u00/data_new/users_01.dbf‘ KEEP;
當通過查詢 v$session_longops 動態視圖來移動檔案時,你可以監控這一過程。另外,
你也可以引用 alert.log,Oracle 會在其中記錄具體的行為。
Oracle 12C 新特性之線上重新命名、遷移活躍的資料檔案