当前位置:文档之家› 维护搭建-DG

维护搭建-DG

【【Data Guard for Oracle 10g Release2】】*****************************************************************************************************************************

【在同一台服务器上搭建Phisycal Standyb】
一物理Standby创建前的准备工作
①创建所需的相应目录
[oracle@benet oracle]$ mkdir -p arch1/pri arch1/stdby
[oracle@benet oracle]$ mkdir oradata/stdby/ admin/stdby
[oracle@benet oracle]$ cd admin/stdby/
[oracle@benet stdby]$ mkdir adump bdump cdump udump


②将Primary数据库置为Force Logging模式
SQL> alter database force logging;
--Force Logging是作为固定参数保存在控制文件中,因此不受重启之类操作的影响(只执行一次即可)
--如果想取消,可以通过alter database no force logging;语句关闭强制记录
查看状态是否生效
SQL> select log_mode,force_logging from v$database;

LOG_MODE FOR
------------ ---
ARCHIVELOG YES

**为了今后方面切换LGWR日志传输方式,可以提前创建standby redo log,注意要比online redo组数多1个!
alter database add standby logfile group 4 ('/u01/app/oracle/oredata/orcl/redo04.log') size 50m,group 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50m,group 6 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50m,group 7 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50m;


③配置Primary数据库的初始化参数文件
--使用SPFILE文件创建一个PFILE,方便修改
SQL> create pfile='/home/oracle/init.ora' from spfile;
#Modifying Initialization Parameters for a Physical Standby Database
*.db_unique_name='pri'
*.log_archive_config='DG_CONFIG=(pri,stdby)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/arch1/pri VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pri'
*.log_archive_dest_2='SERVICE=stdby ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='DEFER'
*.remot_login_passworfile='EXCLUSIVE'
*.log_archive_format=%t_%s_%r.arc
*.log_archive_max_processes=5
*.fal_client='pri'
*.fal_server='stdby'
*.db_file_name_convert=('/u01/app/oracle/oradata/stdby','/u01/app/oracle/oradata/orcl')
*.log_file_name_convert=('/u01/app/oracle/oradata/stdby','/u01/app/oracle/oradata/orcl')
*.standby_file_management='auto'


#如果比较懒,可用如下文件直接替换即可------------------------------------------------------------------------------------------------------------------------------
【Primary客户端初始化参数文件】
orcl.__db_cache_size=184549376
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=88080384
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'


*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='/u01/app/oracle/oradata/stdby','/u01/app/oracle/oradata/orcl'
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='pri'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='pri'
*.fal_server='stdby'
*.job_queue_processes=10
*.log_archive_config='DG_CONFIG=(pri,stdby)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/arch1/pri/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pri'
*.log_archive_dest_2='SERVICE=stdby ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%d_%t_%s_%r.arc'
*.log_archive_max_processes=5
*.log_file_name_convert='/u01/app/oracle/oradata/stdby','/u01/app/oracle/oradata/orcl'
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'


【standby初始化参数文件】
stdby.__db_cache_size=188743680
stdby.__java_pool_size=4194304
stdby.__large_pool_size=4194304
stdby.__shared_pool_size=83886080
stdby.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/stdby/adump'
*.background_dump_dest='/u01/app/oracle/admin/stdby/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/stdby/stdby01.ctl','/u01/app/oracle/oradata/stdby/stdby02.ctl','/u01/app/oracle/oradata/stdby/stdby03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/stdby/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stdby'
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='stdby'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='stdby'
*.fal_server='pro'
*.job_queue_processes=10
*.log_archive_config='DG_CONFIG=(pri,stdby)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/arch1/stdby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdby'
*.log_archive_dest_2='SERVICE=pri ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%d_%t_%s_%r.arc'
*.log_archive_max_processes=5
*.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stdby'
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/stdby/ud

ump'
#------------------------------------------------------------------------------------------------------------------------------------------------------------


④启动Primary数据库并开启归档
SQL>create spfile from pfile='/home/oracle/initorcl.ora';
SQL>startup mount
SQL> alter database archivelog;
SQL> alter database open;


⑤配置监听文件和网络服务
[oracle@benet stdby]$lsnrctl stop
[oracle@benet stdby]$cd $ORACLE_HOME/network/admin
[oracle@benet stdby]$vi listener.ora
可随意创建,保证互通即可。附文件内容如下懒人可复制直接使用
#--------------------------------------------------------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = stdby)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = stdby)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = benet)(PORT = 1521))
)
)
#-------------------------------------------------------------

