数据库名、实例名、服务名

Database Name. It is the name of the physical database structure. It is stored at the controlfile and datafile header. It is used to identify all physical structures that belong to the same database. It can be defined at install time. It is originally defined by the static instance parameter database_name, and it cannot be changed, and the only way to change it is by means of rebuilding the controlfile and resetting the log sequence.
Instance Name. It is the name of the memory structures + Background process (MEM + BGP) use to mount/open a database. In a RAC environment there are more than one instance opening the same database, and each instance has a different name. On a single instance (non rac) environments, the instance name and the database name are named (generallly) the same. There is no reason to name the instance and the database differently.
Instance name is defined by the ORACLE_SID environment variable (unix) and by the windows service name (windows).
In a connect string this can be used to establish connection to a database, however this is valid for pre-8i versions (8.0 compatible) and even though it can work with 10g databases, it is not a good practice as it reduces the functionality provided since 8i.
Service Name. This is a way to identify a target instance to get connected to. It is defined by the dynamic instance parameter service_names, note the names word, it is plural, that is because an oracle instance can have several service names. The concept service is more frequently used in a single instance to refer to an instance with several alias. In a RAC environment it is used to balance power, create failed over / stand by instances and it is used in combination with resource manager.
It is common to name all three the same, and there is no use in changing them (single instance), except for the service name, just in case there it can be created more than one alias to refer to the same instance.

原文地址:https://www.cnblogs.com/snailwong/p/5584316.html