My Projects

Rocket Doodle Hello World!
arrow drawing
HTML / CSS / JavaScript
Root Around Website

Root Around Website


Made with:

HTML/CSS/JS

Root Around is a Java/MySQL desktop application that I developed to help my team and I perform database and system administration. Root Around is a personal, fully customizable command repository for System and Database Administrators or anyone else who frequently has to run commands on a command line, in a database, or in a computer system. I created this website to provide an introduction, a Quick Start Guide, and tutorials on how to use Root Around.

Beth Culler

My Portfolio


Made with:

HTML/CSS/JS

The source code for this website. I developed this portfolio to display various personal, professional, and school programming projects to showcase my talent and abilities.

Python
Red Bike Adventures

Red Bike Adventures Website


Made with:

HTML/CSS/JS Python Jupyter Notebook

This project was submitted as my undergraduate computer science capstone project. Red Bike Adventures is a fictional company created by me for the purposes of this project. I developed a website for the fictional company and predicted bike availability using the Linear Regression machine learning algorithm using a public dataset from the University of California Irvine’s Machine Learning Repository that consists of a two-year historical log corresponding to the years 2011 and 2012 from Capital Bikeshare system, Washington D.C. The description of this dataset was changed to fit the narrative that was made up for this project.

Code Snippet

Database Environment Summary - Flask Dashboard


Made with:

HTML/CSS Python Flask Oracle SQL

Provides a high-level summary of a large Oracle environment: the characteristics, stats, and growth trends of multiple Oracle databases and database servers.

Example Program Output for Option #1

Package Routing Program


Made with:

Python

This project is a variation of The Traveling Salesperson Problem. The program loads 3 trucks according to specific instructions on when packages need to be delivered and which packages needed to be delivered together. It then determines 3 different routes for each of the trucks that delivers the packages by their deadlines and attempts to provide the lowest miles traveled by implementing a recursive greedy algorithm.

Java
Root Around

> Root Around


Made with:

Java MySQL SQL

Root Around is a Java/MySQL desktop application that I developed to help my team and I perform database and system administration. Root Around is a personal, fully customizable command repository for System and Database Administrators or anyone else who frequently has to run commands on a command line, in a database, or in a computer system. It provides administrators the ability to quickly look up commands, add and remove commands, edit commands, write their own notes for each command, add new platforms, and easily share commands and platforms with other Root Around users, so the Command Box has the ability to grow and be tailored to everyone's specific needs, for administrators of any platform. Long and complex queries are quickly copied with a simple double click. Root Around can be kept private used solely for personal use, and/or it can also be shared within a team as it has the ability to connect to and change connections between local and/or remote databases.Using Root Around makes the life of any administrator easier and more organized. Root Around allows for all of the commands that an administrator will ever have to run to be stored in one easily accessible, highly organized and fully customizable tool that offers quick and easy lookup.

Project Login Page for GUI

Scheduling Desktop User Interface Application


Made with:

Java SQL SQL

This was an undergraduate school project that did not allow me to use external libraries. It is a desktop application that manages customer information and appointments for a fictional global consulting organization. It provides a user the ability to authenticate in 3 different languages. Once authenticated, the user has the ability to add, update and delete customer records from a MySQL database, as well as add, update and delete appointments, view their schedule by week or by month, and generate reports regarding the number of appointment types per month and the schedule for each consultant.

Code Snippet

JavaFX Inventory Management System


Made with:

Java

This is a JavaFX application with a GUI that provides an inventory management system for a fictional small manufacturing organization that provides the ability to add, modify, delete and search for parts and products.

C++
C++ Project Output

Class Roster


Made with:

C++

This program creates a class roster of students within a given course and provides the ability to read and manipulate the student data (student ID, first name, last name, email address, age, major, days to complete course).

PL/SQL
Code Snippet

Truncate Table Trigger


Made with:

Oracle PL/SQL SQL

For: Oracle

A user was required to be able to truncate certain application tables not owned by them, so the user was granted the "DROP ANY TABLE" system privilege (to truncate a table in Oracle, the table must be in your own schema or you must have the "DROP ANY TABLE" system privilege. But this privilege allows you to then truncate or drop any table in the database). This trigger was written so that the user could only truncate the pre-approved application tables (the owner and names of which are stored in a table created by me: ALL_TRUNC8_PERMS) and would be prevented from being able to truncate every table in the database. If the user attempts to truncate a non-approved table, the trigger will prevent the truncate, cause the user to receive an error, the occurrence will be recorded in an Oracle table for record-keeping and auditing purposes (a table called CAPTURED_TRUNC8_ERRS ), and an email will be sent to notify the DBA's.

Code Snippet

Large Table Migration Over a Database Link


Made with:

Oracle PL/SQL SQL

For: Oracle

This script copies a very large table across a database link in batches. This is to be ran after the source table's metadata has been cloned in the target database. A database link and the following database table needs to already have been created in order for this script to successfully execute: DB_MIGRATION_TRACKER.

Code Snippet

Schema Migration Over a Database Link


Made with:

Oracle PL/SQL SQL

For: Oracle