[oracle@benet stdby]$vi tnsname.ora

#-------------------------------------------------------------
STDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = benet)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stdby)
)
)

PRI =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = benet)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
#--------------------------------------------------------------
[oracle@benet stdby]$lsnrctl start


二创建Standby所需文件
-需要的文件包括:所有的数据文件,重做日志文件,Standby数据库的控制文件和客户端初始化文件以及密钥文件
-数据文件:可使用多种方式获得(冷备份,RMAN,User Managed等);如果是冷备份,只要没有在OPEN状态直接复制一份即可
-联机重做日志文件:不需要创建,搭建完以后会自动传输过去
-控制文件:注意冗余分数,跟源库保持一致。
-密钥文件:SYS密钥需要跟Primary库保持一致。如果忘记密码可以使用orapwd工具重建或者从源库直接复制一份
#####################################################################################################
①获得数据文件,选择一种即可
使用RAMN方式创建数据文件
#RMAN> BACKUP AS COPY DEVICE TYPE DISK
DB_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/stdby/')
DATABASE;
#使用用户管理方式创建热备份(使用备份表空间方式)
SQL>ALTER TABLESPACE SYSTEM BEGIN BACKUP;
SQL>!cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/stdby/system01.dbf
SQL>ALTER TABLESPACE SYSTEM END BAC

KUP;
重复以上步骤,备份所有表空间(TEMP临时表空间不需要备份)

②获得控制文件
SQL> shutdown immediate
SQL> startup mount
SQL> alter database create standby controlfile as '/u01/app/oracle/oradata/stdby/stdby01.ctl';
SQL> alter database open;
复制相应份数控制文件
[oracle@benet stdby]$ cp stdby01.ctl stdby02.ctl
[oracle@benet stdby]$ cp stdby01.ctl stdby03.ctl

③获得密钥文件
一般位于Linux:$ORACLE_HOME/dbs Windows:$ORACLE_HOME/database
[oracle@benet stdby]cd $ORACLE_HOME/dbs
[oracle@benet stdby]cp orapworcl orapwstdby
将以上所有文件复制到Standby服务器
######################################################################################################


三配置Standby数据库
①从主库拽一份pfile文件进行修改即可;所需参数在上面然后启动数据库到MOUNT
SQL> create spfile from pfile='/u01/app/oracle/oradata/stdby/init.ora';

File created.

SQL> startup mount

②接收归档文件
Standby启动到MOUNT状态后,就能够接收来自Primary数据库发送的REDO数据了;接下来需要到Primary端执行一步操作,打开远端的归档
#在Primary数据库执行以下语句
SQL> alter system set log_archive_dest_state_2=enable;

③启动REDO APPLY
即使物理Standby数据库当前处于OPEN状态,也不需要首先关闭数据后再启动,直接执行REDO应用语句即可。Oracle会自动将数据库切换到MOUNT状态
#在Standby数据库执行以下语句
SQL> alter database recover managed standby database disconnect from session;
简写方式:recover managed standby database disconnect from session;
#至此Phisycal Standby搭建完成!可以使用archive log list查看序列号是否跟Primary一致!
SQL> select open_mode,database_role from v$database;

OPEN_MODE DATABASE_ROLE
---------- ----------------
MOUNTED PHYSICAL STANDBY


【将Physical Standby转换为Logical Standby】
转换前准备--略,主要修改一些参数及查看哪些对象不支持转换等
1) 如果 Physical Standby DB 处于redo apply 模式下,则取消redo apply 模式。
SQL>alter database recover managed standby database cancel;

2) 在 Primary DB 上,为了保证后续创建Logminer 字典的一致性问题,设置undo_retention参数为3600。
SQL>alter system set undo_retention=3600;

3) 在 Primary DB 上创建Logminer 字典
SQL>EXECUTE DBMS_LOGSTDBY.BUILD;
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;

SUPPLEME SUP SUP
-------- --- ---
IMPLICIT YES YES

4) 在 Standby DB 上执行将Physical Standby 转化到Logical Standby 的操作
SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY neworcl;

Database altered.

重新启动数据库
SQL> shutdown immediate
SQL> startup mount

5) 由于数据库名称改变,Standby DB 上重建口令密码文件:
[oracle@rac1 dbs]$ orapwd file=orapwneworcl pa

ssword=m123

6) 将 Standby DB 以resetlogs 方式打开
SQL> alter database open resetlogs;

7) 启动 Standby DB 的SQL Apply
SQL> ALTER DATABASE START LOGICAL STANDBY apply;

