zl程序教程

您现在的位置是:首页 >  系统

当前栏目

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

WindowsOracle数据库 启动 脚本 编写 重置 批处理
2023-06-13 09:20:05 时间
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 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 The restore log is saved in /DATABASE/OXE_RESTORE.LOG 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
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
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Windows下编写批处理脚本来启动和重置Oracle数据库