Wallet v1

 #!/bin/bash


echo "===== TDE Wallet Check - Version 1 ====="


# ===== PHASE 1: Validate Input and Set Environment =====

echo "PHASE 1: Setting up Oracle Environment"


if [[ -z "$1" ]]; then

    echo "ERROR: ORACLE_SID is required!"

    echo "Usage: $0 <ORACLE_SID>"

    exit 1

fi


export ORACLE_SID=$1

export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH

SQLPLUS="$ORACLE_HOME/bin/sqlplus -s / as sysdba"


echo "ORACLE_SID set to: $ORACLE_SID"

echo "ORACLE_HOME: $ORACLE_HOME"


# ===== PHASE 2: Fetch Database Information =====

echo "PHASE 2: Fetching database and wallet details"


get_db_info() {

    $SQLPLUS <<EOF

SET HEAD OFF FEEDBACK OFF PAGESIZE 0 LINESIZE 100

SELECT 

    name || '|' || 

    status || '|' || 

    NVL((SELECT WRL_PARAMETER FROM gv\$encryption_wallet 

         WHERE inst_id = (SELECT INSTANCE_NUMBER FROM v\$instance)), 'NA') || '|' ||

    (SELECT CASE WHEN COUNT(*) > 0 THEN 'YES' ELSE 'NO' END 

     FROM dba_tablespaces WHERE ENCRYPTED='YES')

FROM v\$database, v\$encryption_wallet;

EXIT;

EOF

}


DB_INFO=$(get_db_info)

IFS='|' read -r DBNAME WALLET_STATUS WALLET_LOCATION TBS_ENCR <<< "$DB_INFO"


echo "DB Name: $DBNAME"

echo "Wallet Status: $WALLET_STATUS"

echo "Wallet Location: $WALLET_LOCATION"

echo "Tablespace Encrypted: $TBS_ENCR"


# ===== PHASE 3: Check Wallet Availability =====

echo "PHASE 3: Checking Wallet Presence"


WRL_PRESENT="N"

if [[ "$WALLET_LOCATION" != "NA" && -d "$WALLET_LOCATION" ]]; then

    WRL_PRESENT="Y"

    echo "Wallet Found at: $WALLET_LOCATION"

else

    echo "Wallet Not Found!"

fi


# ===== PHASE 4: Validate Wallet Passwords =====

echo "PHASE 4: Checking Wallet Passwords"


STANDARD_PWD="xyxyxyxyxytsts"

NEWPSWD=$(/path/to/pwEcho.exe $ORACLE_SID WALLET)


PWD_MATCH="N"

CLK_PWD="N"


if [[ "$WRL_PRESENT" == "Y" ]]; then

    WALLET_PWD_MATCH_STD=$($ORACLE_HOME/bin/mkstore -wrl $WALLET_LOCATION -list -password $STANDARD_PWD 2>/dev/null)

    WALLET_PWD_MATCH_CLOAK=$($ORACLE_HOME/bin/mkstore -wrl $WALLET_LOCATION -list -password $NEWPSWD 2>/dev/null)


    if [[ -n "$WALLET_PWD_MATCH_CLOAK" ]]; then

        echo "Cloakware Password is Valid"

        PWD_MATCH="Y"

        CLK_PWD="Y"

    elif [[ -n "$WALLET_PWD_MATCH_STD" ]]; then

        echo "Wallet Password Matches Standard Password"

        PWD_MATCH="Y"

        CLK_PWD="N"

    else

        echo "Wallet Password Does Not Match Any Known Password"

    fi

else

    echo "Skipping password check as wallet is not found."

fi


# ===== PHASE 5: Backup Wallet (if valid) =====

echo "PHASE 5: Backing up Wallet (if password matches)"


WRL_BKUP="N"

SHARED_LOCATION="/tmp/shared"


if [[ "$PWD_MATCH" == "Y" ]]; then

    mkdir -p $SHARED_LOCATION

    cp $WALLET_LOCATION/* $SHARED_LOCATION

    echo "Wallet Backup Completed"

    WRL_BKUP="Y"

else

    echo "Skipping Wallet Backup - Password Validation Failed"

fi


# ===== PHASE 6: Generate Report =====

echo "PHASE 6: Generating Report"


AUTOLOGON=$(grep -q "AUTOLOGIN" <<< "$WALLET_STATUS" && echo "Y" || echo "N")

RUN_DATE=$(date '+%Y-%m-%d %H:%M:%S')

REPORT_FILE="/tmp/report-$(date '+%Y%m%d').log"


cat <<EOF > $REPORT_FILE

DB Name: $DBNAME

TDE: $( [[ "$WALLET_STATUS" == "OPEN" ]] && echo "Y" || echo "N" )

WRL: $WRL_PRESENT

Autologon (valid for 19c.11/12c-NA): $AUTOLOGON

TBS ENCR: $TBS_ENCR

WRL BKUP: $WRL_BKUP

KEY BKUP: Y/N

CLK: $CLK_PWD

PWD Match: $PWD_MATCH

Run Date: $RUN_DATE

EOF


echo "Report saved at $REPORT_FILE"


echo "===== TDE Wallet Check Completed Successfully ====="

Comments

Popular posts from this blog

Database growth

DBA Day-2 ve

Asm