zoukankan      html  css  js  c++  java
  • 查询oracle数据库的数据库名、实例名、ORACLE_SID

    查询oracle数据库的数据库名、实例名、ORACLE_SID

    连接ORACLE 数据库

    SQL> conn risenet/1@//192.168.130.99:1521/risenet

    sqlplus anxintg/anxintg@//10.7.82.122:1521/orcl

    查询表

    select * from ESSENWEB.T_ANXINMALL_TG;

    数据库名、实例名、数据库域名、全局数据库名、服务名 ,
    这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。

    一、数据库名

    什么是数据库名?

    数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:
    DB_NAME=myorcl
    ...
    在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

    数据库名的作用
    数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
    有很多Oracle安装文件目录是与数据库名相关的,如:
    winnt: d:oracleproduct10.1.0oradataDB_NAME...
    Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...
    pfile:
    winnt: d:oracleproduct10.1.0adminDB_NAMEpfileini.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/...
    另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。
    同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。
    如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。
    还有在备份或恢复数据库时,都需要用到数据库名。
    总之,数据库名很重要,要准确理解它的作用。

    查询当前数据名
    方法一:select name from v$database;
    方法二:show parameter db
    方法三:查看参数文件。

    修改数据库名
    前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:
    1.关闭数据库。
    2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
    3.以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

    二、数据库实例名

    什么是数据库实例名?
    数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。
    数据库名和实例名可以相同也可以不同。
    在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。这一点在第一篇中已有图例说明。

    查询当前数据库实例名
    方法一:select instance_name from v$instance;
    方法二:show parameter instance
    方法三:在参数文件中查询。

    数据库实例名与ORACLE_SID
    虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。 ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台, ORACLE_SID还需存在于注册表中。
    且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

    数据库实例名与网络连接
    数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明 。

    三、数据库域名

    什么是数据库域名?
    在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是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

    四、数据库服务名(经常是orcl)

    什么是数据库服务名?
    从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。
    如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

    查询数据库服务名
    方法一:select value from v$parameter where name = 'service_name';
    方法二:show parameter service_name
    方法三:在参数文件中查询。
    当你有事情忙的时候,你会觉得时间过得很快 很快。可能你会感觉有点累。但这是一个人成功的历程。请坚信,我一定会好好的。
    更多

  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/fuyiming/p/6897412.html
Copyright © 2011-2022 走看看