数据库名:
概念:数据库名是用于区分一个数据库的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据库安装或创建之后将不得修改,数据库安装完成之后,该参数呗写入pfile中。
pfile中有的参数能修改,有的不能修改。如果db_name被修改,用pfile启动时候会报以下错误:
SQL> startup pfile='/home/oracle/init.ora';
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 71304784 bytes
Database Buffers 209715200 bytes
Redo Buffers 2973696 bytes
ORA-01103: database name 'ORCL' in control file is not 'ZHNAG'
作用:数据库名db_name是数据库的内部管理标记,在安装数据库,创建数据库,创建数据库控制文件,修改数据库结构,利用数据库备份与恢复工具进行数据库备份时都需要使用数据库名
数据库的名称可以这样查:
sql> show parameter db_name;
sql> select name,dbid from v$database;
每个数据库都有自己的名称和唯一的id号
===================================================================================
数据库的实例名:
概念:我们知道oracle数据库名是用于区分一个数据库的内部标识,是以二进制方式存储于控制文件中的参数。而实例名则是用于和操作系统进行联系,在操作系统中要取得与数据库之间的交互则必须使用数据库实例名。
例如要和某一个数据库服务器连接,则必须知道其数据库实例名,知道数据库名是没用的,与数据库名不用,在数据库安装或创建之后,实例名是允许修改的。
确定实例名:
sql> show parameter instance_name;
sql> select instance_name from v$instance;
或者去参数文件里看看
===================================================================================
instance_name 和 ORACLE_SID的区别
在实际中,对于数据库实例名的描述,有时使参数instance_name,有时使用参数oracle_sid。instance_name是oracle数据库参数,此参数可以在参数文件中查询到,而ORACLE_SID是操作系统的环境变量,用于和操作系统交互
===================================================================================
数据库域名(db_domain)
概念:oracle分布式数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix还是window NT,各服务器之间都可以通过数据库链路进行远程复制,数据库的域名只要用于oracle分布式环境中数据库的远程复制。
在oracle的分布式系统的同一环境内,如果两个数据库的数据库名不相同,两个数据库之间就可以建立数据库链路,进行数据库的远程实时传输;
如果两个数据库的数据库名相同,则这两个数据库之间就不能进行数据复制;
如果要在两个数据库名相同的数据库之间复制数据,就需要增加域,而且两个数据库分别具有不同的子域,如果违背这些条件,则两个数据库之间就不能复制数据。
什么时候使用域:
1)在oracle分布式环境中,两个数据库之间要通过数据库链路进行数据的远程传输
2)在同一网络环境下,两个数据库的数据库名相同
===================================================================================
全局数据库名
概念:在安装oracle10g时,安装程序要求输入全局数据库名,这里的全局数据库名就是数据库名后加上数据库域名。在本机中使用时用数据库名即可,在远程数据库中必须使用全局数据库名。如果没定义域名,则全局数据库则与数据库名相同。
===================================================================================
数据库服务名
概念:这是从9i,10g版本开始,引入了一个新的参数,就是数据库服务名,此参数也是数据库标识类参数,用service_names表示。
如果数据库中有域名,则数据库服务名就是全局数据库名;
如果数据库中没有定义域名,则数据库服务名与数据库名相同。
查看方法:
1) sql> select value from v$parameter where name='service_names';
2) sql> show parameter service_names;
3) 到pfile文件里查看(此处省略一个句号)