Oracle浅谈第六回

Oracle的实例是由实例和一组数据库文件组成的,实例则是Oracle开辟的内存区和一组后台进程组成的。

体验过Oracle内存区后,我们来体会一下后台进程,因为Windows环境中Oracle是多线程形式的,所以我们登录Linux/Unix环境,UNIX环境下是多进程的,方便查看。

Oracle浅谈第六回

方框标记的部分是刚才熟悉的几个进程,Oracle还有其他很多相关的进程,可以看出Oracle的实例名叫itemtest,具体可以在数据库中查看到,如下:

Oracle浅谈第六回

Oracle浅谈第六回

LOCAL=NO的部分,这表示是非Oracle本身的后台进程,是别的用户通过监听,连接该数据库进行访问的

LOCAL=NO的这些进程如果被杀了,数据库不会崩溃,只是某些应用正好连上来操作数据库,被强制提出数据库了,而那些LGWR和DBWR进程被杀了,那么数据库机会立即崩溃,操作一定要小心,这里少了一个进程,即ARCH,这是归档进程,当日志循环写入过程中会出现下一个日志已经被写过的情况,再继续写将会覆盖其内容,需要将这些即将被覆盖的内容写出到磁盘里去形成归档日志文件,这样日志记录就不会丢失,将来数据库就可以从这些日志文件和归档文件中进行数据库的恢复处理。不过这个归档并非是必要的,因为有的数据库只是用来测试的,对安全性要求不高,此时就可以考虑把归档进程给关闭,数据库少做一件事,效率就会提升。

查看归档进程是否打开:

Oracle浅谈第六回

Database log mode 表示当前数据库时非归档的。

更改数据库的归档模式比较麻烦,需要重启数据库,将数据库置于mount状态后,输入alter database archivelog(如果是归档改为非归档,这里是alter database noarchivelog),然后在开启数据库alter database open,才可以将数据库改为归档,具体步骤如下:

Oracle浅谈第六回

Oracle浅谈第六回

现在ARCH进程也可以查询到了,发现ARCH这个进程是允许多进程的,

Oracle浅谈第六回

数据库时如何启动和关闭的,这可以说是数据库最常见的操作了,下面我们来看一下数据库启动的具体步骤,首先看体系结构图的数据库部分

Oracle浅谈第六回

参数文件和控制文件和数据库的启动与关闭时息息相关的,数据库的启动可以分为三个阶段,分别是nomount、mount和open,我们在启动的时候直接输入startup启动,也可以分成startup nomount、startup mount和alter database open三步分别启动,下面一次描述三个步骤:

    1. startup nomount阶段:

        Oracle必须读取到数据库的参数文件(PFILE或者SPFILE),如果读不到参数文件,数据库根本无法启动成功,如果读取到参数文件,将会完成一个重要的事,就是根据参数上的内存分配策略分配相应的内存区域,并启动相应的后台进程,换而言之,就是创建了instance实例,

        为了保证数据库可以动态的修改参数,从Oracle9i 起,Oracle引进了SPFILE参数来替代之前仅有的单一PFILE的一种情况,具体在数据库开启后可以执行如下命令来了解,如下就表示是SPFILE启动的。

Oracle浅谈第六回

一般来说,Oracle9i 后的版本数据库是这样一个情况,首先查找spfile文件,查找不到了在查找INIT.ORA文件,在查不到就报错了,nomount失败。

    2. startup mount 阶段

        实例已经创建,Oracle继续根据参数文件上描述的控制文件的名称和位置,去查找控制文件,一旦找到立即锁定该控制文件,控制文件里记录了数据库中数据文件、日志文件、检查点信息等非常重要的信息,所以Oracle成功锁定控制文件就表示数据库mount成功,为实例和数据库之前桥梁的搭建打下了基础。

    3. alter database open 阶段

        根据控制文件记录的信息,定位到数据库文件、日志文件等,从而正式开通了实例和数据库之间的桥梁。

总结起来,nomount阶段仅需要一个参数文件就可以启动成功,mout阶段能够正常读取到控制文件才能成功,而open阶段需要保证所有的数据文件和日志文件等需要和控制文件里记录的名称和位置一致,能被锁定访问的同时还要保证没有损坏,否则数据库的open阶段就不可能成功。

文件的体会:

    没有参数文件,实例无法创建,数据库无法nomount成功;没有控制文件,数据库无法mount;没有数据文件数据库无法打开使用(此外,没有了数据文件,那数据没有地方保存,数据库也就失去意义了);没有日志和归档文件数据库就失去了保护伞,数据库变得很不安全。因此,所有的这些文件都非常重要。

    下面我们来感受一下Oracle数据库中的这些参数文件、控制文件、数据文件、日志文件、归档文件存在数据库主机的什么位置,又都是通过什么方法查询到的:

    Oracle浅谈第六回

Oracle浅谈第六回

Oracle浅谈第六回

Oracle浅谈第六回

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/hcy8888/blog/902053