Oracle中Database name、Instance Name、ORACLE

62次阅读
没有评论

共计 2851 个字符,预计需要花费 8 分钟才能阅读完成。

本篇文章为大家展示了 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 的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计2851字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)