Oracle 删除表空间之前把其中的文件也删除的解决方案


  本文标签:Oracle 删除

  如果Oracle 删除表空间之前的时候你把表空间中的文件也删除了的话,这样就会对我们的实际操产生一些不便,以下的文章就是对Oracle 删除表空间之前的时候你把表空间中的文件也删除在了的解决办法的介绍  。

  如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭  。

  可使用如下方法恢复(此方法已经在oracle9i中验证通过):

  下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称  。

  $ sqlplus /nolog

  SQL> conn / as sysdba;

  如果数据库已经启动,则需要先执行下面这行:

  SQL> shutdown abort

  SQL> startup mount

  SQL> alter database datafile filename offline drop;

  SQL> alter database open;

  SQL> drop tablespace tablespace_name including contents;

  创建用户并指定表空间

  create user zfmi identified by zfmi

  default tablespace zfmi temporary tablespace zfmi_temp;

  identified by 参数必须有

  

  授予message用户DBA角色的所有权限

  GRANT DBA TO zfmi;

  

  给用户授予权限

  grant connect,resource to zfmi; (db2:指定所有权限)

  

  导入导出命令:

  在Oracle 删除表空间之前,Oracle数据导入导出imp/exp就相当于oracle数据还原与备份  。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件, imp命令可以把dmp文件从本地导入到远处的数据库服务器中  。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用  。

  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,

  DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径,

  该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出  。

  oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件  。

  SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能  。

  以上就是对Oracle 删除表空间之前删除了表空间文件,解决办法的内容的介绍,望你会有所收获  。