採用job定時執行recover datafile
某臺windows伺服器,由於防毒軟體設定問題,導致每天凌晨都會鎖定controlfile/datafile,導致資料庫crash或者某些檔案處於recover狀態;由於公司流程繁瑣,通知系統管理員禁掉防毒軟體需要時間比較長,所以就考慮寫一個job,在凌晨時候定時檢查資料庫狀態,若已經crash則重啟;若有資料檔案離線則對其recover;
注:oracle的動態語句不支援execute immediate 'recover datafile '||file#,所以需要改寫一下語句(在此需感謝maclean的幫助);整體job如下
注:oracle的動態語句不支援execute immediate 'recover datafile '||file#,所以需要改寫一下語句(在此需感謝maclean的幫助);整體job如下
--啟動資料庫
Dbstart.bat
set ORACLE_SID=DBSTART
set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
Dbstart.bat
set ORACLE_SID=DBSTART
set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
sqlplus "/nolog" @db_start.sql > dbstart.log
--因為oracle啟動後再嘗試startup只會報錯,並不會影響現有程式,故不需判斷資料庫當前狀態,直接startup即可
dbstart.sql
conn sys/oracle as sysdba
@startup
Exit
--
Startup.sql
startup
--因為oracle啟動後再嘗試startup只會報錯,並不會影響現有程式,故不需判斷資料庫當前狀態,直接startup即可
dbstart.sql
conn sys/oracle as sysdba
@startup
Exit
--
Startup.sql
startup
--恢復資料檔案
set ORACLE_SID=DBSTART
set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
set ORACLE_SID=DBSTART
set ORACLE_HOME=C:\oracle\product\10.2.0\db_1
sqlplus "/nolog" @db_recover.sql
--
db_recover.sql
connect sys/oracle as sysdba
set echo off
set veri off
set feedback off
set termout on
set heading off
set linesize 1500
set termout off
spool recovery_generate.sql
select 'recover datafile '||FILE#||' ;' from v$recover_file;
spool off
set termout on;
set echo on
@recovery_generate
@db_online
--
Db_online.sql
begin
for i in (select file# from v$datafile where status='OFFLINE') loop
execute immediate 'alter database datafile '||i.file#||' online';
end loop;
end;
/
--
db_recover.sql
connect sys/oracle as sysdba
set echo off
set veri off
set feedback off
set termout on
set heading off
set linesize 1500
set termout off
spool recovery_generate.sql
select 'recover datafile '||FILE#||' ;' from v$recover_file;
spool off
set termout on;
set echo on
@recovery_generate
@db_online
--
Db_online.sql
begin
for i in (select file# from v$datafile where status='OFFLINE') loop
execute immediate 'alter database datafile '||i.file#||' online';
end loop;
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-730459/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle:建立JOB定時執行儲存過程Oracle儲存過程
- Oracle Job 定時執行設定例項[final]Oracle
- 冷備手工完全恢復(recover database,recover tablespace,recover datafile)Database
- 定義JOB的執行間隔
- oracle建立job並執行jobOracle
- Oracle 定時任務job實際應用Oracle
- MySQL定時執行MySql
- Oracle用指令碼定時執行備份Oracle指令碼
- job 執行時間比排程間隔時間長
- job任務均不執行,手工執行報job now running
- Job長時間執行不能退出的分析
- DBMS_JOB.SUBMIT 建立job定時排程MIT
- 設定shell 定期 (crontab job) 執行 DB 中的物件物件
- Recover A Lost Datafile With No Backup (Doc ID 1060605.6)
- crontab 每隔 1 小時 2 小時的執行 job 寫法
- 時區調整對job的執行時間的影響
- Linux下用crontab定時執行PHP程式LinuxPHP
- Job不能執行原因分析
- 停掉正在執行的JOB
- Elasticjob執行job冪等AST
- 使用者被鎖定不影響JOB的執行
- dbms_job 定時計劃
- sqoop job操作及執行Job時如何省略輸入MySQL儲存密碼OOPMySql密碼
- PHP定時執行任務PHP
- Oracle及SQL Server Job執行時間討論及夏令時問題OracleSQLServer
- Oracle資料庫定時器JobOracle資料庫定時器
- Oracle透過job定時建立表Oracle
- 定時 MYSQL 動作-LINUX下用CRON實現定時執行指令碼(轉)MySqlLinux指令碼
- 建立job進行重新整理物化檢視,job執行失敗。
- job中執行帶有引數的procedure 時的寫法
- 採用直方圖改善SQL執行效能直方圖SQL
- 採用多執行緒製作動畫(轉)執行緒動畫
- ios 多執行緒定時器iOS執行緒定時器
- spring執行定時任務Spring
- Oracle ocp 1Z0 053 Q402(RECOVER DATAFILE)Oracle
- Oracle OCP 1Z0 053 Q154(Recover Datafile)Oracle
- c#實現用SQL池(多執行緒),定時批量執行SQL語句 (轉)C#SQL執行緒
- spark job執行引數優化Spark優化