ORACLE文件组成:控制文件,数据文件,日志文件
控制文件
相关视图:
V$DATABASE
V$CONTROLFILE
V$CONTROLFILE_RECORD_SECTION
V$PARAMETER
查看控制文件信息:
SELECT TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED FROM V$CONTROLFILE_RECORD_SECTION;
TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE 316 1 1
CKPT PROGRESS 8180 11 0
重做日志(redo log),保存数据库的数据块的所有变化的信息
多元重做日志(Multiplexed redo log)系统在不同的位置上自动维护重做日志的两个或更多个副本
禁止归档操作:
ALTER DATABASE CLEAR UNARCHIVED LOG
指定每个数据库中重做日志文件组的最大数据,在CREATE DATABASE中指定MAXLOGFILES
指定每个日志文件组中包含的日志文件的最大数据:在CREATE DATABASE中指定MAXLOGMEMBERS
归档日志:
归档日志文件是重做日志文件组成员的备份,一旦重做日志组被写满,则由ARC0进程进行归档操作,LGWR不能对未归档的重做日志组进行重用和改写操作
归档日志文件的作用:
1.恢复数据库
2.更新备用数据库
3.使用LOGMINER获取数据库的历史信息
SCN
SCN(SYSTEM CHANGE NUMBER)用来记录和标识执行数据库操作的先后顺序,它是一个只能增加的大整数
当触发CHECKPOINT事件时,ORACLE数据库会将SCN写入以下4个地方:
1.系统检查点(SYSTEM CHECKPOINT SCN):
将SCN保存到控制文件中
SELECT CHECKPOINT_CHANGE# FROM V$DATABASE;
CHECKPOINT_CHANGE#
------------------
1517933
2.数据文件检查点(DATAFILE CHECKPOINT SCN)
SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE;
/u01/app/oracle/oradata/ORCL/sysaux01.dbf 1517933
3.启动 SCN(START SCN):
将每个数据文件的检查点SCN存储在每个数据文件的文件头中,称为启动SCN,在系统启动时,ORACLE会检查数据文件的SCN与控制文件中的SCN是否一致,如果不一致,则从重做日志文件中找到丢失的数据并写入数据文件中
SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER;
/u01/app/oracle/oradata/ORCL/system01.dbf 1517933
4.结束SCN(STOP SCN)
每个数据文件的结束SCN都保存在控制文件中,正常情况下,值都是NULL
SELECT NAME,LAST_CHANGE# FROM V$DATAFILE;
/u01/app/oracle/oradata/ORCL/system01.dbf
查看当前系统生成的最新的SCN
SYS AS SYSDBA@ORCL>SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1522030
1 row selected.
查看数据文件信息:
查看日志文件列表:
SELECT MEMBER FROM V$LOGFILE;
查看数据文件列表:
SELECT NAME FROM V$DATAFILE;
创建数据文件
数据文件是和表空间一起创建的
CREATE TABLESPACE GMY DATAFILE ‘/u01/app/oracle/oradata/ORCL/GMY01.DBF‘ SIZE 50M;
创建临时表空间
CREATE TEMPORARY TABLESPACE TEMPTBS TEMPFILE ‘/u01/app/oracle/oradata/ORCL/TEMPTBS01.DBF‘ SIZE 50M EXTENT MANAGEMENT LOCAL;
向表空间添加数据文件
ALTER TABLESPACE GMY ADD DATAFILE ‘/u01/app/oracle/oradata/ORCL/GMY02.DBF‘ SIZE 50M;
修改数据文件的大小
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/ORCL/GMY02.DBF‘ RESIZE 100M;
查看现有的数据文件
SELECT NAME,BYTES FROM V$DATAFILE;
修改数据文件的在线状态
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/ORCL/GMY02.DBF‘ OFFLINE|ONLINE;
SELECT NAME,BYTES,STATUS FROM V$DATAFILE;
指定表空间中所有数据文件的在线状态
ALTER TABLESPACE GMY DATAFILE ONLINE|OFFLINE;
删除数据文件:
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/ORCL/GMY02.DBF‘ OFFLINE DROP;
删除表空间时,同时删除数据文件:
DROP TABLESPACE GMY INCLUDING CONTENTS CASCADE CONSTRAINTS;
查看重做日志信息
SELECT GROUP#,ARCHIVED,STATUS FROM V$LOG;
GROUP# ARC STATUS
---------- --- ----------------
1 YES INACTIVE
2 NO CURRENT
3 YES INACTIVE
查看重做日志组文件信息
SELECT GROUP#,STATUS,MEMBER FROM V$LOGFILE;
3
/u01/app/oracle/oradata/ORCL/redo03.log
2
/u01/app/oracle/oradata/ORCL/redo02.log
1
/u01/app/oracle/oradata/ORCL/redo01.log
查看重做日志的历史信息
SELECT RECID,FIRST_CHANGE#,NEXT_CHANGE#,RESETLOGS_CHANGE# FROM V$LOG_HISTORY;
RECID FIRST_CHANGE# NEXT_CHANGE# RESETLOGS_CHANGE#
---------- ------------- ------------ -----------------
1 754488 789203 754488
2 789203 793593 754488
3 793593 804307 754488
4 804307 821898 754488
创建重做日志组和成员
ALTER DATABASE ADD LOGFILE GROUP 5(‘redo0501.log‘,‘redo0502.log‘) SIZE 5000K;
在重做日志组中追加成员
ALTER DATABASE ADD LOGFILE MEMBER ‘/u01/app/oracle/oradata/ORCL/redo0503.log‘ TO GROUP 5;
重命名重做日志成员(需要在数据库未打开的情况下修改)
ALTER DATABASE RENAME FILE ‘redo0501.log‘ TO ‘redo0505.log‘;
删除重做日志组和成员
ALTER DATABASE DROP LOGFILE GROUP 5;
ALTER DATABASE DROP LOGFILE MEMBER ‘/u01/app/oracle/oradata/ORCL/redo004.log‘;
清空(初始化)编号为4的重做日志组
ALTER DATABASE CLEAR LOGFILE GROUP 4;
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 4;
管理归档模式
1.SHUTDOWN IMMEDIATE
2.STARTUP MOUNT
3.ALTER DATABASE NOARCHIVELOG|ARCHIVELOG //切换到(非)归档模式
设置执行手动归档
ALTER SYSTEM ARCHIVE LOG ALL;
查看当前数据库实例的归档模式
SELECT LOG_MODE FROM V$DATABASE;
LOG_MODE
------------
ARCHIVELOG
显示归档日志信息
SYS AS SYSDBA@ORCL>ARCHIVE LOG LIST;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 51
Next log sequence to archive 53
Current log sequence 53
切换归档日志:
ALTER SYSTEM SWITCH LOGFILE;
使用V$ARCHIVED_LOG查看历史归档日志信息
SELECT NAME,SEQUENCE#,STATUS FROM V$ARCHIVED_LOG;
STATUS: A:Availabel D:Deleted U:Unavailable X:Expired
使用V$ARCHIVE_DEST查看归档目的地信息
SELECT DEST_NAME,STATUS,DESTINATION FROM V$ARCHIVE_DEST;
STATUS:
VALID 表示已被初始化 并且有效
INACTIVE 表示没有目的地信息
DEFERRED 被用户手动禁用
ERROR 在打开或复制过程中出现错误
使用V$ARCHIVE_PROCESSES查看归档进程信息
SELECT * FROM V$ARCHIVE_PROCESSES;
STATUS:STOPPED,SCHEDULED,STARTING,ACTIVE,STOPPING,TERMINATED
STATE:IDLE BUSY
使用V$BACKUP_REDOLOG查看归档日志和备份集信息
SELECT RECID,STAMP,THREAD#,SEQUENCE# FROM V$BACKUP_REDOLOG;
使用V$TEMPFILE查看临时文件信息
SELECT NAME,STATUS,BYTES FROM V$TEMPFILE;
查看警告日志文件
SELECT VALUE FROM V$PARAMETER WHERE NAME=‘BACKGROUND_DUMP_DEST‘;
原文:http://rscpass.blog.51cto.com/771159/1612742