conn sys/sys as sysdba
Shutdown abort;
Startup nomount;
select instance_name,status from v$instance;
将数据库带到mount状态
select value from v$spparameter where name='control_files';
Alter database mount;
Mount数据库的过程是读参数文件中描述的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存,mount是挂接的意思,是操作系统中的概念.一旦mount之后,就是将一个没有意义的实例和一个数据库发生了联系.因为实例是空壳.没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽取哪里的数据,实例是通用的.mount的意思是将一个通用的水泵放入到指定的水塘.
mount是读控制文件,控制文件中有数据文件和日志文件的信息.
select instance_name,status from v$instance;
打开数据库
Alter database open;
读控制文件中描述的数据文件
验证数据文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态.
数据库open后,普通用户才可以访问数据库用户的表才为可见
只读方式open数据库
Alter database open read only;
select OPEN_MODE from v$database;
默认的open方式为read write
想改read only为read write 必须重新启动数据库我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以有我们来编写.读完参数文件后又读了控制文件,控制文件描述了数据文件和日志文件的信息,如果控制文件丢失可以重新建立,最后是读数据文件.数据文件里才存放了我们的数据.数据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题,迅速的排除.有点象老鼠拖木钎,大头在后面.由最开始的一个1k的参数文件,最后到几个t的大型数据库.当我们只打startup而不加任何参数的时候.默认是到open,等于startup open;
SQL> startup
Oracle instance started.
更多Oracle相关信息见 专题页面