A very annoying STREAMS bug, which should be corrected in the 11GR2 release, is
the failure of STREAMS to keep up with an alter table move tablespace
command.
If your table contains a LOB, and want to do some reorg through a move, then
you will very likely hit the bug and receive the following error message in
your alert.log:
ORA-26744: STREAMS capture process "STREAMS_CAPTURE" does not support
"OWNER"."TABLE_NAME" because of the following reason:
ORA-26773: Invalid data type for column "malformed redo"
No workarounds exist, except excluding your table from your STREAMS
propagation.
Reimporting the table with a new flashback SCN won't work. You have to
reimplement the whole STREAMS process to get back on your feet.
Metalink réference:Bug 5623403.
Tag - Streams
mardi 17 novembre 2009
STREAMS alter table move bug
Par Nixman le mardi 17 novembre 2009, 17:03 - Oracle
vendredi 9 octobre 2009
Configuration particulière de STREAMS pour RAC
Par Nixman le vendredi 9 octobre 2009, 16:31 - Oracle
Dans le cadre d'un RAC, si l'on a configuré la propagation via un dblink, il faut indiquer un des noeuds comme propriétaire par défaut de la queue capture et apply de STREAMS. Sinon, on peut se retrouver confroté à une erreur ORA-25315 de façon aléatoire.
Le mieux, sur des configurations 10.2 ou supérieurs, étant de positionner le paramètre queue_to_queue à TRUE lors de la mise en place de la propagation avec DBMS_PROPAGATION_ADM.CREATE_PROPAGATION. On ne passera alors plus par le dblink. Il est impossible de modifier le paramètre en cours de route.
Réf: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_prop_a.htm
Retrouver les noms des queues STREAMS
set lines 150
SELECT q.OWNER, q.NAME, t.QUEUE_TABLE, t.OWNER_INSTANCE
- FROM DBA_QUEUES q, DBA_QUEUE_TABLES t
- WHERE t.OBJECT_TYPE = 'SYS.ANYDATA'
- AND q.QUEUE_TABLE = t.QUEUE_TABLE
- AND q.OWNER = t.OWNER;
Indiquer un propriétaire par défaut et un propriétaire secondaire
DBMS_AQADM.ALTER_QUEUE_TABLE (
- queue_table IN VARCHAR2,
- comment IN VARCHAR2 DEFAULT NULL,
- primary_instance IN BINARY_INTEGER DEFAULT NULL,
- secondary_instance IN BINARY_INTEGER DEFAULT NULL);
ex:
BEGIN
- DBMS_AQADM.ALTER_QUEUE_TABLE(
-
queue_table => 'MON_QUEUE_TABLE_APPLY',
-
primary_instance => 1,
-
secondary_instance => 2);
-
END; /
BEGIN
- DBMS_AQADM.ALTER_QUEUE_TABLE(
-
queue_table => 'MON_QUEUE_TABLE_CAPTURE',
-
primary_instance => 1,
-
secondary_instance => 2);
-
END; /
BEGIN
- DBMS_AQADM.ALTER_QUEUE_TABLE(
-
queue_table => 'SCHEDULER$_JOBQTAB',
-
primary_instance => 1,
-
secondary_instance => 2);
-
END; /