Oracle 归档日志(Archive Log)
在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle最大的区别之一就是数据库可以在数据出错的时候进行恢复。 这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一个是在线重做日志文件,另外一个就是归档日志文件。
这里不详细说明在线重做日志,而是说一下归档日志(Archive Log)。在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除开始写新的在线Redo File。这种备份的在线重做日志就是归档日志。而数据库如果采用这种生成归档日志的模式的话,就是归档日志模式(ARCHIVELOG模式),反之如果不生成归档日志,就是非归档日志模式(NOARCHIVELOG模式)
1.修改归档模式
sqlplus /nolog是不登陆到数据库服务器的意思
conn / as sysdba 以系统管理员(sysdba)身份连接数据库
conn sys/ORCL as sysdba 以sys用户连接到ORCL数据库
C:\>sqlplus /nolog
SQL> conn sys/system@ora10g as sysdba
SQL> shutdown immediate;
SQL> startup mount;
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
SQL> exit
C:\>lsnrctl status
C:\>slqplus /nolog
SQL> conn sys/system@ora10g as sysdba;
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
SQL> set display verbose
SP2-0158: 未知的 SET 选项 "display"
SQL> exit
C:\>set display verbose
环境变量 display 没有定义
C:\>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 03-3月 -2008 13:5
1:37
LSNRCTL> set display verbose
服务显示模式为VERBOSE
LSNRCTL> service
LSNRCTL> start
TNS-01106: 使用名称LISTENER的监听程序已经启动
LSNRCTL> reload
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
命令执行成功
LSNRCTL> exit
C:\>sqlplus /nolog
SQL> conn sys/system as sysdba
已连接到空闲例程。
SQL> startup mount;
ORACLE 例程已经启动。
SQL> alter database archivelog;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> archive log list ;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 131
下一个存档日志序列 133
当前日志序列 133
SQL>
2. 归档文件满了
ORA-00257:archiver error. Connect internal only. unitl freed.
#大小查看 SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 18471M #占用比查看 SQL> select sum(percent_space_used) from v$flash_recovery_area_usage; SUM(PERCENT_SPACE_USED) ----------------------- 99.88 #asm磁盘查看 SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup; 解决办法: 1.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径 2.转移或者删除闪回恢复区里的归档日志。 3.增大闪回恢复区。
--查看归档路径 及文件大小
select * from v$recovery_file_dest;
--修改归档文件大小 默认路径$ORACLE_BASE/flash_recovery_area 限制为2G,可以修改路径 并更改大小
alter system set db_recovery_file_dest_size=5368709102 ;-- (这里为5G 5x1024x1024x1024=5G)
本方案:在RMAN下删除目标数据库中过期的或是删除指定时间之前的归档日志。 C:\Users\fei>rman target / -- 运行这个命令可以把无效的expired的archivelog标出来。 RMAN> crosscheck archivelog all; ----删除过期的归档日志 RMAN> delete expired archivelog all; ----删除过期的归档日志 RMAN> delete expired archivelog all; RMAN> delete archivelog until time "sysdate-10"; --删除10天前的归档日志。或者:delete noprompt archivelog until time "sysdate - 10"; 或者: RMAN> delete archivelog until time "to_date('2018-08-01 23:59:59','yyyy-mm-dd hh24:mi:ss')"; --删除指定日期之前的所有归档日志。 */

浙公网安备 33010602011771号