热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle数据库服务器磁盘满导致数据库无法登陆,通过清理归档文件解决

测试部门发生了多次数据库服务器空间满而导致无法登陆oracle实例的事情,在此特地整理一篇文章以提供测试部门人员参考。根据原因

测试部门发生了多次数据库服务器空间满而导致无法登陆oracle实例的事情,在此特地整理一篇文章以提供测试部门人员参考。根据原因

测试部门发生了多次数据库服务器空间满而导致无法登陆Oracle实例的事情,在此特地整理一篇文章以提供测试部门人员参考。根据原因是由于测试部门在内网测试环境中开启了数据库的归档模式,一般由于测试数据库服务器就是普通的pc,空间小,在一段时间测试后,由于归档文件的大量积累导致数据库服务器空间满,从而导致数据库不能正常登陆。考虑到测试环境以及测试数据库一般情况下的非特别重要性,提供解决思路就是删除几天前的归档文件,进而关闭归档,来解决这一问题。

1。登陆测试数据库,此时由于磁盘满,无法登陆数据库,通过数据库启动初始化文件或者pfile、spfile文件查找确定数据库归档文件存放路径。

根据数据库启动访问参数文件的顺序spfile.ora,spfile.ora,init.ora,init.ora,相信下面大家会知道应该查看哪个文件的内容。

[root@dev2_180db ~]# su - oracle

[oracle@dev2_180db ~]$ cd $ORACLE_HOME/dbs
[oracle@dev2_180db dbs]$ ls
hc_center.dat initcenter.ora initdw.ora init.ora lkCENTER orapwcenter spfilecenter.ora

[oracle@dev2_180db dbs]$more spfilecenter.ora

center.__db_cache_size=1224736768
center.__java_pool_size=16777216
center.__large_pool_size=16777216
center.__shared_pool_size=301989888
center.__streams_pool_size=0
*._allow_resetlogs_corruption=true
*._kgl_large_heap_warning_threshold=8388608
*.aq_tm_processes=0
*.audit_file_dest='/u01/app/oracle/admin/center/adump'
*.background_dump_dest='/u01/app/oracle/admin/center/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/admin/center/control01.ctl','/u02/oradata/center/control02.ctl','/u02/oradata/center/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/center/cdump'
*.db_2k_cache_size=33554432
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=128
*.db_files=4000
*.db_name='center'
*.db_recovery_file_dest_size=4294967296
*.db_recovery_file_dest=''
*.job_queue_processes=0
*.log_archive_dest='/u02/oradata/center/archive'
*.log_checkpoints_to_alert=FALSE
*.open_cursors=600
*.parallel_execution_message_size=65535
*.parallel_max_servers=128
*.pga_aggregate_target=209715200
*.processes=1000
*.recyclebin='ON'
*.remote_login_passwordfile='EXCLUSIVE'
*.replication_dependency_tracking=FALSE
*.session_cached_cursors=100
*.sga_target=1610612736
*.shared_pool_size=100m
*.undo_management='AUTO'
*.undo_retention=0
*.undo_tablespace='UNDOTS'
*.user_dump_dest='/u01/app/oracle/admin/center/udump'
*.workarea_size_policy='AUTO'

查找到*.log_archive_dest的配置路径

[oracle@dev2_180db dbs]$ cd /u02/oradata/center/archive

2。删除指定1天前的归档文件

[oracle@dev2_180db archive]$ find /u02/oradata/center/archive -mtime +1 -name "*.dbf" -exec rm -rf {} \;

当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。
所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常。

3。通过rman进行Crosscheck日志

[oracle@dev2_180db archive]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Jan 12 00:45:38 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: CENTER (DBID=4195036994)

RMAN> crosscheck archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1028 devtype=DISK
validation failed for archived log
archive log filename=/u02/oradata/center/archive/1_1_766187842.dbf recid=1 stamp=766189358
Crosschecked 1 objects

4。使用delete expired archivelog all 命令删除所有过期归档日志:

RMAN> delete expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1028 devtype=DISK

List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
1 1 1 X 02-NOV-11 /u02/oradata/center/archive/1_1_766187842.dbf

Do you really want to delete the above objects (enter YES or NO)? Y
deleted archive log
archive log filename=/u02/oradata/center/archive/1_1_766187842.dbf recid=1 stamp=766189358
Deleted 1 EXPIRED objects

5。简要介绍一下report obsolete命令

使用report obsolete命令报告过期备份

RMAN> report obsolete;

6。使用delete obsolete命令删除过期备份:
RMAN> delete obsolete;

7再次crosscheck 日志,看返回信息判断是否数据库已经正常
RMAN> crosscheck archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1028 devtype=DISK
specification does not match any archive log in the recovery catalog

如果有看到specification does not match any archive log in the recovery catalog返回信息,,那说明数据库已经正常了。

8。退出rman,登陆oracle数据库改归档模式为到非归档模式

RMAN> exit

Recovery Manager complete.
[oracle@dev2_180db archive]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 12 01:11:38 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options


SQL>shutdown immediate;

SQL>start mount;

SQL>alter database noarchivelog;

SQL>alter database open;

linux

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 本文介绍了在SQL中查询分组后每组行数的统计方法。通过使用count()函数和GROUP BY子句可以统计每组的行数,但是如何统计所有组的行数呢?本文提供了一种实现方法,并给出了相应的SQL查询语句。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
    打开IIS,建一个网站,主机头用不带www的域名,随便指向一个目录。然后在这个网站上点右键,属性--主目录--重定向到URL如图ÿ ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
author-avatar
doudou888公馆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有