1. 程式人生 > >如何徹底刪除Oracle資料庫,以建立相同例項名稱的庫

如何徹底刪除Oracle資料庫,以建立相同例項名稱的庫

今天建庫時選擇了OMF方式,結果檔名稱採用Oracle自動命名的方式,看不懂啊,於是乎決定刪除再重建。

Oracle提供了刪除資料庫的指令:drop database
需要資料庫處於mount狀態,然後alter system enable restricted session;,網上有帖子說還需要exclusive,由於我是VM裝的,使用者只有我一個,所以不用可以。由於當前處於open狀態,需要改為mount,執行:
SQL> alter database close;
alter database close
*
ERROR at line 1:
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
原因是有個session仍連線,退出後再次執行,
SQL> alter database close;
Database altered.

SQL> select status from v$instance;
STATUS
------------
MOUNTED

SQL> alter system enable restricted session;
System altered.

SQL> select status from v$instance;
STATUS
------------
MOUNTED

SQL> drop database;
Database dropped.

此時alert.log記錄資訊:
Create Relation ADR_CONTROL
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS
USER (ospid: 8748): terminating the instance
Instance terminated by USER, pid = 8748
Deleted Oracle managed file /opt/app/ora11g/oradata/BISAL/controlfile/o1_mf_9x4fgq77_.ctl
Deleted Oracle managed file /opt/app/ora11g/flash_recovery_area/BISAL/controlfile/o1_mf_9x4fgypb_.ctl
Completed: drop database
Shutting down instance (abort)
License high water mark = 2
Fri Jul 25 19:09:26 2014
Instance shutdown complete

到oradata路徑下看已經沒有任何檔案了,那麼認為這個資料庫已經被刪除。
但再次執行dbca,企圖建立相同例項的庫時報錯:



雖然和bisal例項關聯的資料檔案、日誌檔案等已經物理刪除了,但和這例項相關的配置檔案沒有刪除,因此不能再次建立相同例項的庫。

此時需要手工刪除例項相關的配置
1、刪除$ORACLE_BASE/admin/$ORACLE_SID所有目錄。
2、刪除$ORACLE_HOME/dbs下和SID相關的檔案和引數檔案,包括hc_bisal.dat,init.ora,lkBISAL,orapwbisal。
3、刪除/etc/oratab中和例項相關的部分。
4、可以在$ORACLE_HOME中執行find . -name bisal,刪除所有和例項相關的檔案。

再次執行dbca,就可以建立相同例項名稱的資料庫了。