文件

1.  概述

1  与实例相关的文件包括:

      参数文件(parameter file):告诉oracle实例在哪里可以找到控制文件,并且指定某些初始化参数(这些参数定义了某种内存结构有多大等设置)。

      跟踪文件(trace file):一个服务器进程对某种异常错误条件做出响应时创建的诊断文件。

      警告文件(alert file):与跟踪文件类似,但包含期望事件的有关信息,并通过一个集中式文件(其中包括多个数据库事件)警告DBA

2 与数据库相关的文件包括:

      数据文件(data file):包括数据表、索引和所有其他段。

      临时文件(temp file):用于完成基于磁盘的排序和临时存储。

      控制文件(control file):指出数据文件、临时文件和重做日志文件在哪里,并指出与文件状态有关的其他元数据。    

      重做日志文件(redo log file):事务日志。

      密码文件(password file):用于对通过网络完成管理活动的用户进行认证。

      修改跟踪文件、闪回日志文件、转储文件、数据泵文件、平面文件。

 

2.    参数文件

1  参数文件有很多种,如客户工作站上的tnsnames.ora文件(用于查找网络上的一个服务器),服务器上的listener.ora文件(用于启动网络监听器)等等,但最重要的参数文件是数据库的参数文件:初始文件(init file)或init.ora文件;服务器参数文件(server parameter file)或简称为SPFILE

2 数据库参数实际上就是一个"/"对。要得到一个实例参数的当前值,可以查询视图V$PARAMETER或使用SHOW PARAMETER命令。

        例: SELECT value FROM v$parameter
                 WHERE name = 'pga_aggregate_target';

             SHOW  PARAMETER pga_agg          --该命令会自动完成通配(如在pga_agg的两端自动加上%,变为%pga_agg%
3
遗留的init.ora参数文件

1.  参数文件不必放在特定的位置上,启动一个实例时,可以在启动命令上使用pfile=filename选项。

2.  ALTER SYSTEM命令改变SGA组建的大小时,并不会作为一个永久修改反映到init.ora文件中,如果希望是永久的,则必须确保可能用于启动数据库的所有的init.ora参数文件都得到手动地更新。

3. 遗留的参数文件不一定位于数据库服务器上,init.ora参数文件必须放在启动数据库的客户机上(这会导致这些参数文件大面积繁殖)。

4 服务器参数文件(SPFILE)

1. 相比于init.ora文件,具有如下优点:

              1. 可以杜绝参数文件的繁殖(SPFILE总是存储在数据库服务器上,必须存在于服务器主机本身,不能放在客户机上。)

              2. 无需在数据库之外使用文本编辑器手动地维护参数文件(实际上是不能手动的维护),ALTER SYSTEM命令可以直接将值写入SPFILE。管理员不必再手动地查找和维护所有参数文件。

2. 转换为SPFILE

        假设使用一个init.ora参数文件,且该文件确实在服务器的默认位置上,则可使用CREATE SPFILE命令将其转换为SPFILE,并重启服务器就行了。

       例: CREATE spfile FROM pfile;

                 startup force;

      注:在集群环境中,为了从使用各个PFILE转换为所有实例都共享一个公共的SPFILE,需要把各个PFILE合并为一个特定格式的PFILE文件,格式为:集群中所有实例共享的参数设置都以*开头,单个实例特有的参数设置都以实例名(ORACLE_SID)为前缀。

3.  设置SPFILE的参数值

          1. SPFILE是二进制文件,不能用文本编辑器编辑。

          2. 使用ALTER SYSTEM命令修改,语法如下:

              Alter system set parameter=value

                                                                 

          注:  1. comment='text'是一个可选注释,该注释会出现在V$PARAMETER视图的UPDATE_COMMENT字段中。

                     2. deferred指定系统修改是否只对以后的会话生效(对当前建立的会话无效,包括执行此修改的会话)。默认情况下,ALTER SYSTEM命令会立即生效,但有些参数不能立即修改,只能为新建立的会话修改这些参数。

                     3. SCOPE=MEMORY|SPFILE|BOTH指示了参数设置的作用域:SCOPE=MEMORY只在实例中修改,数据库重启后不再保存(下一次重启数据库时,设置还是修改前的样子);SCOPE=SPFILE只修改SPFILE中的值,数据库重启并再次处理SPFILE之前,这个修改不会生效;SCOPE=BOTH是指内存和SPFILE都会完成修改,这个修改将反映在当前实例中,下一次重启时,这个修改也会生效。(使用SPFILE时默认的作用域,若使用init.ora参数文件,默认则为SCOPE=MEMORY,这也是唯一合法值)。sid='sid | *'主要用于集群环境,默认为sid=’*'

4.  取消SPFILE中的值设置

         Alter system reset parameter sid='sid | *'

         注:sid=部分不再可选,在非RAC环境中,可以为这个子句指定sid='*'

5.  SPFILE创建PFILE

         例:create pfile='init_orcl.org' from spfile;

6.  如果SPFILE丢失了,可以从数据库的警告日志恢复参数文件的信息。

 

跟踪文件

作用:提供调试信息。服务器遇到问题时,它会生成一个包含大量诊断信息的跟踪文件。

1)   请求的跟踪文件

