ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:20.60KB ,
资源ID:22197837      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22197837.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Oracle的ORACLESIDINSTANCENAMEDBNAMESERVER NAMETNSNAME的区别Word下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Oracle的ORACLESIDINSTANCENAMEDBNAMESERVER NAMETNSNAME的区别Word下载.docx

1、(c) Copyright 2000 Oracle Corporation. All rights reserved.Connected to an idle instance.SQL startup nomount;ORACLE instance started. ! ps -ef|grep ora_smon_eygleoracle8 11123 11076 0 10:24:15 pts/1 0:00 grep ora_smon_eygleoracle8 11092 1 0 10:02 ? 0:00 ora_smon_eygle 接下来又可以启动另外$ORACLE_HOME下ORACLE_S

2、ID为eygle的实例: Release 9.2.0.4.0 - Production on Fri Feb 16 10:43 2007Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.oracle9 11214 11172 0 10:58 pts/1 0:oracle9 11188 1 0 10:48 ? 现在这同一台主机上就启动了两个相同名称的实例,在操作系统上,Oracle能够通过ID标示将共享内存或信号量区分开来:$ ipcs -iIPC status fromas of Fri Feb 16 10:30

3、:02 CST 2007T ID KEY MODE OWNER GROUPMessage Queues:q 0 0x2e781d5 -rw-r-r- root rootT ID KEY MODE OWNER GROUP ISMATTCHShared Memory:m 4096 0xabdc9b64 -rw-r- oracle8 dba 12m 1025 0x79552064 -rw-r- oracle9 dba 11Semaphores:s 1245184 0x79978bac -ra-r- oracle8 dbas 458753 0xa0e9f594 -ra-r- oracle9 dba 通

4、过Oracle提供的一个小工具sysresv,我们可以找到对应于不同的ORACLE_SID,操作系统上创建的共享内存段ID(Shared Memory)和信号量ID(Semaphores)等信息:$ sysresv -l eygle juliaIPC Resources for ORACLE_SID eygle :ID KEY2560 0x79552064720896 0xa0e9f594Oracle Instance alive for sid julia514 0xab281214196610 0xa7645a54INSTANCE_NAME在数据库内部和ORACLE_SID相关联的概念就是

5、INSTANCE_NAME. Oracle数据库内部存在一个初始化参数INSTANCE_NAME,用于标示数据库实例的名称,其缺省值通常就是ORACLE_SID;但是初始化参数INSTANCE_NAME和ORACLE_SID可以不同,不同实例可以拥有相同的INSTANCE_NAME.在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校验INSTANCE_NAME参数;通过简单的参数文件复制,我们就可以在同一台服务器上创建多个具有相同instance_name的实例(注意以下测试来自Oracle9i数据库):bash-2.03$ cd $ORACLE_HOME/dbsba

6、sh-2.03$ cp initeygle.ora initjulia.orabash-2.03$ export ORACLE_SID=juliabash-2.03$ sqlplus Total System Global Area 303532408 bytesFixed Size 731512 bytesVariable Size 184549376 bytesDatabase Buffers 117440512 bytesRedo Buffers 811008 bytes 此时同一主机上就可以启动多个实例,ORACLE_SID不同,但是拥有了相同的instance_name: show

7、parameter instance_nameNAME TYPE VALUE- - -instance_name string eygle 但是注意,在数据库内部视图V$INSTANCE中也记录着一个INSTANCE_NAME,这个INSTANCE_NAME来自数据库实例的SID,始终和ORACLE_SID保持一致,这就可能出现数据库中这两个INSTANCE_NAME不一致的情况: select instance_name from v$instance;-julia- - - 所以存在这种歧义是因为在Oracle9i中,当创建数据库进行相关配置时,数据库将INSTANCE_NAME参数写入了

8、参数文件,这就导致了当我们修改参数文件名称变更ORACLE_SID时可能并不修改INSTANCE_NAME参数的情况;值得注意的是,从Oracle10g开始,参数文件中缺省不再记录INSTANCE_NAME,此时INSTANCE_NAME可以动态从系统获得,从而消除了以前可能常见的歧义:D:oracleproductgrep instance_name 9.2.0databaseSPFILEEEYGLE.ORA*.instance_name=eeyglegrep instance_name 10.2.0databaseSPFILEEYGLE.ORAgrep instance_name 11.1

9、.0databaseSPFILEEYGLEE.ORA INSTANCE_NAME除了用来标识实例名称之外,在监听器动态注册时还会用于向监听器注册。比如在一个数据库db_name=julia,instance_name=eygle的数据库中,监听器动态注册会包含如下信息,这里的Instance内容就来自INSTANCE_NAME参数设置:Services Summary.Service has 1 instance(s).Instance , status READY, has 1 handler(s) for this service. V$INSTANCE视图和数据库实例的生命周期相关,用于

