数据库名,全局数据库名,SID区别及有感
说在最前头的话,不是离体,也许平时开发中的一些需求我们可以做的更好,而不是按正常的逻辑去
处理,否则一辈子都是苦逼的码农。
公司现在有个项目同时在三个不同的地方实施,考虑到各地的需求略有不同,因此需要不同的数据库
在搭建本地环境的时候,某君打算在一个数据库中创建不同的用户来区分各个地市。
比如地市a,b,c 则对应的用户名a_user,b_user,c_user。
现在的问题是从现场备份回来的用户都是叫user,因此什么视图啊,函数啊 授权等都要挨个的改。
不知是否在dba这个层次上来说有解决的方式。
因此我建议某君在测试服务器上创建多个数据库,来区分不同的地方数据库
通过配置和移植工具-->database configuration assistant来创建一个全新的数据库
一、数据库名
就是在你安装oracle软件过程中创建的数据库,或者是安装完后,自己再创建的数据名称。主要用于一个oracle中安装了多个库,
他们之间的区分。一个库会在windows的服务中生成一个oracle_service.数据库名是在安装数据库、创建新的数据库、创建数据库控
制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
查询当前数据名
方法一:select name from v$database;
方法二:show parameter db
二、数据库实例名[SID]
数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件
中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。数据库名和实例名可以相同也可以不同。在一般情况下,
数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。
(就是一个oracle中创建多个库的时候,每个库和操作系统之间通信的身份标示,和我们用户没有关系嘀!)
查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
三、数据库域名
在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库
链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。
举例说明如:
全国交通运政系统的分布式数据库,其中:
福建节点: fj.jtyz
福建厦门节点: xm.fj.jtyz
江西: jx.jtyz
江西上饶:sr.jx.jtyz
这就是数据库域名。
数据库域名在存在于参数文件中,他的参数是db_domain
查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain
四、全局数据库名
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
五、数据库服务名
从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。该名称主要是oracle客户端和oracle建立服务的
时候使用,好像没有多么有用的价值!
查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
(注释:一般情况下我们开发中用到的数据库是单数据库实例,就是oracle中只有一个库。这个时候大部分都有:
数据库服务名 = 全局数据库名 = 数据库名[+ 数据库域名] = SID)