Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94776
  • 博文数量: 42
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-16 13:39
文章分类

全部博文(42)

文章存档

2011年(1)

2010年(6)

2009年(35)

我的朋友

分类: LINUX

2009-10-29 15:04:27

环境:redhat 4
IP;172.16.12.88(oracle数据库服务器)
   172.16.12.174(远程FTP服务器或备份服务器)
前提:保证这两台服务器时间同步
操作步骤
一、以oracle用户登录在oracle数据库服务器的oracle目录下创建backup目录
[oracle@oracle ~]$mkdir backup
二、以oracle用户登录在oracle数据库服务器的oracle目录下创建ora-env文件,内容如下
[oracle@oracle ~]$ more ora-env
ORACLE_HOME=/opt/oracle/product/9.2.0.4
export ORACLE_HOME
ORACLE_SID=mydb
export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data
export ORA_NLS
PATH=.:$ORACLE_HOME/bin:$PATH
export PATH
NLS_LANG="simplified chinese"_china.zhs16gbk
export NLS_LANG
三、授予其可执行权限
[oracle@oracle ~]$ chmod +x ora-env
四、同样以oracle用户登录在oracle数据库服务器的oracle目录下创建ora-backup文件,内容如下
[oracle@oracle ~]$ more ora-backup
#!/bin/bash
cd /home/oracle
./ora-env                   ----初始化Oracle数据库
rq=`date +%m-%d-%H-%M`      ----把当时日期赋予变量rq
rm -rf /home/oracle/backup/* ----清空/backup目录
exp file=/home/oracle/backup/mydb$rq.dmp log=/home/oracle/backup/mydb$rq.log
----导出mydb数据库的数据(其登录账号和密码为jiajia),导出文件及日志均放在/backup目录下
五、授予其可执行权限
[oracle@oracle ~]$ chmod +x ora-backup
六、同样以oracle用户登录在oracle数据库服务器的oracle目录下创建.netrc这个隐藏文件,内容如下(异地备份)
[oracle@oracle ~]$ more .netrc
machine 172.16.12.174      ---改IP为作为远程备份的服务器
login data                 ---data为远程备份服务器的用户
password 123456
macdef init                ---定义一个名为init的宏,它将在自动注册进程的最后被执行
bin                        ---文件的传输方式设为二进制
lcd /home/oracle/backup    ---进入本地工作目录/backup
cd /home/data/pub          ---进入备份主机目录/pub
mput *                     ---将/backup目录下的所有文件传输至备份主机
bye                        ---退出FTP会话进程
[oracle@oracle ~]$ chmod 600 .netrc
七、在172.16.12.174上创建data用户
[root@localhost ~]# useradd -d /home/data -m -s /bin/bash data
[root@localhost ~]# passwd data
设置密码为123456
八、再以data用户登录172.16.12.174,并创建pub目录
[data@localhost ~]$ mkdir pub
九、测试一:以oracle用户登录oracle数据库服务器,执行ora-backup,看能否成功备份数据库和备份日志
[oracle@oracle ~]$ ./ora-backup
 
Export: Release 9.2.0.4.0 - Production on 星期三 10月 28 20:21:06 2009
 
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 
 
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
。。。。。。。。。省略
. exporting sequence numbers
. exporting cluster definitions
. about to export JIAJIA's tables via Conventional Path ...
. . exporting table                     PLAN_TABLE          0 rows exported
. . exporting table                     STUDYTABLE          4 rows exported
. . exporting table                       TESTTEST          2 rows exported
. exporting synonyms
. exporting views
. exporting stored procedures
。。。。。。。。。。省略
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.
[oracle@oracle ~]$ cd backup
[oracle@oracle backup]$ ls
mydb10-28-20-21.dmp  mydb10-28-20-21.log    从这可以看出执行ora-backup命令后在/home/oracle/backup目录下已经生成数据库和日志记录
十、测试二:以oracle用户登录数据库FTP连接到172.16.12.174,看能否将/home/oracle/backup下的所有文件传送过去
[oracle@oracle ~]$ ftp -i 172.16.12.174        ----一定要“-i”这个参数,否则mput时会提示选YES或NO,这样就无法达到自动的效果
Connected to 172.16.12.174.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
331 Please specify the password.
230 Login successful.
bin
200 Switching to Binary mode.
lcd /home/oracle/backup
Local directory now /home/oracle/backup
cd /home/data/pub
250 Directory successfully changed.
mput *
local: mydb10-28-20-21.dmp remote: mydb10-28-20-21.dmp
227 Entering Passive Mode (172,16,12,174,247,250)
150 Ok to send data.
226 File receive OK.
16384 bytes sent in 0.0013 seconds (1.2e+04 Kbytes/s)
local: mydb10-28-20-21.log remote: mydb10-28-20-21.log
227 Entering Passive Mode (172,16,12,174,77,96)
150 Ok to send data.
226 File receive OK.
1453 bytes sent in 7.7e-05 seconds (1.8e+04 Kbytes/s)
bye
221 Goodbye.
以data用户登录到172.16.12.174上检查,发现文件已经传送过来
[data@localhost ~]$ cd pub/
[data@localhost pub]$ ls
mydb10-28-20-21.dmp  mydb10-28-20-21.log
十一、测试三:在数据库服务器上设置针对oracle用户的crontab,使得能按时进行备份和远程传输,由于要马上能看到效果,所以时间设置有所调整
[root@oracle ~]# crontab -u oracle -e
no crontab for oracle - using an empty one
 
05 13 * * * /home/oracle/ora-backup             ----每天晚上13点05执行ora-backup文件
06 13 * * * /usr/bin/ftp -i 172.16.12.174       ----每天晚上13点06执行FTP文件传输
 重新编辑ora-backup脚本并加进去ORCLE的环境变量,前面的ora-env在这个时候可以不需要
[oracle@oracle ~]$ more ora-backup
#!/bin/bash
ORACLE_HOME=/opt/oracle/product/9.2.0.4
export ORACLE_HOME
ORACLE_SID=mydb
export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data
export ORA_NLS32
PATH=.:/bin:/usr/bin:$ORACLE_HOME/bin:$PATH
export PATH
NLS_LANG="simplified chinese"_china.zhs16gbk
export NLS_LANG
rq=`/bin/date +%m-%d-%H-%M`
/bin/rm -rf /home/oracle/backup/*
exp file=/home/oracle/backup/mydb$rq.dmp log=/home/oracle/backup/mydb$rq.log                        
重启动crond使其生效
[root@oracle init.d]# ./crond stop
Stopping crond:                                            [  OK  ]
[root@oracle init.d]# ./crond start
Starting crond:                                            [  OK  ]
[root@oracle init.d]# ps -ef|grep crond
root      9925     1  0 20:32 ?        00:00:00 crond
root      9929  9871  0 20:32 pts/3    00:00:00 grep crond
然后等到13:05和13:06去检查结果
登到数据库服务器上看
[oracle@oracle backup]$ ls -l
total 20
-rw-r--r--  1 oracle oinstall 16384 Oct 29 13:05 mydb10-29-13-05.dmp
-rw-r--r--  1 oracle oinstall  1453 Oct 29 13:05 mydb10-29-13-05.log
登到备份服务器上看
[data@localhost pub]$ ls -l
total 19
-rw-r--r--  1 data data 16384 Oct 29 13:06 mydb10-29-13-05.dmp
-rw-r--r--  1 data data  1453 Oct 29 13:06 mydb10-29-13-05.log
 
总结:1、刚开始一直在ora-backup里直接调用了ora-env文件来设置ORACLE的环境变量,但在测试十一使用crontab来定时备份传输时总是无法生成备份文件
         后来发现可能是由于crontab无法去执行./ora-env这个文件来读取oracle的环境变量,所以导致无法生成备份文件,最后只能将ora-env里的文件重新
         一一写进到ora-backup,这样一来,crontab则可以读取到oracle的环境变量,因此可以生成备份文件。而通过在备份脚本里直接调用ora-env这样的文
         可能适合于再UNIX平台中
      2、在设置oracle的环境变量时,后面结束部分加“;”和不加“;”都无所谓,没有任何影响
      3、若采用的是磁带备份的话,则需要以oracle用户登录在/home/oracle目录下添加一个如下的脚本
         tar―backup文件内容:
         tar rvf /dev/rmt/0n /home/oracle/backup
阅读(650) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~