oracle10g+Dataguard配置

更新时间:2024-05-25 05:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux上实现oracle双机实时备份DataGuard 更改机器名

Hostname 机器名(自己启,两台机器不能一样,建议用dataguard1和dataguard2) vi /etc/sysconfig/network 文件里面的hostname 然后vi /etc/hosts 添加本地hosts

安装数据库

在RHEL5下安装oracle 10g 1、添加组和用户

# /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba

# /usr/sbin/useradd -g oinstall -G dba oracle # passwd oracle

2、添加以下内容到/etc/sysctl.conf kernel.shmall = 2097152

kernel.shmmax = 2147483648 kernel.shmmni = 4096

kernel.sem = 250 32000 100 128 fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 262144 net.core.wmem_max = 262144

3、添加以下内容到/etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536

4、添加以下内容到/etc/pam.d/login

session required /lib/security/pam_limits.so session required pam_limits.so

5、添加以下内容到/etc/profile if [ $USER = \if [ $SHELL = %ulimit -p 16384 ulimit -n 65536 else

ulimit -u 16384 -n 65536 fi

fi

6、创建安装目录

# mkdir -p /u01/app/oracle

# chown -R oracle:oinstall /u01/app/oracle # chmod -R 775 /u01/app/oracle

7、修改oracle环境变量,首先进入oracle用户模式,vi ~/.bash_profile ,在里面加入以下内容 export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export ORACLE_SID=DB99

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export LC_CTYPE=en_US.UTF-8

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export LANG=AMERICAN_AMERICA.ZHS16GBK export LC_ALL=C

8、安装数据库

# gunzip 10201_database_linux_x86_64.cpio.gz (64位) # cpio -idmv < 10201_database_linux_x86_64.cpio # vi database/install/oraparam.ini [Certified Versions]

Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2] 再添加:

[Linux-redhat-5.0-optional] TEMP_SPACE=80 SWAP_SPACE=150

MIN_DISPLAY_COLORS=256

vi /etc/sysconfig/vncservers

添加

VNCSERVERS=\

VNCSERVERARGS[1]=\使用oracle用户(su – oracle)启动vnc服务(vncserver) 将.vnc/.xstart中的twm &改成gnome-session &

,然后用vnc viewer连接服务器运行database目录下的runinstaller 第一个界面选择Advanced Installation

第三个界面需要在语言选项中添加中文支持

在提示是否创建新库时,选择install database software only

安装结束时注意安装程序会提示用root用户执行下面两条命令: /u01/app/oracle/oraInventory/orainstRoot.sh /u01/app/oracle/product/10.2.0/db_1/root.sh

主数据库(简称dbtest1)备用数据库(简称dbtest2)

在dbtest1上安装数据库环境并创建数据库(数据库sid为DB99,安装目录为/u01/app/)

在dbtest2上只安装数据库环境,不创建数据库

下面是dbtest1上的配置

首先用 sqlplus / as sysdba 进入sql查询模式 主库启用FORCE LOGGING

SQL>ALTER DATABASE FORCE LOGGING;

SQL>select FORCE_LOGGING from v$database;

主库检查密码文件

这个默认安装完之后都有,文件在/u01/app/oracle/product/10.2.0/db_1/dbs/orapwDB99

文件名格式为orapw${sid}

主库添加standby redo log

SQL>alter database add standby logfile group 4 ('/u01/app/oracle/oradata/DB99/redo04.log') size 50m;

SQL>alter database add standby logfile group 5 ('/u01/app/oracle/oradata/DB99/redo05.log') size 50m;

SQL>alter database add standby logfile group 6 ('/u01/app/oracle/oradata/DB99/redo06.log') size 50m;

SQL>alter database add standby logfile group 7 ('/u01/app/oracle/oradata/DB99/redo07.log') size 50m;

查看日志情况

sql>select * from v$logfile;

执行后应该能看到你新加的这四个日志相关信息

修改主数据库初始化参数

先执行SQL>create pfile from spfile;

这样就会有/u01/app/oracle/product/10.2.0/db_1/dbs/initDB99.ora文件 直接编辑这个文件 加入以下参数

*.db_unique_name=dbtest1 *.fal_server='dbtest1' *.fal_client='dbtest2'

*.standby_file_management=auto

*.db_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/' *.log_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/' *.log_archive_config='dg_config=(dbtest1,dbtest2)' *.log_archive_dest_2='service=dbtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dbtest2' *.log_archive_dest_state_2='ENABLE'

这样初始化参数改好了 使用命令

Sql>shutdown immediate Sql>create spfile from pfile;

修改/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora下的监听文件 listener.ora文件如下 SID_LIST_LISTENER = (SID_LIST = (SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) )

(SID_DESC =

(SID_NAME = DB99)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) ) )

