1. Unix Shell Scripting

    Finding file counts

    For Linux:
    cd $ORACLE_BASE/admin
    -- For Linux
    find -maxdepth 2 -type d | while read dir; do 
        count=$(find "$dir" -maxdepth 2 -iname \*.aud | wc -l)
        echo "$count ; $dir"
    done | grep adump | sort -n

    Getting around too many arguments:

    This method is scalable, does not have issues with argument list limits, and works well for millions of files. This example looks for files that match *.aud.
  2. Oracle Connection Manager Demo


    a) Set up ocm1.localdomain as regular Linux VM [will house Oracle Client] b) Set up ocm2.localdomain as regular Linux VM [will house CMAN config] c) Set up ocm3.localdomain as host of a 19c database orclcdb/orcl Note1: Turn off or open ports on local firewalls if present. Note2: Ensure /etc/hosts has all machines listed if not using a DNS server. Use machine names in configs as REMOTE_LISTENER registration seems to rely on them.
  3. Fauxtary.1 Progress...

    Have been making decent progress on the Fauxtary.1 MIDI controller.

    I decided to have v1 be a supplement to my Traktor S8 DJ controller, not a replacement. This will allow me to flesh out all the basics first via a simpler prototype.

    I have a case, cables, aluminum knobs, and some beefy ALPS Potentiometers on order. Once they get here I'll have some more content to post.

  4. Fauxtary Mixer v2


    Building on the V1 prototype, add more traditional DJ mixer functionality.


    Per Channel:

    • Channel Volume
    • Gain - Center Detent
    • Low - Center Detent
    • Mid - Center Detent
    • High - Center Detent
    • Cue On/Off Pushbutton, Lighted
    • Filter - Center Detent

    Other controls

    • Master Volume
    • Booth Volume
    • Cue Volume
    • Pgm/Cue Mix
  5. Fauxtary Mixer V1


    Fauxtary.1 will be a simple proof of concept. The goals of this version will be to prove we can assemble all software and hardware required to make a simple USB-connected MIDI controller.
  6. Fauxtary DJ Mixer v1 - MIDI Enabled


    • Build a MIDI enabled mixer controller to replicate the controls of a rotary mixer.
    • Intended use is for DJ programs that accept Midi input (like Native Instruments Traktor).
    • This will not replace a full fledged DJ controller, just provide rotary controls for controlling the mixes.


    I always liked playing gigs on old school rotary mixers, Bozak AR-6, Urei 1620, Rane MP2016, ARS 6700 - the battle hardened workhorses of the club world.

  7. OraPad

    OraPad is an Oracle utility program I am writing as a Tuning Scratchpad. I need a place to coordinate my activities when I am in the thick of a tuning issue. Right now it seems like I am using multiple tools and I would like a central place to organize my tuning information and thoughts. Bonus if we are able to wrap some functionality to cut out extra tools required to do the tuning investigation.
  8. OS Topics

  9. Oracle Topics

  10. Apex 20.2 Upgrade experience...

    There are some impressive new features in 20.2. unfortunately my latest upgrades are not going so well.

    I see we've got a bundle patch already! Patch 32006852: PSE BUNDLE FOR APEX 20.2 (PSES ON TOP OF But I don't see any of the issues I encountered being addressed.

    From most to least severe:

  11. SQL to help diagnose issues in a pinch...

    My Session Info

    -- My Session Info
    select username, sid, serial#, terminal, program, machine from v$session where sid=userenv('sid');

    List Blocking Sessions

    By: Natalka Roshak
    select s1.username || '@' || s1.machine
      || ' ( SID=' || s1.sid || ' )  is blocking '
      || s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status
      from v$lock l1, v$session s1, v$lock l2, v$session s2
      where s1.sid=l1.sid and s2.sid=l2.sid
      and l1.BLOCK=1 and l2.request > 0
      and l1.id1 = l2.id1
      and l2.id2 =
  12. impdp too smart for its own good - ORA-2000 and missing indexes on target...

    As we move on to 12.2 and 19c we're seeing more instances where simple schema export/import migrations are missing objects on the target database.

    If you do object counts after a simple schema migration... Or see something like this pop up in your impdp logs:

  13. Creating Animated .GIFs (with Transparency) From Blender Output

    1) Create an animation with Blender.

    There are many tutorials out there so we will not cover Blender operation here.

    If you want to preserve transparency, the main thing is to create an animation with no background planes or "World"/"Atmosphere" settings. Leave them blank so that your scene is rendered with no background.

    Render your animation with the following Output Properties setup:

  14. OBS Scene Setup

  15. DJ Streaming

    Track Name Bounding Boxes - PC 2060x1080 Screen
    A B C D
    X 8 1090 8 1090
    Y 170 170 445 445
    Width 380 380 380 380
    Height 25 25 25 25
    Waveform Bounding Boxes - PC 2060x1080 Screen
    A B C D
    X 8 1090 8 1090
  16. GoldenGate Logdump Cheat Sheet

    Reviewing Trail Files

    ghdr on
    fileheader detail
    detail on
    detail data
    usertoken detail
    decrypt on KEYNAME secretkey
    ggstokens detail data
    ghdr - Controls the display of header information. fileheader

    Filtering and Counting

    Filter by table name (FILENAME in GoldenGate speak):


    Filter by string

    ghdr on
    fileheader detail
    detail on
    detail data
    usertoken detail
    open ./dirdat/AA0000001
    pos 0
  17. About ba6.us

    I am a Software Developer and Oracle DBA by trade, but have worked with many RDBMS systems ranging from small DBaseIV / FoxPro PC databases, medium sized MySQL databases, and large Sybase, Oracle, and MS SQL Server databases.

  18. Streaming


    • Live stream a class lesson with ability to show multiple camera shots and slides.
  19. 1) Hardware and Software Setup

    To live stream with multiple cameras you will need:


    • PC running Windows 10, 2 monitors preferred
    • 1 Webcam for full front view, tripod
    • 1 Webcam for work table view, tripod or horizontal mount. Can also use NDI HX Camera App on an iOS device.
  20. 2) Studio Setup and Prep for Broadcasting

    Studio Hardware Setup

    • Set up cameras/tripods/mounts
    • Set up lighting
    • Set up microphone
    • Start slide deck in its own window.
    • Test each predefined scenes for POC. Click through all scenes, ensure they are properly adjusted for each input source.
    • Hook up remote control if desired
    • Set scene to "Wish Online Class Welcome Screen"
    • Start Zoom, select "OBS Camera" as input.
    • Have someone from Wish join the meeting and ensure broadcasting is working OK.
  21. Reviewing Listener Logs

    Assumption is for a 4-node RAC with nodes named exadb01/exadb02/exadb03/exadb04.
  22. Quickly create and implement a self signed cert for Tomcat...

    Create keystore with a self signed cert

    keytool -genkey -keystore /path/keystore.jks -alias selfsigned -keyalg RSA -keysize 4096 -validity 720
    Enter details for cert and enter password = password123

    Update Tomcat server.xml


  23. Datapump Expdp/Impdp Cheat Sheet


    CREATE DIRECTORY IMPEXPDIR AS '/mounts/transfer';

    Quick Export

    expdp parfile=exp.par
    Example Parfile EXP.PAR

    Interrupting Job


    SQL>  select owner_name, state , JOB_NAME from DBA_DATAPUMP_JOBS ;
    OWNER_NAME                     STATE                          JOB_NAME
    —————————— ———————
  24. Splitting and Merging Replicats

    If you have tuned a replicat as much as you can and it still is unable to apply transactions on the target database as fast as they are being captured, you may want to consider splitting the load among multiple replicats. In a perfect world we would be able to use 1 replicat for all apply, but realistically there may be factors out of our control that are limiting the apply rate. I do always encourage analyzing the sessions on the target database that are applying transactions. I have often found updates to one or two of the tables may be slow due to a missing index or PK.