[ORACLE]Oracle db_name ORACLE_SID INSTANCE_NAME

db_name:

实例启动最小参数需求,在参数文件中,通常需要最少的参数是 db_name ,设置了这个参数之后,数据库实例就可以启动.

SID -->System IDentifier 的缩写
ORACLE_SID --> 就是 Oracle System IDentifier

Oracle 的实例 (instance)是由一块共享内存区域 (SGA) 和一组后台进程 (background processes)共同组成,而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过 ORACLE_SID 决定的。
在同一个$ORACLE_HOME 下,通过参数文件,Oracle 能够根据 ORACLE_SID 将实例区分开来;
但是注意如果在不同的$ORACLE_HOME 下,即使在同一台主机上,Oracle 也是能够创建相同 ORACLE_SID 的实例的。

Oracle ?供的一个小工具 sysresv,我们可以找到对应于不同的 ORACLE_SID,操作系统上创建的共享内存段 ID(Shared Memory)和信号量 ID(Semaphores)等信息:

[ ~]$  sysresv -l D4C

IPC Resources for ORACLE_SID "D4C" :
Maximum shared memory segment size (shmmax): 4398046511104 bytes
Total system shared memory (shmall): 4398046511104 bytes
Total system shared memory count (shmmni): 4096
*********************** Dumping ipcs output ********************

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0xe9edf334 0          oracle     600        28672      71                      
0x00000000 98305      oracle     600        8896512    58                      
0x00000000 131074     oracle     600        289406976  29                      
0x00000000 163843     oracle     600        7880704    29                      
0x61d1a2d4 196612     oracle     600        12288      29                      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x5dc6f648 163840     oracle     600        250       
0x5dc6f649 196609     oracle     600        250       
0x5dc6f64a 229378     oracle     600        250       
0x9a6a5b94 360451     oracle     600        250       
0x9a6a5b95 393220     oracle     600        250       

*********************** End of ipcs command dump **************

INSTANCE_NAME
Oracle 数据库内部存在一个初始化参数 INSTANCE_NAME,用于标示数据库实例的名称, 其缺省值通常就是 ORACLE_SID ;但是初始化参数 INSTANCE_NAME 和ORACLE_SID 可以不同,不同实例可以拥有相同的 INSTANCE_NAME。
通过以下一段 SQL 可以获得数据库的 UPTIME 信息:

COLUMN STARTED_AT format a25
COLUMN UPTIME format a50
SELECT
    TO_CHAR (startup_time, ‘DD-MON-YYYY HH24:MI:SS‘) started_at,
    TRUNC (SYSDATE - (startup_time))    || ‘ day(s), ‘ ||
    TRUNC ( 24 * ((SYSDATE - startup_time) - TRUNC (SYSDATE - startup_time))) || ‘ hour(s), ‘||
    MOD (TRUNC ( 1440 * ( (SYSDATE - startup_time) - TRUNC (SYSDATE - startup_time))),60) || ‘ minute(s), ‘||
    MOD (TRUNC ( 86400 * ( (SYSDATE - startup_time) - TRUNC (SYSDATE - startup_time))),60) || ‘ seconds‘ uptime
FROM v$instance;

相较 INSTANCE_NAME 参数来说,对于 Oracle 数据库更为重要的一个参数是 DB_NAME。DB_NAME 代表了实例即将挂接的数据库名称,关系到具体的物理文件。通常缺省的数据库 instance_name 和 db_name 可以设置相同(在 RAC 环境下,由于多个实例对应一个数据库,所以 instance_name 和 db_name 不同)。

DB_NAME 用来定义数据库名称,必须是一个不超过 8 个字符的文本串,在数据库创建过程中,db_name 被记录在数据文件,日志文件和控制文件中。如果数据库实例启动过程中参数文件中的db_name和控制文件中的数据库名称不一致,则数据库不能启动.
    1. 一个实例可以 mount 并打开任何数据库,但是同一时间一个实例只能打开一个数据库
    2. 一个数据库可以被一个或多个实例所 mount 并打开(在 OPS/RAC 环境下,一个数据库可以被多个实例所打开)。
DB_NAME 的另外一个作用是在监听器动态注册时作为缺省服务名注册.

SERVICE_NAMES

SERVICE_NAMES 为实例所连接的数据库定义一个或多个服务名,可以通过定义多个服务名将不同用户连接区分开来。这个参数的缺省格式为:DB_NAME.DB_DOMAIN,如果定义了 DB_DOMAIN 那么定义的服务名就类似:
  SERVICE_NAMES = sales.doufupi.com, news.doufupi.com

相关推荐