當前位置:首頁 » 編程軟體 » linuxrman腳本

linuxrman腳本

發布時間: 2023-07-21 11:23:35

1. rman中如何制定刪除某段時間的歸檔日誌

總覺得使用windows跑oracle是不靠譜的事情,可以這個世界上總有很多人喜歡做類似這樣的事情,對於資料庫比較常見的兩件事情:rman和刪除dg備庫歸檔日誌,在linux/unix平台上使用shell實現很簡單,可是跑到win裡面,就變的煩了,不是因為其麻煩,而是因為用的人少,不知道怎麼下手處理該事情,我編寫了簡單的實現初級功能的win下面rman備份和刪除備庫歸檔日誌腳本,供大家參考,也更加歡迎朋友提出來更加好的處理方法(win是真心的不懂) rman備份腳本 復制代碼 代碼如下: --backup_oracle.bat文件 rman target / cmdfile=D:/backup/rman/backup_db.rman log=d:/backup/rman/logfile/rmanlog%date:~0,4%%date:~5,2%%date:~8,2%.log --backup_db.rman文件 CONFIGURE RETENTION POLICY TO REDUNDANCY = 2; CONFIGURE DEVICE TYPE DISK PARALLELISM 2; CONFIGURE DEFAULT DEVICE TYPE TO DISK; backup filesperset = 5 as compressed backupset database format 'd:/backup/rman/full_%U.rman'; sql 'alter system archive log current'; backup filesperset = 50 as compressed backupset archivelog all format 'd:/backup/rman/arch_%U.rman' delete input; DELETE noprompt OBSOLETE; crosscheck backup; delete noprompt expired backup; backup format 'd:/backup/rman/ctl_%U.rman' current controlfile; backup spfile format 'd:/backup/rman/spfile_%U.rman' ; exit; backup_oracle.bat 文件加入到計劃任務即可 刪除dg備庫歸檔日誌(已經應用) 復制代碼 代碼如下: --delete_dg_archivelog.bat rem 注意修改 部署目錄 cd D:/win_xifenfei d: rem 注意delete_archive.sql 查詢是否有記錄 echo delete archivelog staring > delete_archivelog.bak sqlplus / as sysdba @delete_archive.sql echo rman target / cmdfile=rman_checkcross.rman>>delete_archivelog.bat delete_archivelog.bat >>delete_dg_archivelog_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log exit --delete_archive.sql set lines 150 col name for a150 set pagesize 0 feedback off verify off heading off echo off spool delete_archivelog.bat select 'del 'name from v$archived_log where APPLIED='YES' AND NAME IS NOT NULL and DEST_ID=1; spool off exit; --rman_checkcross.rman crosscheck archivelog all; delete noprompt expired archivelog all; exit delete_dg_archivelog.bat 加入到計劃任務即可

2. Oracle資料庫RMAN的自動備份腳本簡介

Oracle資料庫RMAN的自動備份腳本簡介

各位同學知道Oracle資料庫RMAN如何自動備份腳本嘛?下面我為大家整理了關於Oracle資料庫RMAN的自動備份腳本文章,希望能為你提供幫助:

1、資料庫設置為歸檔方式

2、資料庫的備份腳本

db_full_backup.sh :資料庫全備腳本

db_l0_backup.sh :資料庫0級備份腳本

db_l1_backup.sh :資料庫1級備份腳本

ftp.sh :數據FTP上傳腳本

ftp_del.sh :數據FTP清理腳本

rman_bak.sh :數據備份主程序

3、備份原理

每周1、3、6進行0級備份

每周日、2、4、5進行1級備份

備份文件上傳到FTP伺服器

FTP伺服器每周清理一次,但是清理後將周六和周日的備份進行保留(6.bak和0.bak)

所有工作防暑crontab中自動執行備份

4、備份目錄含義

arc :資料庫歸檔目錄

rmanbak :資料庫備份文件的保存目錄

rmanscripts :資料庫腳本存放路徑

5、FTP目錄

ftp上必須手動建立目錄

L0:

---1

---3

---6

---6.bak

L1:

---2

---4

---5

---0

---0.bak

rman_bak.sh腳本主程序

#!/bin/bash

#--------------------------------------------

# Oracle auto backup using rman

#

# author:songrh

# week:1,3,6 Level 0 backup

# 2,4,5,0 Level 1 backup

# Copyright by ChenLong Tec

#--------------------------------------------

#

#

export ORACLE_BASE=/u02/oracle

export ORACLE_HOME=/u02/oracle/proct/9.2.4

export ORACLE_SID=PROD

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

export NLS_LANG=american_america.ZHS16GBK

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data

export PATH=/bin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin:$PATH

export PATH=$PATH:/opt/local/bin

#

SH_PATH=/u02/rmanscripts

ARC_PATH=/u02/arch

RMAN_BAK_PATH=/u02/rmanbak

#

#FULL_PATH=$RMAN_BAK_PATH/full

L0_PATH=$RMAN_BAK_PATH/L0

L1_PATH=$RMAN_BAK_PATH/L1

#

#DAY_TAG=`date "%Y-%m-%d"`

