zoukankan      html  css  js  c++  java
  • ORACLE手工删除数据库

    很多人习惯用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上看到一个手工删除数据文件、联机重做日志、控制文件的脚本,如下所示,这个也可以作为一个参考。

    SQLSET SERVEROUTPUT ON
    SQLDECLARE
          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

  • 相关阅读:
    Git for Windows安装和基本设置
    Intellij IDEA 快捷键整理
    mongoDb 命令
    CSS隐藏元素 display、visibility、opacity的区别
    推荐一款可以丰富博文GIF免费录制工具——GifCam
    html5新媒体播放器标签video、audio 与embed、object
    HTML5 video视频字幕的使用和制作
    网页中嵌入百度影音播放器的代码
    JS中的排序算法-冒泡排序解析
    深入了解opacity和rgba
  • 原文地址:https://www.cnblogs.com/kerrycode/p/5447757.html
Copyright © 2011-2022 走看看