`
xukenetwork
  • 浏览: 73948 次
  • 性别: 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)

        )

      )

    )

  )

分享到:
评论

相关推荐

    java zip insert oracle blob

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

    最全的oracle常用命令大全.txt

    ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种...

    oracle rac日常基本维护命令

    Service orcltest is running on instance(s) orcl2, orcl1 特定节点上节点应用程序的状态 $ srvctl status nodeapps -n linux1 VIP is running on node: linux1 GSD is running on node: linux1 Listener is ...

    oracle views 10g

    The V$ views that have been changed in Oracle Database 10g are identified by the symbol “(*)” after the name of each view (a change is the addition, renaming or deletion of columns). Also, there is...

    Oracle 主要配置文件介绍

    以下是一些主要参 数的说明 1 实例的数据库名称 db_name = "cams" 2 实例名称 instance_name = cams 3 数据库控制文件的名称和位置 control_files = ("/u02/app/oracle/oradata/cams/...

    Oracle 认证学习笔记

    一个oracle实例(instance)只能与一个运行的oracle数据库相联系。 1.1 oracle存储器结构 oracle使用共享内存区和后台进程来管理其内存和文件结构。 1.1.1 系统全局区(sga) 一、系统全局区的大小可以通过如下...

    Oracle事例

    20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); <2> 对第1个字段...

    JDBC连接各种数据库字符串大全

    DatabaseName=mydb"; //mydb为数据库 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); // for SQL Server 2008/2005 String DBDriver=...

    orcale常用命令

    ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种...

    Oracle数据库基本常用命令汇总

    2、ORACLE数据库的计算机的主机名,ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息SELECT host_name, instance_name, version FROM v$instance; 3、为了知道oracle数据库版本的一些特殊信息select * from v$...

    Oracle9i的init.ora参数中文说明

    值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: 从 NLS_TERRITORY 中获得 nls_date_language: 说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。...

    OraGlance:一个轻量级的 oracle 性能监控工具-开源

    将 v_$database 上的选择授予 $USER_NAME; 将 gv_$instance 上的选择授予 $USER_NAME; 将 gv_$statname 上的选择授予 $USER_NAME; 将 gv_$sysstat 上的选择授予 $USER_NAME; 将 gv_$osstat 上的选择授予 $USER_...

    监控oracle数据DG状态超详细版

    on,status,database_status from v$instance; ********** 数 据 库 状 态 ********************* mode from v$database; ********** 控 制 文 件 状 态 ****************** controlfile; ********** 日 志 文 件 ...

    oracle非归档不停机迁移数据的方法—expdp/impdp

    select instance_name,host_name,startup_time,status,database_status from v$instance;  2.查看用户和默认表空间的关系。select username, DEFAULT_TABLESPACE from dba_users;  3.切换到你需要导出的...

    Java 连接多种数据库代码参考

    DatabaseName=mydb"; //mydb为数据库 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase数据库 Class.forName(...

    数据库管理系统检查命令清单.docx

    select instance_name from v$instance; Mysql 数据库管理系统检查命令清单全 共2页,当前为第2页。数据库管理系统检查命令清单全文共2页,当前为第2页。Mysql数据管理系统测评检查命令 数据库管理系统检查命令清单...

    Oraclet中的触发器

    行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它...

    ORACLE 数据库RMAN备份恢复

    机器A: select instance_name from v$instance; select name from v$database; select name from v$datafile; 查询日志模式: archive log list; shutdown immediate; startup mount; 把日志改为归档模式: alter ...

    pb常见问题汇总精编

    选择协议TCP/IP,输入TCP/IP主机名(TCP/IP Host Name),可为主机名或IP地址输入数据库名(Database Instance)如ora7。单击“确定”按钮,生成数据库别名(hello)后,按“取消”退出。连接数据库,测试SQL*Net是否...

    Mysql,SQL Server 2000,Oracle四种数据库的连接

    DatabaseName=books","sa",""); Statement stmt=con.createStatement(); ResultSet rst=stmt.executeQuery("select * from book"); while(rst.next()) { out.println("<tr>"); out.println("<td>"+rst....

Global site tag (gtag.js) - Google Analytics