Oracle中手动删除数据库教程

   2015-06-28 0
核心提示:这篇文章主要介绍了Oracle中手动删除数据库教程,本文给出了详细步骤以及清除ASM数据库的步骤,需要的朋友可以参考下

在很多情况下,或无法使用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
           512   4096  1048576      3067     2974                0            2974              0  DG1/
           512   4096  1048576      2047     1996                0            1996              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
           512   4096  1048576      3067     3016                0            3016              0  DG1/
           512   4096  1048576      2047     1996                0            1996              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步

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 去重复的sql(Oracle) 去重复的英文
    1.利用group by 去重复2.可以利用下面的sql去重复,如下  1) select id,name,sex from (select a.*,row_number() over(partition by a.id,a.set order by name) su from test a ) where su=1  2)select id,name,sex from (select a.*,row_number() over(p
    02-10
  • Oracle SQL七次提速技巧
    以下SQL执行时间按序号递减。1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池。create or replace procedure proc1as beginfor i in 1..100000 loop    execute imme
    02-10
  • Oracle\SQL  Server等及其他基本语句写法
    Oracle\SQL Server等及其他基本语句写法
    Oracle\SQL  Server等及其他基本语句写法目录一.Excel相关 11.Excel中写脚本范例: 12.提取字节 23. 提取单元格内字符 24.VLOOKUP函数: 2二.SQL语句汇总 21.建表: 22.增 33.删 44.查 65.改 236.Alter的应用 24三.数据库备份与恢复脚本 261. Oracle: 2
    02-10
  • SQL ORACLE case when函数用法
    case when 用法(1)简单case函数:格式:  case 列名   when 条件值1 then 选项1  when 条件值1 then 选项2......  else 默认值 end例如:  select   case job_level  when '1' then '1111'  when '2' then '2222'   when '3' then '3333
    02-10
  • Oracle迁移到MySQL性能下降的注意点 oracle数据
    背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障。在我的记忆里面淘宝最初从Oracle迁移到MySQL期间也遇到了很多SQL的性能问题,记忆最为深刻的子查询,当初的
    02-10
  • ORACLE中通过SQL语句(alter table)来增加、删除
    1.添加字段:alter table  表名  add (字段  字段类型)  [ default  '输入默认值']  [null/not null]  ;2.添加备注:comment on column  库名.表名.字段名 is  '输入的备注';  如: 我要在ers_data库中  test表 document_type字段添加备注  comm
    02-10
  • MySQL与Oracle 差异比较之六触发器
    触发器编号类别ORACLEMYSQL注释1创建触发器语句不同create or replace trigger TG_ES_FAC_UNIT  before insert or update or delete on ES_FAC_UNIT  for each rowcreate trigger `hs_esbs`.`TG_INSERT_ES_FAC_UNIT` BEFORE INSERT on `hs_esbs`.`es_fac_u
    02-10
  • Oracle的HINT可以强制指定SQL的执行计划,比如
    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 :  select table_name from user_tables;  //当前用户的表 select table_name from all_tables;  //所有用户的表 select table_name from dba_tables;  //包
    02-10
  • Oracle sql 子字符串长度判断
    Oracle sql 子字符串长度判断 select t.* from d_table t WHEREsubstr(t.col,1,1)='8' and instr(t.col,'/')0 and length(substr(t.col,1,instr(t.col,'/')))5; 字符串的前两位都是数字:select * from d_table t WHERE regexp_like(substr(t.col,1,2), '^[
    02-10
  • Oracle、MySql、Sql Server比对
    MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议。假设你在一个遵循GPL的***(开源)项目中使用MySQL,那么你能够遵循GPL协议免费使用MySQL。否则,你须要购买MySQLAB制定的那个商业许可协议。Windows $
    02-10
点击排行