手動刪除資料庫 oracle

2021-09-20 16:28:55 字數 4211 閱讀 2170

--********************=

-- 手動刪

除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> 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 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命令)來刪除殘餘檔案

$ export oracle_sid=+asm

$ 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

5124096 1048576

3067

2974

02974

0 dg1/

5124096 1048576

2047

1996

01996

0 rev/

asmcmd> cd +dg1

asmcmd> ls

asmdb/

asmcmd> rm -rf asmdb

asmcmd> ls

asmcmd> cd +rev

asmcmd> pwd

+rev

asmcmd> ls

asmcmd> cd +   

asmcmd> ls -s

sector block

au total_mb free_mb req_mir_free_mb usable_file_mb offline_disks name

5124096 1048576

3067

3016

03016

0 dg1/

5124096 1048576

2047

1996

01996

0 rev/

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

5.清除其它檔案

儘管資料檔案,歸檔日誌,聯機日誌,臨時檔案,引數檔案都存放在asm磁碟中,但dump檔案,告警日誌依然位於磁碟,需要手動清除

$ echo $oracle_sid    

--確認當

前的oracle_sid

$ rm -rf $oracle_base/admin/$oracle_sid

--刪除

oracle base目錄

下的$oracle_sid

的所有內容

$ rm -rf $oracle_home/dbs

/*$oracle_sid*         --清除

引數檔案*/

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

oracle手動刪除資料庫

特權使用者可以使用 drop database 方式刪除資料庫,但此時的資料庫必須處於 mount 狀態,並且一 restrict 方式裝載資料庫。1 在命令提示符下以具有 sysdba 身份的使用者進行登陸。sqlplus sys pwd as sysdba 2 通過資料字典視 global na...

手動刪除資料庫

一 手動刪除檔案系統資料庫 1.停止監聽,防止有新的連線產生,同時,在資料庫配置了em的,也需要停止 lsnrctl stop listener name emctl stop dbconsole 2.獲得資料檔案,日誌檔案及控制檔案的相關資訊,包含歸檔 sqlplus as sysdba sql ...

django 手動刪除資料庫

2018年01月09日 21 44 17 為了解決群友的問題,我親自刪了下我自己資料庫的乙個表,然後敲了一系列的dos命令,發現都不夠完美,最終我發現了在資料庫裡有乙個記錄生成 的記錄也就是我們的django makemigrations這個表,我們只需要刪除之前你建立 對應的那條記錄,見下圖。然後...