anchor.diff:      server_name     =>  'dbzxout',
       table_names     =>  tables,
       schema_names    =>  schemas);
  +END;
  +/
  +
  +exit;
  +----
  +
  +Alter the XStream Outbound server to allow the xstrm user to connect to it:
  +
  +[source,indent=0]
  +----
  +sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba
  +
  +BEGIN
  +  DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
  +    server_name  => 'dbzxout',
  +    connect_user => 'c##xstrm');
   END;
   /
   
  
positive.code: 
  [[setting-up-oracle]]
  == Setting up Oracle
  
  === Preparing the Database
  
  
negative.code: exit;
  ----
  
  Furthermore, in order to capture the _before_ state of changed rows, supplemental logging must be enabled for the captured tables or the database in general.
  E.g. like so for a specific table:
  
  [source,indent=0]
  ----
  ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  ----
  
  === Creating an XStream Admin User and a User For the Connector
  
  Create an XStream admin user in the container database (used per Oracle's recommendation for administering XStream):
  
  [source,indent=0]
  ----
  sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba
  CREATE TABLESPACE xstream_adm_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/xstream_adm_tbs.dbf'
    SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
  exit;
  ----
  
  [source,indent=0]
  ----
  sqlplus sys/top_secret@//localhost:1521/ORCLPDB1 as sysdba
  CREATE TABLESPACE xstream_adm_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/xstream_adm_tbs.dbf'
    SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
  exit;
  ----
  
  [source,indent=0]
  ----
  sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba
  
  CREATE USER c##xstrmadmin IDENTIFIED BY xsa
    DEFAULT TABLESPACE xstream_adm_tbs
    QUOTA UNLIMITED ON xstream_adm_tbs
    CONTAINER=ALL;
  
  GRANT CREATE SESSION, SET CONTAINER TO c##xstrmadmin CONTAINER=ALL;
  
  BEGIN
     DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
  