Exp方法 备份
一、本地备份
步骤:
1、设置备份目录
Su – oracle
Mkdir /home/oracle/backup
cd /home/oracle
2、编写备份脚本
vi testbackup
RACLE_HOME=/opt/oracle/product/10g;export ORACLE_HOME
ORACLE_SID=nssdb;export ORACLE_SID
rm /home/oracle/backup/*
/opt/oracle/product/10g/bin/exp system/ffcsnss file=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` log=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M`
保存,退出
Chmod 777testbackup
3、执行脚本:
vi monitor
#!/bin/sh
.home/oracle/.bash_profile
CDR=/home/oracle/
cd $CDR
nohup ./testbackup >> /dev/null 2>&1 &
保存,退出
Chmod 777monitor
4、设置自动执行
Su – oracle
Crontab –e
添加内容:
30 22* * * /home/oracle/monitor
保持,退出
这样,每天晚上10:30自动执行数据库备份,并将之前的配置文件删除。
5、补充说明:
数据库导出有四种模式full(全库导出), owner(用户导出), tables(表导出), tablespaces(表空间导出).,以下分别说明:1)full(全库导出):
导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS这些系统用户之外的所有用户的数据.
例如:
/opt/oracle/product/10g/bin/exp system/ffcsnss file=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` log=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` full=y2)owner(用户导出):
导出某个或某些用户的所有权限和数据.
例如:
/opt/oracle/product/10g/bin/exp system/ffcsnss file=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` log=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` wner=(ffcsnss,ffcssacyy)3)tables(表导出):导出某些表(可以是不同用户的)的结构和数据.
/opt/oracle/product/10g/bin/exp system/ffcsnss file=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` log=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` tables=(ffcsnss.log_url,ffcssacyy.event_ids)4、tablespaces(表空间导出):表空间导出数据.
/opt/oracle/product/10g/bin/exp system/ffcsnss file=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` log=/home/oracle/backup/exp_`date +%Y-%m-%d-%H-%M` tablespaces=(ffcsnss,ffcssacyy)
具体用那一种,根据实际情况设计脚本
6、Exp-00091错误
如果在备份过程,出现EXP-00091错误
EXP-00091: Exporting questionable statistics.
解决办法如下:
原因:
在数据库的服务器端和客户端字符集不同的情况下,导出(dump)数据库表时,会产生这个错误。虽然产生这个错误,但好像对导入没有影响
解决步骤:
1、sqlpluls /nolog
conn /as sysdba
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
其中'NLS_CHARACTERSET'必须为大写
如果select的结果如下:
PARAMETER
--------------------
VALUE
--------------------
NLS_CHARACTERSET
ZHS16GBK
Cd /home/oracle
Vi .bash_profile
添加一行
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
保存退出
Source .bash_profile
退出终端,重新登陆
二、异地备份
1、设置ftp存放目录
在备份机器创建一个备份目录例如:
Mkdir /date/oradat/backup
在备份机上创建ftp用户名和密码,例如:
Username:root
Password:ffcsnss
在本地机(安装有oracle数据库机)oracle根目录下(/home/oracle)创建一个.netrc文件。
2、ftp执行脚本
添加.netrc文件内容为:
machine 172.168.0.128
login root
password ffcsnss
macdef init
bin
lcd /home/oracle/backup
cd /data/oradata/backup
mput *
bye
bye
保存退出
Chmod 600 .netrc
使该文件只能被该用户所访问。
注意:.netrc脚本中bye以前,不能使用空行隔开,不然不得成功;.netrc文件使用两个bye,且两个bye之间使用空行隔开
3、设置自动传输
Su – oracle
Crontab –e
添加内容为
30 23* * * ftp -i 172.168.0.128
保存退出
这样,每天晚上11点30分自动将/home/oracle/backup下的所有文件上传到ftp服务器(172.168.0.128)备份机的/data/oradata/backup/目录下。
用crontab –l查看,看到的内容应该为:
30 22* * * /home/oracle/monitor
30 23* * * ftp -i 172.168.0.128
同时在/var/spool/cron/crontabs目录下查看是否增加了一个Oracle文件
三、备份数据导入
数据导入命令用imp:
例如:
imp system/ffcsnss file=/home/oracle/backup/exp_2009-04-29-17-21.dmpfull=yignore=y
如果后面没有加ignore=y,因为有的表已经存在,就报错,对该表就不进行导入。在后面加上ignore=y就可以了对该表进行导入。
数据导入功能可以使用oracle界面导入,这里就不做详细说明。