Archive for 三月, 2009

配置Advanced Replication

星期四, 三月 19th, 2009
源端8.1.17.3 for hp-ux 目的端10.2.0.4 for linux
 
1导出表
exp system/oracle file=repexp.dmp TABLES=(DEF\$\_ERROR,REPCAT\$\_REPSCHEMA,DEF\$\_DESTINATION,DEF\$\_CALLDEST,DEF\$\_DEFAULTDEST,
DEF\$\_LOB,DEF\$\_TEMP\$LOB,DEF\$\_ORIGIN,DEF\$\_PUSHED\_TRANSACTIONS,DEF\$\_PROPAGATOR)
2 drop
drop table system.DEF$_CALLDEST;                                               
drop table system.DEF$_DEFAULTDEST;
drop table system.DEF$_ERROR;
drop table system.DEF$_ORIGIN
drop table system.REPCAT$_REPSCHEMA;                                           
drop table system.DEF$_DESTINATION;                                                                                         
drop table system.DEF$_LOB;
drop table system.DEF$_TEMP$LOB;
drop table system.DEF$_PUSHED_TRANSACTIONS;
drop table system.DEF$_PROPAGATOR;
3 system
execute dbms_aqadm.drop_queue_table('SYSTEM.DEF$_AQCALL',TRUE);
Execute dbms_aqadm.drop_queue_table('SYSTEM.DEF$_AQERROR',TRUE);
 
4 修改SYSTEM表空间属性
alter user system default tablespace ibmsf_rep quota unlimited on ibmsf_rep;
alter user system quota 0 on system;
revoke unlimited tablespace from system;
 
5 执行高级复制脚本
 
@?/
rdbms/admin/catdefrt.sql;
 
6 导入备份的表
 
imp system/oracle file=repexp.dmp full=y ignore=y
 
7 修改回SYSTEM默认的表空间属性
 
alter user system default tablespace system quota unlimited on system;
grant unlimited tablespace to system;
 
8 运行编译过程
 
@?/
rdbms/admin/utlrp.sql;
 
9 确认高级复制表已经转移
 
select * from dba_tables where tablespace_name='IBMSF_REP’
 
 
--------------------------------------------------以上操作在源端操作---------------------------------------------------
 
 
 
 
10 修改源端以下三个参数:
 
open_links=8
JOB_QUEUE_PROCESSES=10
PARALLEL_MAX_SERVERS=20
 
11 源端上创建REPADM用户
 
sqlplus / as sysdba
create user repadm identified by repadm;
exec DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(USERNAME =>
'repadm');
GRANT COMMENT ANY TABLE TO repadm;
GRANT LOCK ANY TABLE TO repadm;
exec DBMS_DEFER_SYS.register_propagator(username =>
'repadm');
 
 
12 )目的端创建高级复制用户
 
sqlplus / as sysdba
create user repadm identified by repadm;
exec DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(USERNAME =>
'repadm');
GRANT COMMENT ANY TABLE TO repadm;
GRANT LOCK ANY TABLE TO repadm;
grant select any dictionary to repadm;
exec DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(USERNAME =>
'repadm',PRIVILEGE_TYPE => 'receiver',LIST_OF_GNAMES => NULL);
 
13 在源端TNSNAMES添加以下服务
 
 
TAIPCC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = taipcc)
      (INSTANCE_NAME = taipcc1)
      (FAILOVER_MODE =
        (BACKUP = taipcc2)
        (TYPE = select)
        (METHOD = preconnect)
      )
    )
  )
 
TAIPCC2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = *)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = taipcc)
      (INSTANCE_NAME = taipcc2)
    )
  )
14 源端创建以下DB LINK
sqlplus / as sysdba
CREATE PUBLIC DATABASE LINK TAIPCC USING
'TAIPCC';
 
sqlplus repadm/repadm
CREATE DATABASE LINK TAIPCC CONNECT TO repadm IDENTIFIED BY repadm;
 
15 目的端创建以下DB LINK
 
sqlplus / as sysdba
CREATE PUBLIC DATABASE LINK IBMSF USING
'IBMSF';
 
sqlplus repadm/repadm
CREATE DATABASE LINK IBMSF CONNECT TO repadm IDENTIFIED BY repadm;
 
16 在源端添加复制组和复制站点
 
sqlplus repadm/repadm
BEGIN
       DBMS_REPCAT.CREATE_MASTER_REPGROUP (
          gname =>
'REP1');
END;
/
BEGIN
   DBMS_REPCAT.ADD_MASTER_DATABASE (
      gname =>
'REP1',
      master =>
'TAIPCC',
      use_existing_objects => TRUE,
      copy_rows => FALSE,
      propagation_mode =>
'ASYNCHRONOUS');
END;
/
 
 
 
17 在源端添加复制对象以及对象支持 参加脚本
 
select
'exec DBMS_REPCAT.CREATE_MASTER_REPOBJECT (gname => ' || '''REP1''' || ',' ||
      
'type => ' || '''TABLE''' || ',' || 'oname =>' || '''' || '' ||
       table_name ||
'''' || ',' || 'sname => ' || '''IBMSF''' || ',' ||
      
'use_existing_object => TRUE' || ',' || 'copy_rows => FALSE);'
  from user_tables
 
select
'exec DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(sname => ' || '''IBMSF''' ||
        
',' || 'oname =>' || '''' || '' ||
       table_name ||
