sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 运维DBA >

学习笔记:Oracle RMAN备份入门 汇总恢复spfile参数文件最快方式

时间:2016-06-26 11:58   来源:Oracle研究中心   作者:惜分飞   点击:

天萃荷净 rman恢复spfile最快捷方式,记录一下使用Oracle RMAN备份软件对spfile参数文件恢复的最快方式

一、sqlplus nomount数据库并恢复spfile

SQL> startup
ORA-01078: failure in processing system parameters                       
LRM-00109: 无法打开参数文件 'E:\ORACLE\11_2_0\DATABASE\INITXFF.ORA' 

RMAN> restore spfile to 'e:\oracle\11_2_0\database\spfilexff.ora'  
2> from 'F:\rmanbackup\20111113_0KMRIT19_1_1';                           

启动 restore 于 14-11月-11                                               
RMAN-00571: ===========================================================  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================  
RMAN-00601: fatal error in recovery manager                              
RMAN-03004: 执行命令期间出现严重错误       
RMAN-10041: 无法在失败后重新创建轮询通道上下文。
RMAN-10024: 设置 rpc 轮询时出错                                          
RMAN-10005: 打开游标时出错                                               
RMAN-10002: ORACLE 错误 : ORA-03114: not connected to ORACLE             
RMAN-03002: restore 命令 (在 11/14/2011 22:23:24 上) 失败
ORA-03113: 通信通道的文件结尾                                            
进程 ID: 2884                                                            
会话 ID: 97 序列号: 1

1、无spfilexff.ora/initxff.ora/init.ora文件,sqlplus不能启动数据库至nomount状态
2、在数据库没有nomount状态下,不能恢复spfile

二、rman nomount数据库并恢复spfile

RMAN> startup           

已连接到目标数据库 (未启动)
启动失败: ORA-01078: failure in processing system parameters             
LRM-00109: 无法打开参数文件 'E:\ORACLE\11_2_0\DATABASE\INITXFF.ORA'      

在没有参数文件的情况下启动 Oracle 实例以检索 spfile
Oracle 实例已启动
RMAN-00571: =========================================================== 
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============  
RMAN-00571: ===========================================================  
RMAN-03002: startup 命令 (在 11/14/2011 22:00:32 上) 失败
ORA-00205: 标识控制文件时出错, 有关详细信息, 请查看预警日志

RMAN> restore spfile to 'e:\oracle\11_2_0\database\spfilexff.ora'        
2> from 'F:\rmanbackup\20111113_0KMRIT19_1_1';                           

启动 restore 于 14-11月-11                                               
分配的通道: ORA_DISK_1                                                   
通道 ORA_DISK_1: SID=10 设备类型=DISK

通道 ORA_DISK_1: 正在从 AUTOBACKUP F:\rmanbackup\20111113_0KMRIT19_1_1 还原 spfile 
通道 ORA_DISK_1: 从 AUTOBACKUP 还原 SPFILE 已完成                        
完成 restore 于 14-11月-11

1、rman会使用一个隐含(默认的参数文件启动数据库至nomount状态)
2、在nomount状态下,rman可以恢复spfile

三、rman启动数据库日志

Mon Nov 14 22:00:26 2011
Starting ORACLE instance (restrict)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as e:\oracle\11_2_0\RDBMS
Autotune of undo retention is turned on. 
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options.
Using parameter settings in client-side pfile C:\S5O4.1 on machine XIFENFEI-PC
System parameters with non-default values:
  sga_target               = 152M
  compatible               = "11.2.0.1.0"
  _dummy_instance          = TRUE
  remote_login_passwordfile= "EXCLUSIVE"
  db_name                  = "XFF"
Mon Nov 14 22:00:27 2011
PMON started with pid=2, OS id=2932 
Mon Nov 14 22:00:28 2011
VKTM started with pid=3, OS id=4364 at elevated priority
VKTM running at (10)millisec precision with DBRM quantum (100)ms
Mon Nov 14 22:00:29 2011
GEN0 started with pid=4, OS id=4524 
Mon Nov 14 22:00:30 2011
DIAG started with pid=5, OS id=5472 
Mon Nov 14 22:00:30 2011
DBRM started with pid=6, OS id=5296 
Mon Nov 14 22:00:30 2011
PSP0 started with pid=7, OS id=6120 
Mon Nov 14 22:00:30 2011
DIA0 started with pid=8, OS id=4528 
Mon Nov 14 22:00:30 2011
MMAN started with pid=9, OS id=6052 
Mon Nov 14 22:00:30 2011
DBW0 started with pid=10, OS id=5348 
Mon Nov 14 22:00:30 2011
LGWR started with pid=11, OS id=4904 
Mon Nov 14 22:00:30 2011
CKPT started with pid=12, OS id=5388 
Mon Nov 14 22:00:30 2011
SMON started with pid=13, OS id=4492 
Mon Nov 14 22:00:30 2011
RECO started with pid=14, OS id=576 
Mon Nov 14 22:00:30 2011
MMON started with pid=15, OS id=6072 
Mon Nov 14 22:00:30 2011
MMNL started with pid=16, OS id=5720 
ORACLE_BASE from environment = e:\oracle
Mon Nov 14 22:00:31 2011
alter database mount
ORA-00210: cannot open the specified control file
ORA-00202: control file: 'E:\ORACLE\11_2_0\DATABASE\CTL1XFF.ORA'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-205 signalled during: alter database mount...
Mon Nov 14 22:00:33 2011
Checker run found 1 new persistent data failures

1、查看系统没有发现 C:\S5O4.1文件

