Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件

增量备份的应用在recovery阶段,不再restore阶段

了解数据库设置表:

SQL>desc database_properties

Name                                      Null?    Type

----------------------------------------- -------- ----------------------------

PROPERTY_NAME                             NOT NULL VARCHAR2(30)

PROPERTY_VALUE                                     VARCHAR2(4000)

DESCRIPTION                                        VARCHAR2(4000)

关键性与非关键性

非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件。例如,如果数据库丢失了一个多路复用重做日志文

件,仍可使用其它重做日志文件副本来保持数据库持续运行。

虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能。例如:

丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,则丢失后甚至会导致应用

程序无法使用。

丢失联机重做日志组(只要不是当前联机日志组)会导致在 LGWR 下一次尝试写入组时数据库操作被挂起,直到生成新的日志文

件为止。

丢失临时表空间会使用户无法运行查询或创建索引,直到将这些用户分配到新的临时表空间为止。

--10g时丢失临时表空间,数据库不能启动,当11g时,丢失了临时文件,数据库会自动创建一个同名同位的临时文件;

--11g中发生此情时发生这种情况时,启动过程中会在预警日志中显示类似下面的消息:

--

Re-creating tempfile /u01/app/oracle/oradata/orcl/temp01.dbf

----------------------------------------------------------------------------------------------------------------

-

一、日志成员丢失:

要处理重做日志文件的丢失问题,了解重做日志组的可能状态非常重要。在 Oracle DB 正常运行过程中,重做日志组会循

环经历三种不同的状态。按照循环的顺序,状态分别是:

CURRENT:此状态表明 LGWR 正在向重做日志组写入数据,以记录数据库中正在进行的所有事务处理的重做数据。该日志组将保

持此状态,直到切换至其它日志组为止。

ACTIVE:重做日志组仍包含恢复实例所需的重做数据。这是尚未执行检查点期间重做日志组所处的状态,重做日志组中出现的所

有数据更改都将写出到数据文件。

INACTIVE:上述检查点已经执行,这表示不再需要该重做日志组来恢复实例,它可以变为下一个 CURRENT 日志组。

对在线redo log的操作:

查看日志组的状态:

SQL>select GROUP#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS from v$log;

GROUP#  SEQUENCE#    MEMBERS ARC STATUS

---------- ---------- ---------- --- ----------------

1          7          2 YES INACTIVE

2          8          2 NO  CURRENT

3          6          2 YES INACTIVE

查看日志文件的状态:

SQL>select GROUP# ,TYPE,MEMBER from v$logfile;

GROUP# TYPE       MEMBER

---------- -----------------------------------------------------------------

3 ONLINE

/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_3_b22567o2_.log

3 ONLINE

/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_3_b2256827_.log

2 ONLINE

/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b2255zsg_.log

2 ONLINE

/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_2_b22560gb_.log

1 ONLINE

/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log

1 ONLINE

/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_1_b2255nxl_.log

--删除原有的日志组;(只操作状态为inactive的日志组)

--若要操作日志组为current时,需先进行日志切换:alter system switch logfile;

--若为active时,则可强制进行检查点:alter system checkpoint;

1.操作日志文件;

1).当某个日志组中的一个数据文件丢失,对其在线操作,先添加,再删除;

alter database add logfile member ‘/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b_.log‘ to group 2;

alter database drop logfile member ‘/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log‘ to group 2;

2).在线添加一个组,再添加一个成员;

SQL>alter database add logfile group 4 ‘/u01/app/oracle/oradata/ORCL/onlinelog/redo04.log‘size 100m;

SQL>alter database add logfile member‘/u01/app/oracle/oradata/ORCL/onlinelog/redo04_b.log‘ to group 4;

3).查看日志组及成员;

SQL>select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;

2.日志文件丢失,重启或alter system switch logfile 触发报错;生产库中一般是日志切换触发错误;

1)丢失非current redo日志组

select a.group#, a.status, a.archived,b.member from v$log a,v$logfile b where a.group#=b.group#;

--查看日志组状态及文件虽在位置

$rm /u01/app/oracle/oradata/ENMOEDU/redo09*

--删除第九组的全部文件

$ls /u01/app/oracle/oradata/ENMOEDU/redo09*

--查看是否删除成功

Sql> shutdown immediate

Sql> startup

--重启数据库触发出错

Sql> startup mount

Sql> alter database clear logfile group 9;

--重建了第九组的了两个文件,两个文件都是空的;

Sql> alter database open;

cat  /u01/app/oracle/oradata/ENMOEDU/redo03*;

--查看物理地址,查看是否生成文件

SQL>select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;

--查看日志组及成员

Alert日志中的错误:

Errors in file

