Database name/Instance name/servicename/DB_UNIQUE_NAME

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.


DB_UNIQUE_NAME specifies a globally unique name for the database. Databases with the same DB_NAME within the same DB_DOMAIN (for example, copies of a database created for reporting or a physical standby) must have a unique DB_UNIQUE_NAME. Every database's DB_UNIQUE_NAME must be unique within the enterprise.

The value of DB_UNIQUE_NAME can be up to 30 characters and is case insensitive. The following characters are valid in a database name: alphanumeric characters, underscore (_), number sign (#), and dollar sign ($).

No comments:

Post a Comment