oracle数据库重要的文件包括参数文件,控制文件,数据文件,临时文件,重做日志文件。

1 参数文件

oracle的参数文件可以设置数据库的名称,SGA和PGA的大小,控制文件的路径等系统参数。这些参数可以通过V$PARAMETER视图进行查询。oracle有两类参数文件,分别为pfile参数文件和spfile参数文件。oracle优先使用spfile参数文件,如果没有spfile参数文件,才会读取pfile参数文件的数据。

1.1 pfile参数文件

pfile参数文件的目录在Linux上一般是$ORACLE_HOME/dbs,文件名格式为init$ORACLE_SID.ora。可以通过文本编辑器进行编辑,而且可以保存在客户端,客户端可以根据客户端的参数文件启动数据库。

1.2 spfile参数文件

spfile参数文件的目录在Linux上一般是$ORACLE_HOME/dbs,文件名格式为spfile$ORACLE_SID.ora。spfile参数文件的参数不可以通过文本编辑器编辑。只能通过sql命令alter system set 命令来对系统参数进行设置,只能存放在oracle服务端。

1.3 pfile和spfile创建

只要pfile和spfile文件在系统默认目录上,都可以根据对方进行创建。

spfile根据pfile创建命令如下:

create spfile from pfile;

pfile根据spfile创建命令如下:

create pfile='init_ora12crl_2014.ora' from spfile;

有时候会遇到oracle重启数据库后,数据库因为spfile的参数设置不当,导致重启失败。因为没有成功启动数据库,所以也根据无法使用aler system set命令设置spfile的参数。我们就可以先根据spfile创建一个临时的pfile。然后用文本编辑器修改临时pfile参数文件里面的参数。启动数据库时指定这个临时的pfile启动数据库。

create pfile='init_ora12crl_2014.ora' from spfile;

startup pfile=init_ora12crl_2014.ora

2 控制文件

控制文件会记录数据文件,重做日志的路径。oracle启动过程中,先找到参数文件,根据参数文件的控制文件路径找到控制文件,然后再根据控制文件上记录的数据文件路径和重做日志路径找到数据文件、重做日志,才会开始加载数据,修复数据。控制文件还会记录一些其他信息,例如检查点,SCN等。

3 数据文件

oracle数据文件是存储数据的地方,包括oracle元数据以及应用数据。一般以dbf结尾。使用oracle的自动存储管理(Automatic Storage Management, ASM )技术进行管理。可以通过视图DBA_DATA_FILES去查询具体的数据文件信息,包括文件位置信息。数据文件从oracled物理存储概念去理解的。如果从逻辑存储概念去理解oracle的存储体系,从小到大可分为块,区段,段,表空间。

3.1 块

块是oracle最小的空间分配单位。可以在创建数据时指定大小,也可以在创建表空间时指定块的大小,每个表空间可以设置不同的块大小。块大小一般设置为2KB、4KB、 8KB或16KB。从一般的表的块的结构来看,块可以拆分为首部,表目录,行目录,已用空间,空闲空间等。

  • 首部一般含有块所属对象类型的信息(例如表块,索引块)、块在磁盘上的位置信息,块上的事务信息。
  • 表目录记录这个块上包含哪些表
  • 行目录记录这个块上表的行的描述信息

3.2 区段

区段是文件的一段逻辑上连续的块。是oracle分配存储空间的基本单位。例如当插入数据到一张表里,这个表的空间已经满了,需要oracle分配空间,分配的单位是区段,根据需要分配多少个单位的区段。区段的大小可能不同,有点区段可能是一个块大小,最大可以到达2GB。一个区段必须分布在同一个数据文件中

3.3 段

段是oracle中占用存储空间的数据库对象。创建表时会创建一个段,创建索引也会创建一个段。需要注意的是,创建表时可能会创建多个段。例如创建一个表CREATE TEST(ID PRIMARY KEY)。TEST这个表会创建两个段,一个是TEST表本身,一个是为主键所创建的索引。段由一个或多个区段组成,不同的区段可分布在不同的数据文件中,因此一个段可以分布在同一个表空间上不同的数据文件上。

3.4 表空间

表空间是一个容器,包含多个段。 一个段不可以跨表空间存储。表空间由一个或者多个数据文件组成,一个数据文件不可以被多个表空间同时使用。下图显示了一个名为USER_DATA的表空间,其中包括2个数据文件user_data01. dbf和user_data02.dbf。在这个表空间中有3个段T1、T2和I1及其4个区段。段 T1包括两个区段,分别在不同的文件中;段T2和I1都各有一个区段。

4 临时文件