/u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_lgwr_35031.trc:

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/u01/app/oracle/oradata/ENMOEDU/redo01.log‘

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

Errors in file /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_lgwr_35031.trc:

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/u01/app/oracle/oradata/ENMOEDU/redo01.log‘

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

2).丢失当前redo日志组

select a.group#, a.status, a.archived,b.member

from v$log a,v$logfile b

where a.group#=b.group#;

$rm /u01/app/oracle/oradata/ENMOEDU/redo09*;

alter system switch logfile;

/

/

数据库出现hanging现象,在alert.log中报错;

或重启数据库触发错误:

Sql> shutdown immediate

Sql> startup

--触发出错

SQL> startup mount

ORACLE instance started.

Total System Global Area  237998080 bytes

Fixed Size                  2227216 bytes

Variable Size             192938992 bytes

Database Buffers           37748736 bytes

Redo Buffers                5083136 bytes

Database mounted.

SQL> alter database clear logfile group 9;

--丢失current状态日志组,不能这样恢复

alter database clear logfile group 9

*

ERROR at line 1:

ORA-00350: log 9 of instance ENMOEDU (thread 1) needs to be archived

ORA-00312: online log 9 thread 1: ‘/u01/app/oracle/oradata/ENMOEDU/redo03.log‘

SQL> alter database clear unarchived logfile group 9;

--无归档恢复

Database altered.

验证:

!ls /u01/app/oracle/oradata/ENMOEDU/

SQL> select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;

----------------------------------------------------------------------------------------------------------------

二、丢失临时文件:

1.--查看临时文件的位置及名称

SYS>select name from v$tempfile;

/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp

2.--删除临时文件

SYS>!rm /u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp

3.--触发错误,临时文件未找到

SYS>create global temporary table tab_temp as select * from dba_objects;

create global temporary table tab_temp as select * from dba_objects

*

ERROR at line 1:

ORA-01116: error in opening database file 201

ORA-01110: data file 201:

‘/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp‘

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

4.在知道临时数据文件丢失时,可以不需要重新启动数据库就可以在丢失了临时文件后进行恢复;

SQL> ALTER TABLESPACE temp ADD TEMPFILE ‘/u01/app/oracle/oradata/orcl/temp02.dbf‘ SIZE 20M;

Tablespace altered.

SQL> ALTER TABLESPACE temp DROP TEMPFILE ‘/u01/app/oracle/oradata/orcl/temp01.dbf‘;

Tablespace altered.

5. 1)在11g中还可以重启数据库,数据库会自动重建临时数据文件,可以查看alert日志看相关信息(一般直接第4步就可以了)

shutdown immediate;

SYS>startup

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

Database mounted.

Database opened.

SYS>select name from v$tempfile;

/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b29o0g6r_.tmp

1 row selected.

--数据库重建

2)在11g以前,如数据库不能重起,可以创建新的临时表空间:

create temporary tablespace temp2 tempfile

‘/u01/app/oracle/oradata/orcl/temp2.dbf‘ size 10m reuse autoextend on  maxsize  200m;

SQL>alter database default temporary tablespace temp2;

--将新的表空间设置为默认的临时表空间

SQL>drop tablespace temp including contents and datafiles;

--删除旧的表空间及其数据

SQL>ALTER TABLESPACE temp ADD TEMPFILE ‘/u01/app/oracle/oradata/orcl/temp2.dbf‘ SIZE 20M;

--给临时表空间添加文件

SYS>select * from database_properties

where property_name=‘DEFAILT_TEMP_TABLESPACE‘;  --查看当前数据库默认数据库

----------------------------------------------------------------------------------------------------------------

-

三、重建索引、丢失了索引表空间后进行恢复

重新创建索引

使用以下选项可缩短创建索引所花费的时间:

PARALLEL NOLOGGING

PARALLEL(NOPARALLEL 是默认值):多个进程可以同时协同工作来创建索引。与单个服务器进程按顺序创建索引相比,通过

在多个服务器进程之间分配创建索引所需的工作,Oracle 服务器可以更快速地创建索引。将随机对表取样并找到一组索引关键

字,这些索引关键字按照指定的并行度将索引平均分为相同数目的片段。第一组查询进程将扫描表,提取关键字、行 ID 对并基

于关键字将每个对发送到第二组查询进程中的一个进程中。第二组中的每个进程都对关键字进行排序并按常规方式构建索引。所

有索引片段构建完成后,并行协调程序会将这些片段(已进行排序)级联以形成最终的索引。

SQL> CREATE INDEX rname_idx

ON hr.regions (region_name)

PARALLEL 4;

NOLOGGING:使用此关键字会加快索引的创建速度,因为创建进程创建的重做日志 条目极少。这种工作量大幅减小的重做生