8) 修改 Logical Standby DB 的保护模式为ALL
SQL>ALTER DATABASE GUARD ALL;

9) 调整逻辑Standby初始化参数
SQL> alter system set log_archive_dest_1='LOCATION=/home/oracle/arch1/stdby VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdby';

System altered.

SQL> alter system set log_archive_dest_3='LOCATION=/home/oracle/arch1/neworcl VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=stdby';

System altered.


【在不同机器不同目录安装Phisycal Standby】
设定环境如下
源数据库
*IP地址:192.168.0.10
*数据库SID:orcl
*DB_UNIQUE_NAME:pri
目标数据库
*IP地址:192.168.0.20
*数据库SID:orcl
*DB_UNIQUE_NAME:stdby

操作步骤如下:
①开启Primary数据库归档模式
②将Primary数据库置为Force Logging模式
③修改Primary数据库部分参数
④配置监听和网络服务
Primary
--配置监听
--配置指向Standby的网络服务名
--重启监听
Standby
--安装数据库软件
--安装监听
--配置监听
--配置指向Primary的网络服务器名
--重启监听
⑤获得Standby所需文件
#使用RAMN创建数据文件,并使用相应工具传到Standby数据库
RMAN> BACKUP AS COPY DEVICE TYPE DISK
DB_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/orcl/','/home/oracle/stdby/')
DATABASE;
#创建控制文件,注意冗余分数,跟源库保持一致
SQL> alter database create standby controlfile as '/home/oracle/stdby/stdby01.ctl';
[oracle@benet stdby]$ cp stdby01.ctl stdby02.ctl
[oracle@benet stdby]$ cp stdby01.ctl stdby03.ctl
#修改初始化参数文件
--如果是不同机器不同目录,需要使用db_file_name_covert和log_file_name_convert参数转换;如果是不同机器相同目录,则不需要转换
--将所需文件传输到Standby服务器相应目录
--比如密钥文件,放在dbs目录下
⑥先使用客户端初始化参数文件创建服务器初始化参数文件,在启动到MOUNT;进行验证


【维护管理Phisycal Standby】
一如何打开Standby数据库?
--需要先取消REDO应用
--注意不要去Primary端执行类似命令:alter system set log_archive_dest_state_2=defer否则会报错显示Standby需要恢复
SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open;

Database altered.

SQL> select * from scott.dept;

DEPTNO DNAME LOC
---------- -------------- -------------
50 a1 dba
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON



二如何停止Standby数据库?
1)登录Primary端,暂时取消发送
alter system set log_archive_dest_state_2=defer;
2) 登录Standby端,取消REDO应


alter database recover managed standby database cancel;
3) 执行关闭
shutdown immediate



三如何进行角色?
==#switch#=======================================================================================================
1)转换前的准备工作
*检查个数据库的初始化参数,主要确认个待转换角色的数据库,对不同角色的相关的初始化参数都进行了正确配置
*检查即将成为Primary数据库的Phisycal Standby服务器是否为归档模式
*检查物理Standby数据库的临时文件是否存在
*确保Standby数据库的RAC实例只有一个处于OPEN状态(对于RAC结构的Standby数据库,在角色转换时只能有一个实例STARTUP,其他实例必须统统SHUTDOWN,待角色转换后再STARTUP)
*选择一个最合适的物理Standby转换成Primary

2)转换步骤如下
2.1检查Primary数据库是否支持switchover操作
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

注意:如果该列值为TO STANDBY则表示Primary数据库支持转换为Standby角色,否则需要重新检查一下Data Guard配置;还有一种情况是SESSION ACTIVE说明有人仍在连接Primary数据库,出现这种情况不代表不能进行换换,如果胆大心细可以继续执行后续的操作。不过稳妥起见,建议先查询VSESSION视图

2.2启动SWITCHOVER.将Primary数据库转换为Standby角色
SQL> alter database commit to switchover to physical standby;
该语句还提供二列一个WITH SESSION SHUTDOWN的字句,专门用来处理当前操作中仍有用户在连接的情况
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdown immediate
SQL> startup nomount
SQL> alter database mount standby database;
注释:将原Primary数据库重新启动到MOUNT状态。此时原Primary数据库就是以Standby身份在运行了

2.3检查Standby数据库是否支持switchover操作
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

注释:如果该列值为TO PRIMARY表示支持转换为Primary角色。也有可能显示为SESSION ACTIVE。还有可能显示为SWITCHOVER PENDING,这说明当前Standby数据库没有启动REDO应用

