磁盘空间有限的情况下,需要清理或转移归档日志,以满足存储要求,或当归档磁盘过满而导致归档无法正常写入,致使数据库无法提供正常使用。
1、限制归档空间
在设置归档路径时,限制单个日志的大小以及归档目录的大小,当日至存储到达上限(此处为10g)时,会自动清除最早日志。
sql>alter database mount;
sql>alter database add archivelog 'type=local,dest=/SJ/arch,file_size=128,space_limit=2048';
sql>alter database open;
或者修改dmarch.ini
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /SJ/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 2048
2、修改归档路径
当归档磁盘被占用,满了,或者需要更大的新的存储空间,可以修改归档路径,修改归档空间限制。
修改归档空间限制
alter database mount;
alter database noarchivelog;
alter database modify archivelog 'type=local,dest=/SJ/arch ,file_size=128,space_limit=2048';
alter database archivelog;
alter database open;
select * from v$dm_arch_ini;
修改归档路径
alter database mount;
alter database noarchivelog;
ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL,DEST=/dmdbms/arch,FILE_SIZE=1024,SPACE_LIMIT=4096';
alter database delete archivelog 'type=local,dest=/SJ/arch,file_size=128,space_limit=2048';
alter database archivelog;
alter database open;
3、利用系统函数删除指定归档
SF_ARCHIVELOG_DELETE_BEFORE_TIME----删除指定时间之前的归档文件,该函数返回删除的归档日志文件个数。
如下命令为删除系统当前时间7天前的归档日志文件: SQL>select sf_archivelog_delete_before_time(sysdate - 7);
SF_ARCHIVELOG_DELETE_BEFORE_LSN----删除指定LSN之前的归档文件,该函数返回删除的归档日志文件个数。归档日志的有效LSN范围可以通过V$ARCH_FILE查看。
如下命令为删除LSN号为44455之前的归档日志信息。
SQL>select sf_archivelog_delete_before_lsn(44455);
4、备份归档时删除 归档日志支持联机备份(热备)和脱机备份(冷备),两者都提供备份后删除归档的功能,在备份时指定delete input参数即可备份后删除归档,联机归档备份命令参考如下: SQL>backup archivelog all delete input;
执行完成后,查询V$ARCH_FILE视图无数据,同时操作系统下归档日志文件也被删除。
5、手动删除归档日志 在操作系统下手工删除归档目录下的归档文件,归档日志文件删除后不影响DM数据库的正常运行。
但无论采用哪种办法删除归档日志,都建议在删除前备份归档日志文件或备份数据库,以便数据库故障时能利用备份和归档日志恢复到最新状态。
更多资讯请上达梦技术社区了解: https://eco.dameng.com