临时文件是临时表空间里面的文件,当oracle内存不足时,会使用临时文件存储临时数据。例如,当进行一些较大的排序的排序结果或者全局临时表的数据会使用到临时表空间,把数据放到临时文件上。使用视图DBA_TEMP_FILES可以查看具体的临时文件信息。

临时文件的数据有个特点,就是对临时文件数据的操作不会产生redo日志,但是会产生undo日志,进而生成保护undo的redo日志。因此在操作一个临时表时,操作本身不会产生redo,但会产生保护undo日志的redo日志。oralce 12c引入了一个参数TEMP_UNDO_ENABLED(会话和全局都可以设置),当这个参数设为TRUE时,全局临时表产生的undo会写入到临时表空间中。所以全局临时表就不会产生redo日志了。在一个存储过程中有临时表参与事务,可以在存储过程开头设置TEMP_UNDO_ENABLED为TRUNE。可以大大加快操作临时表的速度。

EXECUTE IMMEDIATE 'ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE';

5 重做日志文件

重做日志最重要的功能是实例失败后,能够恢复已经提交的事务,保证数据的一致性和原子性。ORACLE上几乎所有的操作都会记录在重做日志文件中。例如当我们往一个表插入一条记录时,这条记录也会写入redo日志文件。可以通过字典v$logfile查询具体的重做日志信息。当然,一些操作也可以尽量减少redo日志的产生,用来加快操作的完成。例如在创建表和创建索引时使用nologging。重做日志可分为在线重做日志以及归档重做日志。

5.1 在线重做日志

  • 在线重做日志构成和日志切换

    在线重做日志在oracle中至少有两组重做日志,每组重做日志包含一个或者多个在线重做日志文件,同一组内的重做日志内容完全一样。日志切换是指当一组重做日志写满时,oracle清空下一组重做日志并在下一组写入重做日志。所以,重做日志是循环使用的。
  • 数据库高速缓存和重做日志缓存

    数据库高速缓存是临时存储数据库块的地方,当我们在查询数据库的数据时,会先从磁盘的数据文件里读取对应的块,并把块放到高速缓存。这样下一次读同样的数据时不需要再次从磁盘读取。重做日志缓存是临时存储重做日志的地方,我们修改数据时产生的redo日志会先存放到重做日志缓存中。当我们提交事务时,数据库会将事务对应的重做日志缓存的数据写入到在线重做日志文件,oracle不会将高速缓存中事务修改的块数据写入到数据文件中。当触发检查点时,才会将修改的块写入数据文件。
  • 检查点

    检查点的作用是要求数据库将高速缓存中的脏块写入磁盘。当我们写满日志文件组1并切换到日志文件组2时,Oracle就会启动一个检查点。此时,DBWn将日志文件组1所保护的所有脏块写至磁盘。

    检查点触发的条件一般有如下条件

    • A. 在线重做日志切换
    • B. 高速缓存快使用完时
    • C. 满足log_checkpoint_timeout,log_checkpoint_interval触发参数
  • 日志切换的悬停状态

    在发生日志切换时,如果要切换到的下一组的重做日志所保护的脏块还在快速缓存中,还没有全部写入磁盘,这时需要等待DBWn进程将脏块全部写入磁盘。等待DBWn进程将脏块全部写入磁盘后,悬停状态才会结束,才会清空下一组重做日志文件并写入数据。

    如果在跟踪文件目录的alter.log文件发现类似如下内容

Thread 1 cannot allocate new log, sequence 41801

Checkpoint not complete

说明发生日志切换悬停,需要增加重做日志组或者增大重做日志文件,避免因为日志切换悬停导致数据库卡顿。

5.2 归档重做日志

如果数据库处于归档模式,那当在线重做日志发生切换时,就会将当前写满的在线重做日志文件进行归档,复制在线重做日志数据到归档重做日志文件。如果归档进程参数(log_archive_max_processes)设置不当,可能会导致数据库卡顿。例如当前在线重做日志还没有完成归档,而且发生下一轮日志切换,重新要清空当前在线重做日志文件,但是无法清空,需要等待当前在线重启日志完成归档。

