1、控制文件:控制文件中保存数据库中关于日志文件、数据文件、临时表空间文件信息。控制文件正常,才能使Oracle数据库正常打开/关闭。控制文件在数据库启动时,在nomount转到mount阶段发挥作用,mount阶段会读取控制文件。
文件系统建库时查看控制文件(cd /oradata/fsdb ;ls -l control*):
1、所有的控制文件大小一致;
2、文件的最后修改时间一直。
注意:数据库对控制文件的修改是同时的,而多个控制文件作为镜像副本存在,提供控制文件的冗余。
如何查看控制文件位置:
1、show parameter control;
2、select name from v$controlfile;
2、数据文件:数据文件中保存软件信息,用户数据。数据文件正常,数据库才能正常open。
故障模拟:缺失日志文件---->报错?
查看数据文件(cd /oradata/fsdb ; ls -l *.dbf):
1、每个文件大小不同;
2、每个文件最后修改时间不同;
3、每个文件的工作机制是相对独立的。
查看数据文件路径:select name from v$datafile;
3、重做日志文件:重做日志文件用于保存redo log。redo日志文件正常,数据库才能正常open。
故障模拟:缺失日志文件---->报错?
查看数据文件(cd /oradata/fsdb ; ls -l redo*.log):
1、三个日志文件大小一致,默认大小50M;
2、三个文件最后修改时间不同。
备注:redo log file的使用是循环覆盖,并且每个文件大小是固定的。redo log工作机制是循环覆盖,在Oracle中经常谈到的概念不是redo log file而是redo log group,目的是为了提供redo log file层面的冗余。Oracle数据库在同一时间点,只会对一组redo log group进行写操作。
查看redo log group当前日志组信息:
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CURRENT //当前日志组
2 1 INACTIVE
3 1 INACTIVE
日志组切换:
1、日志组中空间使用完;
2、手动切换日志组,alter system switch logfile;
4、归档日志文件:归档日志文件和Oracle数据库运行没有直接关系。当重做日志组由1切换到2时,会对重做日志组1进行归档。
redo实际工作场景:
1、redo log本身是保证脏块安全的,当数据库异常实例停止,这个时候启动实例时redo log和数据块会重构脏块,用来恢复数据库open(重构脏块:会把提交的脏块进行落盘操作,未提交的脏块进行回滚处理)。
2、如果数据库异常,需要恢复的数据时间是10小时,假如redo log本身只能恢复3小时数据,这个时候就引入了归档日志。redo log因为是循环覆盖,所以redo log file能保存的redo log是有限的。
总结:数据完全恢复=备份集+归档+redo log fiel。
5、备份文件:我们在使用备份工具备份数据库中数据时产生的文件。
6、参数文件:在$ORACLE_HOME/dbs下存放。包括pfile和spfile。
查看参数文件信息:
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATADG/asmdb/spfileasmdb.ora
1、查看spfile存放路径;
2、可以用于判断当前数据库启动时使用的是pfile还是spfile。
参数文件修改总结:
1、如果数据库从spfiel启动,我们可以在数据库中进行对参数文件的修改。
2、如果数据库从pfile启动,不能在数据库中修改参数文件,只能在系统中使用编辑器对参数文件编辑。
7、密码/口令文件:存放在$ORACLE_HOME/dbs中,密码文件名格式是orapwSID。密码文件用来存放具有sysdba权限的用户密码(sys用户密码)。使用sys用户远程连接会进行密码校验,其他用户的密码保存在数据库中。
生成密码文件,保存sys用户密码,通过orapwd重新生成密码文件,用于重置sys密码:orapwd file=orapwSID password=123456 force=y。
8、告警日志/追踪文件:存放在$ORACLE_BASE/diag/rdbms/db_name/trace/alert_SID.log。
如何查看日志:
1、从下往上看,找最近的ORA级别报错;
2、翻译报错。
网友评论