在很多情况下,或无法使用dbca工具的时候,我们需要手动来删除数据库。对此,可以借助drop database命令来实现,下面的描述中给出手动删除数据库
的具体步骤,包含文件系统数据库以及ASM数据库。环境:Oracle Enterprise Linux 5.4 + Oracle 10g R2 .
$ lsnrctl stop listener_name
2.获得数据文件,日志文件及控制文件的相关信息,包含归档
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;
SQL> alter system enable restricted session;
5.使用 drop database命令来清除数据库
$ 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* -- 清 除 参数 文件 */ $ 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实例中做相应
1.执行文件系统数据库清除步骤3-4步 (先要shutdown)
2.使用 drop database命令来清除数据库(该命令将清除数据文件,日志文件,temp文件 )
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命令)来删除残余文件
State Type Rebal Unbal Name
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/
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 DG1/
512 4096 1048576 2047 1996 0 1996 0 REV/
对于直接位于磁盘组下的文件则同样可以使用rm命令来直接删除文件
尽管数据文件,归档日志,联机日志,临时文件,参数文件都存放在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* -- 清 除 参数 文件 */ 本文转自东方之子736651CTO博客,原文链接: http://blog.51cto.com/ecloud/1143857,如需转载请自行联系原作者