然后执行
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]