2.4转换角色到Primary
SQL> alter database commit to switchover to primary witch session shutdown;
SQL> shutdown immediate
SQL> startup
2.5转换完成,重新打开新的Primary数据库;对新的Standby数据库应用REDO日志


==#failover#===================================================================================================
注意事项
*faliover之后,原Primary数据库默认不再是改Data Guard配置的一部分
*在多数情况,其他逻辑/物理Standby数据库不直接参与failover过程,因此这些数据库并不需要做任何操作
*在某些情况下,新的Primary数据库配置之后,需要重新

创建同一Data Guard配置中其他所有Standby数据库
*在执行failover之前,尽可能将原Primary数据库的可用REDO文件(含联机重做日志文件盒归档日志文件)都复制到Standby数据库
*如果带换换角色Standby处于MAXMUM PROTECTION模式,需要首先将其i额换位MAXIMUM PERFORMANCE模式
SQL>alter database set standby database to maxmum performance;
-等Standby数据库转换为新的Primary之后,你可以在随意更改数据库的保护模式
操作步骤
1)查看保护模式
SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PROTECTION MAXIMUM PROTECTION

SQL> alter database set standby database to maximize performance;

Database altered.

2)检查归档文件是否连续
SQL> select * from v$archive_gap;

no rows selected

--如果有返回记录,按照列出的记录号复制对应的归档文件到带换换的Standby服务器,文件复制过来后,通过以下命令将其加入到数据字典
SQL> alter database register physical logfile 'filespec1';

3)检查归档文件是否完整,分别在Primary和Standby执行
SQL> select distinct thread#,max(sequence#) over(partition by thread#) A from v$archived_log;

THREAD# A
---------- ----------
1 4

4)启动failover
SQL> alter database recover managed standby database finish force;

Database altered.

5)切换Phisycal Standby为Primary
SQL> alter database commit to switchover to primary;

Database altered.

6)重新启动新的Primary
shutdown immediate
startup


参数STANDBY_FILE_MANAGEMENT的影响有哪些?
当此参数设为AUTO时候,在Primary所作的表空间和数据文件的创建删除操作会自动应用到Standby数据库。如果设置为MANUAL,需要DBA手工介入;而无论是否设为AUTO,对数据文件的重命名
操作都需要DBA介入。REDO日志的操作不受此参数影响,但是如果Primary日志组增加到5组,而Standby日志组不会自动增加过去。虽然没有什么问题,但是如果以后进行角色切换就会出现问题了。所以应该介入,将日志组保持一致。并且Standby Redolog至少要比Online Redolog多一组!
例:
1)在Primary数据库重命名数据文件名
SQL> alter tablespace test offline;

Tablespace altered.

SQL> !ls
control01.ctl control03.ctl redo02.log sysaux01.dbf temp01.dbf test02.dbf users01.dbf
control02.ctl redo01.log redo03.log system01.dbf test01.dbf undotbs01.dbf

SQL> !mv test02.dbf book01.dbf

SQL> alter tablespace test rename datafile '/u01/app/oracle/oradata/orcl/test02.dbf' to '/u01/app/oracle/oradata/orcl/book01.dbf';

Tablespace altered.

SQL> alter tablespace test online;

Tablespace altered.

2)执行日志切换
SQL>alter system switch logfile;

3)查看Standby会发现相应的名字没有被改过来,

所以需要介入
首先取消REDO应用
SQL> alter database recover managed standby database cancel;

Database altered.

由于Standby数据库默认不是打开的,所以不需要使用表空间脱机等操作,会报如下错误
SQL> alter tablespace test offline;
alter tablespace test offline
*
ERROR at line 1:
ORA-01109: database not open

SQL> !ls
init.ora redo03.log stdby03.ctl temp01.dbf undotbs01.dbf
redo01.log stdby01.ctl sysaux01.dbf test01.dbf users01.dbf
redo02.log stdby02.ctl system01.dbf test02.dbf

SQL> !mv test02.dbf book01.dbf

SQL> !ls
book01.dbf redo02.log stdby02.ctl system01.dbf undotbs01.dbf
init.ora redo03.log stdby03.ctl temp01.dbf users01.dbf
redo01.log stdby01.ctl sysaux01.dbf test01.dbf

