分类: 服务器与存储
2008-06-13 00:17:34
答:方法一:首选需要在UNIX下创建一个管道(只创建一次即可):
$mknod ./exp_pipe p
$ ls -l exp_pipe
prw-rw-r-- 1 report group 0 Mar 17 05:20 exp_pipe
然后通过管道,将EXP导出的数据直接压缩,注意:下面二行要写在同一个shell脚本中。
compress < ./exp_pipe > ./tmp_now.dmp.Z &
exp user/passwd@数据库连接串 file=./exp_pipe direct=y compress=no log=./exp.log
20G的DMP文件,压缩后的大小在4G左右。
方法二:考虑到机器的速度和效率的问题,一般不建议使用exp对数据量大的数据库进行备份,因为比较慢。oracle的rman备份可以支持增量备份,你可以自己设置一个备份策略,好比每周日做一次数据库全备份(level 0 级的备份),然后周一周二做增量备份(level 1 级的备份),周三在做一次数据库全备份(level 0),最后周四、周五、周六做数据库的增量备份(level 1)。这样既可以保证你的备份在大部分时间内比较快,而且也可一保证在需要恢复时较快。具体的备份策略要根据你的要求而定,我只是举个例子。
介绍一下什么是Oracle的rman备份:
Oracle 的RMAN备份- -
查看那当前使用那个spfile文件 :
SQL> select name,value from v$parameter where name='spfile';
1。检查数据库的归档方式。如果不是规定方式,则要修改数据库为归档方式。
1.1 以dba帐号登陆,
$ sqlplus '/as sysdba';
SQL> archive log list;
Database log mode No Archive Mode #非归档方式
Automatic archival Enabled
Archive destination /oracle/bakram/log_archive
Oldest online log sequence 161
Current log sequence 163
1.2 如果第一步为 No Archive Mode ,则将数据库修改修改为归档方式
1.2.1 建立存档路径.
$mkdir /oracle/bakram/log_archive
1.2.2 在/oracle/OracleHome/dbs/建立一文件 firstSpfile.ora
文件内容为:
SPFILE="/oracle/OracleHome/dbs/spfileorcyehoo.ora" # 实例名称
log_archive_start=true;
log_archive_format=ARC%T%S.arc #格式
log_archive_dest=/oracle/bakram/log_archive #存放的路径
1.3 停止数据库
$/oracle/dbstop.sh
1.4 修改归档方式
1.4.1 建立一个dbstartmount.sh文件
--------
echo "begin to start oracle mount..."
lsnrctl start
sqlplus /nolog < connect /as sysdba startup mount exit exit sleep 10 echo "oracle have started oracle mount..."