ORACLE数据库与实例的关系
基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

基础概念:Oracle数据库、实例、用户、表空间、表之间的关系数据库:Oracle数据库是数据的物理存储。
这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。
其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。
可以看作是Oracle就只有一个大数据库。
实例:一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。
一个数据库可以有n个实例。
用户:用户是在实例下建立的。
不同实例可以建相同名字的用户。
表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件(dbf、ora):数据文件是数据库的物理存储单位。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。
但是表不是有表空间去查询的,而是由用户去查的。
因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!关系示意图:理解1:Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:理解2:理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。
oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。
Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。
Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。
也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。
我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。
就像Java中new出来的实例对象⼀样。
我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。
oracle sid与实例

oracle sid与实例
Oracle中的SID(System Identifier)是一个唯一标识数据库实例的字符串。
它用于在数据库环境中区分不同的数据库实例。
每个Oracle数据库实例都会分配一个唯一的SID,以便在系统上唯一标识该实例。
在Oracle数据库中,SID用于标识一个特定的数据库实例,并与该实例相关联。
它是Oracle实例名的一部分,通常与实例名一起使用,以唯一标识一个数据库实例。
要查找Oracle数据库的SID,可以使用多种方法。
其中一种常见的方法是查询Oracle的动态性能视图(Dynamic Performance Views),例如v$instance视图。
通过查询该视图,可以找到包含SID信息的记录。
此外,还可以通过其他工具和命令来查找Oracle数据库的SID。
例如,可以使用Oracle的SQL*Plus工具,并通过管理员权限连接到数据库,然后执行相应的查询命令来获取SID信息。
需要注意的是,SID是数据库系统的重要组成部分,并且对于数据库的管理和维护至关重要。
因此,在管理Oracle数据库时,需要正确配置和识别SID,以确保数据库的正常运行和管理。
oracle 数据库物理结构

数据文件和表空间有着密切的关系,Oracle 数据 库至少要包含一个数据文件,并且数据文件是表 空间的物理组成元素,一个表空间可以包含多个 数据文件,并且每个数据文件只能惟一地属于某 个表空间。 关于“表空间”在后面会给大家详细介绍。
但如果执行介质恢复(例如数据文件意外丢失) ,则必须要用到归档日志。归档日志是非活 动重做日志的备份,数据库只有处于 ARCHIVELOG 模式时才会生成归档日志,并且 每次日志切换都会生成归档日志。
如图所示:
假定数据库只包含两个日志组,并且处于 ARCHIVELOG 模式。初始阶段LGWR 会将事务 变化写入到日志组一,当日志组一写满之后 ,LGWR 会将事务变化写入到日志组二中, 并且会促使ARCn 进程将日志组一的内容保存 到归档日志中,依此类推。
2.6.1 连接和建立会话
当客户应用需要执行SQL 语句时,首先要建立用户进程 ,同时在服务器端会自动为该用户进程派生一个新的 服务进程。默认情况下,用户进程与服务器进程是一 一对应的关系。 当客户端运行SQL 语句时,用户进程会通过网络将该 SQL 语句发送到对应的服务进程,并且由服务进程执行 该SQL 语句,服务器进程在执行了SQL 语句之后,会将 SQL 语句的结果通过网络返回到用户进程。
2.5.3 区(Extents)
数据区间简称为区,区是为段分配空间的逻辑单位 ,Oracle 在分配空间时,并不是以块为单位进行的 ,而是将多个连续的块一次性的分配给数据库对象 。这些连续的块在回收存储
空间时,也一起回收。这些连续的数据块就是数据 区间。 当创建一个数据库对象时,Oracle为这些对象创建一 个段,并分配初始区。当段中的初始区的存储空间 使用完毕后,Oracle会为段自动分配新的区,每个区 的大小不要求相同
Oracle数据库名、实例名、Oracle_SID

