分类: Mysql/postgreSQL
2008-05-30 10:54:52
问:公司里的oracle数据库有20G之大(这是一个方案的大小.原来这个方案有30G,我已经把能删的数据都删了),怎么备份?感觉备份一次好慢啊.专家有什么指导一下的吗?(另:20G的数据库是不是备份也要20G这样?)我希望能每周备份一次,最好每天一次.
答:方法一:首选需要在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 |
方法二:考虑到机器的速度和效率的问题,一般不建议使用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 以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.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 #存放的路径 |
$/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..." -------- 执行./dbstartmount.sh SQL>alert database archivelog; Database altered. 将数据库打开 SQL>alert database open; Database altered. SQL> |
1.5.配置dbstart.sh。 启动数据库
以下为引用的内容: $vi /oracle/dbstart.sh #编辑启动脚本 --------------------------------------------- echo "begin to start oracle..." lsnrctl start sqlplus /nolog < connect /as sysdba startup pfile="/oracle/OracleHome/dbs/firstSpfile.ora" #修改这里。即启动时加载自己配置的文件。 exit exit sleep 10 echo "oracle have started..." -------------------------------------- |
2. 创建RMAN目录
$ sqlplus system/data#yes
2.1创建一个独立的表空间
以下为引用的内容: SQL>create tablespace back datafile 'back_css.dmp' size 50m; |
2.2创建RMAN用户
以下为引用的内容: SQL>create user rman identified by rman default tablespace back temporary tablespace temp; |
2.3给RMAN授予权限
以下为引用的内容: SQL>grant connect,resource,recovery_catalog_owner to rman; |
2.4打开RMAN
$RMAN
2.5连接数据库
以下为引用的内容: RMAN>connect catalog rman/rman; |
2.6 创建恢复目录
以下为引用的内容: RMAN>create catalog tablespace back; |
3. 注册目标数据库(需要备份的数据库)
3.1 注册数据库
以下为引用的内容: $rman target sys/data#yes catalog rman/rman@yehoo; #yehoo为实例名。 ---- Recovery Manager: Release 9.2.0.1.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: YEHOO (DBID=2840368994) connected to recovery catalog database ---- RMAN>register database; |
3.2 查询恢复目录
怎么能知道我们的oracle9i是OLTP还是DSS
4。备份
备份表空间:
以下为引用的内容: backup tag 'tsuser' format '/oracle/css_20041209_%u_%s_%p' tablespace css; |
5.1 查看现有备份
以下为引用的内容: RMAN>list backup; |
以下为引用的内容: RMAN>report obsolete |