下面所介绍的文件中,最重要的是数据文件和重做日志文件,因为其中包含了你辛辛苦苦才积累起来的数据。只要有这两个文件,就算是其他文件都没有了,也能得到自己的数据。如果把重做日志文件弄丢失了,可能会丢失一些数据。如果把数据文件和所有备份都丢失了,那么这些数据就永远也找不回来了。
一、parameter file - 参数文件
包含一系列参数及参数对应值的操作系统文件
1、什么是参数
-
可以把数据库参数想象成一个键/值对。例如“db_name = ora11g”
-
查看参数值:
-
法一:查询动态性能视图(v$parameter)
select name,values,isses_modifiable,issys_modifiable from v$parameter; -
法二:
show parameter parameter_name
-
2、作用
告诉Oracle 实例在哪里可以找到控制文件,并且指定某些初始化参数,这些参数定义了某种内存结构有多大的设置
3、存放位置
$ORACLE_HOME/dbs目录下
4、类型
- 遗留的 init.ora 参数文件:
init<$ORACLE_SID>.ora - SPFILE(server parameter file) - 服务器参数文件:
spfile<$ORACLE_SID>.ora
5、参数文件搜索规则
spfile<$ORACLE_SID>.ora ==> spfile.ora ==> init<$ORACLE_SID>.ora
6、参数的修改
6.1 会话级别
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
6.2 实例级别
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
scope :
memory - 当前实例生效
spfile - 将修改的内容存入spfile文件,再次启动实例生效
both - 当前和重启后均生效(默认)
【注】如果使用的是静态参数文件启动的时候,在实例级别修改的,不能够保存,会在下一次会话生效
7、两种类型的参数文件的转换
需登录sqlplus
7.1 从spfile生成pfile
SYS@orcl11g> create pfile from spfile;
SYS@orcl11g> create pfile='/home/oracle/p.ora' from spfile;
7.2 从pfile生成spfile
SYS@orcl11g> create spfile from pfile; --如果是实例正在运行会报错;
SYS@orcl11g> create spfile='/home/oracle/s.ora' from pfile;
7.3 通过内存的状态,创建一个参数文件:(oracle 11g的功能)
SYS@orcl11g> create pfile from memory;
8、指定使用哪种参数文件启动数据库
-
默认使用spfile参数文件启动数据库
-
只能指定静态参数文件的位置来启动,而服务器参数文件必须放在$ORALCE_HOME/dbs目录下才行
startup pfile='/home/oracle/p.ora'
9、判断使用哪种参数文件启动的数据库
SQL> show parameter spfile;
如果存在一个具体的文件名,说明使用的就是spfile参数文件;反之,使用的就是静态参数文件
对于所有现有的数据库,都推荐使用SPFILE,更易于管理,使用 ALTER SYSTEM命令就可持久的保存参数值。
二、trace file - 跟踪文件
可以提供调试信息
有两类跟踪文件:1)请求的跟踪文件,即想要的跟踪文件。包含有关绘画的诊断信息,有助于调整应用、优化应用的性能,并诊断遭遇的瓶颈;2)针对内部错误生成的跟踪文件。不要想要的跟踪文件,但是由于出现了错误,服务器自动生成的文件
1、请求的跟踪文件
启用DBMS_MONITOR.SESSION_TRACE_ENABLE
查看文件位置:
- 法一:
show parameter dump_dest- 专用服务器:user_dump_dest
- 共享服务器:background_dump_test
- 法二:通过
V$DIAG_INFO视图查看- Diag Trace:文件位置
- Default Trace File:跟踪文件名
2、针对内部错误生成的跟踪文件
这个文件只对 Oracle Support 有用。如果得到内部错误,修正错误的唯一办法是要提交一个服务请求,而当提交请求时这些跟踪文件会很有用。如果错误忽略,除非出现意外,否则不会自行修正。
三、alert file - 警告文件
oracle给我们提供了oracle软件运行期间的debug信息;根据这些信息能够精准的知道oracle出现问题的根源;可以生成外部表来查看。
关注其报错信息:grep -i ERR alter_<ORACLE_SID>.log
ALERT LOG FILE:
- ORACLE 10G:
$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_<$ORACLE_SID>.log - ORACLE 11G:
$ORACLE_BASE/diag/rdbms/DB_NAME/$ORACLE_SID/trace/alter_<ORACLE_SID>.log
警告日志文件包含的内容:
- ORA-600:内部错误、块损坏错误、死锁错误
- 一些关于共享服务器功能和调度程序的信息和错误
- 自动刷新物化视图的错误
四、data file - 数据文件
两种类型数据:
- 系统数据:关于oracle的内部的元数据信息
- 用户数据:用户自己业务相关的数据
如何查询当前数据库的数据文件:
dba_data_files; --查看数据文件信息
SYS@orcl11g> col file_name for a50
SYS@orcl11g> select file_id,file_name from dba_data_files order by 1;
FILE_ID FILE_NAME
------------ --------------------------------------------------------------
1 /u01/app/oracle/oradata/orcl11g/system01.dbf
2 /u01/app/oracle/oradata/orcl11g/sysaux01.dbf
3 /u01/app/oracle/oradata/orcl11g/tbs01.dbf
4 /u01/app/oracle/oradata/orcl11g/users01.dbf
5 /u01/app/oracle/oradata/orcl11g/example01.dbf
SYS@prod>select file#,name from v$datafile order by 1;
FILE# NAME
---------- ----------------------------------------------------------
1 /u01/app/oracle/oradata/prod/system01.dbf
2 /u01/app/oracle/oradata/prod/sysaux01.dbf
3 /u01/app/oracle/oradata/prod/undotbs01.dbf
4 /u01/app/oracle/oradata/prod/users01.dbf
5 /u01/app/oracle/oradata/prod/example01.dbf
如何更改当前数据库的数据文件名字:
SYS@prod>alter database rename file '/u01/app/oracle/oradata/prod/tbs01.dbf' to '/home/oracle/tbs01.dbf';
【注】关于表空间、段、区以及块这些内容将在下一篇逻辑存储结构中详细介绍
五、temp file - 临时文件
是一种特殊类型的数据文件。
Oracle使用临时文件来存储大规模排序操作和散列操作的中间结果。如果RAM中没有足够的空间,还会用临时文件存储全局临时表数据,或结果集数据。永久数据对象(如表或索引)不会存储在临时文件中,但是临时表及其索引的内容要存储在临时文件中。所以,不可能在临时文件中创建表,但是使用临时表时完全可以在其中存储数据。
六、control file - 控制文件
1、作用
描述了数据库的物理结构(数据文件、日志文件的名称和位置),数据库当前状态,检查点信息,还有备份的信息
2、文件位置
-
数据库到了nomount状态就能用入选方式查看

