作为Oracle数据库的重要组成部分INSTANCE也存在一个参数标示:INSTANCE_NAME。
INSTANCE_NAME是Oracle数据库的一个参数,在参数文件中定义,用于标示数据库实例的名称,其缺省值通常就是ORACLE_SID,但是不同的实例可以有相同的实例名。通过简单的参数文件复制,我们就可以在同一台服务器上创建多个具有相同instance_name的实例。
首先确认当前的参数文件:
bash-2.03$ cd $ORACLE_HOME/dbs
bash-2.03$ ls initeygle.ora
initeygle.ora
复制参数文件,更改名称:
bash-2.03$ cp initeygle.ora initjulia.ora
接下来通过导入新的ORACLE_SID我们就可以启动新的实例:
bash-2.03$ export ORACLE_SID=julia
bash-2.03$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Fri Feb 16 10:34:00
2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 303532408 bytes
Fixed Size 731512 bytes
Variable Size 184549376 bytes
Database Buffers 117440512 bytes
Redo Buffers 811008 bytes
现在ORACLE_SID为julia的实例已经启动,操作系统上的进程以julia名称标记:
bash-2.03$ ps -ef|grep pmon
oracle 12396 1 0 16:30 ? 00:00:00 ora_pmon_julia
oracle 16201 1 0 18:13 ? 00:00:00 ora_pmon_eygle
oracle 16256 16219 0 18:14 pts/1 00:00:00 grep pmon
但是新实例的instance_name仍然是eygle:
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------------------
-----------------------
instance_name string eygle
总结一下,ORACLE_SID在这里用于标示进程,而instance_name则用来标示实例,两者可以具有不同的名称。
此外Oracle的监听器(listener)配置文件中的SID_NAME就是来自instance_name参数,监听器通过instance_name才能确定需要将连接请求注册到哪一个实例上。通常listener.ora文件中SID_NAME相关设置类似如下示例:
SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME = eygle)
(ORACLE_HOME = /opt/oracle/product/9.2.0)
(SID_NAME = eygle)
)