DataGuard 双节点 node node
在node上配置网络 包括 网卡mac地址ipdns名 并测试网络
在node上 运行终端terminal命令——env |grep PATH
在node上创建数据库 选择 特殊数据库 类型
在node上 运行终端terminal命令——env |grep ORA全局数据库名要和配置文件里的oracle_sid设置的同名
在node上不设置默认归档日志 alter system set db_recovery_file_dest= scope=spfile同时需要启用arch日志进程 并手工创建归档日志目录及路径(mkdir p /u/app/arch 在DBCA上添加相关归档路径/u/app/arch)
注意事项 在更换默认归档路径后不会立即生效应重新生成spfile文件
create spfile= from pfile
创建数据库开始——结束完成后
在node上 运行终端命令——ps ef 查看进程出现oracle相关服务进程注意/etc/hosts 查看idIP 在/etc/hosts下node和node都需配置为主机设置快捷方式
ca(dbca) ——netmgr & 也可以主数据库
创建listener
查看listener——在/oracle下执行cd network/admin/
里面有个 listenerora文件编辑文件
命令 vi listenerora
ca配置tnsnameora node和node都需配置(连接后台服务的)
注意在从库上面也要在建立一个一模一样的库 采取方法 从主库复制一份过去详见 最下面 使用RMAN duplicate命令复制数据库
注意在从库上面也要在建立一个一模一样的库 采取方法 从主库复制一份过去
详见 最下面 使用RMAN duplicate命令复制数据库
ps ef | more查看配置是否成功也可以在netca界面上看结果
ps ef |grep oracle 查看进程
在node上配置listenertnsname
配置完后 测试两个node的网络互通——sqlplus scott/tiger@test
sqlplus scott/tiger@test
开始配置DataGuard
配置主库(Primary Database)相关工作
enable forced logging——alter database force logging
create a password file ——配置dbca时 oracle 自动创建
——database不处于open状态时使用处于open状态是 使用 user$表
setting 主库 初始化 参数 ——主要工作
++++++++++++++++
db_unique_name=uqn_node 自定义命名
log_archive_config=dg_config=(uqn_node uqn_node)
log_archive_dest_=SERVICE=lsnode tnsname
valid_for=(ONLINE_LOGFILESPRIMARY_ROLE)
db_unique_name=uqn_node
LOG_ARCHIVE_DEST_STATE_=ENABLE
LOG_ARCHIVE_DEST_STATE_=ENABLE
fal_server=lsnode
fal_client=lsnode
STANDBY_FILE_MANAGEMENT=AUTO
*db_file_name_convert=/u/oradata/test/oradata/test *log_file_name_convert=/u/oradata/test/oradata/test
enable archiving
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
创建主库备库(PrimaryStandby)
备份主库数据文件——rman备份 backup database
创建控制文件 for the Standby Database
startup mount;
alter database create standby controlfile as /u/oradata/test/standbyctl;
alter database open;
配置初始化参数 for the Standby Database
从主库拷贝文件到备库
包括datafilesstandby control fileinitial file Pscreate pfile from spfile前面在创建oracle初始化参数文件时是使用initdgdemoora文件而之前的spfiledgdemoora文件应该删除掉
删除命令rm f spfiledgdemoora
cp initdgdemoora /u/oradata
cp orapwdgdemo /u/oradata
检查一下/u/oradata目录下的文件
包括archdgdemoinitdgdemooraorapwdgdemobostonctl
有两种方式: 打包用ftp工具传过去
在/u目录下 scp r admin oradata root@IP:/u
为备库配置环境
修改配置文件之前先执行一下操作
先把/oradata/下的控制文件用bostonctl替换掉
在dgdemo下
rm f control*
mv /bostonctl /controlctl
cp controlctl controlctl
cp controlctl controlctl
将初始化参数文件拷到/oracle/dbs 下
mv $ORACLE_HOME/dbs/inittestora
mv $ORACLE_HOME/dbs/orapwtest
setting 备库 初始化 参数
*db_unique_name=uqn_node 自定义命名
*log_archive_config=dg_config=(uqn_node uqn_node)
*log_archive_dest_=location=/u/app/arch
*log_archive_dest_=SERVICE=lsnode tnsname
valid_for=(ONLINE_LOGFILESPRIMARY_ROLE)
db_unique_name=uqn_node
*LOG_ARCHIVE_DEST_STATE_=ENABLE
*LOG_ARCHIVE_DEST_STATE_=ENABLE
*fal_server=lsnode
*fal_client=lsnode
*STANDBY_FILE_MANAGEMENT=AUTO
*db_file_name_convert=/u/app/oradata/u/app/oradata
*log_file_name_convert=/u/app/oradata/u/app/oradata
实例
test
__db_cache_size=
test__java_pool_size=
test__large_pool_size=
test__shared_pool_size=
test__streams_pool_size=
*audit_file_dest=/u/app/admin/test/adump
*background_dump_dest=/u/app/admin/test/bdump
patible=
ntrol_files=/u/app/oradata/controlctl/u/app/oradata/controlctl/u/app/oradata/controlctl
re_dump_dest=/u/app/admin/test/cdump
*db_block_size=
*db_domain=
*db_file_multiblock_read_count=
*db_name=test
*db_recovery_file_dest_size=
*db_recovery_file_dest=
*dispatchers=(PROTOCOL=TCP) (SERVICE=testXDB)
*job_queue_processes=
*log_archive_start=TRUE
*open_cursors=
*pga_aggregate_target=
*processes=
*remote_login_passwordfile=EXCLUSIVE
a_target=
*undo_management=AUTO
*undo_tablespace=UNDOTBS
*user_dump_dest=/u/app/admin/test/udump
*db_unique_name=test
*log_archive_config=dg_config=(test dubdg)
*log_archive_dest_=location=/u/app/oradata
*log_archive_dest_=service=dubdg valid_for=(online_logfilesprimary_role) db_unique_name=dubdg
*log_archive_dest_state_=enable
*log_archive_dest_state_=enable
*fal_server=dubdg
*fal_client=dubdg
*standby_file_management=auto
*db_file_name_convert=/u/app/oradata/u/app/oradata
*log_file_name_convert=/u/app/oradata/u/app/oradata
详见 最下面 使用RMAN duplicate命令复制数据库
启动物理备库(补充startup open read only 默认备库就是只读启动)
ps ef 进程查看
lsnrctl start主备库注意监听
startup主库
测试lsnode 访问 sqlplus system/oracle@lsnode
startup备库
startup mount;
Start Redo Apply:
alter database recover managed standby database disconnect from session;
到这一步DataGuard 已经配置好了
测试:在主库上执行
创建一个表scott_dept_test
alter system switch logfile;
或者alter system archive log current;
看备库那边有没有接收主库的redo log信息;
验证物理备库是否运行正常
接收主库多少redo log 信息
select sequence#first_timenext_time from v$archived_log order by sequence#;
select sequence#applied from v$archived_log order by sequence#;
管理备库
当备库处在 readonly状态时
备库仍然可以接收主库的archivelog信息也可以redo apply
但是在备库查询时 不能redo apply
取消redo apply or realtime apply;
alter database recover managed standby database cancel;
(open readonly access; alter database open; 可以查询主库的表了)
又要切换回到执行状态呵 apply:
alter database recover managed standby database disconnect from session;
alter database recover managed standby database using current logfile;
启动realtime apply
主备库切换:防止主库损坏时备库可以及时运行
select namedatabase_role from v$database;
主库切换:
alter database commit to switchover to physical
standby with session shutdown;
startup nomount;
alter database mount standby database;
recover managed standby database disconnect;
备库执行:
alter database commit to switchover to primary;
切换问题:
select sequence#applied from v$archived_log order by sequence#;
查了 redo apply 是 no
坏坏公主 ::
SELECT SWITCHOVER_STATUS FROM
V$DATABASE
为何显示的是RECVOERY NEEDED
坏坏公主 ::
是怎么回事呢
相关回答原来遇到过好像是切换前要确认你的的从库是否正常应用了所有的日志如果从库和主库不同步是切不过去的有空帮你再测试模拟一下
从库在redo apply yes 时 主库才能被切换
快速创建DataGuard
需要注意 前面的配置步骤还是要的 总之 一个原则 保证主从库的一致性
使用RMAN duplicate命令复制数据库月 at : 上午 · Filed under 安装配置
去年刚开始学习RMAN的时候就知道有这个功能但是由于考试不考这个书上也没有关于这条命令的详细解释
为新数据库创建服务初始化参数文件密码文件监听在源数据库配置本地服务名指向新数据库
注意初始化参数文件中记得指定db_file_name_convert和log_file_name_convert参数以便后面rman复制数据库的时候知道该把数据文件和日志文件放到哪里去db_file_name_convert和
log_file_name_convert参数的格式如下(源数据库数据文件目录新数据库数据文件目录)
在sqlplus中用startup nomount将新数据库启动然后退出sqlplus这里一定要退出
(rman也一样quit)
否则会导致后面复制数据库时挂在那里因为复制数据库过程中有一个步骤是shutdown而shutdown会等待用户会话结束所以这里不退出后面会一直等待我在这里浪费了不少时间后来才恍然大悟明白原因
在源数据库启动rman连接到target和auxiliary这里假设新数据库的sid是aux
创建的本地服务名为dg用如下命令启动rman
rman target / auxiliary sys/sys@aux
为从库创建控制文件备份在做这一步之前 最好去删除之前的backupcopy crosscheck backup; delete noprompt backup;crosscheck copy; delete copy
backup format /u/app/backup/%Ubkp database plus archivelog; 数据文件 日志文件
backup format /u/app/backup/%Ubkp current controlfile for standby; 控制文件
scp *bkp root@dg:/u/app/backup
下面是默认的
rman>backup current controlfile for standby;
对源数据库和归档日志做全备份
rman>backup database plus archivelog;在默认路径 有可能不匹配
scp *bkp root@dg:/u/app/backup
将备份从源数据库复制到新数据库同样的目录位置
rman>duplicate target database for standby nofilenamecheck;
注意to auxdb这里要指定新数据库的sidduplicate命令完成后新数据库就可以使用了
select spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum<=));
set pagesize
set linesize
SQL> show parameter log_archive