-
只有在mount状态下,才能才能查看
SYS@prod> select * from v$controlfile;
ORACLE server如何知道控制文件的位置?
- 参数文件指定了控制文件的位置;
- 控制文件的使用是多路复用的,最多可以有8个控制文件,并且这些控制文件是镜像的关系
3、文件内容
V$CONTROLFILE_RECORD_SECTION
SYS@prod> select * from v$controlfile_record_section;

进程读的总是第一个控制文件,当第一个控制文件损坏时,读写操作都会出错;当第一个控制文件之外的其他控制文件出问题时,只有写操作才会出错,读操作正常。
七、redo log file - 重做日志文件
数据库的事务日志
1、Online redo logfiles - 在线重做日志
在线重做日志文件,是用于recovery的最重要的结构;里面包含了两个或者更多的预分配的文件,来存放数据库的变化情况;在线重做日志记录数据文件的变化;在线重做日志,是先圈地,然后再种地;在线重做日志以日志组为单位;日志组的大小决定里面每个成员的大小;日志组的每个成员之间是镜像关系;每个组里可以有多个日志文件;在生产环境中,至少两个成员.
1.1 作用
- 1.系统崩溃后的实例恢复
- 2.通过备份恢复数据文件之后恢复介质
- 3.备用数据库处理
- 4.通过日志挖掘实现数据恢复
1.2 两个关键的数据字典来描述在线重做日志文件的信息
-
V$LOG:显示日志组的信息,这个信息是从control file控制文件中获得的;
SYS@orcl11g> select * from v$log;
-
V$LOGFILE:包含的信息是关于在线重做日志文件的信息
SYS@prod> select * from v$logfile;
2、Archived redo logfiles - 归档重做日志
因为在线重做日志的运行机制(循环使用的机制),会导致日志被覆盖,为了保证日志不被覆盖,更长时间的保留,那么,在线重做日志切换之后,将写满的在线重做日志,保存在另外一个存储位置,这种机制称之为归档
【注意】:ARCn这个进程负责归档操作;归档日志,只保存在线重做日志当中含有数据的部分;如果想要采用归档机制,那么必须将数据库置为归档模式。
查询当前数据库的归档模式:
SYS@orcl11g> archive log list;
Database log mode No Archive Mode -- 数据库日志模式(非归档)
Automatic archival Disabled -- 自动归档
Archive destination USE_DB_RECOVERY_FILE_DEST -- 归档存储位置
Oldest online log sequence 0 -- 最旧的在线重做日志的序列号
Current log sequence 29 -- 当前日志序列号
SYS@orcl11g> select log_mode from v$database;
LOG_MODE
----------------------
NOARCHIVELOG
2.1 归档模式设置 & 管理
-
修改数据库为归档模式
1)一致性关闭数据库 (保持数据文件和日志文件的同步)
shutdown immediate;
2)将数据库启动到mount状态startup mount;
3)修改数据库日志模式SYS@orcl11g> alter database archivelog; SYS@orcl11g> alter database noarchivelog;4)打开数据库:
alter database open;
5)查看日志模式:SYS@orcl11g> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST --默认的归档位置:闪回恢复区 Oldest online log sequence 0 Next log sequence to archive 29 --下一个要被归档的日志序列号 Current log sequence 29 --当前正在归档的日志序列号归档日志要放在较快的存储介质上;如果Current log sequence大于Next log sequence to archive说明归档速度慢;
如何提高日志组归档速度:减少日志组切换时间
如果要求归档,归档不成功数据库会hang住,等归档完成,才会正常运行 -
查看归档位置(默认:fast_recovery_area)
SYS@orcl11g> show parameter db_recovery_file_dest; NAME TYPE VALUE ------------------------------------ ----------- ----------------------------------------------- db_recovery_file_dest string /u01/app/oracle/fast_recovery_area -
设置归档的相关参数
ORACLE11G版本,一共可以设置31个归档位置;ORACLE10G版本,一共可以设置10个归档位置。
这么多的归档位置,主要是用于oracle的灾备软件:DATAGUARD;一旦配置了归档日志的存放路径的话,那么归档日志将不会在保存在fast_recovery_area 里面
SYS@orcl11g> show parameter log_archive_dest_ NAME TYPE VALUE ------------------------------------ ----------- ------------------ log_archive_dest_1 string (null) log_archive_dest_10 string (null) log_archive_dest_11 string (null) log_archive_dest_12 string (null) ......... -
设置归档位置
SYS@orcl11g>host mkdir /u01/app/oracle/arch SYS@orcl11g> alter system set log_archive_dest_1='location=/u01/app/oracle/arch'; SYS@orcl11g> host ls /u01/app/oracle/arch SYS@orcl11g> alter system switch logfile; SYS@orcl11g> host ls /u01/app/oracle/arch 1_30_816622368.dbf --归档文件格式:thread (%t), sequence number (%s), and resetlogs ID (%r).–%t ,thread# , 日志线程号
–%s ,sequence ,日志序列号
–%r ,resetlog ,代表数据库的周期
1代表线程号
30代表归档日志的序列号alter system set log_archive_dest_1=''; --将归档位置置为空; alter system archive log all;
【注】:
- 如果全部的归档位置都被取消了设置,那么系统会使用$ORACLE_HOME/dbs/arch这个位置作为归档位置;但是,要注意的是这个位置并不是默认存在的;
- 这样的问题发生,会导致系统无法完成归档,导致系统挂起;
- 解决方法,取消原来的归档位置设置,起用新的归档参数,新的归档位置;
- 手动触发归档的方法:
alter system switch logfile;alter system archive log all;alter system archive log currrent;
2.2 归档相关的数据字典
SYS@orcl11g> desc v$archived_log;