LISTENER =

(DESCRIPTION_LIST = (DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) ) )

修改/u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 文件如下 DB99 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED) (SERVICE_NAME = DB99) ) )

#LISTENER_DB99 =

# (ADDRESS = (PROTOCOL = TCP)(HOST = localhoenorthdb1)(PORT = 1521)) DBTEST2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = DB99) ) )

DBTEST1 =

(DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = DB99) ) )

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)) )

(CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )

这样参数文件就改完了

主库启用归档日志

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN;

SQL> Alter database set standby database to maximize availability;

注意执行过alter database archivelog;后以后就不用再执行这个命令了,以后直接用startup启动数据库就可以了

用rman备份主库数据文件、归档日志、控制文件 在oracle用户环境下,执行 rman target /

然后执行

rman>backup database plus archivelog;

rman>backup current controlfile for standby;

这样就会在/u01/app/oracle/flash_recovery_area/DB99下生成备份,包括数据文件,控制文件和归档日志

下面对备库进行操作

由于备库没有创建实例,所以缺少几个文件目录 用oracle用户添加

对应主库的目录结构添加

/u01/app/oracle/admin/DB99下的adump,bdump,cdump,udump /u01/app/oracle/flash_recovery_area/ /u01/app/oracle/oradata/DB99

从主库dbtest1复制文件到备用库dbtest2上

需要复制/u01/app/oracle/flash_recovery_area/下的所有东西 还有/u01/app/oracle/product/10.2.0/db_1/dbs/下的所有东西

主库上的/u01/app/oracle/product/10.2.0/db_1/network/admin 目录下的listener.ora和tnsnames.ora

备库修改如/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora下 SID_LIST_LISTENER = (SID_LIST = (SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) )

(SID_DESC =

(SID_NAME = DB99)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) ) )

LISTENER =

(DESCRIPTION_LIST = (DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521)) ) )

注:和主库相同只有ip不同

tnsnames.ora 如下 DB99 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED) (SERVICE_NAME = DB99) ) )

#LISTENER_DB99 =

# (ADDRESS = (PROTOCOL = TCP)(HOST = localhoenorthdb1)(PORT = 1521)) DBTEST2 =

(DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = DB99) ) )

DBTEST1 =

(DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = DB99) ) )

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)) )

(CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )

注:和主库一样,只有ip不同

恢复备用库

在恢复备份库的时候先把主库和备库的监听程序重启一下 方法,在oracle用户模式下lsnrctl stop,然后lsnrctl start 然后再回到备库

启动数据库到nomount阶段 sqlplus / as sysdba sql>startup nomount

再回到oracle用户模式 从rman恢复

rman target sys/userjishubu@dbtest1 auxiliary /

rman>duplicate target database for standby nofilenamecheck; 开始进行恢复数据库

修改备库的参数文件

直接编辑这个文件/u01/app/oracle/product/10.2.0/db_1/dbs/initDB99.ora 修改以下参数

*.db_unique_name=dbtest2 然后执行

sql>shutdown immediate; sql>create spfile from pfile;

启动备用库

sqlplus / as sysdba

sql>shutdown immediate; sql>startup nomount;

sql>alter database mount standby database; sql>ALTER DATABASE ADD STANDBY LOGFILE; sql>ALTER DATABASE ADD STANDBY LOGFILE; sql>ALTER DATABASE ADD STANDBY LOGFILE; sql>ALTER DATABASE ADD STANDBY LOGFILE;

sql>alter database recover managed standby database using current logfile disconnect from session;

这样Dataguard的最大可用模式实时备份就完成了

下面进行一下测试 在两边都执行 Sql>Archive log list 看看返回的结果 我的结果是

主库

SQL> archive log list

Database log mode Archive Mode Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 17 Next log sequence to archive 19 Current log sequence 19

