เราสามารถลบฐานข้อมูล (เฉพาะฐานข้อมูล ไม่รวมโปรแกรม Oracle หรือ Oracle Home)ได้ง่าย ๆ โดยใช้คำสั่ง DROP DATABASE ซึ่งเหมาะกับการลบฐานข้อมูลทดสอบ หรือลบฐานข้อมูลเก่าซึ่งได้ Migrate ไปตัวใหม่เรียบร้อยแล้วเป็นต้น
คุณไม่สามารถจะ Rollback ได้ เมื่อ Drop Database แล้ว
หากต้องการลบฐานข้อมูลรวมทั้งโปรแกรม Oracle ออกไปทั้งหมด ดูที่ Clone Oracle - ก๊อปปี้ฐานข้อมูลแบบยกชุด
คุณจะต้องมีสิทธิ์ SYSDBA ฐานข้อมูลจะต้องอยู่ในโหมด Mount และ Restrict
เมื่อคุณใช้คำสั่งนี้ Oracle จะ Drop ฐานข้อมูล และลบ Control Files และ Datafiles ที่มีชื่ออยุ่ใน Control Files ถ้าฐานข้อมูลใช้ SPFile, SPFile ก็จะถูก Drop ด้วย Archive Log และไฟล์แบ็คอัพ จะไม่ถูกลบ คุณจะต้องลบไฟล์เหล่านี้เอง
ลองเช็คตำแหน่งของไฟล์ต่าง ๆ ก่อน ว่าอยู่ที่ใดบ้าง โดยเริ่มจากตำแหน่งของไฟล์ Dump ต่าง ๆ
sys@ora10gR2> show parameter dump_dest
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
background_dump_dest string /data2/ora10gR2/bdump
core_dump_dest string /data2/ora10gR2/cdump
user_dump_dest string /data2/ora10gR2/udump
sys@ora10gR2> !ls /data2/ora10gR2/bdump
alert_ora10gR2.log ora10gR2_lgwr_1778.trc ...
...
sys@ora10gR2> !ls /data2/ora10gR2/udump
ora10gR2_ora_1259.trc ora10gR2_ora_1364.trc ...
...
sys@ora10gR2> !ls -la /data2/ora10gR2/cdump
total 9
drwxr-xr-x 3 oracle dba 3 Dec 8 11:38 .
drwxr-xr-x 7 oracle dba 19 Dec 8 11:32 ..
drwxr-x--- 2 oracle dba 3 Dec 8 11:38 core_1541
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
background_dump_dest string /data2/ora10gR2/bdump
core_dump_dest string /data2/ora10gR2/cdump
user_dump_dest string /data2/ora10gR2/udump
sys@ora10gR2> !ls /data2/ora10gR2/bdump
alert_ora10gR2.log ora10gR2_lgwr_1778.trc ...
...
sys@ora10gR2> !ls /data2/ora10gR2/udump
ora10gR2_ora_1259.trc ora10gR2_ora_1364.trc ...
...
sys@ora10gR2> !ls -la /data2/ora10gR2/cdump
total 9
drwxr-xr-x 3 oracle dba 3 Dec 8 11:38 .
drwxr-xr-x 7 oracle dba 19 Dec 8 11:32 ..
drwxr-x--- 2 oracle dba 3 Dec 8 11:38 core_1541
Output บางบรรทัดถูกละไว้เพื่อไม่ให้เยิ่นเย้อ ต่อไปเช็คตำแหน่งของ Archive Logs ผมเก็บ Archive Logs ไว้ใน Flash Recovery Area ซึ่งเป็นค่าดีฟอลต์อยู่แล้ว ในไดเรคทอรี archivelog ของผมมีไดเรคทอรี 2012_01_15 ซึ่งข้างในเก็บไฟล์ Archive Log
sys@ora10gR2> select name,value from v$parameter where name ='db_recovery_file_dest';
NAME VALUE
------------------------------ ----------------------------------------
db_recovery_file_dest /data2/ora10gR2/flash_recovery_area
sys@ora10gR2> !ls /data2/ora10gR2/flash_recovery_area/ora10gR2/archivelog
2012_01_15
NAME VALUE
------------------------------ ----------------------------------------
db_recovery_file_dest /data2/ora10gR2/flash_recovery_area
sys@ora10gR2> !ls /data2/ora10gR2/flash_recovery_area/ora10gR2/archivelog
2012_01_15
เช็คตำแหน่ง Datafiles และ Controlfiles ตำแหน่งของไฟล์ต่าง ๆ อาจจะต่างกันไปในแต่ละเครื่อง
sys@ora10gR2> ! ls -l
total 1504167
drwxr-xr-x 2 oracle dba 61 Dec 10 12:29 adump
drwxr-xr-x 2 oracle dba 161 Dec 27 00:00 bdump
drwxr-xr-x 3 oracle dba 3 Dec 8 11:38 cdump
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control01.ctl
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control02.ctl
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control03.ctl
-rw-r--r-- 1 oracle dba 760 Dec 2 20:12 creatdb.sql
drwxr-xr-x 2 oracle dba 2 Dec 2 20:07 flash_recovery_area
-rw-r--r-- 1 oracle dba 2760 Dec 8 14:21 initthaidb.ora
-rw-r----- 1 oracle dba 52429312 Dec 17 00:22 thaidb_redo111.rdo
-rw-r----- 1 oracle dba 52429312 Dec 18 06:00 thaidb_redo112.rdo
-rw-r----- 1 oracle dba 52429312 Dec 25 00:21 thaidb_redo113.rdo
-rw-r----- 1 oracle dba 84025344 Dec 27 00:41 thaidb_sysaux0000.dbf
-rw-r----- 1 oracle dba 254156800 Dec 17 00:22 thaidb_system0000.dbf
-rw-r----- 1 oracle dba 10493952 Dec 24 11:34 thaidb_temp0000.dbf
-rw-r----- 1 oracle dba 220536832 Dec 17 00:22 thaidb_undo1000.dbf
drwxr-xr-x 2 oracle dba 41 Dec 10 04:52 udump
total 1504167
drwxr-xr-x 2 oracle dba 61 Dec 10 12:29 adump
drwxr-xr-x 2 oracle dba 161 Dec 27 00:00 bdump
drwxr-xr-x 3 oracle dba 3 Dec 8 11:38 cdump
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control01.ctl
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control02.ctl
-rw-r----- 1 oracle dba 14401536 Dec 17 00:24 control03.ctl
-rw-r--r-- 1 oracle dba 760 Dec 2 20:12 creatdb.sql
drwxr-xr-x 2 oracle dba 2 Dec 2 20:07 flash_recovery_area
-rw-r--r-- 1 oracle dba 2760 Dec 8 14:21 initthaidb.ora
-rw-r----- 1 oracle dba 52429312 Dec 17 00:22 thaidb_redo111.rdo
-rw-r----- 1 oracle dba 52429312 Dec 18 06:00 thaidb_redo112.rdo
-rw-r----- 1 oracle dba 52429312 Dec 25 00:21 thaidb_redo113.rdo
-rw-r----- 1 oracle dba 84025344 Dec 27 00:41 thaidb_sysaux0000.dbf
-rw-r----- 1 oracle dba 254156800 Dec 17 00:22 thaidb_system0000.dbf
-rw-r----- 1 oracle dba 10493952 Dec 24 11:34 thaidb_temp0000.dbf
-rw-r----- 1 oracle dba 220536832 Dec 17 00:22 thaidb_undo1000.dbf
drwxr-xr-x 2 oracle dba 41 Dec 10 04:52 udump
เช็คไฟล์ SPFile, SPFile จะถูกลบด้วยเมื่อเรา Drop Database
$ ls $ORACLE_HOME/dbs | grep -i ora10gR2.ora
spfileora10gR2.ora
spfileora10gR2.ora
เริ่มต้น Drop ฐานข้อมูล ล็อกอินเข้าฐานข้อมูลด้วย User ที่มีสิทธิ์ SYSDBA แล้ว Shutdown Immediate
$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.2.0 - Production on Sun Jan 15 11:15:11 2012
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
Shutdown ฐานข้อมูล
sys@ora10gR2> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL*Plus: Release 10.2.0.2.0 - Production on Sun Jan 15 11:15:11 2012
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
Shutdown ฐานข้อมูล
sys@ora10gR2> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
Startup ฐานข้อมูลในโหมด Mount Restrict
sys@ora10gR2> startup restrict mount
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1279336 bytes
Variable Size 104860312 bytes
Database Buffers 96468992 bytes
Redo Buffers 7106560 bytes
Database mounted.
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1279336 bytes
Variable Size 104860312 bytes
Database Buffers 96468992 bytes
Redo Buffers 7106560 bytes
Database mounted.
คราวนี้ก็มาถึงตัวสำคัญ รันคำสั่ง DROP DATABASE บน SQL Prompt เพื่อ Drop ฐานข้อมูล ระวัง! ขั้นตอนนี้ย้อนกลับไม่ได้นะครับ
sys@ora10gR2> drop database;
ERROR:
ORA-01034: ORACLE not available
Database dropped.
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@ora10gR2> exit
ERROR:
ORA-01034: ORACLE not available
Database dropped.
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@ora10gR2> exit
ไปดูไฟล์ใน Dump Directory กัน
$ ls /data2/ora10gR2/bdump | wc -l
169
$ ls /data2/ora10gR2/udump | wc -l
49
$ ls /data2/ora10gR2/cdump/core_1541 | wc -l
1
169
$ ls /data2/ora10gR2/udump | wc -l
49
$ ls /data2/ora10gR2/cdump/core_1541 | wc -l
1
ไฟล์ที่เป็น Archive Log
$ ls /data2/ora10gR2/flash_recovery_area/ora10gR2/archivelog/2012_01_15
o1_mf_1_23_7k4mv22o_.arc
o1_mf_1_23_7k4mv22o_.arc
ทั้งไฟล์ Dump และไฟล์ Archive Log ต่างก็ยังอยู่ คุณจะต้องเข้าไปลบเอง ในทางกลับกันคราวนี้ไปดู Datafiles และ Controlfiles จะเห็นได้ว่าถูกลบไปแล้ว
$ ls /data2/ora10gR2
adump cdump flash_recovery_area udump
bdump creatdb.sql initora10gR2.ora
$ ls $ORACLE_HOME/dbs | grep -i ora10gR2.ora
adump cdump flash_recovery_area udump
bdump creatdb.sql initora10gR2.ora
$ ls $ORACLE_HOME/dbs | grep -i ora10gR2.ora
เดิมไดเรคทอรีนี้มี Datafiles และ Controlfiles อยุ่ ตอนนี้ไม่มีแล้ว เช่นเดียวกับ SPFile ซึ่งตอนนี้ถูกลบไปแล้ว
นอกจากนี้ยังมีไฟล์ listener.ora และ tnsnames.ora ซึ่งจะต้องลบเอาส่วนของฐานข้อมูลตัวที่ถูกลบนี้ออกไปด้วย
No comments:
Post a Comment