'''' || ','||'type => '||'''TABLE''' ||',' ||
      
'min_communication => TRUE);'
  from user_tables
 
18 添加复制JOB(测试用5分钟一次,测试完毕后修改为每天晚上1点执行)
 
exec DBMS_DEFER_SYS.SCHEDULE_PUSH (destination =>
'TAIPCC',interval => 'SYSDATE+1/288',next_date => SYSDATE,parallelism => 2);
 
19 在源端启用高级复制
 
execute dbms_repcat.resume_master_activity(
'rep1',true);
 
20 手动执行高级复制的命令
 
Set serverout on
DECLARE
   temp INTEGER;
BEGIN
   temp := DBMS_DEFER_SYS.PUSH (
      destination =>
'TAIPCC',
      stop_on_error => FALSE,
      delay_seconds => 0,
      parallelism => 1);
      dbms_output.put_line(temp);
END;

Advanced Replication

星期一, 三月 16th, 2009
最近在搞高级复制,在准备实施的时候,客户才说会影响现有的应用,因为高级复制里有一步要修改global_names=true,改了这个将导致现有的DB_LINK失效,也怪我们之前没考虑周到,如果真是必须改,那么就说明方案本身有问题了,如果让客户去更改一些很老的应用,不是太现实,那就测试吧,经过测试,global_names=true不是高级复制必须的,我们测试的是8.1.1710.2.0.1配置也是OK的,其实global_names就是要保证DB的唯一性。

崩溃-global_names dblink

星期五, 三月 13th, 2009

崩溃了,如题,懂的应该明白发生了什么

oracle 9ir2 idle event

星期一, 三月 9th, 2009
insert into STATS$IDLE_EVENT (event) values ('smon timer');
insert into STATS$IDLE_EVENT (event) values ('pmon timer');
insert into STATS$IDLE_EVENT (event) values ('rdbms ipc message');
insert into STATS$IDLE_EVENT (event) values ('Null event');
insert into STATS$IDLE_EVENT (event) values ('parallel query dequeue');
insert into STATS$IDLE_EVENT (event) values ('pipe get');
insert into STATS$IDLE_EVENT (event) values ('client message');
insert into STATS$IDLE_EVENT (event) values ('SQL*Net message to client');
insert into STATS$IDLE_EVENT (event) values ('SQL*Net message from client');
insert into STATS$IDLE_EVENT (event) values ('SQL*Net more data from client');
insert into STATS$IDLE_EVENT (event) values ('dispatcher timer');
insert into STATS$IDLE_EVENT (event) values ('virtual circuit status');
insert into STATS$IDLE_EVENT (event) values ('lock manager wait for remote message');
insert into STATS$IDLE_EVENT (event) values ('PX Idle Wait');
insert into STATS$IDLE_EVENT (event) values ('PX Deq: Execution Msg');
insert into STATS$IDLE_EVENT (event) values ('PX Deq: Table Q Normal');
insert into STATS$IDLE_EVENT (event) values ('wakeup time manager');
insert into STATS$IDLE_EVENT (event) values ('slave wait');
insert into STATS$IDLE_EVENT (event) values ('i/o slave wait');
insert into STATS$IDLE_EVENT (event) values ('jobq slave wait');
insert into STATS$IDLE_EVENT (event) values ('null event');
insert into STATS$IDLE_EVENT (event) values ('gcs remote message');
insert into STATS$IDLE_EVENT (event) values ('gcs for action');
insert into STATS$IDLE_EVENT (event) values ('ges remote message');
insert into STATS$IDLE_EVENT (event) values ('queue messages');

oracle 9i for hpux ia64 11.31

星期五, 三月 6th, 2009
昨天在9I FOR HPUX IA64 11.31下好时折腾了一翻,第一次搞9I,本来感觉缺少了CRS应该更好搞,结果一开始就给我来了一下,安装过程中始终没有选择node的地方,死活搞了几次就是没有,就开始问别人,别人说是9202上开始安装的,我一开始用的是9201也没说IA 还是PA,行吧。去下载吧。结果下载了几个小时。再次安装,选择节点的地方终于出现了,看来还真是版本不对,心里汗一把。升级9208比较顺利。然后开始建库,噩梦又开始了,一到开始启动实例的时候,就遇到00603 fatal errors了,一终止安装就丢了LV,然后就是停GSD 监听,停集群,然后vgexport mkdir mknod vgimport ,反复几次,还是一样。然后就开始手工搞,结果在startup pfile 那步就OVER了,看来init.ora参数有问题,好时检查了一翻,没啥问题啊。然后就在GOOGLEMETALINK里搜,看到有人说加个cluster_interconnectsOK了,手工试了下是没问题了。终于找到问题了,然后开始DCBA建库,建完了记得改下节点2上的这个参数,要不是启动不起来的,在建库的时候还遇到了如下错误
Errors in file /opt/oracle/admin/mcdb/udump/mcdb1_ora_6414.trc:
ORA-00600: internal error code, arguments: [504], [0xC0000002278ACA58], [160], [7], [shared pool], [2], [0], [0xC0000002278AC968]
Thu Mar  5 23:45:52 2009
加了个隐含参数解决了:
_kghdsidx_count=1
参考文档
ID
281779.1
 
最后在到数据库的时候存储过程还有问题,就重新执行了
catalog.sql catproc.sqlOK