LOG_TAG=`date "%Y-%m-%d"`

#FIRST_DAY=`date %e`

WEEK=`date %w`

#WEEK=1

#

# FTP configure

IP="122.120.150.155"

FTPUSER="ftpbak"

FTPPASS="******"

FTPROOT0="L0"

FTPROOT1="L1"

#

DISK_USE=`df -k |sed -n '/u02/'p | awk '{print $5}' |sed 's/%//'`

####check path function

############

if [[ $DISK_USE -ge 90 ]]; then

rm -rf $L0_PATH/*

rm -rf $L1_PATH/*

fi

if [ "$WEEK" = "6" -o "$WEEK" = "3" -o "$WEEK" = "1" ]; then

if [ ! -d $L0_PATH ]; then

mkdir $L0_PATH

fi

if [ "$WEEK" = "1" ]; then

rm -rf $L0_PATH/*

rm -rf $L1_PATH/*

mkdir $L0_PATH/$WEEK

$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK

cd $L0_PATH/$WEEK

$SH_PATH/ftp_del.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log

else

if [ ! -d $L0_PATH/$WEEK ]; then

mkdir $L0_PATH/$WEEK

$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK

cd $L0_PATH/$WEEK

$SH_PATH/ftp.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log

else


;

3. 請教linux定時執行資料庫備份腳本的問題

Oracle自動備份資料庫不外乎以下三種方式WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具,很多人可能都沒有接觸,主要說一下windows的任務計劃與unix的cron
1、生成腳本文件,如backup.rcv 假定文件內容如下:
$>cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format 『/u01/oradata/backup/arch%u_%s_%p』 archivelog all delete input; release channel c1; release channel c2; release channel c3; }

2、生成執行文件在windows上生成backup_archive.bat,內容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,內容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入調度在windows中用任務計劃向導即可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啟動Oracle自動備份進程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點對資料庫備份
0 12,18 * * * backup_archive.sh
#表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來

4. 如何為RMAN腳本里的crosscheck 命令allocate channel

allocate channel d1 for maintenance device type disk;這條命今語法格式是錯的
相對來說allocate channel for maintenance device type disk;的語法格式是對的
但是for maintenace這命令是不能用在run列表或script中的

如果要實現你的功能,可以這樣:
1、用configrure 配置幾個自動分配的channel 如:
CONFIGURE CHANNEL c1 DEVICE TYPE DISK MAXPIECESIZE 1000 M FORMAT '%d_%t_%U';

2、建立一個.rcv的腳本,例如:
backup incremental level 0 database plus archivelog delete all input ;
crosscheck backup;
report obsolete;
delete noprompt obsolete;

3、配置一個sh,用crontab或手動來執行這個sh
oracle>vi fullbak.sh

內容如下:
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/proct/9.2.0
export NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_SID=SHCCPC
export PATH=$PATH:$ORACLE_HOME/bin

date
rman catalog rman/rman@rcv target / CMDFILE /oracle/sql/rman/full_backup.rcv log /oracle/sql/rman/full_backup.log
date

這樣應該就可以了

5. linux用戶amandabackup有用嗎

在Oracle資料庫中,有時會發現備份腳本可以在命令行可以執行,但在crontab不能執行。 如何確定在Linux的oracle用戶下crontab是否有效。 可以寫一個最簡單的腳本,腳本中只有date命令,把腳本輸入到一個日誌文件中。如: 30 23 * * 0-6 /u01/app/rmanBackup/date.sql >>/u01/app/rmanBackup/date.log Date.sql需要有足夠的執行許可權。 如果可以定時執行date命令,表示在oracle下可以使用crontab命令 Oracle的腳本不能執行,是因為在crontab中找不到oracle下的相關命令,所以需要加上export設置環境變數。沒有設置export不能執行。 如:全備: [@linuxidc rmanBackup]$ vi backupFull.sql 內容: # script.:bakupFull.sql # creater:mengzhaoliang # date:2010/12/28 # desc:backup full database datafile in archive with rman # connect database export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/proct/11.2.0/dbhome_1 export ORACLE_SID=hyoms export PATH=$ORACLE_HOME/bin:$PATH rman target/ << EOF_RMAN run{ allocate channel c1 type disk; backup tag 'full' format '/u01/app/rmanBackup/db0_%d_%T_%s' database include current controlfile; delete noprompt obsolete; release channel c1; } # end 如:crontab [oracle@ ~]$ crontab -e 30 23 * * 0-6 /u01/app/rmanBackup/backupFull.sql >>/u01/app/rmanBackup/backupFull.log

6. linux 下 oracle 10g 使用rman 每周執行一次 自動備份腳本如何編寫 希望能有解釋。

crontab -e
0 0 0 0 0 /script_path/your_backup_script.sh

每周日零時自動執行

7. 高分求助!誰給我解釋下這段linux中oracle備份腳本的意思,越詳細越好,謝謝了!!

您好,我剛接觸LINUX還沒有接觸到ORACLE去,我純粹說一下這個腳本,半斤八兩的嘎嘎。
ORACLE_HOME=/u/proct/oracle816; export ORACLE_HOME
LD_LIBRARY_PATH=/u/proct/oracle816/lib; export LD_LIBRARY_PATH
ORACLE_BASE=/u/proct; export ORACLE_BASE
ORACLE_SID=man; export ORACLE_SID
ORA_NLS33=/u/proct/oracle816/ocommon/nls/admin/data; export ORA_NLS33
PATH=$PATH:/u/proct/oracle816/bin; export PATH
CDPATH=$PATH:$ORACLE_HOME:/u; export CDPATH
NLS_LANG='traditional chinese_taiwan'.ZHT16BIG5; export NLS_LANG
#NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1;export NLS_LANG
NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS';export NLS_DATE_FORMAT
LD_ASSUME_KERNEL=2.4.0; export LD_ASSUME_KERNEL
這一段都是「;」前面聲明變數,「;」後輸出變數,輸出的目的是可以傳遞給下一級的腳本(子進程)。
alias rman='/u/proct/oracle816/bin/rman'
這個就是給/u/proct/oracle816/bin/rman取一個別名rman,其好處再簡單不過,名字太長當然希望用較短的代替很長的輸入了。
extfile=`date '+%w_%p_%H_%M'`
這也是聲明變數extfile,等號右邊是一個命令替換,比如現在是2007年4月29日星期天,15:55那麼這個extfile應該是0_PM_3_55 具體你看下date的MAN文檔就是了。
%w是參數week,它是用0-6來表示星期日-星期六
%p 它是指用12小時制來表示一天的時間的時候上午或者下午AM or PM
%H 小時
%M 分鍾

#rm -rf /www/exp/data/b735data*.*
這個是強制的刪除/www/exp/data/下的以b735data開頭並帶有任意後綴的文件。但是被#號注釋掉了,腳本里以#開頭的都是注釋。
exp foxmold/foxmold file=/www/exp/script/b735data.$extfile compress=y full=y log=n
這些是資料庫里的東西了我不懂你去搜下exp命令的用法吧。
mv /www/exp/script/b735data.$extfile /www/exp/data/.
Mv 移動文件的命令。
#rcp /exp/data/data.$extfile 10.160.6.42:/backup/apple_backup
同樣被注釋掉了,rcp是遠程復制命令。
sh DATAexport
執行腳本

重申因為我不懂oracle所以只純粹說這個腳本哦 呵呵。

8. linux下RMAN備份腳本問題<二>

。。。你說的都對了
1、 「unset」 就是取消後面的變數
2、 「!」 就是取反,如果你那個目錄不存在,就創建它
3、 「$?」 這個的意思你可以去試試,執行一次錯誤的命令然後「echo $?",然後再執行一次正確的命令再」echo $?「,它的作用就是返回上一次命令的執行結果

9. 達夢資料庫怎麼寫shell腳本,怎麼通過shell腳本調用sql腳本

通過shell腳本調用sql腳本:
1、shell腳本調用sql腳本
#首先編輯sql文件
oracle@SZDB:~> more dept.sql
connect scott/tiger
spool /tmp/dept.lst
set linesize 100 pagesize 80
select * from dept;
spool off;
exit;

#編輯shell腳本文件,在shell腳本內調用sql腳本
oracle@SZDB:~> more get_dept.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/dept.sql #注意此處執行sql腳本的方法 -S 表示以靜默方式執行
exit

#授予腳本執行許可權
oracle@SZDB:~> chmod 775 get_dept.sh

-->執行shell腳本
oracle@SZDB:~> ./get_dept.sh

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

2、shell腳本調用rman腳本
#首先編輯RMAN腳本
oracle@SZDB:~> more rman.rcv
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
SET LIMIT CHANNEL CH1 READRATE=10240;
SET LIMIT CHANNEL CH1 KBYTES=4096000;
SET LIMIT CHANNEL CH2 READRATE=10240;
SET LIMIT CHANNEL CH2 KBYTES=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
}

#編輯shell腳本文件,在shell腳本內調用rman腳本
oracle@SZDB:~> more rman_bak.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
exit

#授予腳本執行許可權
oracle@SZDB:~> chmod 775 rman_bak.sh
#執行shell腳本

熱點內容
java封裝方法 發布:2025-04-06 23:37:41 瀏覽:538
單片機編程100例 發布:2025-04-06 23:22:38 瀏覽:308
lirs演算法 發布:2025-04-06 23:22:36 瀏覽:110
eslyric腳本 發布:2025-04-06 23:21:14 瀏覽:571
編譯正則表達式的方法 發布:2025-04-06 23:17:37 瀏覽:439
apache訪問日誌分析 發布:2025-04-06 22:58:51 瀏覽:462
wordpressphp版本 發布:2025-04-06 22:57:01 瀏覽:425
蘋果手機鎖平在哪裡設置密碼 發布:2025-04-06 22:44:01 瀏覽:560
oracle存儲過程介紹 發布:2025-04-06 22:44:00 瀏覽:58
我的世界伺服器進末影箱 發布:2025-04-06 22:43:59 瀏覽:592