Oracle rac環境的資料庫匯入操作記錄

2023-06-09 12:00:38

搞某一大專案的效能測試,將Oracle資料庫dmp檔案(211G)匯入效能測試環境。

因為Oracle部署方式為rac,資料儲存到共用磁碟。但由於對rac瞭解不足,這個過程中犯了兩個錯誤:

① 表空間、臨時表空間沒有建立到共用磁碟,而是建立到了資料庫服務本地磁碟;

② 發現應該建立到共用磁碟後,直接物理刪除了本地磁碟的表空間檔案(會導致資料庫奔潰),應該通過sql命令刪除。


以下應是規範的操作步驟:

1. 建立表空間前,先檢視表空間所在目錄

--檢視表空間目錄
select name from v$datafile;

--檢視所有臨時表空間名字及檔名
select f.file#,t.ts#,f.name "File",t.name "Tablespace" from v$tempfile f,V$tablespace t where f.ts# = t.ts#;  

 2. 建立使用者表空間、使用者及密碼

  表空間、臨時表空間目錄應與上面查詢出的目錄一致。

--建立使用者
create tablespace cwy_XXX0608 datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608.dbf' size 20480M  autoextend on next 1024M  maxsize unlimited extent management local;
create temporary tablespace cwy_XXX0608temp tempfile '+DATA/ORCL/TEMPFILE/cwy_XXX0608temp.dbf' size 1024M  autoextend on next 1024M  maxsize unlimited extent management local;
CREATE USER cwy_XXX0608 PROFILE   DEFAULT     IDENTIFIED BY XXX_0608 DEFAULT TABLESPACE   cwy_XXX0608   TEMPORARY TABLESPACE cwy_XXX0608temp  ACCOUNT UNLOCK;
GRANT UNLIMITED TABLESPACE TO cwy_XXX0608 WITH ADMIN OPTION;
GRANT "CONNECT" TO cwy_XXX0608 WITH ADMIN OPTION;
grant connect,resource to cwy_XXX0608;
grant create session, dba to cwy_XXX0608; 

--使用者名稱:cwy_XXX0608
--密碼:XXX_0608

3. 如果表空間不足,需建立足夠的表空間檔案

--擴充表空間
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_01.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_02.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_03.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_04.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_05.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_06.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_07.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_08.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_09.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
alter tablespace cwy_XXX0608 add datafile '+DATA/ORCL/DATAFILE/cwy_XXX0608_10.dbf' SIZE 20480M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;

4. 如果上述建立的表空間存在問題,執行刪除操作

  注:如需備份,請先執行備份。

--刪除表空間
drop tablespace cwy_XXX0608 including contents and datafiles cascade constraint;
--刪除臨時表空間
drop tablespace cwy_XXX0608temp including contents and datafiles;

5.執行匯入操作

  需要將匯入檔案放入DATA_PUMP_DIR目錄下select * from dba_directories t;

--匯入資料庫
./impdp cwy_XXX0608/XXX_0608 directory=DATA_PUMP_DIR dumpfile=cwy_XXX832_1124_0109.dmp REMAP_SCHEMA=cwy_XXX832_1124:cwy_XXX0608 transform=segment_attributes:n logfile=imp_cwy_XXX832_1124_0109.log

6. 其他表空間操作 

--檢視當前使用者預設臨時表空間
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
 
--檢視所有使用者的預設表空間和預設臨時表空間
select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;

--oracle資料庫檢視表空間使用率
SELECT a.tablespace_name,
total / (1024 * 1024 * 1024) "大小(G)", 
free / (1024 * 1024 * 1024) "剩餘大小(G)", 
(total - free) / (1024 * 1024 * 1024) "使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name;

--檢視表空間物理檔案的名稱及大小  
SELECT tablespace_name,  
file_id,  
file_name,  
round(bytes / (1024 * 1024), 0) total_space  
FROM dba_data_files  
ORDER BY tablespace_name;  

 


Oracle RAC介紹:

Oracle RAC(Real Application Cluster)是一種基於共用儲存和共用資料庫的叢集解決方案,可以將多個 Oracle 資料庫範例連線成一個邏輯上的單一資料庫,提供高可用性、靈活性和可伸縮性。通過 RAC 叢集,應用程式可以同時連線到所有節點上的資料庫範例,以實現負載均衡和故障轉移等特性。

RAC 叢集的主要組成部分包括以下內容:

1. 共用儲存:在 RAC 叢集中,所有節點都可以存取共用的物理儲存裝置,例如 SAN 或 NAS。共用儲存通常由三個或更多的儲存裝置組成,每個裝置都被稱為一個 ASM(Automatic Storage Management)磁碟組。

2. 共用資料庫:RAC 應用程式可以同時連線到所有節點上的資料庫範例,這些範例通過 Cache Fusion 技術實現資料共用和同步。Cache Fusion 是一種高效的記憶體共用技術,它可以確保在所有節點上的資料庫快取中都有相同的資料塊。

3. Clusterware:Clusterware 是一種叢集管理軟體,它負責協調和管理所有節點上的 Oracle 資料庫範例和應用程式。它可以監控節點和資源的狀態,並在發生故障時執行自動故障切換和恢復操作。

4. VIP:虛擬 IP(Virtual IP)是 RAC 叢集中的一個重要組成部分,它為應用程式提供了一個單一的網路入口點,並負責將請求路由到活動節點上的資料庫範例。VIP 可以確保在發生故障時使用者端不會看到任何中斷或延遲,並且可以快速地切換到備用節點。

RAC 叢集可以提供高可用性、靈活性和可伸縮性,同時也帶來了一些管理和設定上的挑戰。在使用 Oracle RAC 時,需要特別注意共用儲存和網路連線的穩定性,並採取適當的管理和監控措施來維護叢集的正常執行。