oracle数据库归档日志及数据文件相关问题
oracle数据的关于归档日志开启及管理的相关命令如下:
一.打开oracle数据库归档日志,需要如下几步。
1.进入dos窗口—>>> 菜单键+R,进入 运行 界面,输入cmd
2.登录 sqlplus,—>> 方法: sqlplus/nolog,切忌:不要输入sqlplus/noarchivelog; 加上 分隔符 ;, 这样进入的sqlplus的命令参数帮助
3.登入管理员—>> 方法: conn/as sysdba;
4.开启归档日志
4.1 shutdown immediate; –关闭数据库
4.2 startup mount; – 打开数据库
4.3 alter database archivelog;—开启归档日志
4.4 alter database open;–开启数据库
4.5 archive log list; – 查看归档日志是否开启
开启状态:
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 49
下一个存档日志序列 51
当前日志序列 51
2.关闭归档日志
在这里所有的操作要在数据库的那台机器上操作,用SYS用户进行登录,首先设置归档进程关闭。
alter system set log_archive_start=false scope=spfile; (9i,10g不用)
然后关闭数据库
shutdown immediate
再后面把数据库启动到mount的模式
startup mount
关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ORA-38774错误。 ORA-38774: 无法禁用介质恢复 - 闪回数据库已启用
alter database flashback off
接着把数据库改为非归档模式
alter database noarchivelog;
都修改好了以后,然后打开数据库
Alter database open;
察看一下归档日志的空间大小
select * from v$recovery_file_dest;
接着看一下log日志的状态
select * from v$log;
再看一下闪回日志使用状况
select * from v$flash_recovery_area_usage;
这些都没有问题以后,数据库问题就解决了。
3.归档日志满了之后处理方式
连接时提示:oracle 归档日志满 报错ORA-00257: archiver error. Connect internal only, until freed 基本上就是归档日志满了,需要清除
也可以使用select * from v$flash_recovery_area_usage 查看归档日志占用率。超过90%就要及时处理
1.增加日志文件大小,方式使用管理员用户 执行 ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=8g; 根据时间硬盘空间设置大小。
2.在Windows环境下使用RMAN命令删除Oracle过期归档日志的方法
A.命令删除 在cmd下输入rman之后执行如下命令
connect target sys/sys_passwd
crosscheck backup;
delete obsolete;
delete expired backup;
crosscheck archivelog all;
delete expired archivelog all;
delete archivelog all; //删除所有归档日志
delete noprompt force archivelog until time 'sysdate -1';//強制刪除昨天以前的archivelog files
connect target bqss/bqss@orcl
run{
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-10'; //删除10天前的归档日志,怕哪天DG有问题,有日志没有及时应用
crosscheck archivelog all;
delete expired archivelog all;
}
2、创建批处理任务(delete_archive.bat)
rman cmdfile=c:\delete_arch.txt
3、创建一个windows任务定时调用批处理任务