2010-03-17 Wed
Author: AnySQL, published on dbatools.net, Oracle Data Recovery, Tools, WebChart Report, etc.
We always use Oracle exp and imp utilities to move data from one oracle database to another, but the Oracle imp utility is really slow, because it does not support direct path load, and we must prepare lot's of storage to store the dmp file. Another way is to use database link and CTAS command, but the database server must be accessable in network. Is there a tool to copy data between Oracle databases without file genration and no database link required? Yes, we now have the DataCopy utility.
It's very easy to use, I don't think we need read a detailed document before we start to use it. Just read the command line help and enjoy it.
DataCopy: Fast Oracle Data Copy (Demo Version), Release 2.0.1
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.
Usage: datacopy keyword=value [,keyword=value,...]
Valid Keywords:
user = username/password@tnsname for source and target.
user1 = username/password@tnsname for source database.
user2 = username/password@tnsname for target database.
table = table name for both source and target.
tables = table name list for both source and target.
table1 = source table name to query data from.
table2 = target table name to insert data into.
query1 = select SQL for source database.
query2 = insert SQL for target database.
* wait = wait time in microsecond after each array.
read = set DB_FILE_MULTIBLOCK_READ_COUNT at session level
sort = set SORT_AREA_SIZE at session level (UNIT:MB)
hash = set HASH_AREA_SIZE at session level (UNIT:MB)
serial = set _serial_direct_read to TRUE at session level
array = array fetch size
rows = print log information for every given rows.
long = maximum size for long, long raw, CLOB, BLOB columns.
* crypt = encrypt the connection info only, no data copy (YES/NO).
parfile = read command option from parameter file
* direct = direct mode (YES/NO).
* nolog = no archive log for direct mode (YES/NO).
* parallel= allow parallel load for direct mode (YES/NO).
* sync = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).
* unique = primary key or unique key columns of target table.
* conflict= conflict columns for update on target table.
log = log file name for screen messages.
Notes:
datacopy user1=scott/tiger user2=scott/tiger table=emp
datacopy user1=scott/tiger user2=scott/tiger table=emp direct=yes
datacopy user1=scott/tiger user2=scott/tiger table1=emp table2=emp_his
For any question of this utility, add my MSN for online communication.
Related Posts
Twitter Me? | Leave New Comment(Current: 0)
盖小咪睡前喝两瓶奶(每瓶120毫升),半夜喝一瓶,起床一瓶,午睡前一瓶,醒来一瓶,一天共喝六次奶,是名副其实的奶奶王。
盖小咪:妈妈你有没有去过电工房啊?我喜欢去电工房
黄咪:妈妈小时候总跟你外公去电工房。
盖小咪:我有胡子了,可是,为什么我看不到呢?爸爸,你的胡子痒不痒啊?
盖老咪:不痒的
盖小咪:可是我摸你的胡子手很痒。。。
盖小咪开始自己创作歌曲,自编自唱
盖小咪:我不让爸爸干活
黄咪:你不让爸爸干活,爸爸赚不到钱,你就没奶粉喝。
盖小咪就老实了。
盖小咪:这是爸爸妈妈的结婚照
黄咪:是啊
盖小咪:爸爸妈妈是一定会结婚的
黄咪:为什么这么说呢?
盖小咪:你们不结婚的话就会太累了
黄咪:啊。。。
盖小咪:爷爷你那边下雪啊?
爷爷:是啊
盖小咪:雪人到了夏天就会哭了。。。
爷爷:不哭
盖小咪:你铲雪要戴手套喔,不戴会冻手。
爷爷:好啊。。。
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?(正经的解释盖老咪已经说过很多遍了其实)
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
盖小咪:为什么会下雨啊?
盖老咪:为什么你会尿尿啊?
(两父子很执着)
黄咪:今天你要盖小咪读三字经,他说不喜欢你喔
盖老咪:这有什么?今天午睡的时候他都要睡着了,突然抬起头跟我说‘我不喜欢妈妈’嘿嘿。
黄咪:-_-
有天我训完盖小咪以后,我就去书架找书,听到房门关了,找到书以后我就开门进去,盖小咪很认真地看着我,爸爸念一句唐诗他就跟着念一句,但表情还是很愣。后来盖老咪跟我说,盖小咪把房门关上以后说了一句:我不喜欢妈妈大声说话。-_-‘’’
盖小咪躺在John地板的床铺上,盖老咪也躺下去,盖小咪急了:“爸爸你睡床上去吧,地板凉!快点上去啦!。。。妈妈!你快来这里躺下!”
盖小咪外婆:给我吃一口吧。
盖小咪:这个不好吃, 我找别的好吃的给你吃 (其实是不舍得),喏,你吃这个吧。
盖小咪调皮,外婆打屁股,盖小咪很委屈地看着外婆说:“我以为你不会打我。。。”
盖小咪:火车英语怎么说?
外婆:不知道
盖小咪:电视机英语怎么说?
外婆:我不懂
盖小咪:你怎么什么都不知道?
盖小咪:妈妈!
同事:你找谁?
盖小咪:我找我妈妈
同事:你妈妈是谁?
盖小咪:我妈妈是王卫军
同事把电话转给了我
盖小咪:妈妈你在哪里啊?
黄咪:我在公司
盖小咪:爸爸在哪里啊?
黄咪:爸爸在另一个公司
盖小咪听到卡尔在打电话,大喊爸爸
黄咪:那不是爸爸,那是妈妈的同事在打电话
盖小咪:你肯定那不是爸爸?
黄咪:肯定不是
盖小咪:肯定吗?
黄咪:肯定
盖小咪:你什么时候回来啊
黄咪:下班就回来了,妈妈忙,挂电话了好不好
盖小咪:好
丽家宝贝:请找xxx
盖小咪:我妈妈不在家,她去上班了。
盖小咪拨了很多个‘1’,想找爸爸每打通。
盖小咪:能不能帮我打爸爸电话啊?他去哪里了?怎么还不回来呢?
盖老咪在家的时候只让盖老咪带他尿尿
盖小咪哭着说:你不要弄丢我的公交卡啊!要不周末我就不能坐公交大巴车了。他找我要公交卡,我就忽悠他,随便给他一张广告卡,他就拿着去问盖老咪这对不对,盖老咪说这不是公交卡,盖小咪就一直回来找我要,直到该奥秘
盖小咪学英语单词,有些发音不好,我就一直教
最后他问:我这样说对不对啊?
盖小咪:妈妈你给我生个妹妹吧?北京不好玩。
黄咪:真的?!你喜欢妹妹吗?
盖小咪:喜欢
盖小咪:妈妈,你的嘴唇还疼不疼啊?给我看看
黄咪:疼啊,你给我吹吹吧
盖小咪(吹吹):还疼吗?
黄咪:盖小咪,我去洗澡了,你自己玩吧
盖小咪很不高兴地说:你都不陪我玩的?!
黄咪:-_- 好好好!你真会投诉!
左、右、前左,
分别三对女。
一对在谈男友
给自己父母买中份
不买大份补品;
一对在谈老公
老是不回家吃饭;
一对在谈男人
靠,
居然忘记鸟。
跪请颁布法律
女人不得和女人饭饭...
2010-03-16 Tue
Oracle Warehouse Builder (OWB) 是 Oracle 的一个综合工具,它提供了易用的图形环境,从而可以快速设计、部署和管理业务智能系统。
在一台已经安装了Oracle 10g的64位Linux下安装10.0.1版本OWB软件时,碰到了两个错误,后来查了些资料解决了,记录一下。
首先是OWB需要有自己的ORACLE_HOME,建议建立一个单独的路径来安装OWB,在安装到一半的时候会报调用isqlldr的错,日志信息如下:
INFO: /u01/app/oracle/oracle/product/10.2.0/db_1/owb/rdbms/lib/ins_rdbms.mk:2: /u01/app/oracle/oracle/product/10.2.0/db_1/owb:/u01/app/oracle/oracle/product/10.2.0/db_1:/rdbms/lib/env_rdbms.mk: No such file or directory
INFO: /u01/app/oracle/oracle/product/10.2.0/db_1/owb/rdbms/lib/ins_rdbms.mk:23: target `ksms.s' given more than once in the same rule.
INFO: make: *** No rule to make target `/u01/app/oracle/oracle/product/10.2.0/db_1/owb:/u01/app/oracle/oracle/product/10.2.0/db_1:/rdbms/lib/env_rdbms.mk'. Stop.
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: makeException Name: MakefileException
Exception String: Error in invoking target 'isqlldr' of makefile '/u01/app/oracle/oracle/product/10.2.0/db_1/owb/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oracle/oraInventory/logs/installActions2010-03-12_02-44-34PM.log' for details.
Exception Severity: 1
这个错误的解决办法就是编辑ins_rdbms.mk文件,增加一行指定OWB自身的ORACLE_HOME的配置:
# Entering /ade/aime_rdbms_9819/oracle/rdbms/install/cus_rdbms.mk
ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1/owb
include $(ORACLE_HOME)/rdbms/lib/env_rdbms.mk
安装完成后,要建立资料库,可以调用安装目录下owb/unix/reposinst.sh脚本建立资料库和用户,但是在创建过程中会报ora-01919: role 'JAVAIDPRIV' does not exist错误,这时需要在目标数据库中重建JVM环境,操作步骤如下:
SQL> @?/javavm/install/rmjvm
SQL> shutdown immediate
SQL> startup
SQL> @?/javavm/install/initjvm
SQL> @?/xdk/admin/initxml
SQL> @?/xdk/admin/xmlja
SQL> @?/rdbms/admin/catjava
虽然前面创建资料库失败,但是用户和一些角色已经创建在数据库中了,我们可以删除这些用户和OWB开头的角色,类似如下SQL:
select * from dba_users
drop user BIUSER cascade
select * from dba_roles where role like 'OWB%'
drop roles OWB_BIUSER
然后再重新创建即可成功。
DataCopy(下载)并不一定是指从源端取得数据, 然后INSERT到目标端, 插入只是一个默认操作而已, 其实在目标端还可以做UPDATE或DELETE操作. 对于INSERT可以使用Direct Path Load的方式, 速度可以比得上CTAS, 其他的操作方式, 则只能实现Array DML了. 在日常的DBA工作中, 还是会有一些数据同步的需求的, 这时DataCopy应当可以减轻你的工作量.
在DataCopy中增加了两个命令行选项, 以支持不同的操作方式.
* sync = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).
* unique = primary key or unique key columns of target table.
除INSERT操作外(SYNC选项的默认值), UPDATE/DELETE操作都需要指定目标端表的主键列, 以用在WHERE条件中. UPDATE操作会根据指定的主键列去更新非主键列的值(SYNC=UPDATE), 而DELETE操作则直接在目标端根据主键列删除记录(SYNC=DELETE).
datacopy user1=... user2=... table1=emp table2=emp_sync sync=delete unique=empno
datacopy user1=... user2=... table1=emp table2=emp_sync sync=update unique=empno
根据前面的三种基本操作还可以延伸出来额外的三种操作, 在目标端用PL/SQL代码来实现, 第一种是UPDATE-INSERT方式, 在目标端先进行UPDATE, 如果更新0条记录, 则进行INSERT. 这种方式适合于以UPDATE为主的数据同步.
datacopy user1=... user2=... table1=emp table2=emp_sync sync=updins unique=empno
第二种是INSERT-UPDATE方式, 在目标端先进行INSERT, 如果主键冲突, 则进行UPDATE. 这种方式适合于以INSERT为主的数据同步.
datacopy user1=... user2=... table1=emp table2=emp_sync sync=insupd unique=empno
第三种是DELETE-INSERT方式, 在目标端先进行DELETE, 再进行INSERT操作. 这种方式的执行成本会比较高, 但逻辑简单.
datacopy user1=... user2=... table1=emp table2=emp_sync sync=delins unique=empno
后面的三种方式, 如果要用PL/SQL来实现Array接口, 代码还是有一点复杂的, 如果要实现动态SQL的处理, 估计更复杂. 并且大量的循环, 用外部C写的程会更有效率.
Relative Posts:
昨天介绍了如何在Oracle 11gR2上配置dataguard broker,以及如何配置fast_start failover,今天对此做了一下详细的测试..
测试过程如下:
1. 启动dataguard manager里面的observer (也就是一个监控程序,最好部署在主库与standby之外的服务上,在此就部署在其中一台主机上),由于启动Observer之后,dgmgrl会阻塞在这个命令上, 我们先准备一个小脚本来启动observer.
[oracle@dbmain ~]$ cat aaa.sh nohup dgmgrl sys/xxxx@dbmain "start observer file='/home/oracle/observer/fsfo.dat'" >> /home/oracle/observer/dgmgrl.log &
observer 运行之后可以看到以下的输出信息..
DGMGRL for Linux: Version 11.2.0.1.0 - Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected. Observer started
2. 关闭主数据库dbmain,使用shutdown abort模拟数据库意外垮掉的情况.
17:43:06 sys@DBMAIN>shutdown abort; ORACLE instance shut down. 17:43:15 sys@DBMAIN> --注意这一行的时间信息,,这是数据库关闭完毕的时间.
3. 观察observer上的输出信息
17:43:42.63 Tuesday, March 16, 2010 --在差不多30秒后observer开始做Failover操作.与show fast_start failover时看到的值一致. Initiating Fast-Start Failover to database "dbstby"... Performing failover NOW, please wait... Failover succeeded, new primary is "dbstby" 17:44:30.21 Tuesday, March 16, 2010 --切换时间差不多耗费了50秒左右的时间,,当然这与我这个测试库比较小也有关系.. 17:47:23.46 Tuesday, March 16, 2010 Initiating reinstatement for database "dbmain"... Reinstating database "dbmain", please wait... Operation requires shutdown of instance "dbmain" on database "dbmain" Shutting down instance "dbmain"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "dbmain" on database "dbmain" Starting instance "dbmain"... Unable to connect to database ORA-12514: TNS:listener does not currently know of service requested in connect descriptor Failed. Warning: You are no longer connected to ORACLE.
4. 在dgmgrl中登录当前的主库也就是dbstby,运行 reinstate database dbmain来将dbmain flashback到failover的scn以将dbmain改造成dbstby的standby database.
DGMGRL> show configuration
Configuration - dgconfig1
Protection Mode: MaxAvailability
Databases:
dbstby - Primary database
dbmain - (*) Physical standby database
Fast-Start Failover: ENABLED
Configuration Status:
SUCCESS
DGMGRL>
DGMGRL> show fast_start failover
Fast-Start Failover: ENABLED
Threshold: 30 seconds
Target: dbmain
Observer: dbmain
Lag Limit: 30 seconds (not in use)
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Configurable Failover Conditions
Health Conditions:
Corrupted Controlfile YES
Corrupted Dictionary YES
Inaccessible Logfile NO
Stuck Archiver NO
Datafile Offline YES
Oracle Error Conditions:
(none)
DGMGRL>
No related posts.
这是早期在cnoug上发布的一篇文章, 今天在itpub看到”如何查看发生锁的SQL语句“的问题,感觉此文对于此类尚有一点价值, 由此想到这篇文章, 特转帖与此.
v$session 表中比较常用的几个字段说明 ^_^
通过 sid 我们可以查询与这个 session 相关的各种统计信息 , 处理信息 .
a. select * from v$sesstat where sid = :sid;
查询用户相关的各种统计信息 .
select a.sid,a.statistic#,b.name,a.value from v$sesstat a,v$statname b where a.statistic# = b.statistic# and a.sid = :sid;
b. 查询用户相关的各种 io 统计信息
select * from v$sess_io where sid = :sid;
c. 查询用户想在正在打开着的游标变量 .
select * from v$open_cursor where sid = :sid;
d. 查询用户当前的等待信息 . 以查看当前的语句为什么这么慢 / 在等待什么资源 .
select * from v$session_wait where sid = :sid ;
e. 查询用户在一段时间内所等待的各种事件的信息 . 以了解这个 session 所遇到的瓶颈 ^_^
select * from v$session_event where sid = :sid;
f. 还有 , 就是当我们想 kill 当前 session 的时候可以通过 sid,serial# 来处理 .
alter system kill session ':sid,:serail#';
select a.pid, a.spid, b.name, b.description, a.latchwait, a.latchspin, a.pga_used_mem, a.pga_alloc_mem, a.pga_freeable_mem, a.pga_max_mem from v$process a,v$bgprocess b where a.addr = b.paddr(+) and a.addr = :paddr
select b.name rollname,a.* from v$transaction a,v$rollname b where a.xidusn = b.usn and a.addr = '585EC18C';
select *
from v$lock
where (id1,id2) = (
select id1,id2 from v$lock where kaddr = '57C68C48'
)
select * from v$sqltext where address = :sql_address and hash_value = :sql_hash_value;
可以通过这几个字段查询现在正在被锁的表的相关信息.^_^
a. 首先得到被锁的的信息
select * from dba_objects where object_id = :row_wait_obj#;
b. 根据 row_wait_file# 可以找出对应的文件的信息.
select * from v$datafile where file# = :row_wait_file#.
c. 在根据以上四个字段构造出被锁的字段的 rowid 信息.
select dbms_rowid.ROWID_CREATE(1,:row_wait_obj#, :row_wait_file#, :row_wait_block#, :row_wait_row#) from dual;
last_call_et 也是一个很有意义的参数,他是在该 SESSION 下用户最后一条语句执行完毕到当前的时间,单位为秒。 每次用户执行一个新的语句后,该字段复位为 0 ,重新开始记数。我们可以通过该字段来获得一个连接用户最后一次操作数据库后的空闲时,所以通过 v$session 和 last_call_et 可以很容易判断那些会话长期没有活动了,可以断开这样的会话,以减少资源利用
补充:
这样就可以通过下列查询得到当前session的信息..
select * from v$session where audsid = sys_context('USERENV','SESSIONID');
而不用再去使用v$mystat 来得到当前session的sid了.
footnote: 以上是Oracle 9i版本的v$session的主要字段说明以及使用.
可以通过使用dbms_application_info在程序中设置/获取这些信息,来达到应用与DB之间的一个通讯.
设置方式为:
exec dbms_application_info.set_client_info('user:james');
exec dbms_application_info.set_module('bops','getUser');
exec dbms_application_info.set_action('processJob');
设置完上述信息后,可以通过dbms_monitor(10g中引入)来对此module进行跟踪分析.
exec dbms_monitor.serv_mod_act_trace_enable(service_name, module_name, action_name, waits, bind, instance_name, plan_stat); exec dbms_monitor.serv_mod_act_trace_disable(service_name, module_name, action_name, waits, bind, instance_name, plan_stat);
这几个字段主要用来显示当前session是否配置TAF,以及配置了何种类型的TAF,,主要用于RAC环境.
这个字段可以通过运行dbms_session的set_identifier与clear_identifier来设置与清楚.
SQL> select client_identifier from v$session where sid = sys_context('USERENV','SID');
CLIENT_IDENTIFIER
----------------------------------------------------------------
SQL> exec dbms_session.set_identifier('james');
PL/SQL procedure successfully completed.
SQL> select client_identifier from v$session where sid = sys_context('USERENV','SID');
CLIENT_IDENTIFIER
----------------------------------------------------------------
james
SQL> exec dbms_session.clear_identifier;
PL/SQL procedure successfully completed.
SQL> select client_identifier from v$session where sid = sys_context('USERENV','SID');
CLIENT_IDENTIFIER
----------------------------------------------------------------
SQL>
这三个字段用来显示当前session被哪个instance的哪个session阻塞,,主要通过关联v$lock动态视图获得(11g版本中有,不确定10g是否有,9i没有此字段).
No related posts.
活动链接如下:
http://www.oracle.com/global/cn/education/promotions/guruweek_fy10q4.htm
这次培训OU请到了Arup Nanda,我在美国参加OpenWorld时曾经和Arup有过数面之缘,这一次有机会一起主讲这样一个课程实在是一种缘分。
这个课程设计为4天,Arup 2天,我讲1天,OU的包光磊老师讲1天。
具体内容可以参看以上链接。
如果有感兴趣的报名者,据说报 eygle.com 的来源,可以获得最低折扣。当然OU的培训收费是不便宜的,有兴趣的关注一下吧!
-The End-
相关文章|Related Articles
- 在上海,在Radisson,在Oracle的路上
- 顺利结束北京站 - OU 深入解析Oracle 培训课程
- 即将结束广州站 - OU 深入解析Oracle 培训课程
- 顺利结束上海站 - OU 深入解析Oracle 培训课程
- 深入解析Oracle - 实战案例模拟与实践30讲
评论数量(0)|Add Comments
本文网址:http://www.eygle.com/archives/2010/03/oracle_arup_eygle_bao.html
在Dataguard Broker上配置fast_start failover
前一篇文章中已经介绍过dataguard broker的基本配置, 在本文中,我将尝试给出在dataguard broker里部署fast_start failover, 具体的测试过程将在后续文章中给出.
要配置成功fast_start failover 需要满足以下5项条件.
- 1. dataguard 的配置要么是maxAvailability模式要么是maxPerformance模式.
- 2. 当dataguard的配置为maxAvailability模式时,fast-start failover的目标standby数据库的log传送模式必须设置为Sync.
- 3. 当dataguard的配置为maxPerformance模式时,fast-start failover的目标standby数据库的log传送模式必须设置为Async.
- 4. 主库与fast-start failover的目标standby数据库都必须激活flashback 功能.
- 5. 当配置了多个standby数据库时,没有在主库的配置属性FastStartFailoverTarget指定目标standby 数据库.
下面将分别配置这几项.
1. 设置standby database的dataguard模式为maxAvailablity.
在配置好dataguard broker以后, 可以在主库的sqlplus 界面修改此配置,也可以直接在dataguard manager(dgmgrl)里面修改此值.
--在dgmgrl中修改此配置. DGMGRL> edit configuration set protection mode as maxAvailability; Succeeded. DGMGRL> --在sqlplus中修改此配置. SQL> alter database set standby database to maximize availability; Database altered.
2. 通过dgmgrl 分别修改主库与standby数据库的log file传送模式.
DGMGRL> show database verbose dbmain 'LogXptMode' LogXptMode = 'SYNC' DGMGRL> edit database dbstby set property LogXptMode = 'SYNC'; Property "logxptmode" updated DGMGRL> show database verbose dbstby 'LogXptMode' LogXptMode = 'SYNC' DGMGRL>
3. 在数据库上配置flashback功能.
--主库配置语句 mkdir -p /data/oradata/flasharea/ ----两个参数的设置顺序不能颠倒,否则会报错. alter system set db_recovery_file_dest_size = 1024m scope=both; alter system set db_recovery_file_dest = '/data/oradata/flasharea/' scope=both; alter database flashback on; SQL> show parameter recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /data/oradata/flasharea/ db_recovery_file_dest_size big integer 1G recovery_parallelism integer 0 SQL> select flashback_on,force_logging,database_role,db_unique_name from v$database; FLASHBACK_ON FOR DATABASE_ROLE DB_UNIQUE_NAME ------------------ --- ---------------- ------------------------------ YES YES PRIMARY dbmain --standby库配置语句. mkdir -p /data/oradata/flasharea/ alter system set db_recovery_file_dest_size = 1024m scope=both; alter system set db_recovery_file_dest = '/data/oradata/flasharea/' scope=both; recover managed standby database cancel; alter database flashback on; recover managed standby database disconnect from session using current logfile; SQL> show parameter recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /data/oradata/flasharea/ db_recovery_file_dest_size big integer 1G recovery_parallelism integer 0 SQL> select flashback_on,force_logging,database_role,db_unique_name from v$database; FLASHBACK_ON FOR DATABASE_ROLE DB_UNIQUE_NAME ------------------ --- ---------------- ------------------------------ YES YES PHYSICAL STANDBY DBSTBY
4. 在dgmgrl 中配置主库与standby数据库的FastStartFailoverTarget属性.
DGMGRL> show database verbose dbmain 'FastStartFailoverTarget'; FastStartFailoverTarget = '' DGMGRL> edit database dbmain set property FastStartFailoverTarget='dbstby'; Property "faststartfailovertarget" updated DGMGRL> show database verbose dbmain 'FastStartFailoverTarget'; FastStartFailoverTarget = 'dbstby' DGMGRL> DGMGRL> rem set property for dbstby DGMGRL> show database verbose dbstby 'FastStartFailoverTarget'; FastStartFailoverTarget = '' DGMGRL> edit database dbstby set property FastStartFailoverTarget='dbmain'; Property "faststartfailovertarget" updated DGMGRL> show database verbose dbstby 'FastStartFailoverTarget'; FastStartFailoverTarget = 'dbmain' DGMGRL>
5. 在一个dgmgrl命令中启动observer.
--在一个终端的命令中启动observer命令.
DGMGRL>
DGMGRL> start observer
Observer started
--在另外一个终端的dgmgrl命令中查看fast_start failover的状态.
DGMGRL> show fast_start failover
Fast-Start Failover: DISABLED
Threshold: 30 seconds
Target: (none)
Observer: dbmain --显示observer 已经启动.
Lag Limit: 30 seconds
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Configurable Failover Conditions
Health Conditions:
Corrupted Controlfile YES
Corrupted Dictionary YES
Inaccessible Logfile NO
Stuck Archiver NO
Datafile Offline YES
Oracle Error Conditions:
(none)
6. 在dgmgrl中激活fast_start failover 功能.
DGMGRL> enable fast_start failover;
Enabled.
DGMGRL> show fast_start failover
Fast-Start Failover: ENABLED
Threshold: 30 seconds
Target: dbstby
Observer: dbmain
Lag Limit: 30 seconds (not in use)
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Configurable Failover Conditions
Health Conditions:
Corrupted Controlfile YES
Corrupted Dictionary YES
Inaccessible Logfile NO
Stuck Archiver NO
Datafile Offline YES
Oracle Error Conditions:
(none)
No related posts.
2010-03-15 Mon
如何在11gR2 中设置dataguard broker.
1. 检查并设置相关参数.
SQL> show parameter broker
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /opt/app/oracle/products/11.2.
0/dbs/dr1dbmain.dat
dg_broker_config_file2 string /opt/app/oracle/products/11.2.
0/dbs/dr2dbmain.dat
dg_broker_start boolean TRUE
--如果dg_broker_start为False,就将其改为True.
alter system set dg_broker_start = true scope=both;
2. 调整listener配置,添加listener相关监听项.
--变化前的配置.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_NAME=dbmain.db.alibaba.com)
(SID_NAME=dbstby)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
)
--变化后的配置.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_NAME=dbmain.db.alibaba.com)
(SID_NAME=dbstby)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
(SID_DESC=
(GLOBAL_NAME=dbmain_DGMGRL.db.alibaba.com)
(SID_NAME=dbstby)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
)
--修改完毕之后,运行lsnrctl reload 配置.
--变化前的配置.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_NAME=dbmain.db.alibaba.com)
(SID_NAME=dbmain)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
)
--变化后的配置
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_NAME=dbmain.db.alibaba.com)
(SID_NAME=dbmain)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
(SID_DESC=
(GLOBAL_NAME=dbmain_DGMGRL.db.alibaba.com)
(SID_NAME=dbmain)
(ORACLE_HOME=/opt/app/oracle/products/11.2.0)
)
)
--配置完毕之后, 运行lsnrctl reload加载新配置.
3. 运行dgmgrl命令创建broker 相关配置.
--创建基于主库的broker 配置.
DGMGRL> create configuration dgconfig1
> as primary database is dbmain
> connect identifier is dbmain;
Configuration "dgconfig1" created with primary database "dbmain"
--添加standby db的broker配置.
DGMGRL> add database dbstby
> as connect identifier is dbstby
> maintained as physical;
Database "dbstby" added
--显示添加好之后的配置.
DGMGRL> show configuration;
Configuration - dgconfig1
Protection Mode: MaxAvailability
Databases:
dbmain - Primary database
dbstby - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
--激活配置并重新显示配置.
DGMGRL> enable configuration;
Enabled.
DGMGRL> show configuration;
Configuration - dgconfig1
Protection Mode: MaxAvailability
Databases:
dbmain - Primary database
dbstby - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
--显示primary database的信息.
DGMGRL> show database dbmain;
Database - dbmain
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
dbmain
Database Status:
SUCCESS
--显示standby database的信息.
DGMGRL> show database dbstby;
Database - dbstby
Role: PHYSICAL STANDBY
Intended State: APPLY-ON --是否正在apply.
Transport Lag: 0 seconds --log transport delay
Apply Lag: 0 seconds --log apply delay
Real Time Query: ON --是否打开read time apply
Instance(s):
dbstby
Database Status:
SUCCESS
No related posts.







