oracle11g-linux 归档处理

摘要:
看来就是这个问题了;问题解决1.首先删除物理磁盘归档文件。网上大多都说归档文件在archive目录下,但实际我找遍linux中,都没有找到这个目录。此时如果运气好,能够登录oracle,则可以进去通过命令:[root@xxx~]#su-oracle[oracle@xxx~]$sqlplus/nologSQL˃connect/assysdbaSQL˃showparameterrecover;此时大概能猜到归档文件的存放位置了,如果无法进入,或者上面方式还是找不到,那就通过linux磁盘空间大小,或者文件夹的格式搜索去查找吧我的地址:/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs其中home为我的安装目录,顺便我的版本是11g,不通版本可能会有不同。

在使用oracle时突然登录不上去了提示:ORA-00257:archiver error.Connect internal only,until freed.

oracle11g-linux 归档处理第1张

查遍很多资料,都指向“归档日志空间不足导致”这一问题。查看磁盘空间提示磁盘已使用100%。看来就是这个问题了;

问题解决

1.首先删除物理磁盘归档文件。(删除之前最好先备份)

网上大多都说归档文件在archive目录下,但实际我找遍linux中,都没有找到这个目录。此时如果运气好,能够登录oracle,则可以进去通过命令:

[root@xxx~]# su - oracle
[oracle@xxx~]$ sqlplus /nolog
SQL> connect /as sysdba
SQL>show parameter recover;

此时大概能猜到归档文件的存放位置了,如果无法进入,或者上面方式还是找不到,那就通过linux磁盘空间大小,或者文件夹的格式搜索去查找吧

我的地址:

/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs

其中home为我的安装目录,顺便我的版本是11g,不通版本可能会有不同。

2.把把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作

使用oracle的rman命令清理:

[root@localhost dbs]# su - oracle
-bash-4.1$ rman target sysdba

oracle11g-linux 归档处理第2张

查看归档文件:(文件已经删除,但是内存中还未删除的内容)

RMAN> list archivelog all;

检测归档:

RMAN> crosscheck archivelog all; 

删除归档:

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

说明:SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;这样做仍然会在RMAN里留下未管理的归档文件仍需要在RMAN里执行下面2条命令crosscheck archivelog all;delete expired archivelog all;所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能

另关于删除的其他动作

删除7天前的归档:
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
删除全部归档(noprompt不交互):
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-0';
删除从7天前到现在的全部日志:
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
删除过期归档
 delete expired archivelog all;

到此 归档清理完成

关闭oracle归档

因测试环境,对oracle归档没有那么大的需求,且又消耗资源。故想办法关闭掉。

进入oracle:

-bash-4.1$ sqlplus / as sysdba

相机执行下面的操作

SQL> alter system set log_archive_start=false scope=spfile; #禁用自归档
SQL> shutdown immediate;
SQL> startup mount; #重启数据库到mount模式
SQL> alter database noarchivelog; #修改为非归档模式
SQL> alter database open; #打数据文件
SQL> archive log list; 搜索#再次查看前归档模式

完成

免责声明:文章转载自《oracle11g-linux 归档处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP $_SERVER 及用户真实IPunixbench服务器性能测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Oracle】CentOS7/CentOS8命令行安装Oracle 11G R2

写在前面 很长一段时间内,国内互联网公司都在提倡“去IOE”,但是很多企业还是愿意为昂贵的Oracle数据库买单,不少读者所在的公司也在用Oracle,很多读者自行安装Oracle数据库时,多多少少遇到了些问题,苦恼于几天下来还是没能解决问题。这不,不少读者跑来问我,让我输出一篇如何在物理机上安装Oracle的文章,最好是安装过程中不会出现各种“疑难杂症”...

linux下,达梦数据库8 备份还原

  一 数据库备份相关概念 备份就是数据库在某一个时间点的副本 数据库备份目的:防止数据丢失,防止天灾人祸(地震、火灾、人为操作、硬件故障) 备份主要有物理备份和逻辑备份 物理备份主要是备份使用过的有效的数据页,逻辑备份主要是备份数据库对象(表,索引,视图,存储过程等) 物理备份:分为联机备份和脱机备份;完全备份和增量备份 完全备份:备份的是整个数据库或者...

Oracle批量更新语句

1.问题描述:对照a表,根据id将name对照着更新b表 2.思路:创建临时表存对照的数据,比如根据id更新name,那么这个临时表存id和name;使用更新语句更新符合条件的数据 3.MSSQL写法: --创建临时表 SELECT A.FDEPTID,B.FNAME INTO #T FROM T_BD_DEPARTMENT A INNER JOIN T_...

用Oracle的TRIM函数去除字符串首尾指定字符

去掉首尾空格 SELECT TRIM('abc '), ltrim('abc '), rtrim('abc ') FROM dual; 去掉首尾的其他字符 SELECT /*TRIM(';a;b;c;'),*/ ltrim(';a;b;c;',';'), rtrim(';a;b;c;',';') FROM dual; 注意:无法使用TRIM(‘;a;...

PostgreSQL之oracle_fdw安装与使用

目的介绍 现在项目开发遇到一个问题,就是需要从PostgreSQL中访问Oracle数据库 身为渣渣猿一脸懵逼。于是乎请教了公司的数据库方面的大牛韩工。告诉我用oracle_fdw 可以实现,但是在实现安装的过程中,还是各种问题,又麻烦韩工帮我看了好久。很不好意思,现在 针对这次安装的过程进行记录下,因为部署的时候还要用到 安装oracle_fdw 1.下...

Oracle定义varchar2()类型存储汉字的长度问题

varchar2最大是4000字节,那么就看你的oracle字符集:(select userenv('language') from dual;)如果字符集是16位编码的,ZHS16GBK,那么每个字符16位,2字节,所以可以容纳2000字符。如果是32位编码的字符集,那么只能存储 1000个字符。 例如:varchar(50) 表示该字段类型为varc...