由于Standby数据库默认不是打开的,所以需要使用alter database语句修改文件名称
SQL> alter tablespace test rename datafile '/u01/app/oracle/oradata/stdby/test02.dbf' to '/u01/app/oracle/oradata/stdby/book01.dbf';
alter tablespace test rename datafile '/u01/app/oracle/oradata/stdby/test02.dbf' to '/u01/app/oracle/oradata/stdby/book01.dbf'
*
ERROR at line 1:
ORA-01109: database not open

如果FILE_NAME_MANGEMENT设为AUTO会报错,需要先修改为手动
SQL> alter database rename file '/u01/app/oracle/oradata/stdby/test02.dbf' to '/u01/app/oracle/oradata/stdby/book01.dbf';
alter database rename file '/u01/app/oracle/oradata/stdby/test02.dbf' to '/u01/app/oracle/oradata/stdby/book01.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01275: Operation RENAME is not allowed if standby file management is
automatic.

将参数设为手工
SQL> alter system set standby_file_management=manual;

System altered.

重命名
SQL> alter database rename file '/u01/app/oracle/oradata/stdby/test02.dbf' to '/u01/app/oracle/oradata/stdby/book01.dbf';

Database altered.


重新启动REDO应用
SQL> alter database recover managed standby database disconnect from session;

Database altered.

=======================================================================================================================================================================
所遇问题及处理方案
ERROR at line 1:
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
断开SQLPLUS重新登录,再次使用命令即可
=======================================================================================================================================================================


【【Data Guard for Oracle 11g Release2】*****************************************************************************************************************************
①开启Primary数据库归档模式

②将Primary数据库置为Force Logging模式

③配置监听和网络服务

④修改Primary初始化参数文件
#修改后文件如下-------------------------------------------------------------------

------------------------------------------------------------------------------------
orcl.__db_cache_size=331350016
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=339738624
orcl.__sga_target=507510784
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=159383552
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/stdby/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/stdby/stdby01.ctl','/u01/app/oracle/flash_recovery_area/stdby/stdby02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='stdby'
*.log_archive_config='DG_CONFIG=(pri,stdby)'
*.log_archive_dest_2='SERVICE=pri ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri'
*.log_archive_dest_state_2='ENABLE'
*.fal_client='stdby'
*.fal_server='pri'
*.db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/stdby/'
*.log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/stdby/'
*.standby_file_management='AUTO'
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------

⑤获得Standby所需文件

⑥配置Standby
添加以下几个参数,需要注意的是从11G开始原来备用库归档参数standby_archive_dest这个参数已经废除了,STANDBY的归档路径改为常规的归档路径log_archive_dest_n。还有原来单机配置STANDBY需要的参数lock_name_space也废除了;还有三个参数在11g中不推荐使用:USER_DUMP_DEST、 log_archive_start、BACKGROUND_DUMP_DEST 三个参数删除掉
*.log_archive_config='DG_CONFIG=(pri,standby)'
*.fal_client='stdby'
*.fal_server='pri'
*.db_file_name_convert='orcl','stdby'
*.log_file_name_convert='orcl','stdby'
*.standby_file_management='auto'
*.log_archive_dest_1='LOCATION=/home/oracle/arch1/stdby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdby'

#修改Standby文件内容如下-----------------------------------------------------------------------------------------------------------------------------------------------
stdby.__db_cache_size=327155712
stdby.__java_pool_size=4194304
stdby.__large_pool_size=4194304
stdby.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
stdby.__pga_aggregate_target=339738624
stdby.__sga_target=507510784
stdby.__shared_io_pool_size=0
stdby.__shared_pool_size=163577856
stdby.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11

.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/stdby/stdby01.ctl','/u01/app/oracle/oradata/stdby/stdby02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='stdby'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers=''
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='DG_CONFIG=(pri,stdby)'
*.log_archive_dest_1='LOCATION=/home/oracle/arch1/stdby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdby'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_2='SERVICE=pri LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=5
*.fal_client='stdby'
*.fal_server='pri'
*.db_file_name_convert='orcl','stdby'
*.log_file_name_convert='orcl','stdby'
*.standby_file_management='auto'
#----------------------------------------------------------------------------------------------------------------------------------------------------------------------

启动Standby到MOUNT
SQL> CREATE SPFILE FROM PFILE='/u01/app/oracle/oradata/stdby/init.ora';
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
添加Standby Redolog
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo0401.log') SIZE 10M;
Database altered.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo0501.log') SIZE 10M;
Database altered.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo0601.log') SIZE 10M;
Database altered.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo0701.log') SIZE 10M;
Database altered.
启用Redo Apply


相关主题
文本预览
相关文档 最新文档