本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 RDS for Oracle 中的儲存磁碟區之間移動資料
您可以在主要和額外儲存磁碟區之間移動資料檔案和資料庫物件。在移動資料之前,請考慮下列幾點:
來源和目標磁碟區必須有足夠的可用空間。
資料移動操作會在兩個磁碟區上使用 I/O。
大型資料移動可能會影響資料庫效能。
-
如果您還原快照,如果資料受到 EBS 延遲載入影響,則在儲存磁碟區之間移動資料可能會很慢。
在 RDS for Oracle 中的磁碟區之間移動資料檔案
若要在儲存磁碟區之間移動資料檔案,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.move_datafile。請注意以下要求:
-
您必須使用 Oracle Enterprise Edition 來執行
move_datafile程序。 -
您無法移動資料表空間
SYSTEM和RDSADMIN。
move_datafile 程序具有下列參數。
| 參數名稱 | 資料類型 | 必要 | 描述 |
|---|---|---|---|
|
|
數字 |
是 |
要移動的資料檔案 ID。 |
|
|
varchar2 |
是 |
您要移動資料檔案的儲存磁碟區。 |
下列範例會將資料表空間從預設磁碟區移至rdsdbdata額外的磁碟區 rdsdbdata2。
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files WHERE tablespace_name = 'MYNEWTABLESPACE'; TABLESPACE_NAME FILE_ID FILE_NAME ------------------------- ---------- -------------------------------------------------------------------------------- MYNEWTABLESPACE 6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2'); PL/SQL procedure successfully completed. SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files WHERE tablespace_name = 'MYNEWTABLESPACE'; TABLESPACE_NAME FILE_ID FILE_NAME ------------------------- ---------- -------------------------------------------------------------------------------- MYNEWTABLESPACE 6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
在 RDS for Oracle 中的磁碟區之間移動資料表資料和索引
您可以在其他儲存磁碟區上建立資料表空間,以最佳化資料庫儲存。然後,您可以使用標準 Oracle SQL 將資料表、索引和分割區等物件移至這些資料表空間。當您的資料庫包含具有不同存取模式的資料時,這種方法對於效能調校非常有用。例如,您可以將經常存取的操作資料存放在高效能儲存磁碟區上,同時將很少存取的歷史資料移至成本較低的儲存磁碟區。
在下列範例中,您會在高效能磁碟區 上建立新的資料表空間rdsdbdata2。然後在資料表上線時,將資料表移至額外的儲存磁碟區。您也可以將索引移至相同的磁碟區。在上線時移動資料表和重建索引需要 Oracle Enterprise Edition。
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db'; CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G; ALTER TABLE employees MOVE TABLESPACE perf_tbs ONLINE; ALTER INDEX employees_idx REBUILD ONLINE TABLESPACE perf_tbs;
在下列範例中,您會在低成本磁碟區上建立資料表空間。然後,您可以使用線上操作將資料表分割區移至低成本儲存磁碟區。
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db'; CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G; ALTER TABLE orders MOVE PARTITION orders_2022 TABLESPACE hist_tbs ONLINE;
在下列範例中,您會查詢作用中工作階段的長操作。
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds FROM v$session_longops WHERE time_remaining > 0;
您可以使用下列查詢來檢查資料表空間用量。
SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC;
使用其他磁碟區管理 LOB 儲存
您的資料庫可能包含具有 BLOB 或 CLOB 物件的資料表,這些物件會耗用大量儲存空間,但不常存取。若要最佳化儲存,您可以將這些 LOB 區段重新放置到額外儲存磁碟區的資料表空間。
在下列範例中,您會在用於低存取資料的低成本磁碟區上建立 LOB 資料的資料表空間。然後,建立將資料存放在此磁碟區的資料表。
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db'; CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G; CREATE TABLE documents ( doc_id NUMBER PRIMARY KEY, doc_date DATE, doc_content CLOB ) TABLESPACE user_data LOB(doc_content) STORE AS (TABLESPACE lob_data);