mgjj 发表于 2018-9-23 09:07:14

oracle drop database-fengyunsen

  在10g以前,要彻底删除数据库,只有两个方法,一个是利用DBCA图形化工具删除数据库,另外一个就是关闭数据库后,手工删除数据文件、控制文件以及日志文件的方法。
  从10g开始,Oracle提供了DROP DATABASE的语法,使得数据库的删除变得非常的简单。
  不过DROP DATABASE还是有一定的限制条件的:
  SQL> conn / as sysdba
  Connected.
  SQL> drop database;
  drop database
  *
  ERROR at line 1:
  ORA-01586: database must be mounted EXCLUSIVE and not open for this operation

  SQL>>
  Database>  SQL> drop database;
  drop database
  *
  ERROR at line 1:
  ORA-12719: operation requires database is in RESTRICTED mode

  SQL>>
  System>  SQL> drop database;
  Database dropped.

  Disconnected from Oracle Database 10g Enterprise Edition>  With the Partitioning, OLAP and Data Mining options
  SQL> exit
  $ ps -ef|grep test102
  oracle 15805 14913 0 06:13 pts/1 00:00:00 grep test102
  数据库必须处于MOUNT状态,且设置了RESTRICTED SESSION。执行了DROP DATABASE命令后,Oracle自动删除控制文件,已经控制文件中记录的数据文件和在线重做日志文件,如果数据库使用了SPFILE,那么SPFILE文件也会删除。这个命令不会删除归档文件和备份文件。
  在alert文件中,可以看到drop database对应的操作:
  drop database
  Mon May 18 06:13:01 2009
  Deleted file /data/oradata/test102/system01.dbf
  Deleted file /data/oradata/test102/undotbs1.dbf
  Deleted file /data/oradata/test102/sysaux01.dbf
  Deleted file /data/oradata/test102/redo01.log
  Deleted file /data/oradata/test102/redo02.log
  Deleted file /data/oradata/test102/redo03.log
  Deleted file /data/oradata/test102/redo04.log
  Deleted file /data/oradata/test102/redo05.log
  Deleted file /data/oradata/test102/redo06.log
  Deleted file /data/oradata/test102/redo07.log
  Deleted file /data/oradata/test102/temp01.dbf
  Instance terminated by USER, pid = 15795
  Deleted file /data/oradata/test102/control01.ctl
  Completed: drop database
  Mon May 18 06:13:08 2009
  Shutting down instance (abort)
  License high water mark = 1
  ==========================================================================================
  1、确认当前数据库是否为要删除的那一个
  select name from v$database;
  2、关闭数据库
  shutdown immediate;
  3、以restrict方式重新打开数据库,并启动到mount状态
  sqlplus / as sysdba

    startup restrict mount;    --> # 只有拥有sysdba角色权限的用户才可以登录数据库,普通用户则不可以
  (防止有其他用户对数据库进行访问)
  4、再次确认数据库名,以防止误删除 (误删除了,心就碎了呀!)
  select name from v$database;
  5、使用drop database语句
  drop database;--> # (10g及以后版本适用)
  # 它只删除了数据库文件(控制文件、数据文件、日志文件),
  但并不删除$ORACLE_BASE/admin/$ORACLE_SID目录下的文件
  也不会删除初始化参数文件及密码文件。
  6、删除数据库的管理/跟踪信息
  rm $ORACLE_BASE/admin/$ORACLE_SID
  7、清理oratab文件中的数据库信息
  cd /etc/
  ll | grep ora
  vim oratab
  #orcl:/u01/app/oracle/product/10.2.0/db_1:N
  8、清理环境变量
  vim .bash_profile
  #export ORACLE_SID=orcl
  #export ORACLE_BASE=/u01/app/oracle/
  #export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1/
  #export PATH=$ORACLE_HOME/bin:$PATH
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 根据需要,下面的内容可以不删除 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  9、删除初始化参数文件
  rm $ORACLE_BASE/dbs/spfileorcl.ora --> # 文件名为 spfile{ORACLE_SID},或init{ORACLE_SID},
  也可能是init.ora文件 (在“启动、关闭Oracle”章节会详解)
  10、删除密码文件
  rm $ORACLE_BASE/dbs/orapworcl   --> # 文件名为 orapw{ORACLE_SID}

页: [1]
查看完整版本: oracle drop database-fengyunsen