淘先锋技术网

首页 1 2 3 4 5 6 7

Oracle归档日志

显示归档日志信息

1,使用ARCHIVE LOG LIST命令可以显示日志操作模式,归档位置,自动归档机器要归档的日志序列号等信息.

2显示日志操作模式

SELECT name,log_mode FROM v$database;

3,显示Oracle归归档日志信息.

Col name format a46

Select name, swquence#, first_change# FROM v$archived_log;

Name用于表示Oracle归归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.

4、执行介质 恢复 时,需要使用归档日志文件,此四必须准确定位归档日志的存放位置.通过查询动态性能视图v$archive_dest可以取得归档日志所在目录.

SELECT destination FROM v$archive dest;

5,显示日志历史信息

SELECT * FROM v$loghist;

THREAD#用于标识重做线程号,SEQUNCE#用于标识日志序列号,FIRST_CHANGE#用于标识日志序列号对应的起始SCN值,FIRST_TIME用于标识起始SCN的发生时间.SWICTH_CHANGE#用于标识日志切换的SCN值.

6.显示归档进程信息.

进行日志切换时,ARCH进程会自动将重做日志内容复制到Oracle归归档日志中,为了加快归档速度,应该启用多个ARCH进程.通过查询动态性能视图V$ARCHIVE_PROCESSES可以显示所有归档进程的信息!

SELECT * FROM v$archive_processes;

Porcess用于标识ARCH进程的编号,status用于标识ARCH进程的状态(ACTIVE:活动,STOPPED:未启动),log_sequence用于标识正在进行归档的日志序列号,state用于标识ARCH进程的工作状态

如何查看oracle的归档日志文件

1、常用命令 SQL show parameter log_archive_dest; SQL archive log list; SQL select * from V$FLASH_RECOVERY_AREA_USAGE; ARCHIVELOG 96.62 0 141 SQL select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 2.9904 SQL show parameter recover; db_recovery_file_dest string /u01/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G 2、删除日志 cd $ORACLE_BASE/flash_recovery_area/orcl/archivelog 转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。 3、rman target sys/password RMAN crosscheck archivelog all; RMAN delete expired archivelog all; 或者 RMAN delete archivelog until time “sysdate-1″; 4、再查 SQL select * from V$FLASH_RECOVERY_AREA_USAGE; 5、修改大小 SQL alter system set db_recovery_file_dest_size=4G scope=both;

如何检查Oracle的归档空间是不是占满?

大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情况,你看到的可能是一个表面现象。

默认情况下我们在dbca建库时,会把归档放在$ORACLE_HOME/flash_recovery_area下,并且oracle默认给FRA配置的大为2g

这里需要足以两个参数:

db_recovery_file_deststring/oracle/flash_recovery_area

db_recovery_file_dest_sizebiginteger2G

这里总结一句,如果db_recovery_file_dest下的存放的归档大小达到db_recovery_file_dest_size即使该目录下仍然有磁盘空间剩余,oracle也不会去写。

这里我建议按照如下步骤去确定:归档空间是否满了?

1.首先从系统层面确定归档目录存放的磁盘空间情况:

[[email protected]]$df-h

FilesystemSizeUsedAvailUse%Mountedon

/dev/mapper/VolGroup00-LogVol0026G12G14G46%/

/dev/sda219G16G2.8G85%/oracle

/dev/sda199M24M71M25%/boot

tmpfs978M508M470M52%/dev/shm

2.确定归档存放目录,归档存放目录大小

SQLarchiveloglist;

DatabaselogmodeArchiveMode

AutomaticarchivalEnabled

ArchivedestinationUSE_DB_RECOVERY_FILE_DEST-------这里默认使用的是DB_RECOVERY_FILE_DEST

Oldestonlinelogsequence17

Nextlogsequencetoarchive20

Currentlogsequence20

----也可以按照以下方式查询归档放置的地方

SQLshowparameterdb_

NAMETYPEVALUE

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

db_keep_cache_sizebiginteger0

db_namestringlixora

db_recovery_file_deststring/oracle/flash_recovery_area

db_recovery_file_dest_sizebiginteger2G

db_recycle_cache_sizebiginteger0

db_unique_namestringlixora

-----这里可以看到闪回恢复区里的空间使用情况:

SQLselect*Fromv$flash_recovery_area_usage;

FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES

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

CONTROLFILE000

ONLINELOG4.8801

ARCHIVELOG76.05047

BACKUPPIECE3.103

IMAGECOPY000

FLASHBACKLOG000

6rowsselected.

------注意这一步才是真正查看归档空间的实际使用情况:

SQLselect*fromv$recovery_file_dest;

NAMESPACE_LIMITSPACE_USEDSPACE_RECLAIMABLENUMBER_OF_FILES

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

/oracle/flash_recovery_area21474836481804771840051

但是还是在系统层面去查看磁盘空间。

如何查看oracle归档日志位置?

(1)常用命令 SQL show parameter log_archive_dest; SQL archive log list; SQL select * from V$FLASH_RECOVERY_AREA_USAGE; ARCHIVELOG 96.62 0 141 SQL select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 2.9904 SQL show parameter recover; db_recovery_file_dest string /u01/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G。

(2)删除日志 cd $ORACLE_BASE/flash_recovery_area/orcl/archivelog 转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。

(3)rman target sys/password RMAN crosscheck archivelog all; RMAN delete expired archivelog all; 或者 RMAN delete archivelog until time “sysdate-1″。

(4)再查 SQL select * from V$FLASH_RECOVERY_AREA_USAGE。

(5)修改大小 SQL alter system set db_recovery_file_dest_size=4G scope=both。

如何查看oracle当前处于归档模式还是非归档模式

selectname,log_mode,open_mode from v$database;

NAME LOG_MODE OPEN_MODE

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

CKDB ARCHIVELOG READ WRITE

若是归档模式,则LOG_MODE=ARCHIVELOG

若是非归档模式,则LOG_MODE=NOARCHIVELOG