Oracle 有关实例和数据库的关系
数据库是物理的,是数据的物理存储,由存储在磁盘中的文件组成,包括控制文件,数据文件,重做日志文件等等;
实例是逻辑的,由服务器共享内存和后台进程组成,提供对数据库中信息的访问。
Oracle数据库和实例:
实例在运行期间只能装载和打开一个数据库,但在RAC中一个数据库可以被许多实例同时装载和打开。
如果数据库是一个岛,那么实例就可以看作通过这座岛的一座临时浮桥。两者通过pfile参数文件进行联系。
而DB2可以同时运行多个实例,一个实例可以包含多个数据库。在同一个实例中的不同数据库是完全独立的,分别拥有自己独立的系统编目表。一个数据库只属于一个实例。
oracle当中的oracle_sid和instance_name:
oracle_sid在Oracle系统中以环境变量的形式出现,当oracle实例启动时,在操作系统上fork的进程就依据这个oracle_sid来创建。后台进程和参数文件的名称都是由oracle_sid决定的。
oracle数据库内部存在一个初始化参数instance_name,是用于标示数据库实例的名称,其缺省值通常就是oracle_sid。但初始化参数instance_name和oracle_sid是可以不同的,不同实例可以拥有相同的instance_name。
在数据库内部视图V$INSTANCE中也记录着一个instance_name,这个始终和oracle_sid保持一致。参数文件中缺省instance_name,动态的从系统视图获得。
instance_name除了用来标示实例名称之外,在监听器动态注册时还会用于向监听器注册。
DB_NAME代表了实例即将挂接的数据库名称,关系着具体的物理文件。被记录在数据文件、日志文件和控制文件中。
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------