data guard
1、主库使用dbca 创建long实例 从库只安装数据库软件
创建测试环境
conn scott/tiger;
SQL> create table test
2 (ID integer,
3 Name varchar2(20)
4 );
表已创建。
SQL> insert into test values(1,'a');
已创建 1 行。
SQL> insert into test values(2,'b');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
ID NAME
---------- --------------------
2、修改数据库为归档模式
确定数据库为 long 把不相关的服务停掉
SQL> connect sys/abc as sysdba;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter system set log_archive_dest_1='F:\oracle\product\10.2.0\log' scope=both; ==> 无权限执行(以后执行)
SQL> alter system set log_archive_dest_2='service=standby' scope=both;
SQL> alter system set log_archive_start=true scope=spfile;
create pfile from spfile (主要目的是创建 db_1/database/initlong.ora 参数文件)
修改init数据库名.ora 在中加入
*.log_archive_dest_1='location=F:\oracle\product\10.2.0\log' ==>这就是存档终点的路径
SQL> alter database open;
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 F:\oracle\product\10.2.0/log
最早的概要日志序列 1
下一个存档日志序列 2
当前日志序列 2
SQL> show parameter archive (查看archive 信息
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
log_archive_dest string
log_archive_dest_1 string location=F:\oracle\product\10.2.0/log
log_archive_dest_2 string service=standby
log_archive_duplex_dest string
log_archive_format string ARC%S.%T
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean TRUE
log_archive_trace integer 0
remote_archive_enable string true
standby_archive_dest string %ORACLE_HOME%RDBMS
SQL> shutdown immediate;
3、创建standby控制文件和便于修改的pfile
SQL> alter database force logging;
数据库已更改。
SQL> select name,force_logging from v$database;
NAME FOR
--------- ---
DBGUARD YES
SQL> create pfile=' F:init.ora' from spfile;
F:initlong.ora ==》 默认指定到F:\oracle\product\10.2.0/db_1/database
文件已创建。
SQL> alter database create standby controlfile as 'f:control01.ctl';
shutdown immediate ;
确定需要复制相应的数据文件、日志文件等 并关闭数据库(把数据库相关服务全部关闭
把 admin中long 、 oradata 中的 long 和db_1/database/initlong.ora和control01.ctl 复制到相应的文件下
***** 把oradata下的long中的ctl的文件全部删除
4、在备用数据库主机上建立历程服务 ==》从库 的主机上
oradim -new -sid long
将control01.ctl并分别复制为control02.ctl,control03.ctl,并拷贝到oradata/long目录下
修改initlong.ora 添加一下信息
*.standby_archive_dest='F:\oracle\product\10.2.0\log'
*.fal_server='primary'
*.fal_client='satndby'
*.standby_file_management=auto
*.lock_name_space='long' ==》可以不写这句话
5、配置监听信息 **也可以修改文件 ==》文件为 F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN/listener.ora
--standby从库为以下信息;主库修改为主库的ip 一下是文件中的格式
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.131)(PORT = 1521))
)
)
)
6、分别配置主从服务器的tnsname.ora保持一致
**也可以修改文件 ==》文件为 F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN/tnsname.ora
STANDBY(服务名字 :从库) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 从库IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = long ==> 数据库名)
)
)
PRIMARY (主库=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主库IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = long 数据库名字)
)
)
7、测试 lsn 监听
Lsnrctl stop
Lsnrctl start
Tnsping standby
Tnsping primary
8、在 从库上启动数据库
set oracle_sid=long
sqlplus / as sysdba
提示空闲历程
startup nomount
create spfile from pfile;
ALTER DATABASE MOUNT STANDBY DATABASE
alter database recover managed standby database disconnect from session;
9、
启动 数据库 (主库)
oracle long (第一个窗口)
set oracle_sid=long (在第二个窗口打开)
sqlplus / as sysdba
提示空闲历程
startup
select sequence#,first_time,next_time from v$archived_log;
conn scott/tiger
insert into test values(3,'c'); ==》 写如几条数据
conn sys/abc as sysdba
alter system archive log current;
10、
在从库查看
select sequence#,first_time,next_time from v$archived_log;
多出一条记录即可
11、完成自由切换
01、 在主节点
SQL> alter database commit to switchover to physical standby;==>切换到从库
SQL>shutdown immediate
SQL>startup nomount;启动第二阶段 (已经切换到从库)
SQL> alter database mount standby database;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; ==》又切换到主库
02、在从库的节点上
SQL> alter database commit to switchover to primary;(==》切换成主库
shutdown immediate;
SQL> startup
SQL>alter database commit to switchover to physical standby;(再次切换回从库
本文出自 “xysoul_云龙” 博客,转载请与作者联系!