#!/usr/bin/ksh ## set -xv # author : B. Polarski # program : smenu_stream_propagation.ksh # date : 16 Decembre 2005 # 03 October 2007 Add Queue to queue (-lq) # 15 October 2007 Added stats from stream 10G healthcheck from metatlink, just for conveniance # 20 October 2007 Added list propagation schedule HOST=`hostname` HOST=`echo $HOST | awk '{ printf ("%-+15.15s",$1) }'` # -------------------------------------------------------------------------------------ยต #-- DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE( #-- queue_name => '&&ApplSchema._strms_q', #-- destination => '@&&RemoteDBTNSName', #-- latency => NewParamVal, #-- destination_queue => '&&ApplSchema._strms_q'); # EXEC DBMS_AQADM.ALTER_SCHEDULE(queue_name,destination,latency=>1); function help { cat < -create -stop -start -drop -trace -destq -sourceq -dblk prop -lat -pn [ -adm ] prop -s prop -lr prop -o -l : List propagation process -v : Show overal picture for propagation (status and figures) -lr : List propagations rules -lc : List schedule propagation -lq : propagation queue to queues correspondancies -s : Show statitics for propagations sender -r : Show statitics for propagations receiver -rcr : Drop and recreate propagation with same ruleset -lat : Set the propagation latency (in seconds) -pn : Name of the propagation -qn : Name of the queue -u : owner of the propagation -create : Create propagation process -drop : Drop propagation process -destq : Name of the destination queue -sourceq : Name of the source queue -dblk : database link to use with propagation queue -stop : stop propagation -start : start propagation -check : check propagation is possible -v : verbose Add : -trace to set events 24024 before starting the propagation Create a propagation queue : prop -create -u -pn -sourceq -destq -dblk prop Overal image : prop -v [-u only if not STRMADMIN] -trace Stop a propagation queue : prop -stop [-u only if not STRMADMIN] Drop a propagation queue : prop -drop [-u only if not STRMADMIN] recreate propagation : prop -rcr -u -pn Set the propagation latency : prop -lat -pn [ -adm only if not STRMADMIN ] check propagation is possible: prop -check -u -pn -destq | -u2 -dblk (-u2 only if owner is # from -u ) Stream administrator admin and his password can be deduced by smenu if you defined one for this instance in SM/3.8 ortherwise it will try to default to STRMADMIN/STRMADMIN EOF exit } # ------------------------------------------------------------------------------------- function do_execute { $SETXV sqlplus -s "$CONNECT_STRING" < '&&ApplSchema._strms_q', #-- destination => '@&&RemoteDBTNSName', #-- latency => NewParamVal, #-- destination_queue => '&&ApplSchema._strms_q'); # EXEC DBMS_AQADM.ALTER_SCHEDULE(queue_name,destination,latency=>1); case $vers in 9 ) SQL="execute DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE( queue_name => '$fowner.$fqueue', destination => '$fdblink', latency=>$latency)" ;; 10) SQL="col DESTINATION_QUEUE_NAME new_value DESTINATION_QUEUE_NAME noprint col DESTINATION_DBLINK new_value DESTINATION_DBLINK noprint col source_queue_name new_value source_queue_name noprint select SOURCE_QUEUE_NAME, DESTINATION_QUEUE_NAME, DESTINATION_DBLINK from SYS.DBA_PROPAGATION where propagation_name = upper('$fprop'); set serveroutput on size 9999 col cmd new_value cmd noprint execute DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE( queue_name => 'STRMADMIN.&source_queue_name', destination =>'&DESTINATION_DBLINK', destination_queue=>'&DESTINATION_QUEUE_NAME', latency=>$latency, duration=>null, next_time=>null) ;" ;; esac elif [ "$CHOICE" = "STOP" ];then #SQL="execute DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE ( queue_name => '$fowner.$fqueue', destination => '$fdblink');" SQL="execute DBMS_PROPAGATION_ADM.stop_propagation('$fprop',force=>true);" elif [ "$CHOICE" = "START" ];then if [ $vers -eq 9 ];then SQL="$TRACE execute DBMS_PROPAGATION_ADM.start_PROPAGATION( propagation_name => '$fowner.$fprop');" else SQL=" execute DBMS_PROPAGATION_ADM.start_propagation('$fprop');" fi elif [ "$CHOICE" = "DROP" ];then if [ $vers -eq 9 ];then SQL="execute DBMS_PROPAGATION_ADM.DROP_PROPAGATION( propagation_name => '$fowner.$fprop');" else SQL="execute DBMS_PROPAGATION_ADM.DROP_PROPAGATION( propagation_name => '$fprop');" fi elif [ "$CHOICE" = "RECREATE" ];then SQL=" col propagation_name new_value propagation_name noprint col RULE_SET_NAME new_value RULE_SET_NAME noprint col RULE_SET_OWNER new_value RULE_SET_OWNER noprint col source_queue_name new_value source_queue_name noprint col source_queue_owner new_value source_queue_owner noprint col QUEUE_TO_QUEUE new_value QUEUE_TO_QUEUE noprint col DESTINATION_QUEUE_NAME new_value DESTINATION_QUEUE_NAME noprint col DESTINATION_QUEUE_OWNER new_value DESTINATION_QUEUE_OWNER noprint col DESTINATION_DBLINK new_value DESTINATION_DBLINK noprint col negative_rule_set_name new_value negative_rule_set_name noprint select propagation_name , RULE_SET_NAME, source_queue_name,QUEUE_TO_QUEUE, DESTINATION_QUEUE_NAME , RULE_SET_OWNER,SOURCE_QUEUE_OWNER, DESTINATION_DBLINK,negative_rule_set_name,DESTINATION_QUEUE_OWNER from SYS.DBA_PROPAGATION; col neg_rls new_value neg_rls select decode(NEGATIVE_RULE_SET_OWNER||'.'||NEGATIVE_RULE_SET_NAME ,'.','null', NEGATIVE_RULE_SET_OWNER||'.'||NEGATIVE_RULE_SET_NAME ) neg_rls from SYS.DBA_PROPAGATION where propagation_name = upper('$fprop'); execute DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE ( queue_name => '&DESTINATION_QUEUE_OWNER..&source_queue_name', destination => '&DESTINATION_DBLINK'); execute DBMS_PROPAGATION_ADM.DROP_PROPAGATION( propagation_name => '$fprop'); execute DBMS_PROPAGATION_ADM.CREATE_PROPAGATION( propagation_name => '$fprop', source_queue => '&SOURCE_QUEUE_OWNER..&&source_queue_name', destination_queue => '&DESTINATION_QUEUE_OWNER..&DESTINATION_QUEUE_NAME', destination_dblink => '&DESTINATION_DBLINK', rule_set_name=>'&RULE_SET_OWNER..&rule_set_name' , negative_rule_set_name=>&neg_rls , queue_to_queue=> true); " elif [ "$CHOICE" = "CREATE" ];then SQL="execute DBMS_PROPAGATION_ADM.CREATE_PROPAGATION( propagation_name => '$fowner.$fprop', source_queue => '$fowner.$fsrc_q', destination_queue => '$fowner.$fdest_q', destination_dblink => '$fdblink');" elif [ "$CHOICE" = "LIST_PROP" ];then SQL="select PROPAGATION_NAME prop, RULE_SET_NAME rsname , nvl(DESTINATION_DBLINK,'Local to db') d_dblk,NEGATIVE_RULE_SET_NAME from dba_propagation ; select SOURCE_QUEUE_OWNER||'.'|| SOURCE_QUEUE_NAME nams , DESTINATION_QUEUE_OWNER||'.'|| DESTINATION_QUEUE_NAME|| decode( DESTINATION_DBLINK,null,'','@'|| DESTINATION_DBLINK) namd, status , QUEUE_TO_QUEUE from dba_propagation ;" fi if [ "$EXECUTE" = "YES" ];then do_execute else echo "$SQL" fi