首先我们需要了解oracle的构成:
1、instance(实例)了.实例就是内存结构和一组后台进程
2、磁盘文件
然后我们看使用数据库的正确流程:
1、其实就是实例中一组后台进程从磁盘上将数据文件读入到实例的内存中,然后经过在内存中对数据的操作再从实例的内存中经过一组后台进程写到数据库中
最后我们来看数据库的启动过程:
平时我们都是直接startup启动数据库,其实可以分成三个步骤启动:
1、启动实例(instance)
startup nomount
读取参数文件,首先查找SPFILE文件,找不到再找INIT.ORA文件,再找不到就报错,nomount失败,根据参数文件上的内存分配策略分配对应的内存区域,并启动相应的后台进程,换而言之,就是创建了实例instance
2、将数据库装载到实例(instance)中
alter database mount
实例已经创建了,oracle继续根据参数文件上描述的控制文件的名称及位置,去查找控制文件,一旦查找到立即锁定该控制文件。控制文件李记录了数据库中数据文件、日志文件、检查点信息等非常重要的信息,所以oracle成功锁定控制文件,就为后续读取操作这些文件打下了基础,锁定控制文件成功就表示mount成功,为实例和数据库之间的桥梁的搭建打下了基础
3、打开数据库
alter database open
根据控制文件记录的信息,定位到数据库文件、日志文件等,从而正式开通了实例和数据库之间的桥梁。
总结起来,nomount阶段仅需要一个参数文件即可成功,mount阶段要能够正常读取到控制文件才能成功,而open阶段需要保证所有的数据文件和日志文件等需要和控制文件里记录的名称和位置一致,能被锁定访问更新的同时还要保证没有损坏,否则数据库的open阶段就不可能成功
数据库的关闭过程就是启动过程的逆过程,先把数据库关闭,然后数据库和实例之间的dismount,最后实例关闭,开辟的内存区消失,后台进程也会全部消失,命令就是shutdown immediate ,这里没有分三个阶段,都整合在一个shutdown immediate命令中完成了
使用命令ipcs -m可以查看共享内存的占用情况,数据库关闭后,oracle所属的内存消失
使用命令ps -ef|grep 实例名,可以查看实例的进程,数据库关闭后,进程也不存在了
可以使用上面的命令,在启动oracle到nomount状态查看内存和进程,可以看到内存和后台进程都已经启动了
补充一个知识点,就是oracle的监听,如果想在远程A机器上通过网络访问本地B机器的书库,B机器上的数据库必须开启监听。远程A机器只需要安装数据库客户端,然后通过读取A机器上的客户端配置的TNSNAMES.ORA的配置文件,就可以连接并访问B的数据库
lsnrctl status 查看监听状态
lsnrctl stop 关闭监听
lsnrctl start 启动监听
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29823043/viewspace-2121408/
,如需转载,请注明出处,否则将追究法律责任。