10、显示当前实例的状态,通过这个视图可以获得包括实例的启动时间、运行主机等重要信息,通过以下一段SQL可以获得数据库的UPTIME信息: COLUMN STARTED_AT format a25 COLUMN UPTIME format a50 SELECT TO_CHAR (startup_time, DD-MON-YYYY HH24:MI:SS) started_at,2 TRUNC (SYSDATE - (startup_time)3 | day(s), | TRUNC ( 24 * (SYSDATE - startup_time) -4 TRUNC (SYSDATE - startup_t

11、ime)5 | hour(s), | MOD (TRUNC ( 1440 * ( (SYSDATE - startup_time) -6 TRUNC (SYSDATE - startup_time),60)7 | minute(s), | MOD (TRUNC ( 86400 * ( (SYSDATE - startup_time) -8 TRUNC (SYSDATE - startup_time),60)9 | seconds uptime10 FROM v$instance;STARTED_AT UPTIME- -05-JUL-2005 10:36:58 803 day(s), 2 hou

12、r(s), 27 minute(s), 55 secondsDB_NAME相较INSTANCE_NAME参数来说,对于Oracle数据库更为重要的一个参数是DB_NAME.DB_NAME代表了实例即将挂接的数据库名称,关系到具体的物理文件。通常缺省的数据库instance_name和db_name可以设置相同(在RAC环境下,由于多个实例对应一个数据库,所以instance_name和db_name不同)。 在创建数据库的过程中,下图是用于定义数据库名称(db_name)和影响INSTANCE_NAME的SID: Oracle文档中对于db_name的定义如下:DB_NAME用来定义数据库名称

13、,必须是一个不超过8个字符的文本串,在数据库创建过程中,db_name被记录在数据文件,日志文件和控制文件中。如果数据库实例启动过程中参数文件中的db_name和控制文件中的数据库名称不一致,则数据库不能启动。 此外常见的几个结论有: 1. 一个实例可以mount并打开任何数据库,但是同一时间一个实例只能打开一个数据库 2. 一个数据库可以被一个或多个实例所mount并打开(在OPS/RAC环境下,一个数据库可以被多个实例所打开)。 DB_NAME的另外一个作用是在监听器动态注册时作为缺省服务名注册,以下是Oracle10g的动态注册监听示范: 通过下面的测试来看一下DB_NAME与数据库的关

14、系。首先initeygle.ora文件代表了一个数据库实例:oraclejumper oracle$ cd $ORACLE_HOME/dbsoraclejumper dbs$ grep name initeygle.ora*.db_name=eygle 这个实例以及当前数据库的相关参数如下: show parameter db_name- - -db_name string eygle 现在创建另外一个实例,通过复制创建一个pfile文件为名为julia这个新的实例使用:oraclejumper dbs$ cp initeygle.ora initjulia.oraoraclejumper d

15、bs$ ll init*-rw-r-r- 1 oracle dba 982 Jul 25 14:03 initeygle.ora04 initjulia.ora 修改这个文件,更改instance_name参数,设置instance_name = julia,修改后的参数设置如下所示:oraclejumper dbs$ grep name initjulia.orajulia 现在来启动这个实例名称为julia的instance:oraclejumper dbs$ export ORACLE_SID=juliaoraclejumper dbs$ sqlplus startup mount;To

16、tal System Global Area 139531744 bytesFixed Size 452064 bytesVariable Size 121634816 bytesDatabase Buffers 16777216 bytesRedo Buffers 667648 bytesORA-01102: cannot mount database in EXCLUSIVE mode 注意,当试图加载数据库时出现错误,因为当前数据库被另外一个实例(instance)加载。在非并行模式(Ops/RAC)下,一个数据库同时只能被一个实例加载。 此时已经启动了两个数据库实例,从后台进程可以看出

17、:oraclejumper dbs$ ps -ef|grep dbworacle 27323 1 0 Jul14 ? 00:00:00 ora_dbw0_eygleoracle 15447 1 0 14:04 ?00 ora_dbw0_juliaoracle 25030 25000 0 18:38 pts/2 00:00 grep dbw 关闭eygle这个数据库实例:oraclejumper dbs$ export ORACLE_SID=eygle shutdown immediate; 然后就可以通过实例julia加载并打开db_name=eygle的数据库了,这也就是前面所说的,一个数据

18、库可以被任何一个实例挂接打开(当然是有条件限制的): alter database mount;alter database mount*ERROR at line 1:ORA-01990: error opening password file /opt/oracle/product/9.2.0/dbs/orapwORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3 alter database open;Database altere

19、d. select name from v$datafile;NAME-/opt/oracle/oradata/eygle/system01.dbf/opt/oracle/oradata/eygle/undotbs01.dbf/opt/oracle/oradata/eygle/users01.dbf/opt/oracle/oradata/eygle/eygle01.dbfinstance_name string julia 进一步的,再来研究一下如果参数文件中的db_name和控制文件中的db_name不一致会出现什么错误。 修改参数文件中的db_name参数: 在nomount环节不存在任何

20、问题,而在mount阶段,数据库会对参数文件和控制文件进行比较,如果两者记录的db_name不一致,则数据库无法启动,错误提示指定的数据库名称和控制文件中记录的名称不符:ORA-01103: database name EYGLE in controlfile is not JULIASERVER NAMEService Name:服务名,如果数据库有域名则等同于Global DB Name、没有的话则等同于数据库名,这是因为数据库启动后会自动把数据库名注册到监听成为服务名,同时数据库参数service_names也会注册为服务名,所以一个数据库可以有多个服务名。当在Oracle客户端连接服务器的时候,主机字符串应该使用服务名。TNSNAME网络服务名,也有人叫TNS别名、网络连接串(connect string),在tnsnames.ora中配置的名称,如下面例子的DBTNS。sqlplus sys/sysorcl as sysdba(这种连法会根据tnsnames.ora中配置的网络服务名连接到本机或者远程的oracle,走的是网络通信)看看数据库参数设置: NAME

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1