Oracle安装前,首先要分清DB_NAME、INSTANCE_NAME、ORACLE_SID、SERVICE_NAME、DB_DOMAIN和GLOBAL_DB_NAME的概念。
一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库,但是在特殊情况下,如8i的OPS,9i的RAC,一个SERVER中一个数据库可以对应多个实例。
一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。
数据库名(DB_NAME):用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,所以很难改变其名字(修改比较麻烦,所以在安装时设置好了就不要再改了),数据库安装完成后,该参数被写入数据库参数文件pfile的db_name中。
数据库实例名(INSTANCE_NAME):则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。该值允许修改,但一般设置与数据库名相同即可。
数据库实例名(ORACLE_SID):虽然和INSTANCE都是指数据库实例名,INSTANCE_NAME参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,而ORACLE_SID参数则是操作系统环境变量。 操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID,其取值也必须与INSTANCE_NAME相同。
数据库域名(DB_DOMAIN):类似网络域名的概念,(所以一个数据库名db_name在不同的域里可以相同)在安装时确定(全局数据库名中填写),定义规则也相似于网络定义。
全局数据库名(GLOBAL_DB_NAME):命名规则= db_name+[db_domain]
数据库服务名(SERVICE_NAME):一般与全局数据库名相同。