oracle数据库在linux,怎样在Linux系统中备份Oracle数据库在Linux中Oracle数据库备份的⽅法有很多,就像mysql⼀样可以使⽤不同⽅法进⾏备份oracle数据库
先来介绍⼀些不使⽤脚本我们直接使⽤命令备份与还原oracle数据库
Oracle数据备份:
步骤 1 备份⽤户数据。
1.使⽤linux系统下的数据库管理员账号连接linux终端。
2. 执⾏以下语句,创建“bak_dir”⽂件夹。
mkdir bak_dir
3.
执⾏以下语句,为“bak_dir”⽂件夹赋予读、写和执⾏权限。
chmod 777 bak_dir
4.
执⾏以下语句,以sysdba⽤户登录oracle数据库服务器。
sqlplus 数据库管理员账号/密码@数据库实例名 as
sysdba
5.
执⾏以下语句,将“bak_dir”指定为“/opt/oracle/bak_dir”。
create or replace directory bak_dir as
'/opt/oracle/bak_dir'
commit
6.
执⾏以下语句,将“bak_dir”的读、写和执⾏权限赋给xx(数据⽤户名)⽤户。
grant all on directory bak_dir to
xx
commit
7. 执⾏以下语句,退出oracle数据库服务器。
quit
执⾏以下语句,将sysdb⽤户的表备份到“bak_dir”⽬录下。
8.
expdp xx(要导出表所在的数据库⽤户名)/xx(密码)@数据库实例名
directory=bak_dir dumpfile=expdb_xx.dmp logfile=expdb_xxlog
tables=表名
Oracle数据还原:
1.在命令⾏输⼊:
sqlplus "/as sysdba"
2.
执⾏以下语句登录xx数据库,⽤户名:xx,密码:xx(请输⼊当地实际密码)
conn xx/xx;
3.如果恢复的表中有涉及到触发器的请停⽌触发器,例:A表
alter table A disable all
triggers;
commit;
4. 执⾏以下语句退出当前⽤户
quit;
5. 执⾏以下语句,恢复⽤户数据。
[mw_shl_code=php,true] impdp xx/xx@数据库实例名 directory=bak_dir
table_exists_action=truncate dumpfile=expdb_xx.dmp
logfile=impdb_xx.log[/mw_shl_code]
5.在命令⾏输⼊:sqlplus "/as sysdba"
6.
执⾏以下语句登录xx数据库,⽤户名:xx,密码:xx(请输⼊当地实际密码)
conn xx/xx;
7. 执⾏以下语句打开被禁⽌的触发器
alter table A enable all
如何连接oracle数据库
triggers;
commit;
上⾯⽅法是可以实现我们想要的,但但⼤型WEB服务器肯定是要⾃动定时进⾏备份的。
1.--创建数据表空间
3.logging
4.datafile
'/u01/app/oradata/test/TEST.dbf'
5.size 32m
6.autoextend on
< 32m maxsize 2048m
< management local;
9.
10.--创建⽤户并指定表空间
123
12.default tablespace test_data
14.
15.--给⽤户授予权限
TEST;
⽤Test⽤户登录,创建⼀个表,并插⼊两条数据:
create table t1(
Id varchar(50) primary key,
title varchar(50)
);
insert into t1
values(sys_guid(),'t1');
insert into t1
values(sys_guid(),'t2');
commit;
先写⼀个导出的脚本⽂件:
[mw_shl_code=php,true]export
ORACLE_BASE=/u01/app
export
ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=TEST
export
PATH=$ORACLE_HOME/bin:$PATH
d=$(date ' %Y%m%d')
exp TEST/123@testfile=/home/oracle/backup/$d.dmp
log=/home/oracle/backup/$d.log owner=TEST
zip -m /home/oracle/backup/$d.zip
/home/oracle/backup/$d.dmp
/home/oracle/backup/$d.log[/mw_shl_code]
前4句是设置环境变量,因为crontab定时调⽤时,不会使⽤oracle⽤户的环境变量,所以要先把它们导进来。第6⾏以当前⽇期作为导出的⽂件名,例如20120626.dmp和20120626.log。第7⾏把这两个⽂件打成⼀个zip包,并删掉这两个⽂件。
要⽤chmod命令把这个sh标记为可执⾏:
chmod x backup.sh
⽤oracle⽤户,输⼊crontab
-e命令,编辑oracle⽤户的任务计划:
代码如下
1.[oracle@localhost backup]$ crontab
-e
2.42 13 * * * /home/oracle/backup/backup.sh
这样就添加了⼀个计划,在每天的13点42分运⾏/home/oracle/backup/backup.sh。这样就可以了,利⽤
linux计划任务就实现了。
备份策略:
星期天 0 级
星期⼀,⼆,四,五,六 2 级
星期三 1 级
--创建本地管理路径
mkdir -p
/dinglp/ora_managed/backup
mkdir -p
/dinglp/ora_managed/backup
mkdir -p
/
dinglp/ora_managed/backup/export-
mkdir -p /dinglp/ora_managed/backup/log
mkdir -p /dinglp/ora_managed/backup/rman_backup
mkdir -p /dinglp/ora_managed/scripts
--创建rman表空间和rman⽤户
create tablespace rman_tbs datafile '/oradata/luke/rman_tbs01.dbf'
size 1024M;
create user rman_dlp identified by dlp default tablespace rman_tbs
temporary tablespace temp;
grant connect,resource ,recovery_catalog_owner to rman;
--注册catalog 数据库
rman catalog rman_dlp/dlp
create catalog tablespace rman_tbs;
connect target sys/dg@priamry
register database;
report schema;
--设置备份参数
configure retention policy to redundancy 2;
configure retention policy to recovery window of 7 days;
--以下是备份脚本(可以通过vi进⾏编辑)
dlp-> touch exp_rman.par
dlp-> touch exp_rman.sh
dlp-> touch rman_v (数据库0级备份)
dlp-> touch rman_bk_LEVEL0.sh
dlp-> touch rman_v (数据库1级备份)
dlp-> touch rman_bk_LEVEL1.sh
dlp-> touch rman_v (数据库2级备份www.linuxidc)
dlp-> touch rman_bk_LEVEL2.sh
--倒出RMAN⽤户数据脚本exp_rman.par
>>>>>>>>>> ### exp_rman.par ###
>>>>>>>>>> userid=rman_dlp/dlp
file=/dinglp/ora_managed/backup/export/rman.dmp
log=/dinglp/ora_managed/backup/log/rman.log
-
-倒出RMAN数据SHELL脚本exp_rman.sh
>>>>>>>>>> ### exp_rman.sh ###
>>>>>>>>>> #!/bin/bash
source /home/Oracle/.bash_profile
cd /dinglp/ora_managed/scripts
exp parfile=exp_rman.par
--零级备份RMAN脚本rman_v
connect catalog rman_dlp/dlp
connect target sys/dg@primary
run {
allocate channel d1 type disk;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论