-- validate Oracle parameters
archive log list -- document this
show parameter aq_tm_processes -- min 3
show parameter compatible -- must be 10.1.0 or above
show parameter global_names -- must be TRUE
show parameter job_queue_processes -- min 2 recommended 4-6
show parameter open_links -- not less than the default 4
show parameter shared_pool_size -- must be 0 or at least 100MB
show parameter streams_pool_size -- min. 15MB (10MB/capture 1MB/apply) - dflt 48MB
show parameter undo_retention -- min. 3600 (1 hr.)
-- Examples of altering initialization parameters
alter system set aq_tm_processes=3 scope=BOTH;
alter system set compatible=10.2.0.1.0 scope=BOTH;
alter system set global_names=TRUE scope=BOTH;
alter system set job_queue_processes=6 scope=BOTH;
alter system set open_links=4 scope=BOTH;
alter system set streams_pool_size=48M scope=BOTH; -- very slow if making smaller
alter system set undo_retention=3600 scope=BOTH;
-- Retest parameter after modification
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
Setup As SYS - Create Streams Administrators
On Alpha 1 create user localadmin, on Alpha 2 create user remoteadmin
conn / as sysdba
CREATE USER localadmin
IDENTIFIED BY localadmin
DEFAULT TABLESPACE user_data
TEMPORARY TABLESPACE temp
QUOTA 0 ON SYSTEM
QUOTA 20M ON user_data;
GRANT create session TO localadmin;
GRANT create database link TO localadmin;
GRANT create procedure TO localadmin;
GRANT aq_administrator_role TO localadmin IDENTIFIED BY
localadmin;
GRANT execute ON dbms_streams_adm TO
localadmin;
GRANT execute ON dbms_streams_auth TO
localadmin;
SELECT username, account_status, created
FROM dba_users
ORDER BY 1;
SELECT *
FROM dba_sys_privs
WHERE grantee = 'LOCALADMIN';
set linesize 131
col privilege format a15
col owner format a15
SELECT role, owner, table_name, privilege
FROM role_tab_privs
WHERE role = 'AQ_ADMINISTRATOR_ROLE'
ORDER BY 4, 2, 3;
CREATE DATABASE LINK alpha2db.psoug.org
CONNECT TO remadmin
IDENTIFIED BY remadmin
USING 'ALPHA2.PSOUG.ORG';
SELECT SYSDATE
FROM dual@alpha2;
SELECT * FROM global_names;
conn remadmin/remadmin
CREATE DATABASE LINK alpha1db.psoug.org
CONNECT TO locadmin
IDENTIFIED BY locadmin
USING 'ALPHA1.PSOUG.ORG';
SELECT SYSDATE
FROM dual@alpha1;
Prepare Schema Tables for Streams Replication
on Alpha 1
on Alpha 2
conn scott/tiger
SELECT table_name
FROM user_tables;
ALTER TABLE audit_trail
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER TABLE bonus
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER TABLE dept
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER TABLE emp
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER TABLE salgrade
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
conn / as sysdba
drop user scott cascade;
CREATE USER scottrep
IDENTIFIED BY scottrep
DEFAULT TABLESPACE user_data
TEMPORARY TABLESPACE temp
QUOTA 0 ON system
QUOTA 0 ON sysaux
QUOTA 50M ON user_data;
GRANT create session TO scottrep;
GRANT create table TO scottrep;
GRANT create type TO scottrep;
Create Streams Queues
on Alpha 1
on Alpha 2
dbms_streams_adm.set_up_queue(
queue_table IN VARCHAR2 DEFAULT 'streams_queue_table',
storage_clause IN VARCHAR2 DEFAULT NULL,
queue_name IN VARCHAR2 DEFAULT 'streams_queue',
queue_user IN VARCHAR2 DEFAULT NULL,
comment IN VARCHAR2 DEFAULT NULL);
dbms_streams_adm.add_schema_rules(
schema_name IN VARCHAR2,
streams_type IN VARCHAR2,
streams_name IN VARCHAR2 DEFAULT NULL,
queue_name IN VARCHAR2 DEFAULT 'streams_queue',
include_dml IN BOOLEAN DEFAULT TRUE,
include_ddl IN BOOLEAN DEFAULT FALSE,
include_tagged_lcr IN BOOLEAN DEFAULT FALSE,
source_database IN VARCHAR2 DEFAULT NULL,
dml_rule_name OUT VARCHAR2,
ddl_rule_name OUT VARCHAR2,
inclusion_rule IN BOOLEAN DEFAULT TRUE,
and_condition IN VARCHAR2 DEFAULT NULL);
dbms_streams_adm.add_global_propagation_rules(
streams_name IN VARCHAR2 DEFAULT NULL,
source_queue_name IN VARCHAR2,
destination_queue_name IN VARCHAR2,
include_dml IN BOOLEAN DEFAULT TRUE,
include_ddl IN BOOLEAN DEFAULT FALSE,
include_tagged_lcr IN BOOLEAN DEFAULT FALSE,
source_database IN VARCHAR2 DEFAULT NULL,
dml_rule_name OUT VARCHAR2,
ddl_rule_name OUT VARCHAR2,
inclusion_rule IN BOOLEAN DEFAULT TRUE,
and_condition IN
VARCHAR2 DEFAULT NULL,
queue_to_queue IN BOOLEAN DEFAULT NULL);
dbms_streams_adm.add_schema_rules(
schema_name IN VARCHAR2,
streams_type IN VARCHAR2,
streams_name IN VARCHAR2 DEFAULT NULL,
queue_name IN VARCHAR2 DEFAULT 'streams_queue',
include_dml IN BOOLEAN DEFAULT TRUE,
include_ddl IN BOOLEAN DEFAULT FALSE,
include_tagged_lcr IN BOOLEAN DEFAULT FALSE,
source_database IN VARCHAR2 DEFAULT NULL,
dml_rule_name OUT VARCHAR2,
ddl_rule_name OUT VARCHAR2,
inclusion_rule IN BOOLEAN DEFAULT TRUE,
and_condition IN VARCHAR2 DEFAULT NULL);