This script copies the table data from a schema in one database (the source database) to an identical schema in another database (the target database) across a database link. This is to be ran after the source schema's metadata has been cloned in the target database. A database link and the following database table needs to already have been created in order for this script to successfully execute: DB_MIGRATION_TRACKER.

Bash
Code Snippet

Alert Log Monitor


Made with:

Bash Oracle SQL

For: Oracle 11g+, Linux, AIX

The alert_log_monitor.sh script will scan the database alert log of 11g+ Oracle databases for ORA- errors and instance terminations / restarts, sleep 5 minutes, then scan again. An email will be sent to alert the DBA's if anything is found within the past 5 minutes. The alert_log_CRON_mgr.sh script is scheduled in crontab to verify that the alert_log_monitor.sh is running and restart it if it is not. An email will be sent to alert the DBA's if alert_log_monitor.sh was abnormally terminated.

Code Snippet

Database Workload Monitor


Made with:

Bash Oracle SQL

For: Oracle 11g+, Linux, AIX

The database_workload_monitor.sh script calculates the average number of total 'User Calls' and DML transactions ('User Commits' and 'User Rollbacks') that have occured in the database per hour since the last startup time to trend over time with the purpose of determining if the database's workload is increasing or decreasing over time and to pin point peak hours and/or days. It populates the following database table with the data it collects: ORACLE_DB_WORKLOAD_TREND.

Code Snippet

Tablespace Growth Trender


Made with:

Bash Oracle SQL

For: Oracle 11g+, Linux, AIX

The tablespace_growth_trender.sh script remotely checks the size of every tablespace and the creation date of every datafile in multiple databases and records the data in a database table to trend tablespace growth over time. This information is used to populate the Database Environment Summary - Flask Dashboard .

Code Snippet

11g Audit Trail Cleanup in Batches


Made with:

Bash Oracle SQL

For: Oracle 11g, Linux, AIX

If the AUD$ table has grown very large, this script will archive and purge records in small batches to reduce execution time and to not overwhelm resources. It first purges everything older than 18 months from AUD$ in small batches. It then archives and purges audit records from AUD$ that are older than 45 days in small batches. An archive table will need to first be created before this script can successfully execute. After execution, AUD$ records older than 45 days will have been archived, and records older than 18 months will have been deleted.

Code Snippet

11g Audit Trail Maintenance


Made with:

Bash Oracle SQL

For: Oracle 11g, Linux, AIX

This script performs Audit Trail maintenance for an 11g standalone or 2-node RAC database. Scheduling this script to run daily for each DB will keep a 45 day rolling window of data in the AUD$ table, a rolling 1.5 year's worth of data in the audit archive table, a rolling 15 day window in the ASM and DB AUDIT_FILE_DEST on the OS on each node in the cluster, and a rolling 1.5 year's worth of AUDIT_FILE_DEST archives. Audit records older than 45 days will first be archived into an archive table before being purged from the AUD$ table. ASM and DB AUDIT_FILE_DEST OS files that are older than 15 days are archived to a zip file on an NFS mounted file system and then deleted from the AUDIT_FILE_DEST.

Code Snippet

19c Audit Trail Maintenance


Made with:

Bash Oracle SQL

For: Oracle 19c, Linux, AIX

This script performs Unified Audit Trail maintenance for a 19c standalone or 2-node RAC database. Scheduling this script to run daily will keep a 45 day rolling window of data in the UNIFIED_AUDIT_TRAIL table and a rolling 1.5 year's worth of data in the audit archive table. Audit records older than 45 days will first be archived into an archive table before being purged from the UNIFIED_AUDIT_TRAIL table. Any OS Spillover Audit Records on each node of a standalone or 2-node RAC cluster will also be moved into the Unified Audit Trail and deleted from the OS.

Code Snippet

Remote Script Pusher


Made with:

Bash Oracle SQL

For: Oracle 11g+, Linux, AIX

The push_remote_scripts.sh script will push a local file or files (any number of files) to a list of remote servers. The purpose of this script is to create a central repository for maintenance scripts. Some scripts are required to be stored locally on the machine the script needs to be executed on. When changes need to be made to those scripts, each script on each server would have to be individually changed. To prevent that, the script(s) can be stored on a local machine (the central repository) and then just copied over to all of the other servers by using this script. Any changes to those scripts can be done on the local machine, i.e. the central repository, then pushed out using this script. Therefore, only one server and one file will need to be touched instead of multiple.

Code Snippet

Oracle Availability Monitor


Made with:

Bash Oracle SQL

For: Oracle 11g+, Linux, AIX

The it_reaches_out.sh script monitors the availability of the Oracle database servers stored in the database table: oracle_servers and the Oracle environments residing on each of the servers by remotely executing the script: oracle_availability_check.sh. An alert will be emailed to the DBA's if a server, database instance, ASM instance, or if the LISTENERS is/are offline and/or unavailable. An alert will also be emailed to the DBA's if the VIP is not running on the correct machine. This script also collects various information about each environment to populate the Database Environment Summary - Flask Dashboard .

Thank you for looking!

via GIPHY