1.       通常是设置了SQL_TRACE=TRUE生成的结果或是通过10046事件使用扩展的跟踪工具生成的。

2.       文件位置:

专用服务器:在USER_DUMP_DEST目录中。

共享服务器:在BACKGROUN_DUMP_DEST目录中。

3.       通过SHOW PARAMETER DUMP_DEST命令或直接查询V$PARAMETER或使用DBMS_UTILITY包访问跟踪文件的位置。

例:SQL> show parameter dump_dest

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

background_dump_dest                 string      d:\app\administrator\diag\rdbm

                                                 s\orcl\orcl\trace

core_dump_dest                       string      d:\app\administrator\diag\rdbm

                                                 s\orcl\orcl\cdump

user_dump_dest                       string      d:\app\administrator\diag\rdbm

                                                 s\orcl\orcl\trace

4.       命名约定

文件名第一部分是ORACLE_SID,下一部分是ora,最后一部分是专用服务器的进程ID(可从v$process视图得到)。

例:d:\app\administrator\diag\rdbms\orcl\orcl\trace/orcl_ora_3060.trc

在实际中(使用专用服务器模式),需访问4个视图:V$PARAMETER(查找USER_DUMP_DEST指定的跟踪文件位置),V$PROCESS(查找进程ID)V$SESSION(正确表示其他视图中的会话信息),V$INSTANCE(得到ORACLE_SID)。

5.       对跟踪文件加标记

例:alter session set tracefile_identifier = 'look_for_me'

跟踪文件名变为:d:\app\administrator\diag\rdbms\orcl\orcl\trace/orcl_ora_3060_look_for_me.trc

2)   针对内部错误生成的跟踪文件

1.       由于ORA-00600或另外某个内部错误而自动生成,此种跟踪文件只对ORACLE SUPPORT有用。

 

4.       警告文件

警告文件(也称警告日志(alert log))就是数据库的日记,是一个简单的文本文件,从数据库“出生”(创建)那一天起就会编写该文件,知道数据库“完结”(被删除)为止。

 

5.       数据文件

1)   所有实际的数据库至少有3个数据文件:一个存储SYSTEM数据,一个存储SYSAUX数据,一个存储USER数据。

2)   四种文件系统机制:

1.       Cooked”操作系统文件系统:这些文件就像字处理文档一样放在文件系统中。(通常会缓存)

2.       原始分区(raw partitions,也称裸分区):不是文件,而是原始磁盘。(没有任何OS缓冲)

3.       自动存储管理(Automatic Storage ManagementASM):Oracle 10g Release 1新特性。

4.       集群文件系统:专用于RAC(集群)环境,看上去有些像集群环境中多个节点(计算机)共享的cooked文件系统。

3   Oracle数据库中的存储层次体系

         数据库由一个或多个表空间构成,位于存储层次体系的顶层,包括一个或多个数据文件。

1.       段(segment

段就是占用存储空间的数据库对象,如表、索引、回滚段等。创建表、分区表、索引时都会创建段。

例:CRAETE TABLE T (x int primary key, y clob)

该语句创建4个段:一个是TABLE T的段;一个索引段(为支持主键而创建);两个CLOB段(一个CLOB段是LOB索引,一个段是LOB数据本身)。

2.       区段(extent

段本身由一个或多个区段组成。区段是文件中一个逻辑上连续分配的空间(物理上(在磁盘上)不一定是连续的)。

3.       块(block

1)   区段又进一步由连续分配的块组成。块是Oracle中最小的空间分配单位。数据行、索引条目或临时排序结果就存储在块中。

2)   6中块大小:默认块大小(执行CREATE DATEBASE命令时初始化文件中指定的大小)、非默认块大小(2KB4KB8KB16KB)、非标准块大小(不是2的幂)。

3)   一个表空间中的所有块的大小都相同。任何给定段都由相同大小的块组成。

