1.2.4 ORACLE_SID的含义
1.2.4 ORACLE_SID的含义
http://book.51cto.com 2007-09-04 10:47 盖国强 人民邮电出版社 我要评论(0)
摘要:《循序渐进Oracle——数据库管理、优化与备份恢复》第1章主要介绍的是Oracle数据库的创建,本节说
明了ORACLE_SID的含义。
标签:ORACLE_SID ORADIM 服务 Linux Oracle 循序渐进Oracle——数据库管理、优化与备份恢复
Oracle帮您准确洞察各个物流环节
1.2.4 ORACLE_SID的含义
注意到在ORADIM创建服务之前,首先设置了ORACLE_SID:
set ORACLE_SID=eygle
在Linux/UNIX系统的创建中,同样要设置ORACLE_SID,不过Linux/UNIX上不存在服务这项内容,实例是可以通过
参数文件直接启动的。
看一下Linux上正常情况下启动到nomount状态的过程: [oracle@jumper oracle]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ lsinitconner.ora init.ora lkCONNER orapwconner spfileconner.ora
spfile.ora[oracle@jumper dbs]$ export ORACLE_SID=conner[oracle@jumper dbs]$ sqlplus "/ as
sysdba"SQL*Plus: Release 9.2.0.4.0 - Production on Wed Nov 3 14:57:22 2004Copyright (c) 1982,
2002, Oracle Corporation. All rights reserved.Connected to an idle instance.SQL> startup
nomountORACLE instance started.Total System Global Area 80811208 bytesFixed Size
451784 bytesVariable Size 37748736 bytesDatabase Buffers 41943040
bytesRedo Buffers 667648 bytes
注意这里,Oracle根据参数文件的内容,创建了instance,分配了相应的内存区域,启动了相应的后台进程。
回顾一下前面的内容,注意到SID和ORACLE_SID已经多次出现,那么SID是什么?在数据库启动过程中又起到什么
作用呢?
SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System Identifier的缩写,在Oracle系统中,
ORACLE_SID以环境变量的形式出现,在特定版本的Oracle软件安装(也就是ORACLE_HOME)下,当Oracle实例启
动时,操作系统上fork的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作用。
Oracle的实例(instance)是由一块共享内存区域(SGA)和一组后台进程(background processes)共同组成
;而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
实例的启动仅需要一个参数文件,而这个参数文件的名称就是由ORACLE_SID决定的。对于init文件,缺省的文件
名称是init<ORACLE_SID>.ora,对于spfile文件,缺省的文件名为spfile<ORACLE_SID>.ora,Oracle依据
ORACLE_SID来决定和寻找参数文件启动实例,参数文件的缺省位置为$ORACLE_HOME/dbs(Windows上为
$ORACLE_HOME/database目录)。
spfile从Oracle 9i开始引入并成为了缺省使用的参数文件,Oracle启动实例时按照以下顺序从缺省目录查找参
数文件:spfile<ORACLE_SID>.ora→spfile.ora →init<ORACLE_SID>.ora。如果这3个文件都不存在,则Oracle
实例将无法启动。
通过这些信息可以知道,在同一个ORACLE_HOME下,Oracle能够根据ORACLE_SID将实例区分开来;但是如果在不
同的ORACLE_HOME下,Oracle将无法屏蔽相同名称的ORACLE_SID,也就是说即使在同一台主机上,Oracle也是能
够创建相同ORACLE_SID的实例的。
以下一个测试,首先启动一个Oracle8i下ORACLE_SID为eygle的实例: $ export ORACLE_SID=eygle$ sqlplus
"/ as sysdba"SQL*Plus: Release 8.1.7.0.0 - Production on Fri Feb 16 10:23:58 2007(c) Copyright
2000 Oracle Corporation. All rights reserved.Connected to an idle instance.SQL> startup
nomount;ORACLE instance started.<...ignore SGA info here...>SQL> ! ps -ef|grep eygleoracle8 11106
1 0 10:24:02 ? 0:00 ora_d000_eygleoracle8 11090 1 0 10:24:02 ? 0:00
ora_ckpt_eygleoracle8 11086 1 0 10:24:02 ? 0:00 ora_dbw0_eygleoracle8 11084 1 0
10:24:02 ? 0:00 ora_pmon_eygleoracle8 11092 1 0 10:24:02 ? 0:00
ora_smon_eygleoracle8 11088 1 0 10:24:02 ? 0:00 ora_lgwr_eygle……
接下来又可以启动另外ORACLE_HOME下ORACLE_SID为eygle的实例: $ export ORACLE_SID=eygle$ sqlplus "/
as sysdba"SQL*Plus: Release 9.2.0.4.0 - Production on Fri Feb 16 10:24:43 2007Copyright (c) 1982,
2002, Oracle Corporation. All rights reserved.Connected to an idle instance.SQL> startup
nomount;ORACLE instance started.<...ignore SGA info here...>SQL> ! ps -ef|grep pmon_eygleoracle9
11214 11172 0 10:24:58 pts/1 0:00 grep pmon_eygleoracle9 11180 1 0 10:24:48 ? 0:00
ora_pmon_eygleoracle8 11084 1 0 10:24:02 ? 0:00 ora_pmon_eygle
现在这同一台主机上就启动了两个相同名称的实例,在操作系统上,Oracle能够通过ID标识将共享内存或信号量
区分开来: $ ipcs -iIPC status from <running system> as of Fri Feb 16 10:30: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
通过Oracle提供的一个小工具sysresv,我们可以找到对应于不同的ORACLE_SID,操作系统上创建的共享内存段
ID(Shared Memory)和信号量ID(Semaphores)等信息。
$ sysresv -l eygle juliaIPC Resources for ORACLE_SID "eygle" :Shared Memory:ID
KEY2560 0x79552064Semaphores:ID KEY720896 0xa0e9f594Oracle
Instance alive for sid "eygle"IPC Resources for ORACLE_SID "julia" :Shared Memory:ID
KEY514 0xab281214Semaphores:ID KEY196610 0xa7645a54Oracle
Instance alive for sid "julia"
在Linux/UNIX上,ORACLE_SID还和一个名为oratab的文件有关,在Solaris环境中,这个文件一般位
于/var/opt/oracle目录下,在Linux及其他UNIX平台,这个文件一般位于/etc目录下。该文件的主要内容如下:
# This file is used by ORACLE utilities. It is created by root.sh# and updated by the Database
Configuration Assistant when creating a database.# A colon, ':', is used as the field terminator.
A new line terminates# the entry. Lines beginning with a pound sign, '#', are comments.## Entries
are of the form:# $ORACLE_SID:$ORACLE_HOME:<N|Y>:## The first and second fields are the system
identifier and home# directory of the database respectively. The third filed indicates# to the
dbstart utility that the database should , "Y", or should not,# "N", be brought up at system boot
time.## Multiple entries with the same $ORACLE_SID are not allowed.#*:/opt/oracle/product/9.2.0:N
当执行dbstart脚本时,Oracle会根据这里记录的ORACLE_SID的<N|Y>的设置来决定是否启动相关实例。
与Linux/UNIX上的情况类似,Windows上的Oracle环境也依赖于服务而存在,如图1-20。
图1-20Windows Oracle服务示意图
注意到Oracle环境的初始化是通过ORACLE.EXE eygle来完成的,至于实例和数据库是否随服务启动要依赖于注册
表中的设置。
通过手动在命令行执行类似命令,可以初始化任意的Oracle环境:
C:/>oracle juliaPress CTRL-C to exit server:
此后就可以连接到这个环境启动实例: C:/>set ORACLE_SID=juliaC:/>sqlplus "/ as sysdba"SQL*Plus:
Release 10.2.0.1.0 - Production on 星期六 2月 17 10:11:13 2007Copyright (c) 1982, 2005, Oracle.
All rights reserved.
已连接到空闲例程。 SQL> startup nomount;ORA-01078: failure in processing system parametersLRM-
00109: ???????????????? 'C:/ORACLE/10.2.0/DATABASE/INITJULIA.ORA'
当然还需要创建参数文件和口令文件等: C:/>cp c:/oracle/10.2.0/database/SPFILEEYGLE.ORA
c:/Oracle/10.2.0/database/spfilejulia.oraC:/>orapwd file=c:/oracle/10.2.0/database/PWDjulia.ora
password=oracle entries=5
此后,实例可以顺利启动,并可以挂接和打开数据库: C:/>sqlplus "/ as sysdba"SQL*Plus: Release
10.2.0.1.0 - Production on 星期六 2月 17 10:13:10 2007Copyright (c) 1982, 2005, Oracle. All
rights reserved.
已连接到空闲例程。 SQL> startup nomount;
ORACLE 例程已经启动。 <...ignore SGA info here...>SQL> set linesize 120SQL> show parameter
instance_nameNAME TYPE VALUE-------------------
----------------- ---------------------- ---------------instance_name
string juliaSQL> show parameter db_nameNAME TYPE
VALUE------------------------------- ------------------ ------------------------
------db_name string eygleSQL> alter database mount;
数据库已更改。 SQL> alter database open;
数据库已更改。
如果在环境窗口中按下CTRL+C组合键退出,则数据库将异常中断。
总结一下,实际上不管在Windows还是Linux/UNIX环境下,ORACLE_SID的作用就是设置一个Oracle环境窗口,通
过这个环境变量来标示和命名系统进程,此后Oracle的活动可以由此展开。
1.2.4 ORACLE_SID的含义相关推荐
- oracle中sid是什么意思,1.3.4 ORACLE_SID的含义(1)
1.3.4 ORACLE_SID的含义(1) 注意到在ORADIM创建服务之前,首先设置了ORACLE_SID: setORACLE_SID=eygle 在Linux/UNIX系统的创建中,同样要设 ...
- ORACLE_SID含义
1.2.4 ORACLE_SID的含义 http://book.51cto.com 2007-09-04 10:47 盖国强 人民邮电出版社 我要评论(0) 摘要:<循序渐进Oracle ...
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库...
数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...
- 【转】详解:oracle10G 数据库名、实例名、ORACLE_SID
[转载] 数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 ...
- AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1)
AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1) 适用于: Oracle Database Cloud Schema Service - 版本 N/A ...
- Java Calendar.add()方法的使用,参数含义。指定时间差。
cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...
- 通俗理解tf.nn.conv2d() tf.nn.conv3d( )参数的含义 pytorhc 卷积
20210609 例如(3,3,(3,7,7))表示的是输入图像的通道数是3,输出图像的通道数是3,(3,7,7)表示过滤器每次处理3帧图像,卷积核的大小是3 x 7 x 7. https://blo ...
- 三维刚体变化中Rcw,tcw的含义
高翔博士的<视觉SLAM十四讲>中,介绍Tcw指从世界坐标w到c的变换矩阵.但研一学机器人学的时候,讲T12的含义是,坐标系2相对于坐标系1的变换.于是一脸懵逼.昨天想了一晚上,有了一 ...
- 在建工程费用化处理_未确认融资费用和未实现融资收益的含义和区别
在融资的过程中,可能会涉及到未确认融资费用和未实现融资收益的概念.那这两者分别是什么含义呢?又有什么区别?下面大家和小编一起来看看两者之间的关系,希望能够帮助到大家. 未实现融资收益是指未收到租金并未 ...
最新文章
- 2021年大数据Kafka(二):❤️Kafka特点总结和架构❤️
- 链表问题7——判断一个链表是否为回文结构
- 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用...
- Ubuntu 使用root 帐号开启 SSH 登录
- 深入理解javascript原型和闭包
- 基于神经网络预测车道行驶的自动驾驶
- IOS10.8.2安装
- python作用域(scope)(三分钟读懂)
- IOS之导航控制器传值
- cache 的设计与实现
- oracle关联两个字段,oracle字符串连接函数,||使两个或多个字段拼成一个字段
- cad计算机画图标准,CAD画图某些常用尺寸及作图习惯
- 计算机开机显示器无显示器,电脑开机显示器显示无信号怎么办
- matlab怎么定义矩阵变量_MATLAB01:基本的数学运算与矩阵运算
- COM ---- Inside COM Note
- OpenStack单节点平台搭建
- Android集合之SparseArray、ArrayMap详解
- 转载 | 在阿里做了3年多程序员,我究竟学到了什么?
- 错误 '800a03ea'
- 数字图像处理2021.9.27—空域方法-滤波处理Filter subimage
热门文章
- 学运维能不能通过大厂面试,进来试试——面经总结(二)
- php微服务rpc选择,Dora RPC:PHP 的分布式 RPC,支持微服务、服务发现
- 华云数字实名认证图片_华云数据与安宁完成产品兼容互认证 携手推出安宁安全邮件系统联合解决方案...
- 判断exception类型_C++核心准则T.44:使用函数模板推断类模板参数类型(如果可能)...
- mdk编译后的HTML,[转载]keil MDK编译完成后,Program Size:
- shell 不等于_关于shell编程中的整数值比较的两种方式的简单操作实例
- matlab中-psi_matlab输出论文仿真图
- 钉钉api 获取 accesstoken_低代码快速对接钉钉日程
- python随机生成30个8_Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例...
- hbase scan超时设置_如何在优化生产环境的hbase