成也适用于直接路径插入和 Direct Loader (SQL*Loader) 插入。这是永久性属性,因此将显示在数据字典中。可以随时使用

ALTER INDEX NOLOGGING/LOGGING 命令来加以更新。

注:若数据库在nologging状态时,所操作的数据应该备份,再将nologging改回来,以免重大失误难以恢复

丢失了索引表空间后进行恢复:

索引丢失时,更为快速、简单的方法是重新创建而不是尝试恢复索引。

索引是计算得到的对象,因为它们不提供任何原始数据,只是已存在数据的另一表示形式。因此,在大多数情况下,可以很

容易地重新创建索引。

如果您的表空间仅包含索引,则可以简化在丢失了属于该表空间的数据文件后的恢复工作。

如果丢失了此类数据文件,则可以

执行以下步骤:

1.删除数据文件。

2.删除表空间。 3.重新创建索引表空间。

4.重新创建包含在表空间中的索引。

1.可以在不执行 RECOVER 任务的情况下恢复仅包含索引的表空间。

2.如果属于仅包含索引的表空间的数据文件丢失,则更为简单的方法可能是重新创建表空间和重新创建索引。

----------------------------------------------------------------------------------------------------------------

-

四、重新创建口令验证文件

1.密码文件丢失

cd  $ORACLE_HOME/dbs  --密码文件的位置

ls -lrt|grep orapw

rm orapw...  --删除密码文件

2.登陆

SQL> CONNECT sys/admin AS SYSDBA

--登陆失败,未找到密码文件

3.另一种方式登录:

sqlplus / as sysdba

--os级别登陆

grant sysdba to hr;

--授权sysdba给hr,会报错;

SQL> grant sysdba to admin2;

grant sysdba to admin2

*

ERROR at line 1:

ORA-01994: GRANT failed: password file missing or disabled

4.创建密码文件

[[email protected] ~]$ orapwd

Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

where

file - name of password file (required),

password - password for SYS will be prompted if not specified at command line,

entries - maximum number of distinct DBA (optional),

force - whether to overwrite existing file (optional),

ignorecase - passwords are case-insensitive (optional),

nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).

There must be no spaces around the equal-to (=) character.

--使用口令实用程序 orapwd 创建口令文件。

orapwd file=filename password=password entries=max_users

其中:

--

filename 是口令文件的名称(必需)。

--

password 是 SYS 的口令(可选)。如果未包含 password 参数,则会收到提示,要求您输入口令。

--

Entries 是允许以 SYSDBA 或 SYSOPER 身份连接的不同用户的最大数量。如果超出了此数值,必须创建新口令文件。使用较

大的数值比较保险。

--“等号”(=) 字符两边没有空格。

--示例:$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle entries=5

5.验证密码文件是否可用

SQL> CONNECT sys/admin AS SYSDBA

SQL> grant sysdba to admin2;

面向数据库管理员的验证方法

根据是希望在数据库所在的那一台计算机上本地管理数据库,还是希望从一个远程客户机管理许多不同的数据库服务器,可以选

择使用操作系统验证或口令文件验证来验证数据库管理员:

如果数据库具有口令文件且您已经具有 SYSDBA 或 SYSOPER 系统权限,则可以通过口令文件进行验证。

如果服务器未使用口令文件,或者您不具有 SYSDBA 或 SYSOPER 权限因而不在口令文件中,则可以使用操作系统验证。在大多

数操作系统中,数据库管理员的验证需要将数据库管理员的操作系统用户名放置到一个特殊组中,一般称为 OSDBA。该组中的用

户将被授予 SYSDBA 权限。一个类似的组 OSOPER 用于向用户授予 SYSOPER 权限。

操作系统验证优先于口令文件验证。特别是,如果您是操作系统的 OSDBA 或 OSOPER 组的成员,并且以 SYSDBA 或 SYSOPER 身

份连接,则连接时您将具有相关的管理权限,而与您指定的用户名/口令无关。

Oracle DB 提供了一个口令实用程序 orapwd 来创建口令文件。使用 SYSDBA 权限连接时,是以 SYS 方案连接,而不是以与用

户名关联的方案连接。对于 SYSOPER,则将连接到 PUBLIC 方案。使用口令文件访问数据库的权限由授权用户发出的 GRANT 命

令提供。

通常,口令文件不包含在备份中,因为几乎在所有情况下,均可方便地重新创建口令文件。

保护口令文件以及标识口令文件

位置的环境变量对于系统安全性是至关重要的。对这些文件和环境变量具有访问权限的任何用户都可能潜在地影响连接的安全性

如果使用 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 或 SHARED 装载了数据库或实例,则不应删除或修改口令文件。否则,将无

