本篇文章为大家展示了Oracle中Database name、Instance Name、ORACLE_SID的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
数据库名、实例名、数据库域名、全局数据库名、服务名
一、数据库名
1、什么是数据库名?
数据库名就是一个数据库的标识,就像人的身份证号一样。用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:
DB_NAME=orcl
在 创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以 二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
2、数据库名的作用
数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
有很多Oracle安装文件目录是与数据库名相关的,如:
winnt: e:/oracle/product/10.1.0/oradata/DB_NAME/...
Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...
参数文件pfile:
winnt: e:/oracle/product/10.1.0/admin/DB_NAME/pfile/ini.ora
Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora
跟踪文件目录:
winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...
如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。还有在备份或恢复数据库时,都需要用到数据库名。总之,数据库名很重要,要准确理解它的作用。
3、查询当前数据名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件。
4、修改数据库名
建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:
1.关闭数据库。
2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
3.以NOMOUNT方式启动实例,修建控制文件(关于创建控制文件的命令语法,请参考oracle文档)
二、数据库实例名
1、什么是数据库实例名?
实例是访问oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成的一个集合,它根本不需要一个与其相关的数据库,没有任何数据文件也可以启动实例。
启动过程如下:
sqlplus / as sysdba
sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库所有的东西都启动了
sql>alter database mount #查找以及加载控制文件(init.ora文件中指定),然后利用控制文件定位重做日志文件、数据文件、临时文件
sql>alter database open #oracle将打开所有联机的数据文件及重做日志文件,供用户访问。
大家访问oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
实例名指的是用于响应某个数据库操作的数据库管理系统的名称,它同时也叫sid。实例名是由参数instance_name决定的。如果这个参数不被制定(即instance_name没有被指定任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。
2、实例和数据库
实例和数据库的区别:
1)实例是临时的,它只在相关的进程和内存集合存在时存在,数据库是永久的,只要文件存在它就存在。
2)一个实例在生存周期内可安装和打开单个数据库;数据库可以被很多实例安装和打开,或者一个接一个的实例安装和打开,每个实例都打开同一个数据库。
数据库实例名用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据库安装或创建数据库之后,实例名可以被修改。数据库名和实例名可以相同也可以不同。一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(oracle实时应用集群)中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只有一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行)。
3、查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance;
三、ORALCE_SID
在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别?
(ORACLE_SID)
OS<---------------->; ORACLE 数据库 <--------(Instance_name(实例名))
上图表示实例instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但是instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查到;而ORACLE_SID参数则是操作系统环境变量,与ORACLE_BASE、ORACLE_HOME用法相同,用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。切ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在UNIX平台,是“ORACLE not available ” ,在winnt平台,是“TNS协议适配器错误”。
上述内容就是Oracle中Database name、Instance Name、ORACLE_SID的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。