`
swbssd
  • 浏览: 56845 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Oracle归档路径改变辛苦实践

阅读更多
今天得到消息,公司全面预算项目有数据库服务器的磁盘有坏道,为了保险起见需要修改它的归档路径.于是以下为实践内容备忘记录:
--登陆oracle进入mount模式
D:/>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup  mount
--设置归档日志的格式
SQL>alter system set log_archive_format='TRP%s%t%r.log' scope=spfile;
--不小心设置路径错误(没有这个目录)
SQL>alter system set log_archive_dest_1 = 'location=/oracle/arch/ora10g' scope=spfile;
--结果..oracle挂了(真脆弱)数据库启动不了,报错
SQL> startup nomount
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file 'E:\oracle\product\10.2.0\db_1/dbs/spfileTRP.ora'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
--哎,怎么办?搞了半天没办法,先使用原始监听文件启动数据库(init.ora.872011152544为最原始的ora文件)
D:/>startup pfile='E:\oracle\product\10.2.0\admin\TRP\pfile\init.ora.872011152544'
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             167775108 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> exit
---使用RMAN进入,恢复备份控制文件
D>rman target /
--恢复到该文件(但是报错,可能是因为我9号改了log_archive_dest导至)
RMAN> restore spfile from 'G:\Trp_work\backup\database\TRPTOONE_20120708_340.BAK';
--干脆恢复到最新的10号凌晨的备份(autobackup 默认最新)
RMAN> restore spfile from autobackup;
启动 restore 于 10-7月 -12
使用通道 ORA_DISK_1

恢复区域目标: E:\oracle\product\10.2.0/flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): TRP
通道 ORA_DISK_1: 在恢复区域中找到自动备份
通道 ORA_DISK_1: 已找到的自动备份: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TRP\AUTOBACKUP\2012_
07_10\O1_MF_S_788233257_7ZP60R1K_.BKP
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 10-7月 -12
***************************************终于还原了,靠..
--恢复之后结束了,继续设置log_archive_dest_1吧。。
--看了个什么XX蛋疼的文章,按它来弄下吧
SQL> alter system set db_recovery_file_dest = '' scope=spfile;
系统已更改。
SQL> alter system set log_archive_dest = '' scope=spfile;
系统已更改。
--记得加location=,不然会报错
SQL> alter system set log_archive_dest_1 = 'location=G:\Trp_work\ORACLE_ARCHIVE\TRP' scope=spfile;
--需要重新启动数据库(用alter database open没效果)
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
---1.查看修改效果
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            G:\Trp_work\ORACLE_ARCHIVE\TRP
最早的联机日志序列     818
下一个存档日志序列   820
当前日志序列           820
---2.查看修改效果(执行一个修改事务改张表,然后手动写下日志)
SQL> alter system switch logfile;
系统已更改。
*********(这个时候去查看G:\Trp_work\ORACLE_ARCHIVE\TRP下面已经生成归档文件)
******但是一看,咋怎么才一个地方呢?..而且看了下闪回区居然发现是空的..
SQL>show parameter db_recovery
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 2G
--没办法,只能重新再设置回去。。
SQL> alter system set db_recovery_file_dest = 'E:\oracle\product\10.2.0\flash_recovery_area' scope=spfile;
--然后要重新启动数据库OK(这个时候才发现db_recovery_file_dest闪回区根本不用改..)
*************************分割线
************当时在想,我设置了log_archive_dest_1,再设置个log_archive_dest不就2个归档目录了吗?哈哈,我太聪明了..(事实证明是傻)
SQL> alter system set log_archive_dest = 'E:\oracle\product\10.2.0\flash_recovery_area\TRP\ARCHIVELO
G' scope=spfile;
--结果悲剧,结果又挂了。。(这是一个很经典的问题,主要是由于log_archive_dest与log_archive_dest_n这两个参数是不能够同时设置值、共存的。
)
SQL> startup
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
--没办法直接重新创建个ora文件,改改重新启动吧,已经对oracle比较了解了。(使用这个pfile重新启动数据库)
SQL> create pfile='d:\init.ora' from spfile;
--文本编辑器打开init.ora,去掉、注释掉log_archive_dest这行设置,然后用这个文件启动oracle
SQL> startup pfile='d:\init.ora';
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             188746628 bytes
Database Buffers          415236096 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
--Oracle被正常的打开了,好了,有救了。把spfile create 回去oracle_home\db_1\database\xxxx
SQL> create spfile='E:\oracle\product\10.2.0\db_1\database\SPFILETRP.ORA' from pfile='D:\init.ora'
---终于恢复了,但是测试了一下,只有一个归档路径就是log_archive_dest_1的..怎么办?
*********************分割线.第二天设置个log_archive_dest_2再测试看看吧
SQL> alter system set log_archive_dest_2 = 'location=E:\oracle\product\10.2.0\flash_recovery_area\TRP\ARCHIVELOG' scope=spfile;
--设置完毕OK~再测试下(重新启动数据库)
---2.查看修改效果(执行一个修改事务改张表,然后手动写下日志)
SQL> alter system switch logfile;
*********(这个时候去查看2处地方有没有都生成归档文件,或者直接查询select recid, name, first_time from v$archived_log;)

****************终于OK了,下面总结下一次搞定的命令.
1.数据库启动到mount
D:/>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup  mount
2.把默认路径设置空,然后设置log_archive_dest_1,log_archive_dest_2不同的归档路径
SQL> alter system set log_archive_dest = '' scope=spfile;
SQL> alter system set log_archive_dest_1 = 'location=G:\Trp_work\ORACLE_ARCHIVE\TRP' scope=spfile;
SQL> alter system set log_archive_dest_1 = 'location=E:\oracle\product\10.2.0\flash_recovery_area\TRP\ARCHIVELOG' scope=spfile;
3.重新启动数据库,然后查看效果
SQL>shutdown immediate
SQL>startup
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            E:\oracle\product\10.2.0\flash_recovery_area\TRP\ARCHIVELOG
最早的联机日志序列     822
下一个存档日志序列   824
当前日志序列           824
---随便执行一个事务操作动作,然后执行下面写归档命令(然后查看2处地方有没有都生成归档文件)
SQL> alter system switch logfile;



**********************下面总结恢复命令
---使用RMAN进入,恢复备份控制文件
D:>rman target /
--恢复到某个备份文件
RMAN> restore spfile from 'G:\Trp_work\backup\database\TRPTOONE_20120708_340.BAK';
--恢复到最新的备份(autobackup 默认最新)
RMAN> restore spfile from autobackup;
--restore为还原
--recover为恢复
**********************************
-----原始监听文件路径E:\oracle\product\10.2.0\admin\TRP\pfile\init.ora.872011152544
-----控制文件损坏使用另外一个ora启动
SQL> startup pfile='d:\init.ora';
--根据spfile创建个ora文件
SQL> create pfile='d:\init.ora' from spfile;
----重新根据某个ora创建一个新的控制文件
SQL> create spfile='E:\oracle\product\10.2.0\db_1\database\SPFILETRP.ORA' from pfile='D:\init.ora'


分享到:
评论

相关推荐

    ORACLE归档路径优先级

    在Oracle数据库管理系统中,归档日志路径是存放归档日志文件的位置,归档日志是数据库在归档模式下进行日志切换时产生的日志文件。归档日志对于数据库的恢复和闪回功能至关重要。关于ORACLE归档路径的优先级,这里...

    oracle RAC集群修改归档日志路径.docx

    在Oracle RAC环境中,正确配置归档日志路径至关重要,因为它涉及到数据保护和集群间的协调。 在Oracle RAC集群中修改归档日志路径通常涉及以下步骤: 1. **创建归档日志存放路径**: 在Oracle RAC中,归档日志...

    ORACLE归档日志设置

    ORACLE归档日志设置 ORACLE数据库的归档日志设置是一种重要的机制,旨在保障数据库的安全性和灾难恢复能力。通过设置数据库的日志模式和自动归档模式,可以确保数据库的可靠性和可恢复性。 数据库日志模式的设置是...

    Oracle归档模式命令

    ### Oracle归档模式命令详解 #### 一、Oracle归档模式简介 在Oracle数据库中,归档模式(Archivelog Mode)是一种重要的操作模式,它允许数据库管理员将已提交的数据更改记录保存到独立的归档日志文件中,即使当前...

    自动删除ORACLE归档日志文件

    #功能:自动删除ORACLE归档日志文件 #删除方式:rman ,deletearchivelog #调用方式:可单独调用,或在job_clean_archivlog.sh脚本中根据需要调用见另外的附件) ##############################################

    如何正确删除Oracle归档日志

    ### 如何正确删除Oracle归档日志 #### 一、问题背景 在Oracle数据库的日常运维工作中,归档日志的管理和清理是一项重要的任务。随着业务的发展和数据的增长,归档日志会不断累积,占据大量的磁盘空间。如果不及时...

    Oracle归档和非归档模式

    oracle的重做日志文件,会记录数据库的任何操作,包括DML和DDL语句,数据结构的更改等. 当数据被以外的修改删除,或者instance,disk失败,也可以用重做日志文件进行恢复.所以有必要把数据文件和重做日志文件放在两块不同...

    oracle归档日志挖掘详细步骤.docx

    使用`DBMS_LOGMNR.ADD_LOGFILE`过程,指定归档日志文件的完整路径和选项。例如: ```sql BEGIN SYS.DBMS_LOGMNR.ADD_LOGFILE( logfilename => '/home/db/orclx/sjkrz/1_14923_978211384.dbf', options => DBMS_...

    当空间占用率高于60%时自动删除ORACLE归档日志文件

    #功能:当空间占用率高于60%时自动删除ORACLE归档日志文件 # #删除方式:高于60%时使用rman+deletearchivelog,高于79%时使用武力删除 #调用方式:可单独调用,或配置定时任务自动执行脚本(会调用clean_archivelog....

    Oracle清除归档日志

    ### Oracle清除归档日志 在Oracle数据库管理中,归档日志的管理和清理是一项重要的维护任务。归档日志是数据库系统为了实现数据恢复而产生的日志文件,当数据库处于归档模式时,每一次完整的数据库备份后都会生成...

    Oracle归档日志管理

    Oracle归档日志非常重要,对归档日志的管理更加重要,本文主要讲解Oracle归档日志方面的各种管理,值得收藏。

    Oracle开启归档模式

    ### Oracle开启归档模式详解 #### 一、Oracle数据库归档模式概述 Oracle数据库通过采用归档模式,能够实现更为灵活且强大的数据恢复能力。在归档模式下,Oracle不仅能够进行热备份(即在数据库运行状态下进行备份...

    oracle的归档模式

    Oracle的归档模式是数据库管理中的一个重要概念,尤其在企业级数据库应用中,它关乎数据的安全性和可恢复性。在Oracle数据库系统中,联机重做日志(Online Redo Log)是记录数据库事务操作的关键组件,它保存了对...

    oracle 归档与非归档的区别

    ### Oracle归档与非归档模式的深度解析 在Oracle数据库管理中,归档与非归档模式的选择至关重要,它不仅影响着数据的安全性、备份策略以及系统的可用性,还直接关系到数据恢复的能力和效率。本文将深入探讨这两种...

    oracle归档日志的开启及删除.docx

    Oracle归档日志的开启、关闭和删除 Oracle数据库中的归档日志(Archive Log)是一种重要的日志机制,用于记录数据库中的所有操作,以便在数据库崩溃或系统故障时能够快速恢复数据。然而,打开归档日志模式后,会...

    ORACLE数据库调整归档日志空间大小[收集].pdf

    ORACLE数据库调整归档日志空间大小 ORACLE数据库的归档日志是一种重要的灾难恢复机制,它可以帮助数据库管理员在发生灾难时恢复数据库。然而,如果不正确地配置和维护归档日志,可能会导致数据库无法启动或连接。...

    oracle归档日志笔记

    ### Oracle归档日志知识点详解 #### 一、Oracle在线重做日志(Online Redo Log)概述 **在线重做日志(Online Redo Log)**是Oracle数据库的重要组成部分,用于记录所有对数据库所做的更改操作。这些更改包括数据...

    Oracle-归档日志详解(运行模式、分类)

    Oracle 归档日志详解(运行模式、分类) Oracle 归档日志是 Oracle 数据库中的一种日志机制,用于记录数据库的所有变化,以便在出现问题时进行恢复。归档日志可分为在线重做日志和归档重做日志两大类。 在线重做...

    ORACLE 设置归档名称

    ### ORACLE 设置归档名称 #### 背景与概念 在Oracle数据库管理中,归档日志(Archive Log)的设置是一项非常重要的任务。它主要用于实现数据的高可用性和灾难恢复,确保即使在系统故障的情况下也能恢复到最近的...

Global site tag (gtag.js) - Google Analytics