四、restrict方式nomount数据库

在Oracle中,有时候要执行一些管理性的操作,而这些操作运行的时候不能有其他用户同时访问数据库。对于这种情况可以设置系统进入RESTRICTED SESSION状态禁止普通用户登陆数据库。

数据库可以在启动的时候以RESTRICT方式来启动数据库:

SQL> conn / as sysdba已连接。
SQL> shutdown immediate数据库已经关闭。已经卸载数据库。
ORACLE例程已经关闭。
SQL> startup restrict
ORACLE例程已经启动。

Total System Global Area 5279498240 bytes
Fixed Size 2094528 bytes
Variable Size 3192597056 bytes
Database Buffers 2080374784 bytes
Redo Buffers 4431872 bytes数据库装载完毕。数据库已经打开。
SQL> conn test/test
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

警告:您不再连接到ORACLE。
SQL> conn / as sysdba已连接。
SQL> select granted_role from dba_role_privs
2 where grantee = 'TEST';
GRANTED_ROLE
------------------------------------------------------------
CONNECT
RESOURCE

SQL> grant dba to test;

授权成功。
SQL> conn test/test已连接。
SQL> conn / as sysdba已连接。
SQL> revoke dba from test;
撤销成功。

SQL> grant restricted session to test;
授权成功。

SQL> conn test/test已连接。

可以看到,当数据库以RESTRICT状态启动,或者进入到RESTRICT状态,则Oracle禁止普通用户连接数据库。
而拥有DBA角色的用户,或者拥有RESTRICTED SESSION权限的用户可以登陆数据库。

在Oracle11g的管理员手册文档中有一个地方的描述错误:

Further, when the instance is in restricted mode, a database administrator cannot access the instance remotely through an Oracle Net listener, but can only access the instance locally from the machine that the instance is running on.
根据文档的描述,如果数据库处于RESTRICTED SESSION状态,则禁止用户采用NET服务方式登陆,而必须在服务器上直接登陆,但是测试发现,Oracle并没有这个限制。
SQL> conn / as sysdba已连接。
SQL> alter system disable restricted session;
系统已更改。
SQL> conn test/test@test11g已连接。
SQL> conn / as sysdba已连接。
SQL> alter system enable restricted session;

系统已更改。

SQL> conn test/test@test11g已连接。

无论是在本机通过服务名方式,还是在其他客户端通过服务名方式都可以连接到RESTRICTED SESSION状态的数据库,只要登陆用户拥有RESTRICTED SESSION权限。

下面再来看看RESTRICTED SESSION状态,对于已经登陆数据库的普通用户有何影响:

SQL> conn / as sysdba已连接。
SQL> revoke restricted session from test;

撤销成功。

SQL> alter system disable restricted session;
系统已更改。
在会话1,回收TEST用户的RESTRICTED SESSION权限,使其变为普通用户。并将数据库从RESTRICTED SESSION状态转为正常状态。
下面在会话2用TEST用户登陆数据库:

SQL> CONN TEST/test已连接。
SQL> SET SQLP 'SQL2> '
SQL2> SELECT * FROM SESSION_PRIVS;
PRIVILEGE
--------------------------------------------------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

已选择10行。

下面回到会话1,将数据库置于RESTRICT SESSION状态:

SQL> alter system enable restricted session;
系统已更改。

执行RESTRICTED SESSION命令很快就返回了,说明命令已经执行成功,下面尝试普通用户登陆:

SQL> conn test/test
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

警告:您不再连接到ORACLE。
登陆报错,说明RESTRICT状态已经生效,回到会话2,看看数据库的RESTRICTED SESSION状态对已经登陆的普通会话是否有影响:

SQL2> SELECT * FROM DUAL;
DU
--
X
SQL2> CREATE TABLE T1 (ID NUMBER);
CREATE TABLE T1 (ID NUMBER)
*第1行出现错误:
ORA-01536:超出表空间'YANGTK'的空间限额


SQL2> CREATE OR REPLACE PROCEDURE P AS
2 BEGIN
3 NULL;
4 END;
5 /
过程已创建。
虽然建表语句失败了,但是这时由于刚才回收DBA角色,导致UNLIMITED TABLESPACE权限被连带回收造成的,与RESTRICTED SESSION的状态无关。

可以看到,虽然数据库处于RESTRICTED SESSION状态,但是数据库中已经登陆的会话可以继续执行任何操作,直到会话断开连接。
这个现象说明,如果希望数据库处于RESTRICTED SESSION状态,且此时不希望普通用户登陆数据库,那么最好的方法是采用STARTUP RESTRICT的方式来启动数据库,这样可以确保没有普通用户登陆。而ALTER SYSTEM ENABLE RESTRICTED SESSION的方式虽然可以使得数据库进入RESTRICT状态,但是不能保证现有的连接用户都是具有RESTRICTED SESSION权限的。即使是在STARTUP之后,马上发出ENABLE RESTRICTED SESSION命令也是不可靠的,因为这个时间差可能使得后台JOB运行了。因此如果是使用ENABLE RESTRINCTED SESSION方式,还需要在后台通过ALTER SYSTEM KILL SESSION的方式清除掉所有的普通用户连接。
最后来看看RESTRICTED SESSION状态和RAC环境的关系。
RESTRICTED命令是在实例上执行的,因此Oracle是否将这个命令应用到整个RAC环境需要通过测试来说明。

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之学习笔记:Oracle RMAN备份入门 汇总恢复spfile参数文件最快方式

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/554.html

Oracle研究中心

关键词:

Oracle RMAN备份入门

汇总恢复spfile参数文件最快方式