当前位置:  数据库>oracle

Oracle数据库名与Oracle实例名的关系

    来源: 互联网  发布时间:2017-05-22

    本文导语: 1 数据库名 1.1 数据库名的概念 数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件...

1 数据库名 1.1 数据库名的概念

数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。

数据库名在$Oracle_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE.ORA)文件中

###########################################
# Database Identification
###########################################
db_domain=""
db_name=orcl

在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

1.2 数据库名的作用

数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。

有很多Oracle安装文件目录是与数据库名相关的,如:

winnt: F:oracleproduct10.2.0oradataDB_NAME...

又如参数文件pfile:

winnt: F:oracleproduct10.2.0adminDB_NAMEpfileinit.ora.54200885729

如果损坏或丢失,数据库将不能加载,这时要,方法是以nomount方式启动实例,然后以创建控制文件,当然这个命令中也要指明DB_NAME。

1.3 修改数据库名

建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。是区分数据的内部标识(即是给Oracle数据库内部使用的),因为其在数据库多处保存,并且控制文件中保存的是二进制的,所以很难改变其名字。

在已创建数据之后,修改数据库名。步骤如下:
(1)关闭数据库。
(2)修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
(3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

1.4 查询当前数据库名

方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)

2 数据库实例名(instance name) 2.1 数据库实例名的概念(instance_name)

实例名是代表用于加载或打开一个数据库所用的memory structures + Background process (MEM + BGP)。在unix中,实例名由ORACLE_SID环境变量定义,在windows中由服务名定义。可以用于连接字符串中,这种用法用于8i版本前,虽然10g仍然支持,但是并不推荐,因为这种方法缺乏对某些新特性的支持。

实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:

sqlplus / as sysdba
sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库外所有的东西都启动了
sql>alter database mount #利用控制文件(init.ora文件中指定)定位重作日志文件、数据文件、临时文件
sql>alter database open #数据库可供任何人通过这个实例访问。

所以可以这么理解:访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

实例名指的是的名称,也叫SID。实例名是由参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的(注意这里是大写)决定。在windows平台下,则是决定。

2.2 实例和数据库

实例和数据库之间的区别如下:
(1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在。
(2)一个实例在其生存期内可安装和打开数据库;数据库可以被实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)。

简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每台机器运行一个实例,每个实例都打开同一个数据库 (这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

数据库实例名(instance_name)。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据安装或创建数据库之后,。。在一般情况下,数据库名和实例名是的关系,但如果在oracle并行服务器架构(即oracle实时应用集群) 中,数据库名和实例名是的关系(一个数据库对应多个实例,同一时间内用户只与一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。

实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存,这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。Oracle RAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。

2.3 查询当前数据库实例名

方法一:select instance_name from v$instance;
方法二:show parameter instance


    
 
 

您可能感兴趣的文章:

  • Linux上建立第二个ORACLE实例分析
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • oracle的存储过程实例讲解
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • oracle分页存储过程 oracle存储过程实例
  • C#连接Oracle数据库的实例方法
  • Oracle数据库实例两则
  • Oracle 11G 无法连接到数据库实例故障排除 iis7站长之家
  • Oracle 10g for solaris准备工作和实例的删除
  • Oracle 11G 无法连接到数据库实例故障排除
  • Linux下设置Oracle 10g 服务以及实例自动启动
  • oracle group by语句实例测试
  • Oracle数据库异构服务原理及实例说明
  • Linux下删除Oracle实例
  • 与Oracle RAC相关的连接配置写法实例
  • Oracle监听器Server端与Client端配置实例
  • Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
  • oracle删除已存在的表的实例
  • Aix 5.3下自动备份Oracle多个实例
  • Oracle数据库安全性管理基本措施实例解析
  • oracle 和 jdk 的关系 ?
  • Oracle中的Connect/session和process的区别及关系介绍
  • Oracle中临时文件File#和Db_files关系
  • Oracle索引存储关系到数据库的运行效率
  • 深入探讨:oracle中方案的概念以及方案与数据库的关系
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,