Oracle数据库名、实例名、Oracle_SID本⽂参考⾃,纯属读书笔记,加深记忆在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。
在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。
这些都存在于同⼀个数据库中的标识,⽤于区分不同数据库的参数。
1、数据库名数据库名是⽤于区分数据的标识,是以⼆进制形式存储于数据库控制⽂件中的参数,在数据库安装或者创建之后不得修改,在数据库创建之后,该参数将被写⼊到数据库控制参数⽂件pfile中,其基本格式如下:.........db_name="orcl" #(不允许修改)db_domain=instance_name=orclservice_names=control_file=(........................注:每⼀个运⾏Oracle 8i及以上的数据库都有⼀个数据库名。
但如果服务器程序创建了两个数据库,那么就会有两个数据库名,它们分别存储与不同的数据库控制参数⽂件pfile中,分别控制着对应的数据库。
2、数据库实例名数据库实例名是⽤于和操作系统之间的联系,⽤于对外部连接时使⽤。
在操作系统中,要取得于数据库之间的联系必须通过实例名。
⽐如:要和某⼀个数据库Server进⾏连接,必须通过实例名,只知道数据库名是没⽤的,与数据库名不同的是,数据库实例名在数据库的安装或者创建之后,是可以被修改的。
数据库在安装之后,对应的实例名会被写⼊到数据库控制参数⽂件pfile(格式如下代码块)中,可以通过修改这个⽂件,来修改Oracle数据库的实例名,当然,数据库名是不能修改的!db_name="orcl" #(数据库名:不允许修改)db_domain=instance_name=orcl #(数据库实例名:可以修改,可以与db_name相同也可不同)service_names=control_file=(........................3、数据库名和实例名之间的关系a、数据库名于实例名之间的关系⼀般是⼀⼀对应,有⼀个数据库名,就有⼀个实例名。
ORACLE数据库与实例的关系

ORACLE数据库与实例的关系1 数据库名1.1 数据库名的概念数据库名(db_nam e)就是一个数据库的标识,就像人的身份证号一样。
如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。
在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。
数据库名在$O racle_HOME/admin/db_nam e/pfile/init.ora(或$ORACLE_BASE/admin/db_nam e/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实例名>.ORA)文件中############################################ Databa se Identi ficat ion###########################################db_dom ain=""db_nam e=orcl在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。
因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。
假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。
但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
1.2 数据库名的作用数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用s i d,还有alte r databa se时都是使用数据库名)。
有很多Oracle安装文件目录是与数据库名相关的,如:winnt: F:\oracle\produc t\10.2.0\oradat a\DB_NAM E\...又如参数文件p file:winnt: F:\oracle\produc t\10.2.0\admin\DB_NAM E\pfile\init.ora.54200885729如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create contro lfile命令创建控制文件,当然这个命令中也要指明D B_NA ME。
ORACLE_SID

详解:oracle10G 数据库名、实例名、ORACLE_SID【转载】数据库名、实例名、数据库域名、全局数据库名、服务名,这是几个令很多初学者容易混淆的概念。
相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。
我们现在就来把它们弄个明白。
一、数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样。
他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。
在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。
格式如下:DB_NAME=myorcl...在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。
因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。
假设用户修改了参数文件中的数据库名,即修改DB_NAME 的值。
但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
数据库名的作用数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
有很多Oracle安装文件目录是与数据库名相关的,如:winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\...Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...pfile:winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.oraUnix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora跟踪文件目录:winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。
oracle 连接实例名

