Oracle的存储的三大物理文件
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
一、控制文件(Control File):保存有关数据库的结构信息! 控制文件是一个小型的二进制文件,可以记录数据库的物理结构。包括: * 数据库名称 一般Oracle数据库创建时都会创建至少两个或两个以上的控制文件。 二、控制文件的标准 1、控制文件的文件名 由control_files参数来指定控制文件名。 2、控制文件的复用 一般不同的控制文件都存放在不同的磁盘,当某个磁盘损坏时可以通过在其他磁盘上的控制文件进行复用,不需要任何的介质恢复。 * 找到control_files参数列出所有文件名,将相应内容写入所有控制文件 3、备份控制文件 进行以下数据库物理结构改变之后,需要备份控制文件 * 添加、取消或重命名数据文件 4、控制文件大小管理 MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES参数控制 三、创建控制文件 1、创建初始化控制文件 control_files = (/u01/oracle/prod/control01.ctl, 注:若已经存在与指定名同名的文件,则在create database语句中指定controlfile reuse子句。而且新控制文件与原先控制文件的size必须相同。 2、创建额外副本、重命名和重定位控制文件 ① 关闭数据库 3、创建新的控制文件 以下情况可能会需要重新创建新的控制文件: * 数据库所有控制文件都收到永久性损坏,且无任何备份 4、创建语句示例 create controlfile 注:create controlfile 语句可能会损坏数据文件和联机重做日志文件,省略文件名会引起文件中数据的丢失,或失去访问完整数据库的能力,所以在使用这条语句时需要特别小心。 5、创建步骤(严格遵守) ① 制作包括数据库所有数据文件和联机重做日志文件的列表,可以使用以下SQL列出清单 select value from v$parameter where name = 'control_files' ; -- 控制文件 ② 关闭数据库(immediate、abort) ==========================控制文件的相关操作============================== 一、create controlfile错误 1、检查文件差异 创建新的控制文件之后会检查数据字典和控制文件之间的矛盾,以检查丢失或多余的文件。 丢失: 若数据字典中存在某数据文件,而控制文件中没有,则Oracle在控制文件中创建一个名为MISSINGnnn的占位符入口,表示作为脱机并需要介质恢复的标志。可以通过重命名MISSINGnnn来访问MISSINGnnn对应的真正数据文件,但该文件必须是只读或正常脱机的。 多余: 注:无论是丢失还是多余,都会在相应实例的alert.log文件中包含一条解释性消息。 2、创建过程中的错误 一般在创建新的控制文件后打开数据库,可能会返回一下错误类型: 最大的可能是在在创建时有文件丢失或多余文件。 二、备份控制文件 1、备份控制文件为二进制文件 alter database backup controlfile to '/oracle/backup/control.bkp'; 2、制作以后可以重新创建控制文件的SQL 3、可以使用RMAN对控制文件进行备份 三、恢复控制文件 1、控制文件损坏 ①关闭实例 ②将未损坏的控制文件副本覆盖已损坏文件 ③打开数据库 2、磁盘损坏 ①关闭实例 ②经未损坏控制文件副本复制到新磁盘空间 ③修改control_file参数 ④打开数据库 也可以先修改control_file参数,然后恢复控制文件,再把 四、删除控制文件 ① 关闭数据库 五、控制文件信息 通过一下视图来查看控制文件信息: V$CONTROLFILE:控制文件名称 |
联机重做日志概念 —— 又叫做日志文件
一、联机重做日志
1、重做线程
每个数据库实例的联机重做日志组都是一个联机重做的实例线程。
不管有没有多路复用,一般每个Oracle都只有一个重做线程,当然RAC中每个实例都包含一个重做线程。
2、联机重做日志内容
重做条目记录了可以对数据库重新构造的所有修改数据,包括回滚段。
重做记录在SGA重做日志缓存区中缓冲,并由LGWR进程写入某个联机重做日志文件。
事务被提交时,必定需要用LGWR将日志全部从SGA缓存中写入联机重做日志文件,然后才被告知提交完成。
LGWR还会为每个事务分配一个识别重做记录的系统修改号(SCN)。
当重做日志缓存填满时LGWR也会将重做条目写入到重做日志文件,这些是可以回滚的。
3、联机重做日志写入方式
数据库的联机重做日志组务必要有两个或两个以上,这样可以保持其中一个一直用于写入,另一个用于归档。
LGWR采用循环写入的方式,即写满一个换下一个。或归档模式则写满了之后归档,否则则直接覆盖。
4、活动与非活动
当前正在写入的联机重做日志文件成为“当前的”联机重做日志文件。
实例恢复时所需的联机重做日志文件称为“活动的”联机重做日志文件。
实例恢复不用的联机重做日志文件称为“非活动的”联机重做日志文件。
已经进行存档的联机重做日志文件不能重新使用或重写,知道ARCn存储了这个文件内容。
5、日志切换 & 日志顺序号
一般默认在一个文件写满时切换到写一个文件,但是也可以规定时间进行切换,这样就不用理会是否写满。
也可以手动进行强制切换。
每次日志切换都会分配一个新的日志顺序号,归档时也将顺序号进行保存。
每个联机或存档的重做日志文件都通过它的日志顺序号进行唯一标识。
二、规划联机重做日志
1、多路复用(Group)
多路复用是避免损坏联机重做日志文件。
多路复用时LGWR将同一重做日志信息同时写入多个同样的联机重做日志文件。
建议必须要使用多路复用(至少两个组)。
注:当某个成员不可用,则标记为INVALID,并向LGWR跟踪文件和数据报警文件中写入错误信息。不同问题会不同反映。
* 一个操作成功一个操作失败时:按正常过程进行,忽略不可用成员
* 日志切换时需要存档而不能访问下一个组时:暂时中断操作,直到归档完成
* 介质失败,切换时不能访问下一组:关闭数据库,并返回错误信息
* LGWR写入时不能访问文件:关闭数据库,并返回错误信息
注:不同的组中不一定需要相同个数的成员。只含有1个组的多路复用是非法的。
2、日志成员存放在不同磁盘
设置多路复用时,将日志组成员放置到不同的磁盘上。这样当某磁盘失败时,可以跳过这个成员继续工作。
另外将成员放置到不同磁盘上可以消除LGWR和ARCn在后台进程对联机重做日志成员的争夺。
注:数据文件和联机重做日志文件也应该放在不同磁盘上,以减少写数据块和写记录之间出现的竞争。
3、联机重做日志成员的大小
规定联机重做日志的大小,以便将填满的组存档到脱机存档介质(磁带或磁盘)的某个单元中。
例如磁盘上有一个填满的联机重做日志组,且磁盘还有49%的未使用存储空间,此时最好降低联机重做日志文件的大小。
多路复用时,同一个组中的多有成员比用拥有同样的大小!
不同组的成员大小不同,但是这样没有什么好处,而且会对检验点的设置带来不便。
4、联机重做日志文件的数量
联机日志文件数量的确定最好的方法是测试不同的配置的效果。
最佳配置:在不妨碍LGWR向重做日志写入信息的前提下,使用尽可能少的组(至少2个组)。
仔细检查LGWR跟踪文件和数据库报警文件的内容,如果消息表明:因为检验点还没有完成或者组还没有存档的缘故,LGWR不得不频繁得等待组,那么就需要添加组来解决问题。
注:MAXLOGFILES-最大组数;MAXLOGMEMBERS-最大成员数;要修改这两个参数需要重建数据库或控制文件,所以创建数据库时要慎重。
5、控制存档延迟
在数据库中使用联机重做日志归档,然后将归档日志放到备用数据库,通过查询日志来进行和数据库中同样的操作。这两个操作之间存在一个时间间隔,就叫做存档延迟。可以通过ARCHIVE_LAG_TARGET初始化参数来严格限定延迟的时间长度。
设置了ARCHIVE_LAG_TARGET之后,Oracle将定期检查实例当前的联机重做日志,在发生一下情况时切换日志:
* n秒钟前创建了当前日志,并估计当前日志存档时间为m秒,而n+m值超过ARCHIVE_LAG_TARGET的值
* 当前日志包含重做记录
ARCHIVE_LAG_TARGET = 1800 单位是秒,默认为0,表示禁止该功能
在选择数值时考虑一下因素:
* 切换日志所消耗的系统开销
* 作为日志完整条件的结果,通常日志切换发生的频率
* 备用数据库可以人寿多少重做损失
注:当数据库本身就经常切换时,设置这个值没有什么意义,而且当设置值很低时,对性能会产生负面影响。
==================================对日志文件的操作===============================
一、创建联机重做日志
1、创建联机重做日志组
alter database add logfile
('/export/home/oracle/oradata/april/log1.log','/export/home/oracle/oradata/april/log2.log') size 500k;
alter database add group 10
('/export/home/oracle/oradata/april/log1.log','/export/home/oracle/oradata/april/log2.log') size 500k;
注:组号必须在1和MAXLOGFILES之间,且不要跳跃使用,否则会耗费数据库控制文件中的空间。
2、创建联机重做日志成员
alter database add logfile member '/export/home/oracle/oradata/april/log2.log' to group 2;
alter database add logfile member '/export/home/oracle/oradata/april/log2.log'
to ('/export/home/oracle/oradata/april/log2.log','/export/home/oracle/oradata/april/log2.log')
注:指定组中所有成员也可以表示这个组。新建的日志成员状态为INVALID,首次使用时变成活动状态。
二、重定位 & 重命名
① 关闭数据库:shutdown immediate
② 在操作系统中移动或重命名联机重做日志文件
③ 启动并装载数据库:startup mount
④ 使用rename语句
alter database rename file
'/export/home/oracle/oradata/april/log1c.log','/export/home/oracle/oradata/april/log2c.log'
to '/export/home/oracle/oradata/april/log1a.log','/export/home/oracle/oradata/april/log2a.log'
三、取消联机重做日志组成员
1、取消日志组
要注意:
① 至少需要保留两组联机重做日志文件
② 日志组状态为“非活动”时才可以取消,如果是“活动”的,则需要进行强制切换
③ 要确保日志组已经存档,可以查看V$LOG视图查看是否存档
alter database drop logfile group 3;
在执行DROP之后要在操作系统中删除磁盘文件
2、取消联机重做日志成员
要注意:
① 可以取消原先对称的组中的成员,使其暂时不对称,但最好立即调整这种状况
② 实例需要至少两个有效联机重做日志文件,且不能取消最后一个有效成员,使用V$LOGFILE查看状态
③ 和取消组一样,需要成员为非活动状态,否则需要进行一次强制切换
④ 确保要取消的成员已经经过存档
alter database drop logfile member '/export/home/oracle/oradata/april/log1.log';
四、强制切换日志
alter system swith logfile;
五、校验重做日志文件中的块
设置DB_BLOCK_CHECKSUM初始化参数为TRUE,则对所有写到磁盘上的Oracle数据块进行校验,包括重做数日志块。
DB_BLOCK_CHECKSUM参数的默认值是FLASE
<具体原理未知>
注:允许校验会对系统产生额外的开销,并且降低数据库性能。需要监视数据库性能以判断校验的代价是否过重。
六、清除联机重做日志文件
在联机重做日志损坏时,可以使用CLEAR命令来初始化联机重做日志文件
但是要注意以下情况不能使用:
* 仅有两个日志组
* 受到损坏的重做日志文件属于当前组
alter database clear logfile group 3;
alter database clear unarchived logfile group 3;
注:清除了恢复备份所需的日志文件,则不能再进行恢复,Oracle将在警报文件中写入一条消息来描述不能恢复的备份。
注:若清除的日志可以将脱机表空间变成联机状态,则需要在语句中加上UNRECOVERABLE DATAFILE子句。
因为清除该日志后再也不能把脱机表空间变成联机状态,所以不得不撤销表空间或执行未完成的恢复过程。
七、查看联机重做日志信息
V$LOG:显示来自于控制文件的重做日志文件信息
V$LOGFILE:标识重做日志文件组及其成员的状态
V$LOG_HISTORY:包含日志历史信息
数据文件
一、DataFile管理准则
1、初始参数DB_FILES
DB_FILES指出了数据文件信息保留的SGA空间数量,所以也指出了可以为该实例创建的数据文件的最大编号。
注:更改DB_FILES值需要重启实例后才可生效。
DB_FILES太小,则在关闭数据库前无法添加超过限制数量的数据文件,太大则消耗内存。
2、添加DataFile到表空间
添加DataFile到表空间需要遵循一下的条件:
* 操作系统对一个进程能够同时打开的文件数加以限制
* 操作系统对数据文件的数量和大小加以限制
* Oracle对实例打开的数据库文件最大数量有限制(与操作系统有关)
* 不能超过DB_FILES所指定的数据文件数量
* CREATE DATABASE/CONTROLFILE 中 MAXDATAFILES子句的影响
3、考虑性能的影响
4、确定数据文件的大小
SYSTEM表空间的数据文件至少需要150M来包括数据字典和回滚段。
如果安装了Oracle的其他产品,则可能还需要额外的空间。
5、适当放置数据文件
数据文件全部放在一个磁盘驱动器可能会引起竞争,有条件可以分开存放。
6、与重做日志文件分开存储
数据文件与重做日志文件存放在一个磁盘容易造成全部数据丢失,尽量分开存放。或保存多个重做日志文件。
二、创建和添加DataFile
create tablespace --创建表空间及其数据文件
create temporary tablespace --创建临时表空间及其临时文件
alter tablespace ... add datafile --添加一个数据文件
alter tablespace ... add tempfile --添加一个临时文件
create database --创建数据库和关联的数据文件
alter database ... create datafile --创建一个新的空的数据文件代替原来的
注:推荐指定文件全名,否则按系统默认会比较混乱。
三、改变DataFile大小
1、启用/禁用数据文件的自动盘区
自动盘区指DataFile可以在额定的范围内自动增长,这样可以减少表空间用完时立即干预的必要,也可以确保应用程序不会因为分配盘区而失败或暂停。
查询数据文件是否为自动盘区,可以查询DBA_DATA_FILES视图的AUTOEXTENSIBLE字段。
要将数据文件设置成自动盘区,可以在以下语句中加入 AUTOEXTEND ON 子句:
CREATE DATABASE ...
CREATE TABLESPACE ...
ALTER TABLESPACE ...
添加的举例:
ALTER TABLESPACE users
ADD DATAFILE '/export/home/oracle/oradata/april/users03.dbf' SIZE 10M
AUTOEXTEND ON
NEXT 512K
MAXSIZE 250M;
禁用的例子:
ALTER DATABASE DATAFILE '/export/home/oracle/oradata/april/users03.dbf'
AUTOEXTEND OFF;
2、手动调整DataFile
使用以下语句来手动改变DataFile的大小:
ALTER DATABASE DATAFILE '/export/home/oracle/oradata/april/stuff01.dbf'
RESIZE 100M;
四、修改数据文件可用性
要使DataFile脱机或联机,有两种方法:
① alter database 语句修改单独的DataFile
② alter tablespace 语句修改所有的DataFile
1、在ARCHIVRLOG模式下的更改DataFile状态
alter database datafile '/export/home/oracle/oradata/april/stuff01.dbf' online;
alter database datafile '/export/home/oracle/oradata/april/stuff01.dbf' offline;
注:只有在archivelog 模式下才可使用alter database来更改DataFile
2、在NOARCHIVELOG模式下使DataFile脱机
由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER
DATABASE语句下带有DATAFILE和OFFLINE
DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时
alter database datafile '/export/home/oracle/oradata/april/users3.dbf' offline drop;
3、修改TableSpace中所有DataFile或TempFile的可用性
ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}
ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE}
注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。
总结:
① ALTER TABLESPACE可以在数据库装载状态时发布,无需打开
② 涉及到系统表空间、撤销表空间、默认临时表空间时,必须是未打开的数据库
③ ALTER DATABASE DATAFILE 语句中必须填入文件全名
=================================DataFile 第二部分=================================
一、DataFile的重命名和重定位
1、单个TableSpace的DataFile重命名及重定位
重命名步骤:
① 使包含该DataFile的非SYSTEM TableSpace脱机
ALTER TABLESPACE users OFFLINE NOEMAL;
② 利用操作系统重命名DataFile
③ 使用ALTER TABLESPACE RENAME DATAFILE语句改文件名
ALTER TABLESPACE users
RENAME DATAFILE '/export/home/oracle/oradata/april/user1.dbf','/export/home/oracle/oradata/april/user2.dbf'
TO '/export/home/oracle/oradata/april/users01.dbf','/export/home/oracle/oradata/april/users02.dbf';
④ 备份数据库
注:重定位的操作基本上与重命名相同,即在改变名称的基础上也通过操作系统改变了位置。
2、多个TableSpace中的DataFile重命名和重定位
① 确保数据库被装载,但是关闭(必须关闭,与单TableSpace不同)
② 利用操作系统重命名及重定位DataFile
③ 使用ALTER DATABASE命令
ALTER DATABASE
RENAME FILE '/export/home/oracle/oradata/april/sort01.dbf','/export/home/oracle/oradata/april/user3.dbf'
TO '/export/home/oracle/oradata/april/temp01.dbf','/export/home/oracle/oradata/april/users03.dbf';
④ 备份数据库
二、验证DataFile中的数据块
如果需要配置Oracle来校验数据块,则需要将DB_BLOCK_CHECHSUM参数项设置为TRUE
注:DB_BLOCK_CHECHSUM的默认值是FALSE,但可以动态改变。
工作过程:
当启用块校验时,Oracle为每个写到磁盘的块计算校验和,包括临时块。DBWn为每个块计算校验和后,将其存储在块的头部,下一次Oracle读一个数据块时,使用它来校验和检测块中的讹误,若有错误则返回ORA-01578,并将错误信息写入跟踪文件
三、查看数据文件信息
DBA_DATA_FILES:每个数据文件的说明信息,包括所属表空间和文件标识
DBA_EXTENTS:组成数据库中所有段的盘区,包括盘区的数据文件标识
DBA_FREE_SPACE:表空间中的空闲盘区,包含该盘区的数据文件标识
V$DATAFILE:来自控制文件的数据文件信息
V$DATAFILE_HEADER:包括来自数据文件头部的信息
SELECT NAME, FILE#, STATUS, CHECKPOINT_CHANGE# "CHECKPOINT"
FROM V$DATAFILE;
NAME:数据文件全名
FILE#:文件号
STATUS:SYSTEM表空间的DataFile直接标SYSTEM,其他则标ONLINE|OFFLINE(RECOVER)
CHECKPOINT_CHANGE#:最近的检测点写入的最终SCN
Oracle的存储的三大物理文件的更多相关文章
- ORACLE管理存储结构之物理机构+逻辑结构【weber出品】
一.数据库的存储结构有物理结构和逻辑结构组成的 物理结构:物理上,oracle是由一些操作系统文件组成的 SQL> select name from v$datafile; NAME ----- ...
- oracle逻辑存储结构
oracle数据库管理系统有三个重要的概念:实例.数据库.数据库服务器.oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构.逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理 ...
- Oracle的表空间和数据文件
一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...
- ORACLE数据库存储结构
一.数据块 Oracle对数据库数据文件中的存储空间进行管理的单位是数据块.数据块是数据库中最小的(逻辑)数据单位,是最小的I/O单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节.每 ...
- oracle的存储结构
表空间 当一个用户被创建以后,随之就要为用户分配数据存储的空间,这在oracle中成为“表空间”(Tablespace). 在数据库中创建用户时,基于应用性能和管理的考虑,最好为不同的用户创建独立的表 ...
- ORACLE数据库存储结构简介(转)
首先,oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内部的组织和管理数据的方式. 物理存储结构:o ...
- Oracle 数存储——物理结构
Oracle存储——逻辑结构 Oracle 数据库存储物理结构 物理存储结构是实际的数据存储单元,对应于操作系统文件. oracle数据库就是由驻留在服务器的磁盘上的这些操作系统文件组成的. 物理存储 ...
- Oracle 逻辑存储结构
一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...
- MySQL物理文件组成
日志文件 错误日志:Error Log 错误日志记录了MySQL运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息.在默认情况下,系统记录错误日志的功能是关闭 ...
随机推荐
- LAMP环境搭建之编译安装指南(php-5.3.27.tar.gz)
测试环境:CentOS release 6.5 (Final) 软件安装:httpd-2.2.27.tar.gz mysql-5.1.72.tar.gz php-5.3.27.tar.gz 1 ...
- 右键tomcat找不到项目:There are no resources that can be added or removed from the server.
右键Add and Remove找不到项目,会出现下面这个弹框: 之后在项目文件夹上右键(Java Build Path中引用的jdk的版本也需要和下面这个Project Facets中配置的java ...
- Java精通并发-轻量级锁与重量级锁的变化深入详解
在上一次https://www.cnblogs.com/webor2006/p/11446129.html的理论的最后谈到了锁的演化,如下: 下面具体来阐述一下: 偏向锁:它是针对一个线程来说, 它的 ...
- linux系统编程之管道(二)
今天继续研究管道,话不多说,言归正传: 对于管道,有一定的读写规则,所以这里主要是对它的规则进行探讨,具体规则如下: 规则一: 下面用程序来验证下,还是用上节学的子进程写数据,父进程读取数据的例子,只 ...
- Java并发(九)【转载】不可不说的Java“锁”事
转载自 美团技术团队,原文链接 不可不说的Java“锁”事 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK ...
- 常用的HTTP状态码,网站开发请求状态必备
成功的状态码: 200 – 服务器成功返回网页 304 – 未修改 失败的状态码: 404 – 请求的网页不存在 503 – 服务器暂时不可用 500 – 服务器内部错误 下面的不是很常用,记住上面那 ...
- 导入Excel数据到Oracle数据库的脚本
在cmd运行窗口中输入:sqlldr customermanager/123@orcl control="E:\CustomerData\excelInputOracle\insert.ct ...
- Mybatis 使用PageHelper封装通用Dao分页方法
参考: PageHelper官网:https://pagehelper.github.io/docs/howtouse/#3-%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BB%A3% ...
- 解决 spring boot 线程中使用@Autowired注入Bean的方法,报java.lang.NullPointerException异常
问题描述 在开发中,因某些业务逻辑执行时间太长,我们常使用线程来实现.常规服务实现类中,使用 @Autowired 来注入Bean,来调用其中的方法.但如果在线程类中使用@Autowired注入的Be ...
- jquery页面多个倒计时效果
<div class="timeBox" data-times="2019/06/30,23:59:59"> 距结束 <span class= ...