备库

SQL> archive log list

Database log mode Archive Mode Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 18 Next log sequence to archive 0 Current log sequence 19

如果没出现数字,在oracle用户模式下lsnrctl stop,然后lsnrctl start

看我所标示的地方是否数字一致,说明已经同步了 然后看主库执行

Sql> select protection_level,protection_mode from v$database;

结果为

SQL> select protection_level,protection_mode from v$database;

PROTECTION_LEVEL PROTECTION_MODE -------------------- --------------------

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

如果是这样的结果.两个显示都是高可用模式,那么说明应该配置正确了

再做测试,再主库上插入用户并添加表

然后在备库上执行

Sql> alter database recover managed standby database cancel; Sql>alter database open read only;

连接备库看看有没有你新加的用户名和表,如果都同步过来了,说明配置正确,一切正常了

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

select *from v$archive_gap;

select SEQUENCE# from V$ARCHIVED_LOG;

补充知识,关于大于2TB的硬盘如何分区,fdisk已经不能用了,方法如下

假设要用parted对Linux下的/dev/sdb(大小为3000G)进行分区操作:

1、进入系统,在#提示符下执行:parted /dev/sdb

2、建立磁盘label: mklabel GPT

3、按p键,查看磁盘可用空间,显示单位为M。3000G应该显示大致为: /dev/sdb 的磁盘几何结构:0.000-3000000.000 兆字节

4、创建分区:在(parted)后输入: mkpart并按照提示操作:分区类型? primary/主分区/extended/扩展分区? p (如果要创建扩展分区 此处输入e)。文件系统类型? [ext2]? (这里直接回车,千万不要改成ext3,分区创建完毕后通过mkfs.ext3 /dev/sdb*建立文件系统)

起始点?0.000 (加入要建立一个10G的分区)

结束点?10240.000

5、按p键查看刚创建的分区是否已经成功。

6、如果成功,键入quit退出parted。

7、使用mkfs.ext3 /dev/hdb* 来创建文件系统

8、挂载并使用该分区:

mkdir /testdir

mount /dev/sdb* /testdir cd /testdir

9、写入数据,测试写入是否正常。

附:em控制端按钮显示乱码解决方法

?

Linux安装oracle后em按钮出现乱码现象 - [oracle]

在linux环境中安装oracle10,启用EM时,会出现所有的按钮显示乱码的现象,

原来是因为在安装oracle10时,JDK/JRE自动选择了字符集,而在$ORACLE_HOME/jdk/jre/lib和$ORACLE_HOME/jre/1.4.2/lib目录下,都有多种字体: [oracle@linzhaorong lib]$ ll

-rwxr-xr-x 1 oracle oinstall 6966 11-18 22:00 font.properties -rwxr-xr-x 1 oracle oinstall 5870 2005-04-20 font.properties_bak -rwxr-xr-x 1 oracle oinstall 5681 2005-04-20 font.properties.Redhat6.1 -rwxr-xr-x 1 oracle oinstall 3828 2005-04-20 font.properties.Redhat8.0 -rwxr-xr-x 1 oracle oinstall 3752 2005-04-20 font.properties.SuSE8.0 -rwxr-xr-x 1 oracle oinstall 6854 2005-04-20 font.properties.zh_CN.Redhat -rwxr-xr-x 1 oracle oinstall 7410 2005-04-20 font.properties.zh_CN.Redhat2.1 -rwxr-xr-x 1 oracle oinstall 6845 2005-04-20 font.properties.zh_CN.Sun -rwxr-xr-x 1 oracle oinstall 7137 2005-04-20 font.properties.zh_CN_UTF8.Sun -rwxr-xr-x 1 oracle oinstall 6922 2005-04-20 font.properties.zh_HK.Sun -rwxr-xr-x 1 oracle oinstall 7132 2005-04-20 font.properties.zh_HK_UTF8.Sun

