很多人习惯用ORACLE的DBCA工具创建、删除数据库,这里总结一下手工删除数据库实验的步骤,文中大量参考了乐沙弥的手动删除ORACLE数据库这篇博客的内容,当然还有Oracle官方相关文档。此处实验环境为Oracle Linux Server release 5.7,数据库版本为10.2.0.5.0

Step 1: .获得控制文件、数据文件,日志文件等相关信息

获取这些信息,一方面是为了后面的建库做参考,另外一个是为了验证后面一些操作,如果这些都没有必要,其实是可以可以跳过这一步的。

SQL> select status ,name from v$controlfile;

 

SQL> select * from v$dbfile; 

 

SQL> select * from v$logfile;

 

SQL>archive log list;  

 

Step 2: 停止监听服务和OEM

$lsnrctl stop  或 lsnrctl stop listener_name

 

[oracle@DB-Server ~]$ emctl stop dbconsole

TZ set to Hongkong

Oracle Enterprise Manager 10g Database Control Release 10.2.0.5.0  

Copyright (c) 1996, 2010 Oracle Corporation.  All rights reserved.

http://EGMLNX02.eel1.esquel.com:1158/em/console/aboutApplication

Stopping Oracle Enterprise Manager 10g Database Control ... 

 

 Cannot determine Oracle Enterprise Manager 10g Database Control process. /u01/app/oracle/product/10.2.0/db_1/xxxxx_xxx/emctl.pid does not exist. 

 

Step 3: 关闭数据库实例

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

Step 4:启动到数据库实例到mount状态

使用exclusive restart或普通模式都可以

SQL> startup mount exclusive restrict;

SQL> startup mount;

Step 5: 修改参数为允许受限的会话模式

这一步骤是必须的,否则在drop database时会报ORA-01586: database must be mounted EXCLUSIVE and not open for this operation

SQL> alter system enable restricted session;

 

Step 6:使用drop database命令来清除数据库

SQL> drop database;

drop database 命令会删除控制文件和在控制文件中所列的数据文件,如果数据库正在使用spfile文件,则一并删除。

备份文件和归档日志文件不会被删除,我们可以之后通过RMAN进行删除。

如果数据库是建立在裸设备上,那么这个命令不会删除指定裸设备上的文件。

# deletes all database files, both ASM and non-ASM

When you issue this statement, Oracle Database drops the database and deletes all control files and datafiles listed in the control file. If the database used a server parameter file (spfile), it is also deleted.

Archived logs and backups are not removed, but you can use Recovery Manager (RMAN) to remove them. If the database is on raw disks, this statement does not delete the actual raw disk special files.

DROP DATABASE

The DROP DATABASE command deletes these files from operating system.

* Datafiles

* Online Redo Log Files

* Controlfiles

* SPFILE (if it exists)

The DROP DATABASE command does not delete the following files:

* init.ora (text version of the Oracle initialization file)

* password file

* entries in listener files

* entries in oratab file

其实最好是在执行drop database命令时,查看alert_$ORACLE_SID的输出内容,即可有个大概的了解。在metlink上看到一个手工删除数据文件、联机重做日志、控制文件的脚本,如下所示,这个也可以作为一个参考。

SQL>  SET SERVEROUTPUT ON

SQL>  DECLARE

      TYPE string_arr IS TABLE OF VARCHAR2(1024);

      file_list string_arr;

      BEGIN

           SELECT t.file_path BULK COLLECT

           INTO file_list

           FROM (SELECT NAME file_path

                  FROM V$DATAFILE

                 UNION

                   SELECT MEMBER file_path

                   FROM V$LOGFILE

                 UNION

                   SELECT NAME file_path

                   FROM v$controlfile

                 UNION

                   SELECT VALUE file_path

                    FROM v$parameter

                    WHERE NAME LIKE '%dest'

                 UNION

                   SELECT VALUE file_path

                   FROM v$parameter2

                   WHERE NAME = 'utl_file_dir'

                 UNION

                   SELECT '$ORACLE_BASE/admin/$ORACLE_SID' file_path 

                   FROM dual

                 ) t;

 

                 FOR i IN file_list.FIRST .. file_list.LAST LOOP

                            DBMS_OUTPUT.PUT_LINE('rm -f ' || file_list(i));

                 END LOOP;

 

         END;

         /

