oraclelinux备份脚本
把下面的代码保存为服务器端的脚本,执行即可。PS:需要自己替换一下双引号中的内容
#!/bin/sh
. $HOME/.bash_profile
export ORACLE_SID="你的数据库的SID"
CutDATE=`date '+%Y-%m%d-%H%M'`
DATE=`date -d '-2 day' '+%Y-%m%d'`
export NLS_LANG="你的字符集设定"
exp "具有权限的账号"/"密码" file=/home/oracle/2014/"你的数据库的SID"_$CutDATE.dmp log=/home/oracle/2014/"你的数据库的SID"_$CutDATE.log owner=user1,user2
B. 高分求助!谁给我解释下这段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所以只纯粹说这个脚本哦 呵呵。
C. linux环境下oracle数据库冷备份问题
1. 复制旧的数据库文件
(1) 用sqlPlus连接数据库:sqlplus 用户名/密码 as sysdba
(2) 关闭DB :shutdown immediate;
(3) 复制文件到其他地方存储实现备份
1)复制三个文件夹admin;oradata(datafile,controlfile,redo【注:数据文件, 控制文件,redo】);flash_recovery_area三个文件夹。2)dbhome_1下的内容database(PWDfile、pfile);dbs(spfile);NETWORK/ADMIN(listener.ora、tnsnames.ora)。
2. Oracle重新建库恢复
(1)创建一个和原来一样的数据库。(安装路径和数据库名必须和原来一致)
(2)停止数据库shutdown immediate;
(3)复制安装目录下的admin、oradata、flash_recovery_area覆盖,复制database(PWDfile、pfile) 覆盖
(4)启动数据库startup;
备注:
无归档模式:将备份文件拷贝回原来的目录即可,然后启动数据库。
归档模式:
①将数据文件、控制文件拷贝回原来目录
②SQL>startup mount;
SQL>recover database using backup controlfile;
③将相应的归档日志和联机日志拖到CMD命令窗口进行跑日志。
④SQL>alter database open resetlogs;
3. 软件重装恢复
此时,操作系统重装,如果做冷备恢复,要保证相同操作系统,相同的数据库版本。形势如同异机恢复。
A、不创建实例:(源机上的数据库名字为orcl)
(1)恢复oradata/orcl目录
在目标机上的oradata目录下建立orcl文件夹,然后进行数据覆盖。
包括数据文件、参数文件、控制文件、日志文件、pwd文件,放在与原系统相同的目录。如果目录有所改变,则需要另外建立控制文件,修改pfile。(2) 恢复admin/orcl目录在目标机上的admin目录下建立orcl文件夹,然后在orcl里面再建立amp、bmp、cmp、ump、dpmp、pfile六个文件夹
(3) 建立服务把源机的密码文件拷贝到目标机的database目录下。使用oradim命令在cmd下oradim -new -sid orcl表示建立一个服务,sid为orcl(最好名字和源机备份的数据库名字一致,就不需要重建密码文件)。如果是在linux下,不需要此步。(4) 重建创建参数文件、控制文件拷贝源机的pfile到目标机的一个目录下,修改pfile里面相关文件的路径。然后通过SQL>create spfile from pfile=‘文件路径'来创建参数文件。重建控制文件命令:SQL>alter database backup controlfile to trace;然后会在ump文件夹下产生一个追踪文件,打开文件找到如下一段,复制到文本中,修改相应路径然后保存为:createctl.sql文件(sql脚本文件),复制到目标机上。注意:SQL>alter database backup controlfile to trace as 'F:/DB_RECOVERY/CONTROL_FILE_TRACE.TXT';复制的原始导出txt中的,相应代码片段如下:修改oracle_homeoradataorcl下及相关文件的路径
(6) TNSNAMES设置在networkadmin下的tnsnames.ora中添加如下片段
123456789 ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))
(7) 建立监听用net configuration为orcl实例新建监听至此,冷备份恢复成功。即使你现在用oem打开数据库时发现提示找不到sid ,但实际上你已经成功了,此时只需要重启一下的你的服务器就可以。
B、创建实例方式(实例SID与源机数据库SID一致)
(1) 替换和覆盖oradataorcl目录删除目标机的oradataorcl底下的所有文件,把源机的所有data文件、redo文件拷贝到此目录下
(2) 密码文件覆盖删除目标机的密码文件,拷贝源机密码文件到目标机下。
(3) 控制文件恢复在源机上重建目标机的控制文件:SQL>alter database backup controlfile to trace;然后会在ump文件夹下产生一个追踪文件,打开文件找到上面那段,复制到文本中,修改相应路径然后保存为:createctl.sql文件(sql脚本文件),复制到目标机上。
复制代码代码如下:
12345 c:>sqlplus"/as sysdba"SQL>@c:createctl.sql;SQL>shutdown immediate;SQL>startup;SQL>alterdatabaseopenresetlogs;
(4) 在networkadmin下的tnsnames.ora中添加如下片段
复制代码代码如下:
123456789 ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))
(5) 用net configuration为orcl实例新建监听
若是初学Linux的话建议看看《Linux就该这么学》这本书。
D. linux系统上怎样备份oracle数据库
步骤以下:1、编写备份数据库的shell
1、创建保存shell文件的文件夹,2、文件内容为:#!/bin/sh
PATH=$PATH:$HOME/bin
export
PATH
ORACLE_BASE=/u01/app/oracle
export
ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1
export
ORACLE_HOME
ORACLE_SID=HRDB
export
ORACLE_SID
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
export
PATH
exp
fact/fact
file=/backup/fact`date
+%y%m%d`.dmp
log=/backup/factlog`date
+%y%m%d`.log
shell文件编写终了1、运行以上的shell文件看是不是能生成备份的.dmp文件,如果能则表示shell文件编写成功
2、然后在此shell文件的所在终端输入命令,将此文件授权让root用户可以履行:
3、命令为:chmod
+x
backup.sh
4、然后到root终端编写定时备份的语句5、语句为:crontab
–e
6、输入i
7、输入10
17
,,,/home/backupscript/backup.sh
8、按下esc建,输入:wq
退出并保存便可。
E. 菜鸟求助:linux下oracle数据库自动备份脚本,脚本可实现数据库自动备份功能,并删除三天前的备份
这个好办。 cp 你的数据库`date +'%y%m%d'` 指定目录 这个是以年月日来命名备份 删除的命令是
rm -f 你的数据库名字`date -d "3 days ago" +'%y%m%d'` 这个是删除匹配你数据库的备份名日期前3天的备份文件 他会按照日期-3天匹配3天前的日期来删除备份的
F. linux oracle 定时备份计划问题
crontab 执行的脚本是以root用户来调用的,所以必须要加上oracle用户的环境变量如ORACLE_HOME、ORACLE_BASE、ORACLE_SID,ORACLE_HOME/bin也要加到path里面
另外expdp_oracle.sh其他用户也要有执行权限
example:
vi expdp_oracle.sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/proct/10.2/db_1
export ORACLE_SID=orcl
export PATH=/u01/app/oracle/proct/10.2/db_1/bin;$PATH
expdp system/oracle directory=DDPDATA21 mpfile=rrq.dmp schemas= 'MMS';
wq:
G. Linux系统下如何备份还原ORACLE数据库,在同一台机器上,想还原到以前的备份
如果是同一个数据库实例,直接用EXPDP导出的DMP文件是不可以恢复的。可以DBCA新建一个数据库实例,然后用IMPDP指定DMP文件导入就好了。
H. linux oracle 怎么备份
步骤如下:
一、编写备份数据库的shell
1、创建保存shell文件的文件夹,
2、文件内容为:
#!/bin/sh
PATH=$PATH:$HOME/bin
export PATH
ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1
export ORACLE_HOME
ORACLE_SID=HRDB
export ORACLE_SID
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
export PATH
exp fact/fact file=/backup/fact`date +%y%m%d`.dmp
log=/backup/factlog`date +%y%m%d`.log
shell文件编写完毕
一、运行以上的shell文件
看是否能生成备份的.dmp文件,如果能则表示shell文件编写成功
二、然后在此shell
文件的所在终端输入命令,将此文件授权让root用户可以执
I. 怎么执行oracle数据库自动备份 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分隔开来