-rwxr-xr-x 1 oracle oinstall 5810 2005-04-20 font.properties.zh_HK_UTF8.Sun2003 -rwxr-xr-x 1 oracle oinstall 6521 2005-04-20 font.properties.zh.Turbo -rwxr-xr-x 1 oracle oinstall 7236 2005-04-20 font.properties.zh_TW.Redhat -rwxr-xr-x 1 oracle oinstall 7232 2005-04-20 font.properties.zh_TW.Redhat2.1 -rwxr-xr-x 1 oracle oinstall 6892 2005-04-20 font.properties.zh_TW.Sun -rwxr-xr-x 1 oracle oinstall 7142 2005-04-20 font.properties.zh_TW_UTF8.Sun -rwxr-xr-x 1 oracle oinstall 5810 2005-04-20 font.properties.zh_TW_UTF8.Sun2003

而每一个目录下都有一个缺省的字符集font.properties,我们只要用合适的中文字符集来替换缺省字符集即可,我选择的是font.properties.zh_CN.Redhat。

首先,我们应该先将em关闭: emctl stop dbconsole

然后进行替换,注意,$ORACLE_HOME/jdk/jre/lib和$ORACLE_HOME/jre/1.4.2/lib目录下都要进行如下替换:

[oracle@redhat lib]$ cp font.properties.zh_CN.Redhat font.properties

替换之后,我们还要查一下,linux中有没有安装相应的中文字符集,怎么看?

[oracle@redhat lib]$ tail font.properties fontset.dialoginput.plain=\\

-b&h-luxi mono-medium-r-normal--*-%d-*-*-m-*-iso8859-1,\\ -isas-song ti-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0 fontset.default=\\

-b&h-luxi sans-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\\ -isas-song ti-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0

filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueT

ype/zysong.ttf -->查看字体文件是否存在,如果不存在,需要更改路径,或者安装相应字体文件。

根据最后一行的路径,我们去看看是否有该文件是否存在,如果没有,那说明没有安装相应的中文字符集,我们可以到linux的系统安装盘中去找到相应的rpm包,进行安装。

下载地址为

http://rpm.pbone.net/index.php3/stat/4/idpl/5594715/com/ttfonts-zh_CN-2.14-6.noarch.rpm.html wget

ftp://mirror.switch.ch/pool/3/mirror/centos/4.7/os/x86_64/CentOS/RPMS/ttfonts-zh_CN-2.14-6.noarch.rpm

安装 rpm –ivh ttfonts-zh_CN-2.14-6.noarch.rpm 最后还要清理一下Cache,路径一般是

ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs

注意:只需要清理该路径下的gif文件即可: rm *.gif

最后再将em开启,此时,我们发现,乱码不见了。 emctl start dbconsole

SQL> create DIRECTORY enorth_bak_dir as '/u01/oracle/bak/data/'; SQL> grant READ,WRITE on DIRECTORY enorth_bak_dir to pub;

[root@workdb bak]# more expdp_pub.sh export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1 export ORACLE_SID=db21

export PATH=$PATH:$ORACLE_HOME/bin

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

expdp system/adminjishubu parfile=/u01/oracle/bak/expdp_pub.txt

[root@workdb bak]# more expdp_pub.txt schemas=zhengz2

directory=enorth_bak_dir dumpfile=db21.dmp logfile=expdp_db21.log compression=none content=all

estimate=blocks

[root@workdb bak]# more impdp_temp.sh export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1 export ORACLE_SID=db21

export PATH=$PATH:$ORACLE_HOME/bin

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

impdp system/adminjishubu parfile=/u01/oracle/bak/impdp_temp.txt

[root@workdb bak]# more impdp_temp.txt REMAP_SCHEMA=zhengz2:pub_temp directory=enorth_bak_dir

dumpfile=db21_20091019.dmp logfile=expdp_db21_temp.log content=all

//创建目录

create or replace directory expdir as 'd:\\';

//给test赋予目录的读写权限

grant read,write on directory expdir to test;

//导出数据

C:\\>expdp test/test@acf dumpfile=test.dmp directory=expdir

15.1、查看原主库切换状态

Sql>SELECT SWITCHOVER_STATUS FROM V$DATABASE;

如果这里显示的信息是:to standby;则,可以正常切换。 如果显示的是session active

那么有两种可能,一种是日志断档,可以查看以下视图 select SEQUENCE# from V$ARCHIVED_LOG;

对比两个数据库中是否一致,如果没有,则说明主库的日志没有传递到备库。 此时需要手工将日志文件复制到备用库上,然后在备用库上执行

ALTER DATABASE REGISTER LOGFILE '/u01/oracle/flash_recovery_area/DG2/onlinelog/.dbf'; 系统会自动同步。