执行上面脚本就能得到类似下面输出的内容。当然,这个脚本必须在前面步骤之前执行。

rm -f $ORACLE_BASE/admin/$ORACLE_SID

rm -f /ORATEST/oracle/admin/bdump

rm -f /ORATEST/oracle/admin/cdump

rm -f /ORATEST/oracle/admin/udump

rm -f /ORATEST/oracle/product/10.1/rdbms/audit

rm -f /ORATEST/oradata/control01.ctl

rm -f /ORATEST/oradata/control02.ctl

rm -f /ORATEST/oradata/control03.ctl

rm -f /ORATEST/oradata/data01.dbf

rm -f /ORATEST/oradata/data02.dbf

rm -f /ORATEST/oradata/redo01.log

rm -f /ORATEST/oradata/redo02.log

rm -f /ORATEST/oradata/redo03.log

rm -f /ORATEST/oradata/sysaux01.dbf

rm -f /ORATEST/oradata/system01.dbf

rm -f /ORATEST/oradata/undotbs01.dbf

rm -f /ORATEST/oradata/users01.dbf

rm -f ?/dbs/arch

Step 7:手动清理相关文件

$echo $ORACLE_SID                                      --确认当前的ORACLE_SID

$ls $ORACLE_BASE/admin/$ORACLE_SID                     --删除Oracle Base目录下$ORACLE_SID时,先检查、确认一下

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

 

注意,任何删除前最好先检查、确认,例如下面删除归档日志,我测试的环境,没有开启归档模式,所以下面命令根本没有必要

 

$ ls -lrt $ORACLE_BASE/arch/$ORACLE_SID          

$ rm -rf $ORACLE_BASE/arch/$ORACLE_SID                 --清除归档日志,注意归档路径的正确性

        

$ rm -rf $ORACLE_BASE/flash_recovery_area/$ORACLE_SID  --清除闪回区的内容

删除前,最好将所有的参数文件保存到另外一个目录,以免需要参考时需要

