Made with:
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.
Made with:
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.
Made with:
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.
Made with:
Provides a high-level summary of a large Oracle environment: the characteristics, stats, and growth trends of multiple Oracle databases and database servers.
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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).
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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 .
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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.
Made with:
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 .