ORACLE数据库与实例的关系
- 格式:docx
- 大小:16.70 KB
- 文档页数:4
基础概念: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数据库和数据库实例。
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(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_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数据库与实例的关系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。
详解: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数据库所在的主机的名称或IP地址。
端口号是指数据库监听器所使用的端口号,用于接收客户端的连接请求。
实例名是用于标识一个具体的数据库实例的名称。
例如,假设我们要连接到一个名为"orcl"的Oracle数据库实例,该实例位于主机名为"localhost"的主机上,监听器使用的端口号为1521。
那么连接实例名可以表示为:"localhost:1521/orcl"。
通过这个连接实例名,我们可以建立与该数据库实例的连接,并进行数据操作。
总结一下,Oracle连接实例名是用于标识一个具体的数据库实例的名称,通过连接实例名,我们可以在网络中准确定位一个数据库实例,并与之进行通信。
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篇1. 请简述Oracle数据库的体系结构,并说明各层的作用。
2. 请解释什么是Oracle实例?实例与数据库之间的关系是什么?3. 请简述Oracle数据库的存储结构,包括数据文件、控制文件、日志文件等。
4. 请说明Oracle数据库的内存结构,包括SGA、PGA等。
5. 请解释Oracle数据库的备份策略,包括全备份、增量备份、差异备份等。
6. 请说明Oracle数据库的恢复策略,包括不完全恢复、完全恢复等。
7. 请解释Oracle数据库的事务管理,包括事务的ACID特性。
8. 请说明Oracle数据库的锁机制,包括共享锁、排他锁等。
9. 请解释Oracle数据库的并发控制,包括多版本并发控制(MVCC)。
10. 请说明Oracle数据库的安全机制,包括角色、权限、用户等。
二、SQL语言1. 请简述SQL语言的组成,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等。
2. 请说明如何创建一个简单的表,包括表结构、字段类型、约束等。
3. 请编写一个查询语句,查询某个表中所有年龄大于30岁的记录。
4. 请编写一个更新语句,将某个表中年龄大于40岁的记录的年龄加1。
5. 请编写一个删除语句,删除某个表中年龄小于20岁的记录。
6. 请编写一个插入语句,插入一条记录到某个表中。
7. 请说明如何使用SQL语句实现分页查询。
8. 请说明如何使用SQL语句实现多表查询。
9. 请说明如何使用SQL语句实现子查询。
10. 请说明如何使用SQL语句实现联合查询。
三、Oracle高级特性1. 请解释什么是视图?如何创建视图?2. 请解释什么是索引?有哪些常见的索引类型?3. 请解释什么是触发器?如何创建触发器?4. 请解释什么是存储过程?如何创建存储过程?5. 请解释什么是函数?如何创建函数?6. 请解释什么是包?如何创建包?7. 请解释什么是序列?如何创建序列?8. 请解释什么是同义词?如何创建同义词?9. 请解释什么是物化视图?如何创建物化视图?10. 请解释什么是分区表?如何创建分区表?四、Oracle性能优化1. 请说明如何查看Oracle数据库的性能统计信息。
1.Oracle得到广大用户的青睐原因在于:支持多用户、大事务量的事务处理、提供标准操作接口、实施安全性控制和完整性控制、支持分布式数据处理、具有可移值性、可兼容性和可连接性。
数据库新特性:网络计算、真正集群技术、自动存储管理、数据库自动管理、高可用性、超大型数据库支持、闪回查询与闪回操作、物化视图与查询重写、数据泵2.数据库的应用系统结构主要分为4种:客户机/服务器结构(c/s:两层结构,客户机与服务器可采用不同的软硬件系统,应用于服务分离安全性高)、浏览器/服务器结构(b/s:三层结构,通过web服务器处理应用程序逻辑,方便了应用程序的维护和升级)、分布式数据库系统结构(数据分布,数据共享,兼容性好,网络扩展性好)、终端-服务器结构(便于集中管理,系统安全性高,网络负荷低)。
3.数据库服务器企业版、标准版、个人版区别:①企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序②标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:③个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。
4.数据库系统服务有:作业管理服务,数据库控制台服务,isql*plus管理服务,网络监听服务,实例服务。
5.创建数据库的方法的比较:①使用数据库配置助手(DBCA)创建:是Oracle提供的用于创建数据库的图形界面工具,内置数据库模板,可以直观快速地创建数据库,适合初学者。
②运行脚本手动创建:使用create database 语句和Oracle预定义脚本手动创建数据库,比DBCA方式具有更大的灵活性和效率,适合有经验的DBA7. 数据库启动步骤:①创建并启动实例:根据数据库初始化参数文件,为数据库创建实例,启动一系列后台进程和服务进程。
刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现?ORACLE实例= 进程+ 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!数据库= 重做文件+ 控制文件+ 数据文件+ 临时文件数据库是永久的,是一个文件的集合。
ORACLE实例和数据库之间的关系1.临时性和永久性2.实例可以在没有数据文件的情况下单独启动startup nomount , 通常没什么意义3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!下面对实例和数据库做详细的诠释:在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。
作为Oracle术语,这两个词的定义如下:q 数据库(database):物理操作系统文件或磁盘(disk)的集合。
使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
q 实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。
这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。
就算没有磁盘存储,数据库实例也能存在。
也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
这两个词有时可互换使用,不过二者的概念完全不同。
实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。
实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!稍后就会介绍这样的一个例子。
Oracle服务器硬件配置一,单机模式这是最常见的模式,Oracle服务,数据存储设备都安装在同一台机器上。
二,集群模式这种模式,至少需要两台服务器和一个数据存储设备。
这张就是Oracle 9i的架构全图。
看上去,很繁杂。
是的,是这样的。
现在让我们来梳理一下:一、数据库、表空间、数据文件1.数据库数据库是数据集合。
Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。
也即物理数据、内存、操作系统进程的组合体。
数据库的数据存储在表中。
数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。
数据以行(我们通常称为记录)的方式存储在表中。
表之间可以相互关联。
以上就是关系模型数据库的一个最简单的描述。
当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。
关于OO型数据库,以后利用专门的篇幅来讨论。
一般情况下我们的讨论都基于关系模型。
2.表空间、文件无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。
数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。
这些逻辑划分称作表空间。
表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。
为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。
例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。
一个表空间只能属于一个数据库。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。
一个数据文件只能属于一个表空间。
在Oracle7.2以后,数据文件创建可以改变大小。
创建新的表空间需要创建新的数据文件。
数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。
什么是数据库实例⼀、通俗解释⾸先说说,数据库是做什么?数据库是⽤来长久存储数据的,⽽我们⼤家都知道内存只能临时存储,磁盘等才能真正存储数据.那数据库会放那⾥呢?肯定是存放在磁盘上,其实数据库就是磁盘上的⼀个⽂件。
从上⾯我们得出结论:数据库==磁盘上的⽂件.既然数据库可以看成磁盘上⽂件,我们怎么使⽤数据库呢?如果说我们可以直接使⽤数据库,那就等价与直接使⽤磁盘上的⽂件.我们知道这样的⼀个常识:必须把磁盘上的⽂件读⼊内存才能使⽤.这就与我们以前所知道的⼀个常识相违背了.那正确的流程是不是应该这样呢?把磁盘上⽂件先读⼊内存,然后再使⽤呢.对了,这个才是使⽤数据库的正确流程.数据库如何读⼊内存呢?这个时候,就是我们要介绍的instance(实例)了.实例就是内存结构和⼀组后台进程.实际上,正常的数据库读⼊内存的过程是,由实例中⼀组后台进程从磁盘上将数据⽂件读⼊到实例的内存中,然后经过在内存中对数据的操作再从实例的内存中经过⼀组后台进程写到数据库中.那实例相对与数据库⽽⾔,应该就是数据库的运⾏环境(随不准确但也很贴切).⼆、专业解释实例是“内存”和“后台进程”的集合。
数据库是数据的物理存储。
特别注意,⼀个实例可以⽤于⼀个数据库,多个实例也可以同时⽤于⼀个数据库,实例和数据库的关系是⼀对多的关系。
举个例⼦,如果把数据库⽐作⼀架飞机,实例就是飞机的发动机。
那么,⼀台发动机可以驱动飞机,两台发动机也可以同时驱动⼀架飞机。
多个“实例”同时驱动⼀个“数据库”的架构叫“集群(Oracle real application clusters,简称RAC)”,这是Oracle的⼀种⾼端应⽤,如果结合磁盘阵列的保护机制,RAC能最⼤限度的保护我们的应⽤不间断运⾏,数据不丢失。
什么是数据库,其实很简单,数据库就是存储数据的⼀种媒介。
⽐如常⽤的⽂件就是⼀种,在Oracle10G中,数据的存储有好⼏种。
第⼀种是⽂件形式,也就是在你的磁盘中创建⼀批⽂件,然后在这些⽂件中存储信息。
一、导言Oracle数据库是一种流行的关系型数据库管理系统,广泛用于企业级应用程序中。
在实际应用中,连接到数据库的实例可以随时发生变化,因此需要了解如何切换数据库连接的实例。
二、什么是数据库连接的实例数据库连接的实例是指在客户端与数据库服务器之间建立的一个连接。
在Oracle数据库中,每个实例都有一个唯一的标识符,称为实例名。
在连接数据库时,需要指定要连接的特定实例。
三、切换数据库连接的实例的方法1.使用Oracle Net Manager工具Oracle Net Manager是一个可视化工具,用于管理Oracle数据库的网络配置。
通过Oracle Net Manager,可以轻松地切换数据库连接的实例。
具体步骤如下:a.打开Oracle Net Manager工具,找到要修改的连接项目;b.在连接项目的属性中,找到“服务名(SID)”字段;c.在该字段中输入要切换的数据库实例名;d.保存更改,并在客户端重新连接数据库即可。
2.使用tnsnames.ora文件在Oracle数据库中,可以通过修改tnsnames.ora文件来切换数据库连接的实例。
具体步骤如下:a.打开tnsnames.ora文件,找到要修改的连接项目;b.在连接项目的配置中,找到“SERVICE_NAME”字段;c.在该字段中输入要切换的数据库实例名;d.保存文件,并在客户端重新连接数据库即可。
3.使用SQL*Plus命令行工具通过SQL*Plus命令行工具,可以直接在命令行中切换数据库连接的实例。
具体步骤如下:a.在命令行中输入“sqlplus 用户名/密码数据库实例名”,连接到指定的数据库实例;b.输入密码后,即可成功切换数据库连接的实例。
四、切换数据库连接的实例的注意事项1.确保连接信息的准确性在切换数据库连接的实例时,需要确保连接信息的准确性,包括实例名、用户名和密码等。
输入错误的连接信息将导致连接失败。
2.避免影响生产环境在切换数据库连接的实例时,需要谨慎操作,避免影响到生产环境的正常运行。
oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,一开始从宏观上掌握它的物理组成、文件组成和各种文件组成。
掌握的越深入越好。
在实际工作遇到疑难问题,其实都可以归结到体系结构中来解释。
体系结构是对一个系统的框架描述。
是设计一个系统的宏观工作。
这好比建一栋大楼。
你首先应该以图纸的方式把整个大楼的体系架构描述出来。
然后一点点的往里面填充东西。
下面我们先以一个图解的方式对oracle体系结构有一个基本了解根据示图,便于我们记忆,示图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上面的实例(Instance)和下面的数据库(Database)及参数文件(parameter file)、密码文件(password file)和归档日志文件(archived logfiles)组成Oracle Server,所以整个示图可以理解成一个C/S架构。
Oracle Server由两个实体组成:实例(instance)与数据库(database)。
这两个实体是独立的,不过连接在一起。
在数据库创建过程中,实例首先被创建,然后才创建数据库。
在典型的单实例环境中,实例与数据库的关系是一对一的,一个实例连接一个数据库,实例与数据库也可以是多对一的关系,即不同计算机上的多个实例打开共享磁盘系统上的一个公用数据库。
这种多对一关系被称为实际应用群集(Real Application Clusters,RAC)RAC极大提高了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle网格(grid)概念的必备部分。
下面我们来详细看一下oracle数据库的体系架构Oracle体系架构主要有两大部分组成:数据库实例(Instance)和数据库文件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的心脏。
与Oracle 性能关系最大的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常用的数据;2、日志缓冲区,提升了数据增删改的速度,减少磁盘的读写而加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执行速度。
1.简单描述Oracle数据库体系结构的组成及其关系?答:Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。
其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成.逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成.实例是数据库运行的软件结构,由内存结构和后台进程组成。
数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。
2、说明Oracle数据库物理存储结构的组成?Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。
在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。
3、说明Oracle数据库数据文件的作用?数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。
4、说明Oracle数据库控制文件的作用?控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。
在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件.5、说明Oracle数据库重做日志文件的作用?重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。
如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。
6、说明数据库逻辑存储结构的组成和相互关系.Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。
其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库.7、说明数据库表空间的种类,以及不同类型表空间的作用.数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。
cdb和pdbOracle 12C引⼊了CDB与PDB的新特性,在ORACLE 12C数据库引⼊的多租⽤户环境(Multitenant Environment)中,允许⼀个数据库容器(CDB)承载多个可插拔数据库(PDB)。
CDB全称为Container Database,中⽂翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是⼀对⼀或多对⼀关系(RAC):即⼀个实例只能与⼀个数据库相关联,数据库可以被多个实例所加载。
⽽实例与数据库不可能是⼀对多的关系。
当进⼊ORACLE 12C后,实例与数据库可以是⼀对多的关系。
下⾯是官⽅⽂档关于CDB与PDB的关系图。
CDB组件(Components of a CDB) ⼀个CDB数据库容器包含了下⾯⼀些组件: ROOT组件 ROOT⼜叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的⼀个例⼦是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的⽤户。
SEED组件 Seed⼜叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改⼀个对象。
⼀个CDB中有且只能有⼀个Seed. 这个感念,个⼈感觉⾮常类似SQL SERVER中的model数据库。
PDBS CDB中可以有⼀个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这⾥指⼤多数常规操作。
这些组件中的每⼀个都可以被称为⼀个容器。
因此,ROOT(根)是⼀个容器,Seed(种⼦)是⼀个容器,每个PDB是⼀个容器。
每个容器在CDB中都有⼀个独⼀⽆⼆的的ID和名称。
怎么查看数据库是否为CDB? 执⾏下⾯这条语句: select CDB from v$database; 如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
第三章数据库名、实例名、服务名数据库名:db_name 数据库实例名:instance_name 操作系统环境变量:oracle_sid 数据库服务名:service_names数据库域名:db_domain 全局数据库名:global_db_name 在oracle7、oracle8数据库中只有数据库名以及实例名,在oracle8i、oracle9i中出现了数据库域名、服务名以及全局数据库名。
数据库名(db_name):用于区分一个数据的内部标识,是oracle 的内部标记,是以二进制方式存储于数据库控制文件的参数。
数据库名的作用:数据库名是数据库的内部管理标记,在安装数据库、创建新的的数据库、创建数据库控制文件、修改数据库结构、使用数据库备份与恢复工具进行数据库备份时都需要使用数据名。
数据库安装完成后,数据库名称存储在参数文件(pfile,spfile)中,同时以二进制方式存储在控制文件中,两者必须匹配。
如果两者不匹配,数据库在启动时提示ORA-01103号错误。
■对数据名称的查询:1、查询参数文件db_name的数值2、select name from v$database3、SQL>show parameter db_name■修改数据库名(修改复杂,建议不要修改)1、修改参数文件的数据库名称。
2.重建数据库的控制文件。
数据库实例名(instance_name):用于和操作系统之间的联系。
操作系统与数据库之间的交互则必须使用数据库实例名。
数据库安装完成后,数据库实例名称存储在参数文件中,同时存储在注册表中。
数据库名与实例名一般是一一对应的关系,即:有一个数据库名就有一个实例名,而在oracle9i的并行服务器结构中是一对多的关系,即:一个数据库对应多个实例。
■对数据名称的查询:1、查询参数文件instance_name的数值2、select instance_name from v$instance3、SQL>show parameter instance_name操作系统环境变量(oracle_sid):用于与数据库实例名相对应。
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。