首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

DB 迁徙到Data Guard 实施方案

2012-07-08 
DB 迁移到Data Guard 实施方案原DB是?搬迁的方案:?1.??????2.??????3.??????4.???????说明:因为原来的服务

DB 迁移到Data Guard 实施方案

原DB是?

搬迁的方案:

?

1.??????2.??????3.??????4.???????

说明:因为原来的服务器为4G内存。?

该方案只需要宕机一次。1.??????2.??????3.??????4.???????

?

风险评估:

?????????????

?

搬迁的操作步骤如下:

?

一.?

导出导入命令:

Exp user/pwd file=/u01/qishun.dmp log=/u01/dave.log full=y

?

Imp user/pwd file=/u01/qishun.dmp log=/u01/dave.log full=y

?

?

?

二.?

2.1?

2.1.1?

Oraclebinutils-2.17.50.0.6

compat-libstdc++-33-3.2.3

elfutils-libelf-0.125

elfutils-libelf-devel-0.125

elfutils-libelf-devel-static-0.125

gcc-4.1.2

gcc-c++-4.1.2

glibc-2.5-24

glibc-common-2.5

glibc-devel-2.5

glibc-headers-2.5

kernel-headers-2.6.18

ksh-20060214

libaio-0.3.106

libaio-devel-0.3.106

libgcc-4.1.2

libgomp-4.1.2

libstdc++-4.1.2

libstdc++-devel-4.1.2

make-3.81

numactl-devel-0.9.8.i386

sysstat-7.0.2

?

fromhttp://download.oracle.com/docs/cd/E11882_01/install.112/e16766/toc.htm#CIHFICFD

?

?

检查相关包:

rpm -q binutils-2.17.50.0.6 /

compat-libstdc++-33-3.2.3 /

elfutils-libelf-0.125 /

elfutils-libelf-devel-0.125 /

elfutils-libelf-devel-static-0.125 /

gcc-4.1.2 /

gcc-c++-4.1.2 /

glibc-2.5-24 /

glibc-common-2.5 /

glibc-devel-2.5 /

glibc-headers-2.5 /

kernel-headers-2.6.18 /

ksh-20060214 /

libaio-0.3.106 /

libaio-devel-0.3.106 /

libgcc-4.1.2 /

libgomp-4.1.2 /

libstdc++-4.1.2 /

libstdc++-devel-4.1.2 /

make-3.81 /

numactl-devel-0.9.8.i386 /

sysstat-7.0.2

?

?

?

2.1.2?

在/etc/sysctl.conf?

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

# semaphores: semmsl, semmns, semopm, semmni

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

net.ipv4.ip_local_port_range = 1024 65000

?

vi /etc/sysconfig/limits.conf

oracle soft memlock 5242880

oracle hard memlock 524280

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

?

?

vi /etc/pam.d/login:

session required /lib/security/pam_limits.so

?

使参数生效:

sysctl -p

?

?

?

2.1.3创建用户和密码:

[root@dg1 Server]# groupadd oinstall

[root@dg1 Server]# groupadd dba

[root@dg1 Server]# groupadd oper

[root@dg1 Server]# useradd -g oinstall -G dba oracle

[root@dg1 Server]# passwd oracle

Changing password for user oracle.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

?

创建相关目录:

[root@dg2 Server]# mkdir -p /u01/app/oracle/product/10.2.0/db_1

[root@dg2 Server]# chown -R oracle.oinstall /u01

[root@dg2 Server]# chmod -R 777 /u01

?

修改OS版本

[root@dg2 Server]# cat /etc/redhat-release

#Red Hat Enterprise Linux Server release 5.4 (Tikanga)

redhat-4

?

?

设置用户变量:

[oracle@dg2 ~]$ cat ~/.bash_profile

# .bash_profile

?

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

???????fi

?

# User specific environment and startup programs

?

PATH=$PATH:$HOME/bin

?

export PATH

?

# Oracle Settings

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=orcl; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=/usr/sbin:$PATH; export PATH

PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

?

2.1.4?

2.1.5?

将第一步导出的dump?

?

三.?

3.1?

1.?SQL> alter database force logging;

?

2.SQL> archive log list;

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> archive log list;

?

3.添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组重复),并为该组指定一个成员:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;

?

4.?

SQL> alter database create standby controlfile as '/u01/control01.ctl';

--orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin

如果已经存在,就不用创建了。?

5.SQL> create pfile='/u01/initorcl.ora' from spfile;

?

?

在initorcl.ora*.DB_UNIQUE_NAME='orcl_pd'

*.log_archive_dest_1='location=/u01/archive'

*.log_archive_dest_2='SERVICE=orcl_st'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.standby_file_management='AUTO'

*.standby_archive_dest='/u01/archive'

*.FAL_SERVER='orcl_st'

*.FAL_CLIENT='orcl_pd'

?

?

如果主库和备库的数据文件位置不同,还需要加如下2个参数:

*.log_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

*.db_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

?

6.?