oracle数据库文件的更多相关文章

  1. 统计Oracle数据库文件的大小

    1. 统计数据文件.暂时文件.日志文件大小 select sum(bytes)/1024/1024/1024 as GB from dba_data_files; select sum(bytes)/ ...

  2. Oracle数据库文件路径变更

    环境:RHEL 6.4 + Oracle 11.2.0.3 情景一:只是部分普通数据文件迁移,可以在线操作. 1.将对应表空间offline,移动数据文件到新路径 2.数据文件alter databa ...

  3. Oracle 【IT实验室】数据库备份与恢复之:如何对Oracle数据库文件进行恢复与备份

    任何数据库在长期使用过程中,都会存在一定的安全隐患.对于数据库管理员来说不能仅寄希望于计算机操作系统的安全运行,而是要建立一整套的数据库备份与恢复机制.当数据库发生故障后,希望能重新建立一个完整的数据 ...

  4. Oracle数据库文件恢复与备份思路

    怎样才能对Oracle数据库进行备份?如何才能对删除的数据再进行恢复?这是困扰着很多人的问题.大家都知道,任何数据库在长期使用过程中,都会存在一定的安全隐患.对于数据库管理员来说不能仅寄希望于计算机操 ...

  5. 如何使用impdp导入oracle数据库文件

    1.首先,安装好oracle数据库. 2.使用sqlplus进入sysdba权限,sqlplus "/as sysdba", 例如: 3.创建用户framework,例如: CRE ...

  6. Oracle数据库文件导出为CSV格式的方法

    1 安装PLSQL Developer,并连接Oracle数据库. 2 执行sql语句,将要导出的表格显示出来. select * from table名; 3 如下点击导出查询结果,选择数据格式,即 ...

  7. 导入本地的oracle数据库文件

    1. 创建表空间 create tablespace charge_zang datafile 'F:\app\zang\oradata\orcl\charge_zang.dbf' size 50M ...

  8. 迁移ORACLE数据库文件到ASM

    迁移数据文件到ASM 数据库一致性情况下迁移:将数据库启动到mount状态,生成rman copy 语句,然后在rman中执行: SQL> startup mount SQL> selec ...

  9. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  10. PLSQL连接本地oracle或远程oracle数据库,实现随意切换

    转: PLSQL连接本地oracle或远程oracle数据库,实现随意切换 置顶 2018年01月12日 19:36:45 前方一片光明 阅读数 43542   版权声明:本文为博主原创文章,未经博主 ...

随机推荐

  1. 所有前端都要看的2D游戏化互动入门基础知识

    简介: 在非游戏环境中将游戏的思维和游戏的机制进行整合运用,以引导用户互动和使用 本文作者:淘系前端团队-Eva.js作者-明非 背景 现在越来越多的公司和 App 开始使用游戏化的方式去做产品了,所 ...

  2. [ELK] Elastic Stack 的安全性预览

    注:ELK Stack 之后的版本都叫做 Elastic Stack,增加了 Beats 等组件. 安全性保护方式: 阻止未授权的访问,通过 密码认证保护.RBAC授权.IP 过滤. 保证数据完整性, ...

  3. VisualStudio 在 DebuggerDisplay 的属性更改业务逻辑将会让调试和非调试下逻辑不同

    本文记录我写的逗比代码,我在 DebuggerDisplay 对应的属性的 get 方法上,在这个方法里面修改了业务逻辑,如修改界面元素,此时我在 VisualStudio 断点调试下和非断点调试下的 ...

  4. 使用qemu运行risc-v ubuntu

    参考 Ubuntu installation on a RISC-V virtual machine using a server install image and QEMU 用到的文件 fw_ju ...

  5. C++ 类的继承(Inheritance)

    一.继承(Inheritance) C++有一个很好的性质称为inheritance(继承),就是声明一个class(derived class),把另一个或多个class(base class)的所 ...

  6. 支持4k的远程桌面软件有哪些

    在当今的数字时代,在全球向灵活工作安排和分布式团队转变的推动下,对远程工作解决方案的需求猛增.远程桌面软件已成为寻求让员工能够在任何地方工作的企业的重要工具.在用户在此类软件中寻求的众多功能中,对 4 ...

  7. Atera 用户为最终用户提供对办公计算机的远程访问

    ​一言以蔽之:由 Splashtop 提供支持的 Atera 的客户远程访问功能允许使用 Atera 的 MSP 设置和管理其最终用户对办公计算机的远程访问. 新冠肺炎大流行已加速了全球远程工作的进程 ...

  8. Calcite sql2rel 过程

    sql2rel的过程是将SqlNode 转化成RelNode的过程 在 SqlToRelConverterTest中添加样例测试 @Test void testScan() { String sql ...

  9. Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景

    目录 目录 目录 前言与背景 传统 LB 技术的局限性 HDSLB 的特点和优势 HDSLB 的性能参数 基准性能数据 对标竞品 HDSLB 的应用场景 HDSLB 的发展前景 参考文档 前言与背景 ...

  10. 4G EPS 第四代移动通信系统

    目录 文章目录 目录 4G EPS 4G EPS 4G(the 4th generation mobile communication technology,第四代移动通信技术)提供了 3G 不能满足 ...