`

1、Oracle 数据库结构

阅读更多
一、基本术语
1.区分数据库实例(instance)和数据库(database)
数据库实例:
ORACLE实例 = 进程 + 进程所使用的内存(SGA),表示数据库当时的状态!
System Global Area(SGA) 和 Background Process 称为数据库的实例。当数据库关闭,实例就不存在了!
数据库:
固定的,包含数据文件,控制文件,日志文件,参数文件和归档日志文件等
2.数据库服务器(database Server)
包含数据库软件部分(SqlPlus,OEM,EXP/IMP等),数据库和实例组成!
1.表空间和数据文件
表空间:用于存储数据库表,索引和回滚段等对象的磁盘逻辑空间
表空间类型:
SYSTEM 表空间
用于存储Oracle内部表和数据字典的数据,如表名,列名,用户名等。
SYSAUX表空间
这个是在11G中新增加的,主要存储Oracle系统内部常用的样例用户对象。这个表空间由 oracle系统内部自动维护
Undo Tablespace
撤销表空间(Undo Tablespace) 用于存储撤销信息的表空间,当对数据库表进行修改(insert,update,delete等操作),oracle系统自动的使用这个撤销表空间来临时的存放修改钱的数据(Before Image)。当修改操作完成并提交(commit)后,oracle系统可根据需要保留修改前得数据时间长短来释放撤销表空间的部分空间。
User 表空间
这个是用户自己建立的表空间,可在这个表空间上建立各种对象,如表,索引等。
2.数据文件
数据文件(Data File)用于保存用户对应数据和Oracle系统数据的文件。每个表空间可以包含一个或多个数据文件。
系统数据:
管理用户数据和Oracle系统本身的数据,如用户建立的表的名称,列的名称已经字段类型等属于用户数据,这些都自动的存放在系统表空间的 XXX.dbf 文件中
用户数据:
用户系统的数据,可使用SQL语句查询当前数据库的表空间和数据文件。
SQL> col file_name for a40; 
SQL> set linesize 140;
SQL> select file_name ,tablespace_name,(bytes/1024)as M from dba_data_files;
FILE_NAME                                TABLESPACE_NAME     M
D:\ORACLE\ORADATA\C_DB\SYSTEM01.DBF      SYSTEM              409600
D:\ORACLE\ORADATA\C_DB\UNDOTBS01.DBF     UNDOTBS1            204800

临时表空间和临时文件:
Temporary Tablespace 当在操作中需要进行排序等操作时,oracle系统就将排序的数据临时的存放在该空间中,当排序完成后释放排序所用到的空间。
SQL> col file_name for a35;
SQL> set linesize 120;
SQL> select tablespace_name,file_name from dba_temp_files;
TABLESPACE_NAME                FILE_NAME
TEMP                           D:\ORACLE\ORADATA\C_DB\TEMP01.DBF

3.Oracle 存储结构
oracle 创建表看空间时至少要创建一个以上的数据文件,Oracle创建数据文件时实际上将磁盘的操作系统块重格式化成Oracle数据块,并且每个数据库都有唯一的标识。一般Oracle数据库是操作系统块得倍数。如操作系统的系统大小为2048KB,而Oracle数据块得大小为8192KB(DB_BLOCK_SIZE=8192),这表示oracle数据块由4个操作系统块构成!
一般在设计数据库结构时,需要将表,索引或簇(cluster)存储到一个已存在的表空间中,而表,索引或簇都是占用空间的对象。
Oracle把占空间的对象统一称为:段(Segment),
而段由多个区间(Extent)组成的,
区间又由多个连续的(块得编号地址临近的)Oracle数据库组成!
所以在Oracle系统中,数据库是一个基本的处理单位!

4.控制文件
控制文件一般在oracle安装时自动创建,控制文件存放路径由服务器参数文件SPFILEsid.ora的coltrol_files参数值来确定。                                                               
当oracle实例在正常启动时,系统先访问的是初始化参数文件SPFILE,然后Oracle为系统全局区(SGA)分配内存,这时oracle实例处于安装状态,控制文件处于打开状态,然后Oracle自动读出控制文件中的所有数据文件中的所有数据文件和日志文件信息,并打开所有数据文件和所有日志文件信息以便所有的用户都可以访问。
为了安全,Oracle一般创建2-3个控制文件。如果某个控制文件损坏了,Oracle自动使用另外的一个控制文件,当所有的都损坏时,系统将停止工作。
查询控制文件信息:
SQL> desc v$controlfile;
名称          是否为空?                    类型
STATUS                                  VARCHAR2(7)
NAME                                    VARCHAR2(513)
SQL> select  name , status from v$controlfile;
NAME                                    STATUS
D:\ORACLE\ORADATA\C_DB\CONTROL01.CTL
D:\ORACLE\ORADATA\C_DB\CONTROL02.CTL
D:\ORACLE\ORADATA\C_DB\CONTROL03.CTL

5.日志文件:
Oracle 日志文件分为重做日志文件(Redo Log File)和归档日志文件。
重做日志文件:
又称为联机重做日志文件(Online Redo Log File),用来记录在数据库中发生过交易(Transaction)的所有信息,以及由Oracle内部行为而引起的数据库变化的信息。在数据库恢复时可以从该日志文件中读出原来的交易的数据!对表或者整个表空间设定NOLOGGING属性时,基于表或者表空间中所有的表的DML操作都不能生成日志,因此也就减少了日志信息的产生!
从V$logfile中查询日志信息
SQL> col member for a50;
SQL> select group#,status,member from v$logfile;
    GROUP# STATUS  MEMBER
         3 STALE   D:\ORACLE\ORADATA\C_DB\REDO03.LOG
         2 STALE   D:\ORACLE\ORADATA\C_DB\REDO02.LOG
         1         D:\ORACLE\ORADATA\C_DB\REDO01.LOG

Oracle在运行时产生日志信息,首先被记录在SGA的日志缓冲区中,当发生COMMIT命令时。LGWR进程将所有能用的日志文件都使用一遍后,将再次到第一个日志文件中重新写入。Oracle会在警告日志文件(alter_sid.log)记录相应的信息
归档日志:
归档模式-->在各个日志文件(成员)都记录满员而即将被覆盖钱,由归档进程(ARCH)吧即将被覆盖的日志文件中的日志信息读出并写到归档日志当中,以便恢复操作时查找。
非归档模式-->在系统运行期间将所产生的日志信息不断的记录到各个日志文件中,当所有重做日志组被记录满后,又重新的从第一个日志组开始记录。
默认的oracle不采用归档模式。
<!-- 查看数据库是否使用归档模式:-->
SQL> select dbid,name,log_mode from v$database;
      DBID NAME      LOG_MODE
---------- --------- ------------
1917702319 C_DB      NOARCHIVELOG


6.其他文件
服务器参数文件: SPFILE,密码文件,跟踪文件,告警日志

二、数据库体系结构
从图中可以看出:参数文件(Parameter File),口令文件(Password File),归档日志文件(Archive Log File)是一般文件;
数据文件(Data File),控制文件(Control File),联机重做文件(Redo Log File)是必须文件。这3中文件时通过DBWR,LGWR等进程操作的,也就是说使用Oracle的时候只能用SQL语句来操作!
系统全局区(SGA System Global Area)
由数据缓冲区,日志缓冲区,共享池构成
1.数据高速缓冲区
这里存放的用户最近使用的数据,如果要的数据不在这里,那么就在磁盘中读取!
三种类型
脏区(Dirty Buffer) 已经改变并需要写回到数据文件的数据库。
自由区(Free Buffer) 不包含任何数据,并可以再写入的区。Oracle可以将数据放在这里。
保留区(Pinend Buffer) 包含正在处理或明确保留的区。
Oracle 将缓冲池分为3个区。
Keep Buffer Pool :在内存中保留的数据块,在内存中不会被挤掉。
RECYCLE 缓冲池:循环使用的缓冲池,表示不再需要清除的内存块
DEFAULT 缓冲池:包含已经分配的块。
2.重做日志缓冲区
写入日志文件之前的日志信息保留在这里,当检查点(CKPT,一个Oracle后台进程)或日志到达一定块数时,由LGWR写入重做日志文件。
3.共享池(Shared Pool)
共享池是SGA的保留区,用来存储SQL,PL/SQL 存储过程,数据字典,包,安全属性等信息。
库高速缓冲区(Library Cache)。
字典高速缓冲区(Data Dictionary Cache):用于存储Oracle系统管理自身的所有信息,包括登录的信息,用户对象和权限等。
4.大池(Large Pool)
5.后台进程
oracle的后台进程有很多,DBWR,CKPT。。。
查询进程:
SQL> select name,description from v$bgprocess;

三、数据字典
前缀                              范围
USER                   用户视图(用户模式相关的)
ALL                    扩展用户视图(用户可以访问的)
DBA                    数据库管理员的视图(针对所有用户模式的)
注意:
USER前缀的视图通常不包含OWNER列。这一列隐含在对这个USER视图提交查询的用户上。
某些DBA视图包含对管理员有用的一些额外列信息
1.USER前缀的视图
典型数据库用户关心的视图就是前缀为USER的视图。这些视图:
指向用户自己的私有数据库环境,包含用户创建的模式对象信息、用户创建的权限等等。
只显示用户相关行
和其他视图的列类似,除了不包含隐含的OWNER列之外
返回ALL视图的一部分信息
可以有简单的PUBLIC同义词来方便使用
查询返回了你的模式中包含的所有对象:
SQL>SELECT object_name,object_type FROM USER_OBJECTS;

2.ALL前缀视图
ALL前缀视图指向用户的数据库整个透视图。这个视图除了返回用户拥有的模式对象信息之外,还返回通过公开的或者隐含的分配给这个用户的权限和角色而能够访问的模式对象信息。
查询返回你有权限访问的所有对象信息:
SELECT owner,object_name,object_type FROM ALL_OBJECTS;

3.DBA前缀视图
DBA前缀视图显示整个数据库的全景视图。这些视图不能创建同义词,因为DBA前缀视图只能被数据库管理员访问。因此,为查询DBA前缀视图,管理员必须在视图名字前加上它的所有者SYS。
SELECT owner,object_name,object_type FROM SYS.DBA_OBJECTS;

Oracle推荐你通过阻止用户在数据字典上拥有系统访问权限来保护数据字典。如果你启动了数据字典保护(07_DICTIONARY_ACCESSIBILITY为false),然后访问SYS模式对象(数据字典)被限制为拥有SYS模式的用户。这些用户是SYS和以SYSDBA方式连接的用户。(似乎不是这样子,system也可以访问,拥有DBA权限就可以,因为DBA权限包含了SELECT ANY DICTIONARY权限)
4.DUAL表
DUAL表是数据字典中的一个小表,Oracle和用户写的程序可以引用它来确保一个已知结果。这个表包含一列叫DUMMY,包含一行值为X。
SQL> desc dual;
 名称             是否为空                     类型
 DUMMY                                  VARCHAR2(1)
SQL> select * from dual;
D
-
X

这里记录的是我的读书笔记,如果有错误的请指出。。。
  • 大小: 152.1 KB
  • 大小: 43.1 KB
分享到:
评论

相关推荐

    MySql 和Oracle 数据库结构导出Word

    总之,MySQL和Oracle数据库结构的导出是一项实用的功能,能够帮助我们更好地管理和理解数据存储的逻辑。通过这个项目,我们可以自动化这个过程,提升工作效率。如果你正在处理类似的任务,不妨尝试这个工具,或者...

    Oracle数据库体系结构( 中文详细版)

    1. **数据文件**(Data Files):数据文件是Oracle数据库存储实际数据的地方,包含了表、索引、视图等对象的数据。每个表空间由一个或多个数据文件组成,每个数据文件中包含一系列的数据块,这是Oracle数据存储的...

    Oracle 数据库结构导出word工具OracleDB2Doc

    OracleDB2Doc V2.0(Oracle数据库表结构导出器)是一套用来完成将Oracle数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。 软件采用Word中VBA开发完成,软件使用Word中的菜单操作,与Word完全集成...

    Oracle数据库表结构导出工具Excel

    总结来说,"Oracle数据库表结构导出工具Excel"通过DBExport软件实现,能够有效地帮助数据库管理员和开发人员快速获取和分享Oracle数据库的表结构信息。通过阅读DBExport的使用手册,用户可以学会如何利用这个工具...

    Oracle数据库表结构导出工具

    1. **表结构提取**:DBExport能够连接到Oracle数据库,读取指定用户下的所有表或选定表的信息,包括表名、字段名、字段类型、主键、外键等关键信息。 2. **自定义导出**:用户可以选择只导出特定的表,或者根据需要...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; ...

    oracle导出数据库表结构到word文档中

    Oracle数据库表结构导出器是一套用来完成将Oracle数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。亲测oracle绝对好使 ,另附有链接信息,请先看好说明再操作.不会的加我qq87611894

    oracle数据库导出表结构到WORD文档

    1. **连接数据库**:首先,我们需要一个能连接到Oracle数据库的工具,如SQL Developer、PL/SQL Developer或Oracle SQL*Plus。这些工具通常都有导出功能。 2. **选择对象**:在连接成功后,选择需要导出的表或者整个...

    ORACLE数据库 ORACLE数据库

    - **SQL**:结构化查询语言,是用于管理关系数据库的标准语言,Oracle数据库支持SQL的多种扩展。 - **表空间**:存储数据的逻辑单位,包含一个或多个数据文件。 - **数据文件**:实际保存数据的物理文件,存在于...

    实验2Oracle数据库物理存储结构管理.docx

    Oracle数据库物理存储结构管理 Oracle数据库的物理存储结构管理是指对数据库中的数据文件、控制文件和日志文件进行管理和维护的过程。这种管理对于数据库的性能、安全和可扩展性都具有重要意义。 一、数据文件管理...

    Oracle数据库大作业

    在Oracle数据库中实现这样的系统,需要进行数据库设计,包括实体关系模型(ER模型)的构建,确定数据表的结构、字段、主键和外键等关键元素,以确保数据的一致性和完整性。 在PPT中,可能详细阐述了需求分析、系统...

    Oracle数据库的体系结构.pdf

    数据字典是存储数据库结构和模式信息的地方,是数据库管理的基础。 - 撤消表空间(Undo Tablespace):存储撤消信息,用于实现事务的回滚以及读取一致性的数据。 - 临时表空间(Temporary Tablespace):为SQL语句...

    ORACLE数据库体系结构讲解

    Oracle数据库管理系统是一个复杂而强大的系统,其体系结构是理解其工作原理的关键。Oracle数据库的核心是它的数据存储和访问机制,这涉及到多个层面的组件和进程。 首先,Oracle数据库的"基本轮廓和程序模块结构...

    基于oracle数据库的生产和测试数据库表结构对比工具

    1. 表结构分析:工具可以深入解析Oracle数据库中的每个表,包括字段名、数据类型、主键、外键、索引等信息。 2. 差异检测:通过比较生产库和测试库的表结构,找出字段、约束、索引等方面的差异。 3. 可视化展示:...

    Oracle数据库体系结构(详细版)

    本文将深入解析Oracle数据库的体系结构,帮助新手全面理解这个强大系统的内部运作。 首先,Oracle数据库的核心组件是数据块、区、段和表空间。数据块是最小的I/O单位,它们在物理磁盘上存储数据。每个数据块包含多...

    oracle数据库体系结构

    控制文件,包含数据库结构的控制信息;参数文件,用来配置实例和数据库的初始化参数;以及归档日志文件、备份文件等其他文件。 Oracle数据库的逻辑结构则包括表空间、段、数据区和数据块。表空间是数据库中数据的...

    Java导出Oracle数据库数据

    Java 导出 Oracle 数据库数据 Java 是一种流行的编程语言,广泛应用于各种领域。Oracle 是一种关系数据库管理系统,广泛应用于企业级应用中。在实际项目中,数据备份和恢复是非常重要的工作。本文将介绍如何使用 ...

    Oracle 12c数据库体系结构图文详解手册

    每个 Oracle 数据库包含 1-8 个控制文件。 七、重做日志文件 重做日志文件记录了用户对数据的各项操作,用于保护数据不丢失,以日志组的形式存在。每个 Oracle 数据库至少包含两个日志组。 八、数据文件 数据...

    ORACLE 数据库体系结构

    1. **数据库实例**:Oracle数据库实例是内存结构和后台进程的集合,它们一起管理和处理对数据库的请求。内存结构包括数据缓冲区缓存、重做日志缓冲区和共享池等,而后台进程如系统监控(SMON)、进程监控(PMON)和...

Global site tag (gtag.js) - Google Analytics