[oracle@dg1 admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

?

ORCL_ST =

?????????????????????????

ORCL_PD =

?????????????????????????

?

[oracle@dg1 admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

?

SID_LIST_LISTENER =

?????????????????????????????????????????????

LISTENER =

???????????????????

SID_LIST_LISTENER?

7.用修改之后的pfile启动数据库,并创建spfile.

?

[oracle@dg1 dbs]$ sqlplus /nolog

?

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Nov 5 03:48:19 2010

?

Copyright (c) 1982, 2005, Oracle.??

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

ORACLE instance started.

?

Total System Global Area?Fixed Size?????????????????Variable Size?????????????Database Buffers?????????Redo Buffers???????????????Database mounted.

Database opened.

SQL> create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';

?

File created.

?

?

3.2?

这里方便起见,我们和主库的目录一致。

?

?

1.?

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/oradata/orcl

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/adump

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/bdump

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/cdump

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/dpdump

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/pfile

[oracle@dg2 u01]$ mkdir -p $ORACLE_BASE/admin/orcl/udump

[oracle@dg2 u01]$ ls

app

[oracle@dg2 u01]$ cd app/

[oracle@dg2 app]$ ls

oracle

[oracle@dg2 app]$ cd oracle/

[oracle@dg2 oracle]$ ls

admin?[oracle@dg2 oracle]$ cd admin/

[oracle@dg2 admin]$ ls

orcl

[oracle@dg2 admin]$ cd orcl/

[oracle@dg2 orcl]$ ls

adump??

2.?

[oracle@dg2 admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

?

ORCL_ST =

?????????????????????????

ORCL_PD =

?????????????????????????

?

[oracle@dg2 admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

?

SID_LIST_LISTENER =

???????????????????????

?????????????????????)

?

LISTENER =

???????????????????

?

3.?

说明一点,这个控制文件是我们自己创建的standby?

[oracle@dg1 dbs]$ ls

hc_orcl.dat?[oracle@dg1 dbs]$ scp initorcl.ora 192.168.6.3://u01/app/oracle/product/10.2.0/db_1/dbs

oracle@192.168.6.3's password:

initorcl.ora?????????????????????????????????????????????????????[oracle@dg1 dbs]$ scp orapworcl 192.168.6.3://u01/app/oracle/product/10.2.0/db_1/dbs

oracle@192.168.6.3's password:

orapworcl??????????????????????????????????[oracle@dg1 dbs]$

?

[oracle@dg1 orcl]$ pwd

/u01/app/oracle/oradata/orcl

[oracle@dg1 orcl]$ ls

control01.ctl?control02.ctl?control03.ctl?[oracle@dg1 orcl]$ scp * 192.168.6.3://u01/app/oracle/oradata/orcl

oracle@192.168.6.3's password:

control01.ctl????????????????????????????????????????????????????control02.ctl????????????????????????????????????????????????????control03.ctl????????????????????????????????????????????????????redo01.log?????????????redo02.log???????????????????????????????????????????????????????redo03.log???????????????????????????????????????????????????????redo04.log???????????????????????????????????????????????????????redo05.log???????????????????????????????????????????????????????redo06.log?????????????????????????redo07.log???????????????????????????????????????????????????????sysaux01.dbf?????????????????????????????????????????????????????system01.dbf?????????????????????????????????????????????????????temp01.dbf???????????????????????????????????????????????????????undotbs01.dbf??????????????????????????????????users01.dbf??????????????????????????????????????????????????????[oracle@dg1 orcl]$

?

这里注意一点,我们一起复制过来的控制文件是主库的。?

[root@dg2 orcl]# rm *.ctl

rm: remove regular file `control01.ctl'? y

rm: remove regular file `control02.ctl'? y

rm: remove regular file `control03.ctl'? y

?

?

[oracle@dg1 u01]$ scp control01.ctl 192.168.6.3://u01/app/oracle/oradata/orcl

oracle@192.168.6.3's password:

control01.ctl????????????????????????????????????????????????????[oracle@dg1 u01]$

?

[root@dg2 orcl]# cp control01.ctl control02.ctl

[root@dg2 orcl]# cp control01.ctl control03.ctl

[root@dg2 orcl]# ls

control01.ctl?control02.ctl?control03.ctl?[root@dg2 orcl]#

?

?

4.?

在pfile里面添加如下内容:

*.DB_UNIQUE_NAME='orcl_st'

*.log_archive_dest_1='location=/u01/archive'

*.log_archive_dest_2='SERVICE=orcl_pd'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=DEFER

*.standby_file_management='AUTO'

*.standby_archive_dest='/u01/archive'

*.FAL_SERVER='orcl_pd'

*.FAL_CLIENT='orcl_st'

?

?

5.?

SQL> startup mount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

ORACLE instance started.

SQL> create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';

?

?

至此,Data Guard?

?

?

3.3?

注意Data Guard?

启动顺序:先standby ,后primary;

关闭顺序:先primary?

在备库将实例启动到mountSQL> startup nomount;

SQL>alter database mount standby database ;

---SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL>alter database recover managed standby database disconnect from session;

?

在备库启动监听:

$lsnrctl start

?

?

在主库启动实例:

SQL> startup;

?

在主库启动监听:

$lsnrctl start

?

?

在主库验证归档目录是否有效:

SQL> SELECT STATUS,DESTINATION, ERROR FROM V$ARCHIVE_DEST;

?

如果有错误,要排查原因。

?

?

主库:

SQL> alter system switch logfile;

SQL> select max(sequence#) from v$archived_log;

?

MAX(SEQUENCE#)

--------------

????????????

备库:

SQL> startup nomount

ORACLE instance started.

?

Total System Global Area?Fixed Size????????????Variable Size?????????????Database Buffers?????????Redo Buffers???????????????SQL> alter database mount standby database;

?

Database altered.

?

SQL> alter database recover managed standby database disconnect from session;

?

Database altered.

?

SQL> select sequence#,applied from v$archived_log;

?

?SEQUENCE# APP

---------- ---

???????????????????????????????

SQL> /

?

?SEQUENCE# APP

---------- ---

??????????????????????????????????????

SQL>

?

?

?

?

主备查询结果一致,Data Guard?

?

注意:如果在主库执行?alter database clear unarchived logfile或alter database open resetlogs , 则dataguard要重建。

热点排行