oracle 连接实例名Oracle 连接实例名是什么意思呢?这其实是在数据库中,用于标识一个具体的数据库实例的名称。
在Oracle数据库中,每个实例都有一个唯一的实例名,用于区分不同的数据库实例。
下面我将以人类的视角,用丰富多样的词汇来描述Oracle连接实例名的相关内容。
我们来了解一下Oracle数据库。
Oracle数据库是一种关系型数据库管理系统,被广泛应用于企业级应用和大型数据处理。
它具有高度可靠、高性能和可扩展性等特点,被许多企业和组织用于存储和管理大量的数据。
在Oracle数据库中,每个实例都有一个唯一的实例名。
实例名是一个用于标识数据库实例的字符串,一般由字母、数字和下划线组成。
实例名在数据库启动时指定,并在整个数据库生命周期中保持不变。
通过实例名,我们可以在网络中唯一地标识一个特定的Oracle数据库实例。
Oracle连接实例名在数据库开发和管理中起着非常重要的作用。
当我们需要连接到一个Oracle数据库实例时,需要使用实例名来建立连接。
连接实例名是连接字符串的一部分,它告诉数据库驱动程序要连接到哪个数据库实例。
通过连接实例名,我们可以在网络中准确定位一个数据库实例,并与之进行通信。
连接实例名通常由三部分组成:主机名、端口号和实例名。
主机名是指Oracle数据库所在的主机的名称或IP地址。
端口号是指数据库监听器所使用的端口号,用于接收客户端的连接请求。
实例名是用于标识一个具体的数据库实例的名称。
例如,假设我们要连接到一个名为"orcl"的Oracle数据库实例,该实例位于主机名为"localhost"的主机上,监听器使用的端口号为1521。
那么连接实例名可以表示为:"localhost:1521/orcl"。
通过这个连接实例名,我们可以建立与该数据库实例的连接,并进行数据操作。
总结一下,Oracle连接实例名是用于标识一个具体的数据库实例的名称,通过连接实例名,我们可以在网络中准确定位一个数据库实例,并与之进行通信。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE数据库与实例的关系
1 数据库名
1.1 数据库名的概念
数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。
如果一台机
器上装了多个数据库,那么每一个数据库都有一个数据库名。
在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。
数据库名在$Oracle_HOME/admin/db_name/pfile/init.ora(或
$ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实
例名>.ORA)文件中
###########################################
# Database Identification
###########################################
db_domain=""
db_name=orcl
在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。
因为,数据库名还被写入控制文件中,控制文件是
以二进制型式存储的,用户无法修改控制文件的内容。
假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。
但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
1.2 数据库名的作用
数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。
有很多Oracle安装文件目录是与数据库名相关的,如:
winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...
又如参数文件pfile:
winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729
如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个
命令中也要指明DB_NAME。
1.3 修改数据库名
建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。
是区分数据的内部标识(即是给Oracle数据库内部
使用的),因为其在数据库多处保存,并且控制文件中保存的是二进制的,所以很难改变其名字。
在已创建数据之后,修改数据库名。
步骤如下:
(1)关闭数据库。
(2)修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
(3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)
1.4 查询当前数据库名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)
2 数据库实例名(instance name)
2.1 数据库实例名的概念(instance_name)
实例名是代表用于加载或打开一个数据库所用的memory structures + Background process (MEM + BGP)。
在unix中,实例名由ORACLE_SID环境变量定义,在windows中由服务名定义。
可以用于连接字符串中,这种用法用于8i版本前,虽
然10g仍然支持,但是并不推荐,因为这种方法缺乏对某些新特性的支持。
实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进
程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联
的数据库,没有任何数据文件也可以启动实例。
下面是Oralce的启动过程:
sqlplus / as sysdba
sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库
外所有的东西都启动了
sql>alter database mount #利用控制文件(init.ora文件中指定)定位重作日志文件、
数据文件、临时文件
sql>alter database open #数据库可供任何人通过这个实例访问。
所以可以这么理解:访问Oracle都是访问一个实例,但这个实例如果关联了数据
库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
实例名指的是用于响应某个数据库操作的数据库管理系统的名称,也叫SID。
实例
名是由参数instance_name决定的。
如果这个参数不被指定(即instance_name没有
被指定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里
是大写)决定。
在windows平台下,则是注册表中oracle_sid值决定。
实例名和SID是一一对应的,名字相同,但存储位置不同。
2.2 实例和数据库
实例和数据库之间的区别如下:
(1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在。
(2)一个实例在其生存期内可安装和打开单个数据库;数据库可以被很多实例安
装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)。
简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每台机器运行一个实例,每个实例都打开同一个数据库(这个是用磁盘共享
技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。
数据库实例名(instance_name)用于对外部连接。
在操作系统中要取得与数据库的联系,必须使用数据库实例名。
例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。
与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。
数据库名和实例名可以相同也可以不同。
在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系(一个数据库对应多
个实例,同一时间内用户只与一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存,这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做
日志文件和控制文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。
大多数情况下,反过来也成立:一个数据库上只有一个实例对其进
行操作。
不过,Oracle的应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可
以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。
由此,
我们可以同时从多台不同的计算机访问这个数据库。
Oracle RAC能支持高度可用
的系统,可用于构建可扩缩性极好的解决方案。
2.3 查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance。