DB_NAME:数据库名
DB_DOMAIN :数据库域名
GLOBAL_NAME : 数据库全局名
INSTANCE_NAME :数据库实例名
ORACLE_SID:
在创建oracle数据库时建议的数据库全局名称为 DB_NAME . DB_DOMAIN, DB_NAME加点再加DB_DOMAIN就是GLOBAL_NAME
INSTANCE_NAME : 实例名建议实例名称为DB_NAME+SID 和 数据库名区分开
ORACLE_SID :在系统的注册表中,在连接sqlplus时如果没有指定连接的标识符,将会连接到注册表中指定的ORACLE_SID 实例,
如果在注册表中修改的这项值不正确,而且连接sqlplus没有指定连接标识符,将会出现 “TNS 协议适配器错误”的错误,unix下为
" ORACLE未准备好" 所以以后出现这个错误可以检查该项是不是正确。
SERVICE_NAME:是连接数据库时的连接标识符,如果创建数据库时数据库的全局名为DB_NAME.DB_DOMAIN
则oracle将会自动创建Service ,Sevice_name 为DB_NAME,在创建新的Service时可以选择是连接的是实例(SID)
还是数据库的服务(这个服务不是配置的这个服务),服务的名称和要连接的数据库全局名称是一样的,也可以连接指定的实例名,即第二个选项框输入实例名即可
注意:一个实例可以挂载不同的数据库,多个实例可能连接的是同一个数据库。在通过sqlplus连接数据库时,假设不建立服务而是直接通过IP和服务名称来连接数据库,该怎么写连接标识符呢?
scott/tiger@192.168.xx.xx/dbname.db_domain ,即练级标识符为数据库全局名,也是数据库服务名
SQL 语句 :
SELECT * FROM V$INSTANCE; --数据库实例名
SELECT * FROM global_name; --全局数据库名
SELECT * FROM V$DATABASE; --数据库名
SELECT * FROM v$PARAMETER WHERE NAME LIKE 'service%' --数据库服务名
SELECT * FROM global_name; --全局数据库名
SELECT * FROM V$DATABASE; --数据库名
SELECT * FROM v$PARAMETER WHERE NAME LIKE 'service%' --数据库服务名
下图就是一个例子Service_Name为Orcl 连接到的不是数据库服务而是实例,而且连接实例名称为OrclSId
下图为配置一个Service的过程,在该界面可以选择连接是数据库服务
(不是连接的Service_name,有待进一步学习了解),数据库服务和全局数据库名是相同的
下图为配置一个Service的过程,在该界面可以选择连接是实例而不是数据库服务,实例名称必须写对哦
听网上大神说8i的时候,连接时候连的是Instance_id 即实例名,随着后面的发展,出现了一个数据库对应了多个实例,所以又增加了NetService的概念,Service_Name 再对应实例名或者数据库服务;