4.       表空间

1)   每个段只属于一个表空间,段绝对不会跨越表空间边界。一个表空间可能有多个段。

2)   表空间本身可以有一个或多个相关的数据文件。表空间中给定段的一个区段完全包含在一个数据文件中。不过,段可以有来自多个不同数据文件的区段。

3)   表空间是Oracle的逻辑存储容器,开发人员只会在表空间中创建段,而绝对不会深入到原始的“文件级”。

5.       存储层次体系小结

1)   数据库由一个或多个表空间组成。

2)   表空间由一个或多个数据文件组成(cooked文件、原始分区、ASM管理的数据文件、或集群文件系统上的文件)。表空间包含段。

3)   段由一个或多个区段组成。段在表空间中,但可以包含这个表空间中多个数据文件中的数据。

4)   区段是由一组连续的数据块组成。区段只在一个表空间中,而且总是在该表空间内的一个文件中。

5)   块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。

4   字典管理和本地管理的表空间

1.    字典管理表空间(dictionary-managed tablespace):表空间中的空间在数据字典中管理,为了得到额外的空间会在后台执行递归SQL(在后台代表你执行的SQL)。如果频繁执行递归SQL,开销将相当大。

2.    本地管理表空间(locally-managed tablespace):使用每个数据文件中存储的一个位图来管理区段。要得到一个区段,系统所做的只是在位图中将某一位置设置为1;要释放空间,系统再把这一位置设置为0.提高了空间分配和释放的速度,并能保证区段的大小统一和避免出现表空间碎片。

3.      如果数据库中SYSTEM是本地管理的表空间,则所有其他表空间也会是本地管理的,在数据库中根本无法创建字典管理的表空间。

                  

6.      临时文件

1   作用:存储大规模排序操作和散列操作的中间结果,如果RAM中没有足够的空间,还会用临时文件存储全局临时表数据或结果数据。永久数据对象(如表和索引)不会存储在临时文件中,但临时表及其索引的内容要存储在临时文件中。不能在临时文件中创建表,但可使用临时表在其中存储数据。

2   对临时文件并不生成redo日志,但可以生成undo日志。由于undo总是受redo的“保护”,因此,也会生成使用临时表的redo日志。

 

7.      控制文件

1   作用:参数文件告知实例控制文件的位置,而控制文件则告知实例数据库和在线重做日志文件的位置。

2   控制文件应该通过硬件(RAID)多路保存,如果不支持镜像,则要通过Oracle多路保存。应该有不止一个副本。

 

8.         重做日志文件

作用:是数据库的事务日志,通常只用于恢复,不过也用于以下工作:系统崩溃后的实例恢复;通过备份恢复数据文件之后恢复介质;备用数据库处理;输入到流中(这是一个重做日志挖掘过程,用于实现信息共享)。

目的:万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库的方法来完成故障恢复。

1)     在线重做日志

1.       每个Oracle数据库都至少有两个在线重做日志文件组。每个重做日志组都包含一个或多个重做日志成员,且这些在线重做日志文件的大小是固定的,并以循环方式使用。

2.       从一个日志文件组切换到另一个日志文件组的动作称为日志切换(log switch)。日志切换可能会导致临时性“暂停”。

3.       在重用重做日志之前,失败时应该不需要重做日志文件的内容。如果Oracle不清楚是否真的不需要日志文件的内容,就会暂时挂起数据库中的操作,确保将缓存中的数据(即redo“保护”的数据)安全地写入磁盘本身(建立检查点)。一旦Oracle能肯定这一点,再恢复处理,并重用重做日志文件。只要修改的块被缓存而未写入磁盘,就不能重用重做日志文件。

4.       建立检查点就是把赃块(已修改的块)从缓冲区缓存写至磁盘,有后台进程DBWn完成。日志切换会导致建立检查点(在填满日志文件1并切换到日志文件2时,Oracle会启动一个检查点。此时,DBWn开始将日志文件组1所保护的所有脏块写至磁盘。在DBWn把该日志文件保护的所有块刷新输出之前,Oracle不能重用这个日志文件。如果DBWn在完成其检查点之前就想使用日志文件,就会在数据库的ALERT日志中得到一下错误:…Checkpoint not complete…)。