$ cp $ORACLE_HOME/dbs/*  /tmp/

$ rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID*                --清除参数文件     

Step 8.清理监听相关文件

 $ rm $TNS_ADMIN/*.ora                          --如果设定了$TNS_ADMIN变量,否则删除默认路径下的监听文件

 $ rm $ORACLE_HOME/network/admin/*.ora          --注意,如果动态监听可能不存在这些文件。如果不删除,重新创建同样名字数据库

                                                --时,监听可能会有一些异常情况。

Step 9.修改oratab文件以及.bash_profile

这个步骤不是必须的,是情况和需要而定。

$ vi /etc/oratab --去掉实例相关的设置

$ vi ~/.bash_profile --去掉实例相关的设置

参考资料:

http://blog.csdn.net/leshami/article/details/6454479

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=508865219788761&id=443822.1&displayIndex=10&_afrWindowMode=0&_adf.ctrl-state=38ojq5hbc_203

ORACLE手工删除数据库的更多相关文章

  1. oracle手动删除数据库

    有时候,无法使用图形界面时,我们需要手动删除数据库,具体操作步骤如下:一.手动删除文件系统数据库   1.停止监听,防止有新的连接产生,同时,在数据库配置了em的,也需要停止 $ lsnrctl st ...

  2. Oracle手工创建数据库

    1,确定数据库全局变量名和实例名 DB_NAME = ORCL SID = ORCL 2,确定数据库管理员的认证方式: 管理员的认证方式包括操作系统认证和口令认证两种,本例采用操作系统认证 3,创建初 ...

  3. Oracle卸载后手工删除内容

    使用deinstall卸载oracle后,手工删除Oracle数据库,方法如下: 第一步:停用全部oracle服务 第二步:删除oracle注册表运行regedit在如下路径中找到oracle相关键值 ...

  4. Oracle 11g静默安装软件+手工创建数据库

    由于是二次跳转+远程操作,无法使用图形界面,不能直接图形界面安装.采用静默安装软件+手工创建数据库的方式完成需求. 静默模式安装Oracle软件,配置监听程序 手工建库 检查各组件是否符合要求 1. ...

  5. oracle使用DataBase Configuration Assistant创建、删除数据库

    可以使用DataBase Configuration Assistant来创建一个心得数据库.Database Configuration Assistant简称是DBCA,是创建.配置以及管理数据库 ...

  6. Oracle数据库管理之创建和删除数据库

    转自:http://supportopensource.iteye.com/blog/678898 一.数据库管理概述 在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是 ...

  7. oracle删除数据库

    1.确认当前数据库是否为要删除的那一个select name from v$database; 2.关闭数据库shutdown immediate; 3.以restrict方式重新打开数据库,并启动到 ...

  8. oracle创建、删除 数据库、建立表空间以及插入 删除 修改表

    一.创建.删除数据库 oracle OraDb11g_home->配置和移植工具->Database configration  Assistant->...然后可以创建或者删除数据 ...

  9. --oracle删除数据库表(无主键)中重复的记录

    --oracle删除数据库表(无主键)中重复的记录 1,  CREATE TABLE newtable as SELECT distinct * FROM T_SYSTEM_MENU_PRIV; 2, ...

随机推荐

  1. C# 站点IP访问频率限制 针对单个站点

    0x00 前言 写网站的时候,或多或少会遇到,登录,注册等操作,有时候,为了防止别人批量进行操作,不得不做出一些限制IP的操作(当前也可以用于限制某个账号的密码校验等). 这样的简单限制,我们又不想对 ...

  2. Tigase XMPP Server的安装

    Tigase和OpenFire都是基于XMPP(Extensible Messaging and Presence Protocol, 可扩展通讯和表示协议)的,主要功能是实现消息的即时通信.Goog ...

  3. Java集合框架之List接口

    在上一篇Java集合框架之Collection接口中我们知道List接口是Collection接口的子接口,List接口对Collection进行了简单的扩充,List接口中的元素的特点为有序,可重复 ...

  4. 微信公众平台关于fakeid和openid的解析

    今天在开发项目的时候遇到了个问题: 搞不清楚微信官方接口的fromusername(openid)和公众平台内每个粉丝所拥有的fakeid,于是在测试号中开始了对以上两项的研究,结果如下:   1.对 ...

  5. 每天一命令 git stash

    git stash  命令是用于保存当前进度的命令.该命令会保存当前工作区的改动.保存的改动是已经跟踪的文件的改动,对于未跟踪的改动stash是不会保存的. git stash 命令常用于分支切换的 ...

  6. <记录学习>(前三天)京东页面各种注意点

    培训学校第1到3天先学习HTML现在流行的是HTML5,目前学习的是HTML5规范.(给有基础一定的人学习)前三天学习的是京东页面的编写,和以前写的不同,页面看上去和自己写的一样,但老师讲的还是有很多 ...

  7. HTML5 模拟现实物理效果,感受 Web 技术魅力

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

  8. js中如何获取纯正的undefined?

    1.为什么要获取undefined? 因为undefined在javascript中不是保留字,可以被用户当做变量来赋值,这样如果我们后期需要用到undefined来检测一个变量的话,那么检测的值就不 ...

  9. Mac地址泛洪攻击的防御措施和具体配置

    Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防 ...

  10. AS下NDK开发(一)

    捣鼓了一天的NDK,总结下. Eclipse下开发ndk好像挺麻烦的样子,看书上要下载Cygwin,eclipse还要下载插件CDT..而在AS上就方便多啦.下载android ndk.安装,配置环境 ...