oracle手動刪除資料庫

datapeng發表於2016-09-14

有時候,無法使用圖形介面時,我們需要手動刪除資料庫,具體操作步驟如下:
一、手動刪除檔案系統資料庫
   1.停止監聽,防止有新的連線產生,同時,在資料庫配置了em的,也需要停止

       $ lsnrctl stop listener_name

       $ emctl stop dbconsole

   2.獲得資料檔案,日誌檔案及控制檔案的相關資訊,包含歸檔      

       $ sqlplus /as sysdba

       SQL>show parameter control
       獲取控制檔案的路徑
       SQL>select file_name from dba_data_files;
       獲取資料檔案的位置
       SQL>select * from v$logfile;
       獲取日誌檔案的位置
       SQL>archive log list;
       獲取歸檔日誌的路徑
       SQL>shutdown immediate(abort);
       關閉資料庫,反正都要刪除了,可以考慮用abort  

   3.啟動到mount狀態(使用exclusive restart)

       SQL> startup mount exclusive restrict;
       mount資料庫到獨佔模式
       SQL> show parameter instance;
       檢視是否是要刪除的例項,這一步非常重要,。

   4.修改引數為允許受限的會話模式

       SQL>alter system enable restricted session;

   5.使用drop database命令來清除資料庫

       SQL>drop database;

       SQL>exit

   6.手動清除相關檔案

       根據第2步查詢的結果,刪除相應的檔案。
       windows可以開啟視窗,進入目錄刪除。linux可以使用rm刪除

   7.清除監聽相關檔案
       11G以後,很多是動態註冊的,所以不用考慮這一步。如果配置了靜態監聽的,需要刪除listener.ora檔案裡的配置

   8.修改oratab檔案以及.bash_profile
      

二、清除ASM資料庫

   對於ASM資料庫的刪除與檔案系統資料庫的不同之處在於資料檔案,控制檔案,日誌檔案,引數檔案等都是存放在ASM系統中,因此需要在ASM例項中做相應的動作來徹底清除資料庫。

   1.執行檔案系統資料庫清除步驟3-4步(先要shutdown)

   2.使用drop database命令來清除資料庫(該命令將清除資料檔案,日誌檔案,temp檔案)

       SQL>drop database;

       SQL>exit

   3.連線到ASM例項

       $ export ORACLE_SID=+ASM

       $ sqlplus /as sysdba

   4.清除殘餘檔案

       SQL>select name,file_number,group_number,file_incarnation from v$asm_alias;--檢視檔案,注意group_number表示位於不同的磁碟組

       SQL>alter diskgroup ARCHDG1 drop directory '+ARCHDG1/asmdb/file_name';             --可以使用方式來刪除需要刪除的檔案

       SQL>alter diskgroup DATADG drop directory'+DATADG/asmdb/file_name';

       SQL>select name,file_number,group_number,file_incarnation from v$asm_alias;    --驗證刪除後的結果

       也可以使用下面的方式(asmcmd命令)來刪除殘餘檔案

       $ export ORACLE_SID=+ASM1

       $ asmcmd

       ASMCMD> ls -l

       State   Type   Rebal Unbal Name

       MOUNTED EXTERN N     N     ARCHDG1/

       MOUNTED EXTERN N     N     DATADG/

       ASMCMD> ls -s

       Sector Block      AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name

          512  4096 1048576     3067    2974               0           2974             0 ARCHDG1/

          512  4096 1048576     2047    1996               0           1996             0 DATADG/

       ASMCMD> cd +ARCHDG1

       ASMCMD> ls

       ASMDB/

       ASMCMD> rm -rf ASMDB

       ASMCMD> ls

       ASMCMD> cd +DATADG

       ASMCMD> pwd

       +DATADG

       ASMCMD> ls

       ASMCMD> cd +  

       ASMCMD> ls -s

       Sector Block      AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name

          512  4096 1048576     3067    3016               0           3016             0 ARCHDG1/

          512  4096 1048576     2047    1996               0           1996             0 DATADG/

       對於直接位於磁碟組下的檔案則同樣可以使用rm命令來直接刪除檔案 

   5.清除其它檔案
   --$ORACLE_HOME/dbs/與該例項相關的檔案;
   --trace檔案,這個根據版本不同,路徑也不相同。11g為$ORACLE_BASE/diag/rdbms/sid_name 相關的例項目錄
     
   6.執行檔案系統資料庫清除步驟7-8步


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2124984/,如需轉載,請註明出處,否則將追究法律責任。

相關文章