ORACL中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍
来源:互联网 发布:织梦cms二次开发 编辑:程序博客网 时间:2024/06/07 19:46
第一章 ORACL中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍
Oracle内存在很多特殊意义的名字或者变量:ORACLE_SID,DB_NAME,INSTANCE_NAME,SERVICE_NAME,GLOBAL_DBNAME.
1.ORACLE_SID:(ORACLE SYSTEM IDENTIFIER)
以环境变量的形式出现的。
Oracle实例是由SGA和一组后台进程组成的,实例的创建和启动需要一个参数文件,而参 数文件的名称就是由ORACLE_SID决定的。对于init文件,缺省的文件名称是init<ORACLE_SID>.ora,对于 spfile文件,缺省的文件名称是spfile<ORACLE_SID>.ora
设置不同的ORACLE_SID值,就可以默认使用不同的参数文件启动不同的数据库实例。
另外,ORACLE_SID的作用远远不是作为一个实例入口这么简单的,在实例启动后,实例名称INSTANCE_NAME也是从ORACLE_SID得到的。
2.INSTANCE_NAME:
实例名称,这是Oracle实例的名字,用来区分不同的实例。在Oracle9i之前,该名字存储在两个地方:参数文件和数据库的内部试图(V$INSTANCE).
而在Oracle10g之后的版本中,该名字不再出现在参数文件中,而是动态从系统中获得,默认是取自ORACLE_SID。
INSTANCE_NAME的作用除了区别不同实例之外,在监听器动态注册时,还会用于向监听器注册。比如instance_name=kanon,监听中将动态注册Instance "kanon",status READY信息。
3.DB_NAME:
DB_NAME概念相比于INSTANCE_NAME要重要的多,它决定实例将挂在的数据文件。它出现在数据文件,控制文件,日志文件中。在参数文件中也出现,且必须出现。这个参数涉及到系统的物理文件。
4.SERVICE_NAME和GLOBAL_DBNAME:
这两个参数之所以放在一起讲,是因为他们往往是成对出现的。SERVICE_NAME出现在Tnsnames.ora文件中,是客户端要请求的服务名。
GLOBAL_DBNAME 出现在Listener.ora文件中,是服务器提供的服务名,可以通过show paramerer service_names查看,并可以通过alter system set service_name='servicename' scope=both来修改。
二者对应,实现了Listerner.ora/Tnsnames.ora的重要功能----监听、请求与验证。
总结:一条startup命令,究竟是如何启动庞大的oracle数据库的呢?下面我们来贯穿起来整个启动流程,一探究竟:
首先,系统接收到startup命令,立刻采取行动,取得环境变量ORACLE_SID的值,启动第一阶段--实例创建。系统根据找到的参数文件启动 ORACLE数据库实例,实例启动后,一切由实例接管:注册INSTANCE_NAME,往往INSTANCE_NAME就是来自ORACLE_SID, 接着向监听器动态注册实例自己,并将INSTANCE_NAME写入系统数据字典表,
接下来,实例进一步读取参数文件,取得DB_NAME、控制文件、检查点等信息,进入第二阶段--挂载数据库。实例从控制文件中取得DB_NAME,并取 得数据文件、日志文件等信息,进行DB_NAME的一致性检验、文件的存在性判断等工作之后,实例将挂载数据库,挂载的数据库就是DB_NAME指定的数 据库。
最后,实例进入第三阶段--启动数据库。这一阶段,实例进行了两项检查:检查点和更改点检查,之后启动数据库。
http://space.itpub.net/12361284/viewspace-141152
上午的时候抽时间做了一个测试,并再一次证明service_name,instance_name以及db_domain在我们参数文件中的重要性,由于实验步骤较多,没有一一记录下来,下面总结一段文字用于备忘:
init.ora 中的instance_name是可以设置的,这个大家都知道是没有错误的,但是这个和我们ORACLE_SID又有什么区别呢?其实还是有一些区别 的,ORACLE_SID就是系统表示符,这个环境变量就是要告诉OS,我要读取那个init.ora文件或者spfile来启动我的Oracle instance,比如set ORACLE_SID=mylife,这个时候当我连入Oracle后,运行startup,那么Oracle就会寻找spfilemylife.ora 或者initmylife.ora这样的参数文件,并启动我的instance,在数据库成 功open后,我们可以通过select instance_name from v$instance来观察这个已经记录的SID,这个时候我们也可以show parameter instance_name来观察这个值,没错都是mylife,一般来讲,我们启动instance所加载的pfile或者spfile中也记录了一个 instance_name这个参数,但是这个参数一般没有显示的列出,因此我们可以手动的去加上这个参数或者修改这个参数,把这个参数的值改为和 mylife不相同的一个值mylove,这个时候再重新启动数据库,会发现show parameter和select instance_name from v$instance的方式有两个不同的值分别是mylove和mylife,如果我们的tnsnames.ora中的文件是以sid方式来寻找服务,那 么这个sid 的值就不是mylife了,而要改为mylove.恩,大体上就是这个意思。还没有深入研究太多,对于大多数用户来讲,理解这些就足够了。
再 说一下service_name,如果我们的参数文件中记录了db_domain比如是cn.ibm.com,那么service_name默认就是 db_name+db_domain,但是我们完全可以修改这个值,原先数据库的service_name=icmnlsdb.cn.ibm.com,现 在比如我在pfile中显示的指定service_names=abc,重启database后,这个service_name就变为了abc,而不是先 前的icmnlsdb.cn.ibm.com了,那么在tnsnames.ora中的service_name列,我就要指定这个值为 abc+db_domain.注意不是service_name+db_domain,因为我的service_name在修改后是不带domain标识 的,那么如果db_domain为空的话,tnsnames.ora文件中的service_name就直接可以写为abc了。大体就是这个意思,解释的 有点饶,但是总算可以从这条路中走出来了。
最后一点,lsnrctl status我们随时观察一下listener的状态,看看他到底有什么变化。很有意思的。
http://zhaizhenxing.blog.51cto.com/643480/134560
- ORACL中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍
- ORACLE中的db_name,service_name,instance_name,oracle_sid,global_dbname
- 《深入解析ORACLE》学习笔记(3)---ORACLE中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍
- oracle中的db_name,servcie_name,instance_name,oracle_sid,global_dbname
- ORACLE_SID, SID, INSTANCE_NAME, SERVICE_NAME, SERVICES_NAMES, DB_NAME, GLOBAL_DBNAME, SID_NAME迷糊了吗?
- db_name,instance_name,ORACLE_SID,db_domain,global_name,service_name,net_service_name
- db_name、db_domain、service_name、global_name、instance_name、oracle_sid
- db_name、db_domain、service_name、global_name、instance_name、oracle_sid
- ORACLE DB_NAME ,GLOBAL_NAME,INSTANCE_NAME,ORACLE_SID,Service_NAME
- db_name,Oracle_sid, instance_name, service_name和sid的含义
- 搞清概念:db_name,instance_name,ORACLE_SID,db_domain,global_name,service_name,net_service_name
- 搞清概念:db_name,instance_name,ORACLE_SID,db_domain,global_name,service_name,net_service_name
- ORACLE_SID,INSTANCE_NAME,DB_NAME
- Oracle db_name instance_name oracle_sid
- ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
- oracle 的ORACLE_SID、INSTANCE_NAME、DB_NAME
- 修改hostname,db_name,instance_name.service_name作用
- DB_NAME、DBID、DB_UNIQUE_NAME、SERVICE_NAME、SID、INSTANCE_NAME、GLOBAL_DATABASE_NAME
- NOIP2017前恢复性训练
- Android笔记—通过SharedPreferences将List<Map<String, String>>进行存储
- 51nod 1503 猪和回文(双线DP)
- ios view的frame和bounds之区别(位置和大小)
- 负载均衡-00-感想
- ORACL中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍
- Winter Is Coming(贪心)
- webservice简介
- [笔记]《操作系统精髓与设计原理》---(6)处理器调度
- node.js 89行爬虫爬取智联招聘信息
- c 语言字符串和变量拼接
- Android studio 修改module名报错
- Resources加载资源
- Qt问题集锦