db_name,instance_name,service_names,db_domain应用及区别
1.db_name表示数据库名字,是Oracle惟一的启动必要参数,该参数在启动时会与控制文件,数据文件,日志文件中保存的db_name进行比对,匹配才能启动数据库,不能被修改(试图修改就会报错)。
2.db_domain可以修改,并且有效。
3.instance_name(会被注册到监听器的Instance行信息)表示的是数据库实例名字,是用来标识不同实例的名字,可以被修改,但是修改结果无效(见第5点),不具备任何连接时使用,从这点上说,这个参数并没有太大意义。
4.service_names是实例注册到监听器的名字,提供给客户端通过TCP/IP连接到实例。如果为空,那么会使用db_name+db_domain来把实例注册到监听器。可以被修改,并且修改有效。
5.安装过程中填入的全局数据库名就是service_names,也就是db_name+db_domain两个参数的值。单实例环境中,填入的SID值对应到instance_name参数值(SID是不能被更改的,如果修改了instance_name,SID还是创建数据库时候填入的SID,所以需牢记此填入值)。在RAC环境中,为了区别不同的实例,填入的SID值对应到instance_name=SID(实际)=SID(填写)+instance_number(SID是不能被更改的,如果修改了instance_name,SID还是创建数据库时候填入后生成的SID,所以需牢记此填入值)。
6.Windows平台中,services.msc中注册的数据库服务为(OracleService<SID>)。创建的目录结构中使用的是db_name来创建的文件夹。所有跟踪文件、密码文件、参数文件、警告日志文件名称中都包含有SID的相关信息。Dbca删除数据库时显示的是SID的名字。
7.特别注意(一下是一个测试结果,Windows平台10gR2):当修改了db_domain,service_names后出现了很奇怪的现象。当service_names由空改为不为空后,db_domain不为空,注册到监听器的服务名是:1.service_names+db_domain,2.db_name+db_domain(注册了两个服务名)。