oracle数据库名sid
① Oracle 中的SID是不是数据库的名字
是的.
你说的SID是单指SID还是说ORACLE_SID
SID: system identifier 实例名,又叫系统标识符,用于唯一地标识一个实例,实例是内存和后台进程的集合.
在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。
一、什么是数据库名(db_name)?
数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。
二、什么是数据库实例名(instance_name)
数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl #(可以修改,可以与db_name相同也可不同)
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
数据库名与实例名之间的关系。
数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)
三、操作系统环境变量(ORACLE_SID)
在实际中,对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混)
[code:1:1aaf156970]
(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))
上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,而ORACLE_SID参数则是操作系统环境变量。
操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
定义方法:
export ORACLE_SID=orcl
如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。
还可以用
[oracle@Datacent]$ . oraenv
来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)
② 如何区分Oracle的数据库,实例,服务名,SID
实例
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;实例 就是治理相关库的内存结构的名字(由SGA、PGA、服务器进程、用户进程、后台进程等组成)
数据库
数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。数据库 就是实际的磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,但由对应的实例来操作它的数据
3.服务名
服务名 就是对外公布的名称,为网络监听服务
4.SID
sid用于实例区分各个数据库,service name用于外部链接。
③ sid是什么意思,他在oracle数据库中配置数据库连接时需要,但是我找不到sid具体是什么。
SID指的是你的全局数据库名,也就是你建数据库时的名字,不是用户名哈;Oracle 10g 数据库安装过程中经常弹出提示“严重:监听程序未启动或数据库服务未注册到该监听程序。启动该监听程序并注册数据库服务, 然后重新运行 EM Configuration Assistant。”,这个很好解决,只需要在app\Administrator\proct\11.2.0\dbhome_1\network\admin\listener.ora中加入:SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\proct\10.2.0\db_1)
(PROGRAM = extproc)
)
此句是添加的,下面部分为添加
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\oracle\proct\10.2.0\db_1)
(SID_NAME = ORCL)
)
上面部分是添加的
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = VirtualXP-45565)(PORT = 1521))
)
)
就可以解决,这里GLOBAL_DBNAME = ORCL和SID_NAME = ORCL这两句中的ORCL就是SID,也就是全局数据库名字 ,记得改了后要重新启动数据库服务,服务在电脑的服务里启动
④ oracle中全局数据库名和SID的区别
全局数据库名:是将数据库与任何其他数据库唯一标识出来的数据库全称。全局数据库名的格式为<database_name>.<database_domain>。例如,student.cs.hubu是一个典型的全局数据库名。数据库名部分(如student)是数据库的简单名称,数据库域部分(如cs.hubu)指定数据库所在的域,它通常和企业内的网络域相同。全局数据库名的数据库名部分不能超过8个字符,并且只能包含字母、数字字符和句点(.)字符。
SID(System Identifier,系统标识符):用来标识Oracle数据库的特定例程。对于任何一个数据库,都至少有一个引用数据库的例程。SID可以是未被此计算机上其他例程使用的任何名称。SID是Oracle数据库例程的唯一标识符,最多只能有8个字母、数字字符。每个数据库例程对应一个SID和一系列数据库文件。例如,当创建SID为XXX的数据库时,将同时创建数据库例程及其数据库文件(初始化参数文件、控制文件、重做日志文件和数据文件)。
⑤ 对于Oracle,数据库名,全局数据库名,SID都是什么啊麻烦举例说下。
数据库名:顾名思义,数据库的名字。。例子:db10
全局名:是库名的完整名,例子:db10.localdomain
他们的关系:库名可以看成是人的小名,而全局名可看成是人的全名。比如有2个网络,他们都有个DB10库,但他们的域名肯定是不同的(上面的localdomain)。同一小名的人可以有多个,但全名必须是不同的。
SID:实例名,一般跟数据库名一样,是系统用来识别库的,用ORACLE_SID这个环境变量来识别
⑥ 请教oracle全局数据库名和SID区别
一、数据库名
就是在你安装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)
