了解Maclean Liu|向Maclean Liu提问 Oracle ALLSTARS 全明星(群内有多位Oracle高级售后support,N位OCM和ACE) QQ群 # QQ群号:23549328 # 已经升级到 2000人群,空位多多。欢迎有一定基础的Oracle骨友加入,现在入群需要经过Maclean的技术面试,欢迎面试,请加QQ号:47079569 为好友参加面试 2群基础群 适合刚入门的同学,会共享最佳入门实践和资料 QQ群 # QQ群号:171092051 # 已经升级到 500人的超级群,空位多多,无需面试

OGG常见初始化方案

数据初始化 RMAN初始化方案 本方案在初始化过程中,不需要源数据库停机。 步骤如下: 生产端=============================================== 1)        源端和目标端安装OGG软件,并启动manager 2)        源端配置OGG的Extract及DataPump 3)      源端启动Extract进程,并且人工记录抽取进程启动的时间点,例如:“2011-05-03 11:20:55” ,将此时间点作为在下一步中查找长事务的一个判断条件;可以在数据库中查询该时间点:”select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual” 4)        长事务处理:在V$TRANSACTION中查找当前正在运行的事务(RAC环境下,查看gv$transaction),并找出相应的长事务。在执行rman备份之前,确保这些长事务已经完成,或者被kill掉(需要得到dba或者相关管理人员的确认)。 Select  start_time  from gv$transaction where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss')<to_date('2011-05-03 11:20:55', 'yyyy-mm-dd hh24:mi:ss'); 注:通过上面的SQL语句查找到比第3歩中记录下的时间点早的事务,需要等到该事务结束,然后执行rman的备份;     5)        使用oracle用户登录,执行rman备份 --备份数据库: $rman target / run { allocate channel ch00 type disk maxpiecesize 20g; allocate channel ch01 type disk maxpiecesize 20g; crosscheck backupset; delete noprompt expired backupset; sql 'alter system archive log current'; backup as backupset skip inaccessible tag hot_db_bk_level0 full database format '/u01/backup/bk_%s_%p_%t'; release channel ch00; release channel ch01; } --备份归档和控制文件:(如果有三个日志文件组,可以按照以下方式进行切换,如果更多,则对应增加切换的次数即可); run { ALLOCATE CHANNEL ch00 TYPE DISK MAXPIECESIZE 20G; ALLOCATE CHANNEL ch01 TYPE DISK MAXPIECESIZE 20G; sql 'alter system switch logfile'; sql 'alter system switch logfile'; sql 'alter system switch logfile'; sql 'alter system archive log current'; BACKUP ARCHIVELOG ALL FORMAT '/u01/backup/ARCH_%U'; BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/bk_controlfile'; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; } 在源机执行 SQL>set linesize 200 SQL>select * from Gv$log; GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------          1          1         23  104857600          1 NO  CURRENT                 218512 01-DEC-10          2          1         22  104857600          1 YES ACTIVE                  218422 01-DEC-10          3          2         17  104857600          1 NO  CURRENT                 218503 01-DEC-10          4          2         16  104857600          1 YES INACTIVE                218412 01-DEC-10 (*)   获取不活动的已归档日志的最后一个SCN号,如果有多个已归档的INACTIVE的组,取最大的FIRST_CHANGE#,这里取218412 记录该SCN号(在“第10歩”目标端恢复数据库时使用),将备份文件,FTP到目标机 ======================================== hpux2:/u01/oracle$ ftp 192.168.1.27 Connected to 192.168.1.27. 220 hpux_dr FTP server (Revision 4.0 Version wuftpd-2.6.1 Wed Jun 18 07:11:14 GMT 2008) ready. Name (192.168.1.27:oracle): oracle 331 Password required for oracle. Password: 230 User oracle logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /u01/oracle/rmanbk 250 CWD command successful. ftp> lcd /u01/oracle/rmanbk Local directory now /u01/oracle/rmanbk ftp> bin 200 Type set to I. ftp> prompt Interactive mode off. ftp> mput hp*   容灾端=============================================== 6)        使用oracle用户登录目标机执行恢复 ü  在目标机建立相同的目录结构,并正确设置:ORACLE_BASE,ORACLE_HOME,ORACLE_SID环境变量。 ü  拷贝源机init{ORACLE_SID}.ora文件到目标机 ü  cp $ORACLE_HOME/dbs/initorcl.ora  目标机对应目录 ü  生成口令文件或者copy $ORACLE_HOME/dbs/PWD{ORACLE_SID}   7)        启动数据库到nomount状态 sqlplus '/ as sysdba' SQL>startup nomount   8)        启动RMAN恢复控制文件 rman target / RMAN>restore controlfile from '/u01/oracle/rmanbk/hpdb_ctlfile_757366280381.dbf';   9)        将数据库更改为mount状态 sqlplus '/ as sysdba' SQL>alter database mount;   10)     启动RMAN恢复数据库 rman target / RMAN>restore database;   RMAN> run {    set archivelog destination to '/u01/arch';    SET UNTIL SCN 218412;     --在第5歩源端记录下的scn号    RECOVER DATABASE; }   11)     使用以下SQL语句查找目标端数据库的SCN号:(得到该SCN号之后,在2.5.8章节中启动复制进程时,使用该SCN号。) SQL> SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER;   CHECKPOINT_CHANGE# CHECKPOIN ------------------ ---------             218412 28-MAY-11             218412 28-MAY-11             218412 28-MAY-11             218412 28-MAY-11             218412 28-MAY-11 注: a)  如果目标端数据库在“第10歩”操作之后,又额外追加了源数据库rman备份后的归档日志,导致目标端数据库的SCN号大于“第10歩”中SCN号。所以必须以目标端数据库当前的SCN为主,从而避免数据重复。 b)  如果目标端数据库在“第10歩”操作之后,没有额外追加源数据库rman备份后的归档日志,则“第11歩”中得到的SCN号应该与“第10歩”中的SCN号相等; 12)     (备选)如果源端为RAC,目标端为单机,需将目标机改为单机模式 删除多余的redolog group SQL> select THREAD#, STATUS, ENABLED from v$thread;  THREAD# STATUS ENABLED ---------- ------ -------- 1 OPEN   PUBLIC 2 CLOSED PRIVATE   SQL> select group# from v$log where THREAD#=2; GROUP# ---------- 4 5 6   SQL> alter database disable thread 2; Database altered. SQL> alter database drop logfile group 4; alter database drop logfile group 4 ERROR at line 1: ORA-00350: log 4 of instance racdb2 (thread 2) needs to be archived ORA-00312: online log 4 thread 2: '/u01/oracle/oradata/ractest/log/redo04.log' SQL> alter database clear unarchived logfile group 4; Database altered. SQL> alter database drop logfile group 4; Database altered. SQL> alter database drop logfile group 5; Database altered.   SQL> alter database drop logfile group 6;   Database altered. SQL> select THREAD#, STATUS, ENABLED from v$thread;   THREAD# STATUS ENABLED ---------- ------ -------- 1 OPEN   PUBLIC     删除多余UNDO表空间 SQL> show parameter undo; NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ undo_management                   string      AUTO undo_retention                       integer     900 undo_tablespace                      string      UNDOTBS1   SQL> select tablespace_name from dba_tablespaces where contents='UNDO'; TABLESPACE_NAME ------------------------------ UNDOTBS1 UNDOTBS2 SQL> drop tablespace UNDOTBS2 including contents and datafiles; Tablespace dropped.   如果源数据库为Oracle9i,因为RMAN时不备份TEMP表空间,需重新创建TEMP表空间 SQL> create temporary tablespace TEMP  tempfile '/u01/temp.dbf' size 500M; Tablespace created. SQL> alter database default temporary tablespace TEMP; Database altered. 13)     目标端打开数据库 alter database open resetlogs; 注意:由于此时源端和目标端一样,所以要先删除DDL那几个脚本,删除replicat进程再 重新添加,最后才能 start replicat repea,aftercsn <> Oracle EXPDP/IMPDP初始化方案 在数据初始化的过程中,不需要源数据库停机。 1)        源端和目标端安装OGG软件,并启动manager 2)        源端配置OGG的Extract及DataPump 3)        源端启动Extract进程以及DataPump进程,并且人工记录抽取进程启动的时间点,例如:“2011-05-03 11:20:55” ,将此时间点作为在下一步中查找长事务的一个判断条件; 4)        长事务处理:在V$TRANSACTION中查找当前正在运行的事务(RAC环境下,查看gv$transaction),并找出相应的长事务。在执行rman备份之前,确保这些长事务已经完成,或者被kill掉(需要得到dba或者相关管理人员的确认)。 Select  start_time  from gv$transaction where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss')<to_date('2011-05-03 11:20:55', 'yyyy-mm-dd hh24:mi:ss'); 注:通过上面的SQL语句查找到比第3歩中记录下的时间点早的事务,需要等到该事务结束,然后执行rman的备份; 5)        创建directory用于执行数据泵操作 --directory path for store dump file CREATE OR REPLACE DIRECTORY DATA_PUMP AS 'E:\OGG\data'; grant read ,write on DIRECTORY DATA_PUMP to ggs ; --users to execute expdp grant read ,write on DIRECTORY DATA_PUMP to maclean ; 6)        源端获取数据库当前的SCN SQL> select dbms_flashback.get_system_change_number from dual;   GET_SYSTEM_CHANGE_NUMBER ------------------------                  3079975 7)        源端数据导出 在源端OS系统中执行数据导出,导出用户名、dmp文件名自行修改,导出完成后ftp至目标端datapump目录 expdp maclean/maclean directory=DATA_PUMP dumpfile=<dp_maclean.dmp> flashback_scn=<scn>   --以下操作在目标端执行 8)        创建directory用于执行数据泵操作,同时给ggs以及导入用户赋权 --directory path for store dump file CREATE OR REPLACE DIRECTORY DATA_PUMP AS '/goldengate/data'; grant read ,write on DIRECTORY DATA_PUMP to ggs ; grant read ,write on DIRECTORY DATA_PUMP to maclean; 9)        目标端导入数据 --- 以下操作在OS中执行,具体用户名与导入dmp文件名视具体情况而定 impdp maclean/maclean DUMPFILE=DATA_PUMP:DP_maclean.DMP    

posted on 2013-03-19 00:48  Oracle和MySQL  阅读(1087)  评论(0编辑  收藏  举报

导航