如果这个时候之前的查询还是session active的状态,可以使用以下语句直接切换,在下一节中讲解。

15.2、切换主库角色

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY (WITH SESSION SHUTDOWN); 括号中的语句在之前提到的session active状态是才用,意思就是强制关闭所有session; 15.3、重起原来的主库数据库,并做redo应用 SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT;

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 15.4、查看原来的备用库状态

Sql>SELECT SWITCHOVER_STATUS FROM V$DATABASE;

正常情况下,应该是TO_PRIMARY 15.5、将原来的备用库升级为主库

Sql>ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 15.6、将新的主库(原来的备用库)打开 Sql>ALTER DATABASE OPEN;

如果在alert中提示是read-only的话,则需要先关闭,再打开。

物理standby的failover

注意几点:

??failover之后,原primary数据库默认不再是data guard配置的一部分。

??多数情况下,其它逻辑/物理standby数据库不直接参与failover的过程,因此这些数据库不需要做任何操作。

??某些情况下,新的primary数据库配置之后,需要重新创建其它所有的standby数据库。

另外,如果待转换角色的standby处于maximum protection或maximum availability模式的话,归档日志应该是连续存在的,这种情况下你可以直接从第 3 步执行,否则建议你按照操作步骤从第1步开始执行。

一般情况下failover都是表示primary数据库瘫痪,最起码也是起不来了,因此这种类型的切换基本上不需要primary数据库做什么操作。所以下列步骤中如果有提到primary和standby执行的,只是建议你如果primary还可以用,那就执行一下,即使它能用你却不执行,也没关系,不影响standby数据库的切换:)

1、 检查归档文件是否连续

查询待转换standby数据库的V$ARCHIVE_GAP视图,确认归档文件是否连接: SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; 未选定行

如果返回的有记录,按照列出的记录号复制对应的归档文件到待转换的standby服务器。这一步非常重要,必须确保所有已生成的归档文件均已存在于standby服务器,不然可能会数据不一致造成转换时报错。文件复制之后,通过下列命令将其加入数据字典:

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

2、 检查归档文件是否完整

分别在primary/standby执行下列语句:

SQL> select distinct thread#,max(sequence#) over(partition by thread#) a from v$archived_log;

该语句取得当前数据库各线程已归档文件最大序号,如果primary与standby最大序号不相同,必须将多出的序号对应的归档文件复制到待转换的standby服务器。不过既然是failover,有可能primary数据库此时已经无法打开,甚至无法访问,那你只好听天由命喽,三思在这里替你默念:苍天啊,大地啊,哪路的神仙大姐能来保佑俺们不丢数据呀! 3、 启动failover

执行下列语句:

SQL> alter database recover managed standby database finish force; 数据库已更改。

FORCE关键字将会停止当前活动的RFS进程,以便立刻执行failover。 剩下的步骤就与前面switchover很相似了 4、 切换物理standby角色为primary

SQL> alter database commit to switchover to primary; 数据库已更改。

5、 启动新的primary数据库。

如果当前数据库已mount,直接open即可,如果处于read-only模式,需要首先shutdown immediate,然后再直接startup。

SQL> alter database open; 数据库已更改。

角色转换工作完成。剩下的是补救措施(针对原primary数据库),由于此时primary数据库已经不再是data guard配置的一部分,我们需要做的就是尝试看看能否恢复原primary数据库,将其改造为新的standby服务器。具体操作方式可以分为二类:1.重建 2.备份恢复。所涉及的技术前面的系列文章中均有涉及,此处不再赘述。

备库变为主库后需要重新建了em控制服务 emca -repos recreate

emca -config dbcontrol db

archivelog 满了的情况下 DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; #删除7天前的

ALTER SYSTEM SET db_recovery_file_dest_size=16g scope=both;

Lftp使用方法

[cnscn@mail02 ~]$ lftp 211.17.89.xx -p 21 lftp 211.17.89.xx: ~> user username password

lftp 211.17.89.xx: ~> ? #查看帮助 ....

lftp 211.17.89.xx: ~> mirror -c --parallel=5 htdocs mydown #把目录htdocs下的文件及子目录下载到本地的mydown目录下

本文来源:https://www.bwwdw.com/article/o5b7.html

Top