`

Oracle重置数据库命令

阅读更多
新建bat文件,复制以下内容,然后执行。
@echo off
REM
REM The script assumes that user can connect using "/ as sysdba"
REM
REM =================
REM Restore procedure
REM =================
REM
REM    If Installed Oracle home is also lost and oracle binaries were 
REM    re-installed or the Oracle is installed to new oracle home location 
REM    compared to backup time, then user will be prompted to enter Flash 
REM    Recovery Area location.
REM
REM    For database in NoArchiveLog mode, database is restored to last offline 
REM    backup time/scn;
REM    For database in Archive log mode, database is restored from last backup 
REM    and a complete recovery is attempted. If complete recovery fails, 
REM    user can open the database with resetlogs option provided the files 
REM    are not recovery fuzzy.
REM
REM    The restore log is saved in ?/DATABASE/OXE_RESTORE.LOG
REM

setlocal

set /p inp="This operation will shut down and restore the database. Are you sure [Y/N]?"
:checkinp
if /i "%inp%" == "Y" goto :confirmedyes
if /i "%inp%" == "n" exit
:Askagain
set /p inp=
goto :checkinp

:confirmedyes

echo Restore in progress...

echo db_name=xe >%temp%\rman_dummy.ora
echo sga_target=270M >>%temp%\rman_dummy.ora


net start oracleserviceXe

REM Startup database in nomount mode using RMAN...
@(
echo set echo on^;
echo startup nomount pfile=%temp%\rman_dummy.ora force^;
) > %temp%\restore_rman0.dat
rman target / @%temp%\restore_rman0.dat
if not %errorlevel% == 0 set Errorstr=         RMAN Error - could not startup dummy instance & goto :restorefailederr

@(
echo connect / as sysdba^;
echo set head off
echo set echo off
echo set linesize 515
echo variable var varchar2^(512^)^;
echo execute :var := sys.dbms_backup_restore.normalizefilename^(^'SPFILE2INIT^'^)^;
echo spool %temp%\spfile2init.log
echo select sys.dbms_backup_restore.normalizefilename^(^'SPFILE2INIT.ORA^'^) spfile2init from dual^;
echo exit^;
) > %temp%\spfile2init.sql
sqlplus /nolog @%temp%\spfile2init.sql >nul
FOR /F %%i in (%temp%\spfile2init.log) do set SPFILE2INIT=%%i

@(
echo connect / as sysdba;
   echo set head off
   echo set echo off
   echo set linesize 515
   echo variable var varchar2^(512^)^;
   echo execute :var := sys.dbms_backup_restore.normalizefilename^(^'FRA_LOC^'^)^;
   echo spool %temp%\restore_rmanlog.log
   echo select sys.dbms_backup_restore.normalizefilename^(^'OXE_RESTORE.LOG^'^) RESTORE_RMANLOG from dual^;
   echo exit^;
) > %temp%\restore_rmanlog.sql
sqlplus /nolog @%temp%\restore_rmanlog.sql >nul
FOR /F %%i in (%temp%\restore_rmanlog.log) do set RESTORE_RMANLOG=%%i

if not exist ^"%SPFILE2INIT%^" goto get_rcvarea_loc
@(
   echo set echo on^;
   echo shutdown immediate^;
   echo startup nomount pfile=^"%SPFILE2INIT%^"^;
   echo restore ^(spfile from autobackup^) ^(controlfile from autobackup^)^;
   echo startup mount force^;
   echo configure controlfile autobackup off^;
   echo restore database^;
) > %temp%\restore_rman1.dat
rman target / @%temp%\restore_rman1.dat trace "%RESTORE_RMANLOG%"
if not %errorlevel% == 0 set Errorstr=         RMAN Error - See log for error & goto :restorefailederr
goto restored_files

:get_rcvarea_loc
set /p rcvarea_loc="Enter the flash recovery area location:"
@(
   echo set echo on^;
   echo restore ^(spfile from autobackup db_recovery_file_dest=^'%rcvarea_loc%^'^)^;
   echo startup nomount force^;
   echo restore ^(controlfile from autobackup^)^;
   echo alter database mount^;
   echo configure controlfile autobackup off^;
   echo restore database^;
) > %temp%\restore_rman1.dat
rman target / @%temp%\restore_rman1.dat trace "%RESTORE_RMANLOG%"
if not %errorlevel% == 0 set Errorstr=         RMAN Error - See log for error & goto :restorefailederr
goto restored_files

:restored_files
@(
   echo connect / as sysdba^;
   echo declare cursor n1 is select name from v$tempfile^;
   echo begin 
   echo for a in n1
   echo   loop
   echo     begin
   echo       sys.dbms_backup_restore.deletefile^(a.name^)^;
   echo     exception
   echo       when others then
   echo         null^;
   echo     end^;
   echo end loop^;
   echo end^;
   echo /
   echo exit^;
   echo /
) > %temp%\deltfile.sql
sqlplus /nolog @%temp%\deltfile.sql >nul
@(
   echo connect / as sysdba^;
   echo set head off
   echo set echo off
   echo spool %temp%\logmode.log
   echo select log_mode from v$database^;
   echo exit^;
) > %temp%\logmode.sql
sqlplus /nolog @%temp%\logmode.sql >nul
FOR /F %%i in (%temp%\logmode.log) do set LOGMODE=%%i

if "%LOGMODE%" == "NOARCHIVELOG" goto process_noarchivelog
if "%LOGMODE%" == "ARCHIVELOG" goto process_archivelog
set Errorstr=         Unknown log mode : %LOGMODE%
goto :restorefailederr

:process_noarchivelog
@(
   echo set echo on^;
   echo alter database open resetlogs;
) > %temp%\restore_rman2.dat
rman target / @%temp%\restore_rman2.dat trace "%RESTORE_RMANLOG%" append
if not %errorlevel% == 0 set Errorstr=         RMAN Error - See log for details & goto :restorefailederr
goto :restoresucess

:process_archivelog
@(
   echo set echo on^;
   echo recover database^;
   echo alter database open resetlogs;
) > %temp%\restore_rman2.dat
rman target / @%temp%\restore_rman2.dat trace "%RESTORE_RMANLOG%" append
if not %errorlevel% == 0 set Errorstr=         RMAN Error - See log for details & goto :restorefailederr
goto :restoresucess

:restoresucess
echo Restore of the database succeeded.
echo Log file is at %RESTORE_RMANLOG%.
pause Press any key to exit
exit
goto :EOF

:restorefailederr
echo ====================   ERROR =============================
echo          Restore of the database failed.
echo %Errorstr%.
echo          Log file is at %RESTORE_RMANLOG%.
echo ====================   ERROR =============================
pause Press any key to exit
exit
goto :EOF
分享到:
评论

相关推荐

    常用Oracle数据库操作命令

    了解并熟练掌握Oracle数据库操作命令对于数据库管理员(DBA)来说至关重要。以下是一些常用的Oracle数据库操作命令和相关知识点: 1. **SQL*Plus**:这是Oracle提供的一个命令行工具,用于执行SQL查询和数据库管理...

    找回Oracle重置密码方法

    在IT行业中,Oracle数据库作为企业级数据管理的重要工具,其安全性与访问控制是维护数据完整性和保密性的关键。然而,在日常操作中,忘记密码或需要重置密码的情况时有发生。本文将详细介绍如何找回或重置Oracle...

    Windows下编写批处理脚本来启动和重置Oracle数据库

    cmd启动Oracle数据库 新建一个bat文件,复制内容进去...Oracle重置数据库命令 新建bat文件,复制以下内容,然后执行。 @echo off REM REM The script assumes that user can connect using "/ as sysdba" REM REM ====

    Oracle数据库密码重置、导入导出库命令示例应用.doc

    Oracle数据库密码重置、导入导出库命令示例应用

    Oracle 数据库忘记sys与system管理员密码重置操作方法

    Oracle数据库管理员重置密码操作虽然看似简单,但执行时需要谨慎对待,因为任何操作上的失误都可能导致数据库访问受限甚至数据丢失。因此,本段内容旨在提供一个基本的操作指南,帮助遇到密码忘记问题的用户能够按照...

    数据库通用操作命令

    ### 数据库通用操作命令 #### 一、WINDOWS环境下创建BSS生产库和生产账号 ##### 创建表空间 在创建表空间之前,确保已经通过正确的身份验证登录到了Oracle数据库。这通常涉及使用`sqlplus`工具并指定以`sysdba`...

    oracle数据库用户密码重置.docx

    Oracle数据库是企业级广泛使用的数据库管理系统,其安全性是核心关注点之一。在日常管理中,有时需要对用户的密码进行重置,确保账户安全。本篇将详细讲解如何在Oracle数据库中重置用户密码,同时也会提及MySQL的...

    windows系统中,oracle数据库被锁,密码过期

    1. **命令执行环境**:以上所有命令均应在`SQL*Plus`环境中执行,确保正确输入命令。 2. **区分大小写**:Oracle数据库对用户名和密码是区分大小写的,请确保输入正确的大小写。 3. **结束符和换行**:在命令行环境...

    oracle用户密码重置

    在Oracle数据库系统中,用户管理是一项非常重要的任务,它涉及到数据的安全性和访问控制。Oracle提供了多种方式来管理和维护用户账号,其中包括创建新用户、修改用户属性、锁定或解锁用户账号以及重置用户的密码等...

    ORACLE数据库工程师面试题目

    ### ORACLE数据库工程师面试知识点详解 #### 一、冷备份与热备份的不同点及各自优点 **冷备份**指的是在数据库完全关闭的情况下进行的数据备份。这种方式适用于所有模式下的数据库,无论是归档模式还是非归档模式。...

    Linux下修改Oracle用户密码

    4. **连接到Oracle数据库**:使用`conn system/密码 as sysdba`或`connect / as sysdba`命令连接到Oracle数据库。这里,“密码”指的是当前的系统管理员(sys)密码,而“as sysdba”则表示以最高权限登录数据库。 ...

    Oracle数据库整理表碎片

    ### Oracle数据库整理表碎片 #### 表碎片的来源与影响 在Oracle数据库中,随着对表数据的频繁增删改查操作,特别是大量的删除操作,会导致表产生所谓的“碎片”。这是因为,当执行删除操作后,虽然原数据所占用的...

    解锁用户、重置oracle密码.zip

    在Oracle数据库管理中,解锁用户和重置密码是常见的运维任务,主要涉及到对数据库用户的权限管理和安全性控制。本文将详细讲解这两个操作,并提供相关的实践步骤。 首先,让我们了解Oracle数据库中的用户账户。...

    Oracle数据库移植.doc

    使用`resetlogs`选项是因为数据库在恢复后处于NOARCHIVELOG模式,这一步将数据库转换为ARCHIVELOG模式,并重置日志序列号。 #### 四、注意事项 - 在进行数据库移植前,务必对原数据库进行完整备份。 - 确保新...

    oracle数据库从入门到精通-学习详细笔记

    ### Oracle数据库从入门到精通——启动与关闭流程详解 #### 一、Oracle数据库启动流程 在深入了解Oracle数据库之前,我们首先需要掌握其基本的启动流程。Oracle数据库的启动过程包括了实例的创建、数据库的加载...

    oracle常用的命令

    在Oracle数据库管理中,掌握一系列实用的命令对于提高工作效率至关重要。本文将根据提供的内容,深入解析创建企业管理器、删除企业管理器以及与Oracle数据库相关的其他常用命令。 #### 一、创建企业管理器 (Create ...

    oracle数据库sys密码修改

    - 使用`conn sys/pass_word as sysdba`命令以SYSDBA的身份连接到数据库(这里的`pass_word`为当前SYS用户的密码)。 - 或者使用`conn system/pass_word`命令以SYSTEM的身份连接到数据库(这里的`pass_word`为当前...

    Oracle 9i安装中的全局数据库名及SID

    - **实例启动与停止**:通过`lsnrctl`命令可以启动和停止监听器,而通过`sqlplus / as sysdba`命令结合`startup`和`shutdown`命令来启动和关闭数据库实例时,都需要指定正确的SID。 - **网络配置**:在客户端访问...

    NBU异机恢复ORACLE 数据库SOP

    - 可能需要进行数据库的重新构造,例如重建控制文件,重置数据库ID(如果不同),并进行必要的表空间和用户权限设置。 3. **后续调整** - 配置数据库连接参数,如TNS(Transparent Network Substrate)设置,以...

Global site tag (gtag.js) - Google Analytics