oracle的init.ora,listener.ora,tnsnames.ora等参数文件的主要参数理解

来源:互联网 发布:长沙百度seo 编辑:程序博客网 时间:2024/05/22 02:30

ORACLE_SID与ORACLE_BASE、ORACLE_HOME等一样,属于操作系统环境变量,用于定位数据库的参数文件,如$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora,对于同一机器上多个实例的情况下,要先修改ORACLE_SID环境变量,才能通过 conn / as sysdba连接到特定实例。
在init$ORACLE_SID.ora中有db_name,instance_name,service_name等参数设置,db_name是数据库的名称,在db安装时就已经设置了,instance_name是实例名,代表数据库运行中的内存及其进程,同时影响到了这些进程的名称,譬如:一个数据库db_name=cus,而其实例instance_name=aking,那么数据库起来后,其进程名可能为:Pmon_aking_1。Service_name:数据库逻辑上表现为一个服务,服务名可以任意取,并且一个数据库可以有多个服务名,名字由参数Service_names决定,如果该参数为空,默认的服务名为全局数据库名,即db_name.db_domain。oracle可以通过pmon进程支持自动注册,这时自动注册的对外服务名称就会用到init.ora文件中service_name,有多个值的话就会注册多个,对于service_name=serv1,serv2这个例子,在这里就会注册serv1和serv2两个监听服务。另外,除了pmon进程自动注册服务之外,还可以在listener.ora手工配置数据库实例的监听配置,例如,如果你还手工配置了一个GLOBAL_DBNAME=serv3的监听服务,那么对于实例instance_name=aking就会有三个监听服务。
在在listener.ora中有SID_NAME,GLOBAL_DBNAME,这里SID_NAME指数据库的运行的实例名,和init$ORACLE_SID.ora中的instance_name一致,GLOBAL_DBNAME是listener配置的对外网络服务名称。
在tnsnames.ora中有SERVICE_NAME和SID,设置tnsname中的连接描叙符时,可以使用SERVICE_NAME或SID,tnsname中的SID指定欲连接的数据库实例,对应init$ORACLE_SID.ora中的instance_name和listener.ora中有SID_NAME,tnsname中的SERVICE_NAME指定欲连接的服务名称,与init$ORACLE_SID.ora中的service_name和listener.ora中有GLOBAL_DBNAME相对应。
Db_name:对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。
Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。

 

0 0