天天看點

手動删除資料庫 oracle

--=====================

-- 手動删除oracle資料庫

    在很多情況下,或無法使用dbca工具的時候,我們需要手動來删除資料庫。對此,可以借助drop database指令來實作,下面的描述中給出手動删除資料庫

的具體步驟,包含檔案系統資料庫以及ASM資料庫。環境:Oracle Enterprise Linux 5.4 + Oracle 10g R2 .

一、手動删除檔案系統資料庫

    1.停止監聽與OEM

        $ lsnrctl stop listener_name

        $ emctl stop dbconsole

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

        $ sqlplus / as sysdba

        SQL> select status,name from v$controlfile;   --擷取控制檔案的位置資訊

        SQL> select * from v$dbfile;                  --擷取資料檔案的位置資訊

        SQL> select * from v$logfile;                 --擷取日志檔案的位置資訊

        SQL> archive log list;                        --檢視歸檔的sequence及位置資訊

        SQL> shutdown abort;                          --因資料不再需要,直接shutdown abort

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

        SQL> startup mount exclusive restrict;

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

        SQL> alter system enable restricted session;

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

        SQL> drop database;

        SQL> exit

    6.手動清除相關檔案

        $ echo $ORACLE_SID    --确認目前的ORACLE_SID

        $ rm -rf $ORACLE_BASE/admin/$ORACLE_SID         --删除oracle base目錄下的$ORACLE_SID的所有内容

        $ rm -rf $ORACLE_BASE/oradata/$ORACLE_SID       --oradata下的資料檔案,根據前面的查詢,注意要删除不同路徑下的資料檔案

        $ rm -rf $ORACLE_BASE/arch/$ORACLE_SID          --清除歸檔日志,注意歸檔路徑的正确性

        $ rm -rf $ORACLE_BASE/flash_recovery_area/$ORACLE_SID   --清除閃回區的内容

        $ rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID*                 --清除參數檔案     */

    7.清除監聽相關檔案(建議)

        $ rm $TNS_ADMIN/*.ora    --如果設定了$TNS_ADMIN變量,否則删除預設路徑下的監聽檔案   */

        $ rm $ORACLE_HOME/network/admin/*.ora            */

    8.修改oratab檔案以及.bash_profile

        $ vi /etc/oratab        --去掉執行個體相關的設定

        $ vi ~/.bash_profile    --去掉執行個體相關的設定

二、清除ASM資料庫

    對于ASM資料庫的删除與檔案系統資料庫的不同之處在于資料檔案,控制檔案,日志檔案,參數檔案等都是存放在ASM系統中,是以需要在ASM執行個體中做相應

    的動作來徹底清除資料庫。

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

    2.使用drop database指令來清除資料庫(該指令将清除資料檔案,日志檔案,temp檔案)

       SQL> exit

    3.連接配接到ASM執行個體

        $ export ORACLE_SID=+ASM

    4.清除殘餘檔案

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

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

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

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

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

        $ asmcmd

        ASMCMD> ls -l

        State    Type    Rebal Unbal Name

        MOUNTED EXTERN N      N      DG1/

        MOUNTED EXTERN N      N      REV/

        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 DG1/

           512   4096 1048576      2047     1996                0            1996              0 REV/

        ASMCMD> cd +DG1

        ASMCMD> ls

        ASMDB/

        ASMCMD> rm -rf ASMDB

        ASMCMD> cd +REV

        ASMCMD> pwd

        +REV

        ASMCMD> cd +   

           512   4096 1048576      3067     3016                0            3016              0 DG1/

        對于直接位于磁盤組下的檔案則同樣可以使用rm指令來直接删除檔案  

    5.清除其它檔案

        盡管資料檔案,歸檔日志,聯機日志,臨時檔案,參數檔案都存放在ASM磁盤中,但dump檔案,告警日志依然位于磁盤,需要手動清除

        $ rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID*         --清除參數檔案          */

6.執行檔案系統資料庫清除步驟7-8步

本文轉自東方之子736651CTO部落格,原文連結: http://blog.51cto.com/ecloud/1143857,如需轉載請自行聯系原作者