法使用该口令文件从远程重新连接。

注:口令区分大小写,在重新创建口令文件时必须考虑到这一点。

时间: 2024-10-11 06:34:44

Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件的相关文章

(转)Oracle 密码文件

--============================== -- Oracle密码文件 --============================== /* 一.密码文件 作用:主要进行DBA权限的身份认证 DBA用户:具有sysdba,sysoper权限的用户被称为dba用户.默认情况下sysdba角色中存在sys用户,sysoper角色中存在system用户 二.Oracle的两种认证方式: 1.使用与操作系统集成的身份验证 2.使用Oracle数据库的密码文件进行身份认证 三.密码

【密码文件丢失--恢复-1】

以oracle10g作为测试版本,删除10g的密码文件: [[email protected] ~]$ rm /u01/oracle/10g/dbs/orapwjadl10g 远程登录数据库,密码文件在远程登录时才会起作用:(此时远程登录不能连接上DB) [[email protected] ~]$ sqlplus sys/[email protected]:1521/jadl10g as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on T

安利一款好的文件删除恢复软件——360文件恢复

估计大多数人都遇到过错手删除了重要文件的情况,所以电脑常备一款数据恢复软件是很有必要的.不过数据恢复软件实在太多,如果只是备用,那么选择体积小巧免费且绿色的会比较合适. 今天推荐的数据恢复工具是集成在360安全卫士中的小软件--360文件恢复.这是为不喜欢安装360卫士的朋友特意分离出来的单独版,软件完全绿色,可以独立运行使用.360文件恢复支持快速扫描硬盘.SSD.U盘.存储卡等载体中被误删除文件,并将它们恢复回来,而且使用非常简单直观.有了它,即便回收站被清空你的文件还是有后悔的机会-- 3

oracle 密码文件文件

密码文件作用: 密码文件用于dba用户的登录认证. dba用户:具备sysdba和sysoper权限的用户,即oracle的sys和system用户. 本地登录: 1)操作系统认证: [[email protected] ~]$ sqlplus "/as sysdba" [[email protected] ~]$ sqlplus / as sysdba [[email protected] ~]$ sqlplus sys/tiger as sysdba 2)密码文件认证: [[ema

netbackup之oracle的备份恢复

1.1.1 挂载裸LUN 1. 挂载裸LUN,mount到/nbubakcup. 1.1.2 确认安装环境 1.确认磁盘空间 在AIX/Linux环境中,/usr/openv目录下需要3GB以上的剩余空间. 2.解析相关服务器主机名与备份通信的ip地址 我们需要在/etc/hosts文件中添加本机及Master Server的主机名及IP地址. 3.确认Media Server已经正确识别磁带驱动器及磁带库 运行lsdev –Cc tape命令查看Media Server已经正确识别磁带库与磁带

oracle异机恢复测试

(一)问题背景 最近在生产环境中,开发人员误操作,使用truncate将oracle数据库某个表的数据全部删除了,在删除之后,开发人员发现自己闯祸了,于是联系值班的DBA进行紧急数据恢复. 经过分析,表被truncate后,使用一般的闪回表.闪回查询.闪回事物等方法,是不可能将数据找回来的,可以使用闪回数据库.闪回数据归档的方法来进行恢复,但是通常在生产环境中,都不会开启这2个特性,所以剩下的只有使用RMAN进行数据恢复了. 对于使用RMAN进行数据恢复,可以在生产环境上直接进行,也可以恢复到其

12.2 中的Data Guard Standby 密码文件自动同步 (Doc ID 2307365.1)

Data Guard Standby Automatic Password file Synchronization in 12.2 (Doc ID 2307365.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 12.2.0.1 and laterOracle Database Cloud Schema Service - Version N/A and laterOracle Database Exadata Clo

[读书笔记]密码文件总结

1.密码文件的创建格式 ORAPWD FILE=filename [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}] FILE:密码文件所在位置以及名称 ENTRIES:密码文件中的用户数 FORCE:是否替换已有的同名密码文件,密码文件的名称固定,为orapwORACLE_SID IGNORECASE:是否忽略大小写 2.使用密码文件的参数设定:remote_login_passwdfile NONE:不使用密码文件登陆 EXCLUSIVE:

Oracle非关键文件恢复,日志成员、临时文件、索引表空间、口令文件(密码文件)

关键性与非关键性 非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件.例如,如果数据库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件副本来保持数据库持续运行. 虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能.例如: 丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,则丢失后甚至会导致应用程序无法使用. 丢失联机重做日志组(只要不是当前联机日志组)会导致在 LGWR 下一次尝试写入组时数据库操作被挂起,直到生成新的日志文