oracle数据库服务器磁盘满导致数据库无法登陆,通过清理归档文件解决
2012-01-11 17:14
441 查看
测试部门发生了多次数据库服务器空间满而导致无法登陆oracle实例的事情,在此特地整理一篇文章以提供测试部门人员参考。根据原因是由于测试部门在内网测试环境中开启了数据库的归档模式,一般由于测试数据库服务器就是普通的pc,空间小,在一段时间测试后,由于归档文件的大量积累导致数据库服务器空间满,从而导致数据库不能正常登陆。考虑到测试环境以及测试数据库一般情况下的非特别重要性,提供解决思路就是删除几天前的归档文件,进而关闭归档,来解决这一问题。
1。登陆测试数据库,此时由于磁盘满,无法登陆数据库,通过数据库启动初始化文件或者pfile、spfile文件查找确定数据库归档文件存放路径。
根据数据库启动访问参数文件的顺序spfile<sid>.ora,spfile.ora,init<sid>.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;
1。登陆测试数据库,此时由于磁盘满,无法登陆数据库,通过数据库启动初始化文件或者pfile、spfile文件查找确定数据库归档文件存放路径。
根据数据库启动访问参数文件的顺序spfile<sid>.ora,spfile.ora,init<sid>.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;
相关文章推荐
- 生产案例:突然产生大量的归档日志,导致磁盘空间满了无法登陆数据库
- oracle数据库文件迁移导致无法启动数据库的解决
- 【恢复】非归档模式下因误删除数据文件导致数据库无法OPEN的故障处理
- 磁盘空间不足导致task的mapred local文件无法写入而失败解决
- 【搬家】【数据库】【SQL Server】SQL Server 卸载后残留文件导致无法重新安装的解决方法
- oracle 日志文件无法归档导致的数据库无法启动
- 使用CuteFTP登陆FTP(serv-U)服务器后无法LIST目录和文件的解决方法
- 使用CuteFTP登陆FTP(serv-U)服务器后无法LIST目录和文件的解决方法
- 使用CuteFTP登陆FTP(serv-U)服务器后无法LIST目录和文件的解决方法
- vs 2008的工程编译的manifest文件导致程序无法运行,通过设置 /MANIFESTDEPENDENCY (Specify Manifest Dependencies) 解决
- 使用CuteFTP登陆FTP(serv-U)服务器后无法LIST目录和文件的解决方法
- oralce10g 归档目录空间满导致归在线重做日志文件无法归档。最后数据库不能正常使用
- [ISA]QQ通过ISA2006代理登陆无法接收发送文件和图片表情的解决方法
- 当Windows 7或者Windows2008加入域后,登陆时出现“服务器上的安全数据库没有此工作站信任关系的计算机帐户”,导致无法登陆到域
- 解决: sqlserver登陆时, 出现服务器主体 "xxx" 无法在当前安全上下文下访问数据库 "db_xxx"。
- linux环境下根目录磁盘空间满导致数据库无法启动的问题的解决
- Ubuntu由于修改etc/profile文件导致开机无法登陆问题解决办法(仅供参考)
- linux数据库data文件转移到其他服务器的权限问题导致无法看到数据表
- 关于oracle数据库误删表空间文件后无法登陆sqlplus的解决方法
- 将Oracle数据库改为归档模式并启用RMAN备份 如下Linux环境下对Oracle单节点数据库采用文件系统情况的配置归档模式过程。首先查看数据库归档模式和磁盘使用情况,确定归档文件放到什么位置。