oracle 12c rac tablespace 表空間刪除辦法

文章來源: 原創adler_cn,大路

場景展示:

通過在某一臺node節點上執行shell 腳本,正常會同步到其他node節點上,事實並不是如此,我們發現執行完腳本之後,RAC服務器上生成的tablespace 文件,並不能正確,

錯誤結果類似:'/u01/app/oracle/product/12.2.0/db_1/dbs/adler.dat'  這樣的生成路徑,這是不正確的,是單機節點的表現結果,

正常結果應該類似: +DATA/ORCL/99B08294CD7F045EE0511061480A4ADC/DATAFILE/adler.290.1029008888

後果:不能正常生成tablespace ,將會導致數據不能正常同步,問題很嚴重。

我們該如何解決類似的錯誤?

以下爲解決辦法:

1、先清理報錯的事項,如賬號和角色

drop user alder cascade;
drop role alder_REP_ROLE;
drop role alder_APP_ROLE;

2、查詢空間表相關信息
select name from v$datafile;  #查詢表空間
select tablespace_name,status from dba_tablespaces; #查詢表空間相關信息

3、操作,先offline ,再執行刪除操作;步驟:第一步執行  select name from v$datafile;  獲取file_name,第二步執行  select tablespace_name,status from dba_tablespaces; 獲取tablespace_name;
第一步:alter database datafile '/u01/app/oracle/product/12.2.0/db_1/dbs/adler.dat' offline drop;  
第二步:drop tablespace adler including contents; #刪除以上表空間
              drop tablespace adler including contents and datafiles; #刪除以上表空間和物理文件,和上面語句有一定差別,不過都可以執行

提示: 按照以上的辦法,把其他需要重新生成的表空間和物理文件刪除


4、驗證結果

select tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
from dba_data_files 
order by tablespace_name;  #查詢表空間相關信息

select tablespace_name,file_name from dba_temp_files; # 查詢臨時表空間

 

5、重新執行shell 腳本,重新生成tablespace 表空間


6、表空間操作(補充)
查詢:
SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

新增操作:
create tablespace SIRM2 
datafile '+DATA/ORCL/99B08294CD7F045EE0539061480A4ADC/DATAFILE/SIRM2.dbf' size 1024M 
autoextend on next 10M maxsize unlimited
EXTENT MANAGEMENT local  autoallocate
segment space management auto;

刪除操作:
drop tablespace SIRM2 including contents and datafiles;


7、用戶刪除操作(補充)

刪除用戶提示,無法刪除在用用戶

首先將索要刪除的用戶鎖定(這句必須執行):

     alter user 用戶名 account lock;

查看當前用戶佔用資源:

     select saddr,sid,serial#,paddr,username,status from v$session where username = '用戶名';

然後可以看到status  爲 INACTIVE 的記錄;

 執行以下殺死進程的sql(下面的兩個參數是status  爲 INACTIVE 時的記錄):

  alter system kill session 'sid,serial#';

 執行刪除用戶操作

  drop user 用戶名 cascade;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章