2   归档重做日志

1.      定义:在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除开始写新的在线Redo File。这种备份的在线重做日志就是归档日志。而数据库如果采用这种生成归档日志的模式的话,就是归档日志模式(ARCHIVELOG模式),反之如果不生成归档日志,就是非归档日志模式(NOARCHIVELOG模式)。

         2.      作用:例:

比如在这个月1号的时候备份了一次数据,然后过了10天,这10天生成了成百上千个在线重做日志,突然发现其中有一个数据磁盘出问题了,不能用了,那我该如何是好呢。如果没有采用归档日志,那么实际上磁盘中只会有几个最新的在线重做日志。那么我只能要不然把出问题的数据磁盘上所占据的表空间都删除掉。但是如果是SYSTEM表空间所涉及的磁盘出错,就没办法这么做了,只能用第二种方法。那第二种方法就是把1号备份的数据拿出来恢复。那么1号到10号之间的10天的数据都丢了,如果是关键系统,比如证券金融什么的系统,就要让你赔钱赔死掉。但是如果有了归档日志,那么你这10天的重做日志都会存放起来,那么DBA首先把1号的备份数据恢复,然后再拿这10天的归档重做日志和最终的在线重做日志来进行一次数据操作重放,那么就可以完全恢复最新的数据库,不会有什么后果了。

3.       注意:如果数据库不以ARCHIVELOG模式运行,肯定会丢失数据。

 

9.         密码文件

1)     作用:是一个可选的文件,允许远程SYSDBA或管理员访问数据库。

2)     启动Oracle时,还没有数据库可以用来验证密码。在“本地”系统上启动Oracle时(即不在网络上,而是从数据库实例所在的机器启动),Oracle利用操作系统来执行这种认证。安装Oracle时,会要求完成安装的人指定管理员“组”:在UNIX/Linux上这个组默认为DBAWINDOWS上则默认为OSDBA。这个组中的任何用户都可以作为SYSDBA连接Oracle,而无需指定用户名或密码。例:sqlplus / as sysdba

3)     在网络上,对于SYSDBA的操作系统认证不再奏效,Oracle使用密码文件来进行网络远程认证。可使用命令行工具orapwd创建和填写初始的密码文件:Usage: orapwd file= password= entries= force= ignorecase= nosysdba=。创建后该文件只有一个用户SYS,其他SYSDBA帐户必须通过重新授予SYSDBA权限才能放到密码文件中。

 

10.         修改跟踪文件

1)   作用:是一个可选的文件,目的是跟踪自上一个增量备份以来哪些块已经修改。采用该方式,恢复管理器(Recovery ManagerRMAN)工具就能只备份确实有变化的数据库块,而不必读取整个数据库。

2)   创建命令:SQL> alter database enable block change tracking using file 'filename';

关闭和删除命令:SQL> alter database disable block change tracking;(注:不止禁用该特性,而且连文件也一并删除。)

 

11.      闪回日志文件(flashback log file

1)     作用:简称为闪回日志(flashback log)。包含已修改数据库块的“前映像”,可用于将数据库返回(恢复)到该时间点之前的状态。

2)     闪回数据库

1.      引入FLASHBACK DATABASE命令是为了加快原本很慢的时间点数据库恢复过程。闪回可以取代完整的数据库恢复和使用归档日志完成的前滚,主要目的是加快从“意外状态”中恢复。

2.      恢复步骤:1. DBA关闭数据库;2. DBA启动并装载数据库,可以使用SCNOracle时钟或时间戳发出闪回数据库命令,时间可以精确到一两秒钟;3. DBARESETLOGS选项打开数据库。(注:要使用该特性,数据库必须采用ARCHIVELOG模式,而且必须配置为支持FLASHBACK DATABASE命令。)

3   闪回恢复区

作用:Oracle在这里管理与数据库备份和恢复相关的多个文件,在这个区中,可以找到:磁盘上数据文件的副本;数据库的增量备份;重做日志(归档重做日志);控制文件和控制文件的备份;闪回日志。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17014649/viewspace-607623/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17014649/viewspace-607623/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值