八、password file - 密码文件
- 验证拥有sysdba,sysoper权限的用户登录时的密码校验;
- 保存超级用户(sysdba)的用户名和口令;
- 超级用户的密码审核不能依赖于数据库内部。
- 超级用户,具有启动数据库的能力。如果数据库没有启动,就无法验证。
密码文件存在的位置:$ORACLE_HOME/dbs
密码文件的命名规则:orapw<$ORACLE_SID>
密码文件的文件类型:
[oracle@db253 dbs]$ file orapworcl11g --密码文件的文件类型以内容 orapworcl11g: data
密码文件的内容:
[oracle@db253 dbs]$ strings orapworcl11g --密码文件的内容 ]\[Z ORACLE Remote Password file INTERNAL 87C5F4BF47942D0E e^D_ 4CCF4A082AD3F312 SCOTT F894844C34402B67
查看具有sysdba/sysoper权限的用户:
SYS@prod>select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ----------- -------------- -----------
SYS TRUE TRUE FALSE
SCOTT FALSE TRUE FALSE
HR TRUE FALSE FALSE
Oracle的验证机制:
-
密码验证
-
操作系统验证
如果一个用户,不再需要数据库验证,就能够登录数据库的这种情况,称之为操作系统验证;
-
一种以sysdba身份,登录数据库,需要该用户属于dba组即可;
-
另外一种是普通数据库用户的操作系统验证;如果某一个操作系统用户,属于dba组,那么他就能够以sysdba身份直接登录数据库
-
-
数据库第三方验证(openldap集中用户管理,等其他方式)
修改sys用户密码两种方式:
-
重建密码文件
-
数据库内部:
alter user sys identified by "Oracle123"; -
SYS@orcl11g>password Changing password for SYS Old password: New password: Retype new password:
九、change tracking file - 修改跟踪文件(可选)
跟踪自上一个增量备份依赖那些快已经修改,有利于对Oracle数据建立真正的增量备份
十、flashback log file - 闪回日志文件(可选)
存储数据库快的“前映像”,以便完成新增加的FLASHBACK DATABASE命令,用于将数据库返回(恢复)到该事件点之前的状态
十一、DMP file - 转储文件(EXP/IMP文件)
由export数据库实用程序生成,并由import数据库实用程序使用。跨平台(可移植)的二进制文件
十二、data dump file - 数据泵文件
数据泵文件(Data Pump file):这些文件由Oracle数据泵导出(Data Pump Export)进程生成,并由数据泵导入(Data Pump Import)进程使用。外部表也可以创建和使用这种文件格式。平面文件(flat file):这些无格式文件可以在文本编辑器中查看。通常会使用这些文件向数据库中加载数据。
十三、flat file - 平面文件
数据泵文件(Data Pump file):这些文件由Oracle数据泵导出(Data Pump Export)进程生成,并由数据泵导入(Data Pump Import)进程使用。外部表也可以创建和使用这种文件格式。平面文件(flat file):这些无格式文件可以在文本编辑器中查看。通常会使用这些文件向数据库中加载数据。
实际上,平面文件只是这样一个文件,其中每一“行”都是一个“记录”,而且每行都有一些定界的文本,通常用逗号或管道符号(竖线〉分隔。通过使用遗留的数据加载工具SQLLDR或外部表,Oracle可以很容易地读取平面文件




