ORA-01109:数据库未打开(解决)

Posted 习惯沉淀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-01109:数据库未打开(解决)相关的知识,希望对你有一定的参考价值。

本文转自:http://www.cnblogs.com/sprinng/p/4616399.html

执行drop user user_name cascade;删除用户及用户,然后又删除了.dbf文件,想重新创建用户然后执行sql脚本时,出现标题所示的问题,解决方法如下:

SQL> startup mount

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 167775108 bytes
Database Buffers 436207616 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database datafile \'F:\\ORADB.DEF\'offline drop;  (忘了文件名,可以先执行下面的,会有文件名提示的)

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> drop tablespace oradb including contents;

表空间已删除。

另:删除用户对表空间的影响http://bbs.csdn.net/topics/390805356

项目中发现一个疑问。就是Oracle在创建用户的时候,如果用户使用的是自己创建的表空间来存放数据,那么Oracle在删除此用户的时候对应的此表空间中数据是否也一并删除? 但是实际测试发现用户删除了但是对应的表空间的数据却没有删除,因为表空间文件大小根本没变。这是为什么?我有一点自己的理解,但是对Oracle实现原理不是很了解所以不敢妄自发表意见,请各位高手谈谈各自的看法。

表空间和用户没有直接关系,你创建或者删除用户都不会影响表空间。
表空间只是一个容器,用来存放表,索引,存储过程等。

楼上是对的。用户和表空间没有必然联系。删除一张表,一般情况下这张表会进入所属用户的回收站,如果是删除用户,数据会彻底消失,因为回收站随用户一起不见了。
当你创建一个表空间时,可以给对应的数据文件指定一个大小,系统会将磁盘空间以指定的格式初始化分配给数据文件,这时候数据文件中的空间并未被分配给segment(表和索引),同样的,当段被删除时,空间会被回收,但数据文件并不会自动收缩。也就是你说的表空间文件大小没变
这就有点像表中的高水位:当表中的记录被删除,对应的数据块中的空间即可用来插入新的数据,但即使整个数据块/盘区为空,也不会被释放出该表所在的段。形成了高水位

 

以上是关于ORA-01109:数据库未打开(解决)的主要内容,如果未能解决你的问题,请参考以下文章

删除了数据文件导致导致oracle数据库未启动(错误提示:ora-01109)

Oracle登录 ORA-01033: ORACLE正在初始化或关闭的解决方法

ORA-01033 ORA-01109 ORA-01034 ORA-12514 ORA-24324 ORA-01041 ORA-01157 ORA-01110

片段未在后退按钮上打开上一个片段

未解决的对“片段”部分中的符号“”的引用

单击 recyclerView 项目时未打开新片段