深入解析Oracle数据库


数据库的启动:

nomount:Oracle首先寻找参数文件,然后根据参数文件中的设置,创建实例,分配内存,启动后台进程。

  1. SQL> startup nomount  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size             113249576 bytes  
  7. Database Buffers           50331648 bytes  
  8. Redo Buffers                2924544 bytes  
  9. SQL> select instance_name,status from v$instance;  
  10.   
  11. INSTANCE_NAME                    STATUS  
  12. -------------------------------- ------------------------   
  13. orcl                             STARTED  

mount:oracle可以从参数文件中获得控制文件的位置信息,然后找到控制文件,并且根据控制文件中记录的数据文件位置进行数据文件的存在性判断。

  1. SQL> alter database mount;  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> select instance_name,status from v$instance;  
  6.   
  7. INSTANCE_NAME    STATUS  
  8. ---------------- ------------   
  9. orcl             MOUNTED  

open:oracle将根据控制文件中 记录的信息,找到数据文件、日志文件的位置,然后进行检查点及完整性检查。如果不存在问题就可以启动数据库,如果存在不一致或文件丢失则需要进行恢复。oracle进行的检查中包括以下两项:

第一次,检查数据文件头中的检查点计数(checkpoint cnt)是否和控制文件中的检查点计数(checkpoint cnt)一致。

第二次,检查数据文件的开始(system change number)scn和控制文件中记录的该文件的结束(system change number)scn是否一致。

  1. SQL> alter database open;  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> select instance_name,status from v$instance;  
  6.   
  7. INSTANCE_NAME    STATUS  
  8. ---------------- ------------   
  9. orcl             OPEN  

数据库的关闭:

close:注意close数据库仅允许在没有连接的情况下进行,否则可能遇到ORA-01093错误。

  1. SQL> alter database close;  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> select instance_name,status from v$instance;  
  6.   
  7. INSTANCE_NAME    STATUS  
  8. ---------------- ------------   
  9. orcl             MOUNTED  

dismount:

  1. SQL> alter database dismount;  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> select instance_name,status from v$instance;  
  6.   
  7. INSTANCE_NAME    STATUS  
  8. ---------------- ------------   
  9. orcl             STARTED  

shutdown:

  1. SQL> shutdown;  
  2. ORA-01507: database not mount  
  3.   
  4. ORACLE 例程已经关闭。  
几种关闭方式的对比:

shutdown normal:任何新的连接都将不再允许连到数据库,但是在数据库关闭之前,oracle需要等到当前连接的所有用户都从数据库中退出。采用这种方式闭关数据库,在下一次启动时不需要进行任何的实例恢复。

shutdown immediate:当前正在被oracle处理的事务立即中断,未提交的事务将全部回滚,系统不等待连接到数据库的用户退出,强制断开所有的连接用户。然后执行检查点,将变更数据全部写回数据文件,关闭数据库。使用这种方式关闭数据库,在下次启动数据库时不需要进行实例恢复,是一种安全的数据库关闭方式。

shutdown transactional:数据库不再允许建立新的连接,禁止新事务的进行,但是允许当前活动事务执行完毕。在所有活动的事务执行完后,数据库将与shutdown immediate同样的方式关闭数据库。

shutdown abort:数据库会立即终止所有用户连接、中断所有事务、立即关闭数据库,未完成事务不会回滚,数据库也不会执行检查点,在下次启动时,数据库必须执行实例恢复。

  • 1
  • 2
  • 下一页
【内容导航】
第1页:数据库的启动与关闭 第2页:控制文件与数据库初始化

相关内容