ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在复制不同sid数据库或同sid数据库

在复制不同sid数据库或同sid数据库

原创 Linux操作系统 作者:qkhhfqp 时间:2008-06-12 20:11:18 0 删除 编辑

在复制不同sid数据库或同sid数据库
一、建相关文件夹,密码文件,参数文件
ln -s /hotbak/fox /u01/oradata/pretty
cp initfox.ora initpretty.ora
vi initpretty.ora
%s/fox/pretty 全部替换掉,再修改控制文件参数
mkdir -p $ORACLE_BASE/admin/pretty/adump
mkdir -p $ORACLE_BASE/admin/pretty/bdump
mkdir -p $ORACLE_BASE/admin/pretty/cdump
mkdir -p $ORACLE_BASE/admin/pretty/udump 
mkdir archive(注意在参数指定归档的地方)
orapwd -h  显示帮助
orapwd file=$ORACLE_HOME/dbs/orapwpretty password=qkhhfqp entries=10
export ORACLE_SID=pretty
sqlplus / as sysdba
startup mount;
二、把OS热备的数据文件拷贝到复制数据库相应的目录,或者用软连接也可以。
vi hotbak.sql (OS热备脚本)
set feedback off pagesize 0 heading off verify off linesize 32767 trimspool on termout off serveroutput on
remark 备份目录要先建好,并赋予ORACLE用户所有,确保有足够的空间。
define dir='/hotbak/fox'
define fil='&dir/open_backup_commands.sql'
define spo='&dir/open_backup_output.log'
spool &fil
prompt connect
sys/oracle@fox as sysdba;;
prompt alter system switch logfile;;
declare
        cursor cur_tablespace is
               select tablespace_name from dba_tablespaces
               where status <>'READ ONLY' and contents <>'TEMPORARY';
        cursor cur_datafile(tn varchar) is
               select file_name from dba_data_files
               where tablespace_name=tn;
begin
        for ct in cur_tablespace loop
              dbms_output.put_line('alter tablespace '||ct.tablespace_name||' begin backup;');
                  for cd in cur_datafile (ct.tablespace_name) loop
                       dbms_output.put_line('!cp ' ||cd.file_name||' &dir;');
                  end loop;
              dbms_output.put_line('alter tablespace '|| ct.tablespace_name|| ' end backup;');
        end loop;
end;
/
prompt alter system switch logfile;;
prompt alter database backup controlfile to '&dir/backup.ctl' reuse;;
prompt alter database backup controlfile to trace;;
spool off;;
remark 写好脚本先别加@&执行,看看输出是否正常,确认正常在加@&fil执行,控制文件的REUSE表示如果目标文件存在则覆盖
spool &spo
@&fil
spool off
remark 备完之后记得备归档日志,怎么知道要备哪些归档日志?查看V$backup找出数据文件在备份的时候的SCN,再对比V$archived_log的first_change#,例如 select max(sequence#) from v$archived_log where first_change#<(select min(CHANGE#) from v$backup);并且确保所有的数据文件都备了。
三、在被复制数据库中备份控制文件,脚本生成控制文件,重建控制文件
/%s/fox/pretty (reuse set)
startup nomount;
执行生成控制文件脚本
alter database mount;
recover database using backup controlfile until cancel;(注意输入正确的归档位置和日志文件)
alter database open resetlogs;

alter tablespace tbs_test begin backup;
alter tablespace tbs_test end backup;
archive log list
改变归档模式在mount状态下
alter database archivelog;
alter system set log_archive_start=true;
alter system archive log start;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11364208/viewspace-344583/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: RAID
请登录后发表评论 登录
全部评论

注册时间:2008-05-19

  • 博文量
    53
  • 访问量
    38255