`
xukenetwork
  • 浏览: 77418 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle中Service Name、Database name、Instance Name的区别

 
阅读更多

1,数据库名是Oracle数据库的内部标识,一般在安装完后不应该改变,数据库的很多物理存储目录都用到了数据库名。

2,Instance_Name,ORACLE_SID,数据库实例名,是数据库和操作系统交互时用到的名称。

如果在一台机器上创建了多个数据库,通过Sqlplus想连接到其中的一个数据库,就需要指明ORACLE_SID:

set ORACLE_SID=SIDNAME

sqlplus / as sysdba(这种连法只能在本机用,会根据ORACLE_SID连接到对应的实例)

通常碰到的12560错误一般就是因为实例名被错误修改或者服务没有被启动。 

Instance_Name则是数据库的一个参数.

3,Service Name:服务名,如果数据库有域名则等同于Global DB Name、没有的话则等同于数据库名,这是因为数据库启动后会自动把数据库名注册到监听成为服务名,同时数据库参数service_names也会注册为服务名,所以一个数据库可以有多个服务名.

当在Oracle8i,9i,10g的客户端连接Oracle8i,9i,10g服务器的时候,主机字符串应该使用服务名。

4,Net Service Name:网络服务名,也有人叫TNS别名、网络连接串(connect string),在tnsnames.ora中配置的名称,如下面例子的DBTNS.
sqlplus sys/sys@orcl as sysdba(这种连法会根据tnsnames.ora中配置的网络服务名连接到本机或者远程的oracle,走的是网络通信)

看看数据库参数设置: 
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
instance_name                        string      orcl
SQL> show parameter service_names
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
service_names                        string      orcla,orclb
SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
db_name                              string      orcl
service_names也可以通过alter system set service_names=orclA,orclB;修改为对应多个值。

listener启动时候根据listener.ora配置的信息静态注册可用的服务,同时数据库实例启动以后(PMON)会把

service_names,db_name的值动态的注册到Listener。

例如,如果service_names的值为orcla,orclb,db_name的值为orcl,在listener.ora里有如下配置:

    (SID_DESC =
      (GLOBAL_DBNAME = orclst) 
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )

则在Tnsname.ora中可以作为SERVICE_NAME的值为orcla,orclb,orcl,orclst

通过lsnrct status 可以看到这些服务的信息: status READY的为动态注册的(因为是在实例启动之后才注册到listener的,所以状态为ready),status UNKNOWN的为静态注册的(因为是listener启动的时候根据配置启动的,这是实例是否启动是不知道的,所以为unknown)。

通过连接后看v$session中的service_name也可以判断用的服务名是静态注册的还是动态注册的.SYS$USERS表示为静态的.

其中orclst为静态的注册,查看session可以看到如下

SQL> select service_name from v$session where sid=(select distinct(sid) from v$mystat);
SERVICE_NAME
----------------------------------------------------------------
SYS$USERS

 

其中通过orclsa为动态的注册,查看session可以看到如下

SQL> select service_name from v$session where sid=(select distinct(sid) from v$mystat);
SERVICE_NAME
----------------------------------------------------------------
orcla

 

Services Summary...
Service "ORCLA" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "ORCLB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclst" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

动态注册默认只能注册1521的listener,如果监听端口不是1521,需要:

1,在服务器端的Tnsname.ora中配置一个tns指明端口号,只有ADDRESS配置没有CONNECT_DATA配置项:

lclsn=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = PC-6753184)(PORT = 1522))
  )

2,将数据库的参数 local_listener的值改为服务器端的Tnsname.ora配置的lclsn:

 alter system set local_listener=lclsn;

 

Tnsname.ora中配置: 通过lsnrct status得到可以用的SERVICE_NAME ,如orcla,orclb,orcl...

DBTNS =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.11.28)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = teldb)
    )
)

上面例子中的SERVICE_NAME = teldb也可以换成SID=orcl.

一个数据库集群的例子:

DBCLUSTER=
  (DESCRIPTION_LIST =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (DESCRIPTION =

      (ADDRESS_LIST =

        (LOAD_BALANCE = ON)

        (FAILOVER = ON)

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d001-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d002-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d003-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d004-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d005-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d006-oravip.test.com)(PORT = 6191))

      )

      (CONNECT_DATA =

        (SERVICE_NAME = opofs_rd)

        (FAILOVER_MODE =

          (TYPE = SESSION)

          (METHOD = BASIC)

          (RETRIES = 120)

          (DELAY = 5)

        )

      )

    )

  )

分享到:
评论

相关推荐

    oracle service_name参数

    在Oracle数据库管理中,`service_name`是一个重要的参数,它用于标识数据库实例所提供的服务名称。通过设置正确的`service_name`,可以确保客户端应用程序能够顺利连接到所需的数据库实例。本文将详细介绍`service_...

    数据库oracle rac 修改db_unique_name参数

    在 Oracle RAC 环境中,db_unique_name 参数是一个非常重要的参数,它决定了数据库的唯一标识。在某些情况下,我们需要修改 db_unique_name 参数,以便满足特定的需求。本文将详细介绍如何修改 db_unique_name 参数...

    oracle简易客户端配置instanceclient

    Oracle简易客户端配置InstanceClient主要涉及的是Oracle数据库与应用程序之间的连接,尤其在不安装完整Oracle数据库服务器的情况下,仅需要客户端工具进行数据访问时。这个过程主要包括下载、安装和配置Oracle ...

    oracle_instance.zip

    在给定的压缩包文件"oracle_instance.zip"中,包含了两个重要的组件:`instantclient-basic-windows.x64-11.2.0.4.0`和`instantclient-sqlplus-windows.x64-11.2.0.4.0`,这两个文件都是针对64位Windows系统的。...

    Oracle中各名称介绍.docx

    Oracle数据库在设计和管理上涉及多个关键概念,包括数据库名、数据库实例名(SID)、数据库服务名和...然而,在复杂的Oracle部署中,理解这些概念的区别和用途是至关重要的,有助于确保数据的正确访问和系统稳定运行。

    oracle数据库迁移实例01

    ### Oracle数据库迁移实例01:Windows环境下通过镜像文件实现db_name与instance_name不一致的迁移 #### 环境概述 本案例介绍了一个特定场景下的Oracle数据库迁移过程,涉及的环境包括: - **源数据库**:Oracle 9.2...

    ORACLE 中的几个重点概念

    在Oracle数据库的管理和使用过程中,有几个重要的概念常常被提及,但有时也容易被混淆,这些概念包括:数据库名(DB_NAME)、数据库实例名(INSTANCE_NAME)、操作系统环境变量ORACLE_SID、数据库服务名(SERVICE_...

    oracle概念详解

    - **INSTANCE_NAME**是Oracle数据库参数,用于数据库内部管理。 --- #### 三、ORACLE_SID (System Identifier) **定义:** ORACLE_SID是系统标识符,作为一个环境变量用于操作系统层面与Oracle实例进行交互。 **...

    java zip insert oracle blob

    public void testInsertToDB... String outputName = ZipHelp.newInstance().fileToZip(path, fileName); //zip insert database DatabaseOperate.newInstance().insertToDBInputStream(path, outputName); }

    oracle database 10g RAC workshop 1

    在这个Oracle Database 10g RAC工作坊中,我们将深入探讨RAC的核心概念、安装配置以及日常管理。 1. RAC基础概念: - 实例(Instance):运行在操作系统上的数据库进程集合,负责处理SQL查询和事务。 - 服务...

    oracle实例名,数据库名,服务名等概念区别与联系.doc

    Oracle 数据库概念解释 Oracle 数据库中有多个概念经常让初学者...数据库名、实例名、数据库域名、全局数据库名、服务名等概念都是 Oracle 数据库中重要的概念,理解它们的区别和联系对于数据库管理和开发非常重要。

    Oracle10gDatabse-Views.docx

    DATABASE AND INSTANCE PERFORMANCE/DATABASE AND INSTANCE CONFIGURATION/HIGH AVAILABILITY AND RECOVERABILITY/BACKUPS/ARCHIVES/RECOVERY 等是 Oracle 10g Database Views 中的一些视图,提供了数据库和实例的...

    oracle10G_数据库名、实例名、ORACLE_SID_及创建数据

    数据库实例名(Instance Name)是数据库与操作系统之间进行通信的标识符,它被写入参数文件中,对应参数为`instance_name`。在Windows平台上,实例名同时也会被写入注册表。 **2.2 特点** - 数据库名与实例名可以...

    oracle 11g rac to one standby database

    1. 实例(Instance):Oracle实例由操作系统进程和内存结构组成,是数据库与用户交互的接口。它负责处理用户的请求,管理内存和进程,并访问数据库文件。 2. 数据库(Database):数据库包含数据文件、控制文件、...

    oracle名词解释

    - **INSTANCE_NAME**:Oracle数据库参数,标识实例。 - 两者必须一致,否则可能导致访问失败。 #### 三、数据库域名(Database Domain Name) **定义:** 数据库域名是数据库名称的一部分,通常用来标识数据库所在...

    oracle日常巡检命令集合

    使用命令`select instance_name, host_name, startup_time, status, database_status from v$instance;`可以检查Oracle实例状态。其中,`STATUS`表示Oracle当前的实例状态,必须为`OPEN`;`DATABASE_STATUS`表示...

    Oracle Database 日常手册维护

    Oracle Database 日常手册维护是数据库管理员(DBA)在日常工作中不可或缺的一部分,它涉及了数据库的启动、关闭、用户管理以及性能监控等多个方面。以下是对这些关键知识点的详细说明: 1. 登陆到数据库: 登陆到...

    Oracle数据库操作命令整理

    - `select name from v$database;`: 只查看数据库名称。 - `desc v$database;`: 查看v$database表的结构。 - **查询用户权限** - `select * from V_$PWFILE_USERS;`: 显示具有SYSDBA和SYSOPER权限的用户列表。 ...

    Oracle 12c启动和关闭新特性PDB

    Oracle 12c 引入了多租户环境(Multitenant Environment),这一特性允许在一个容器数据库(Container Database, CDB)中承载多个可插拔数据库(Pluggable Database, PDB)。这一特性极大地增强了数据库的管理效率和资源...

Global site tag (gtag.js) - Google Analytics