-- ===================================================================
-- MARS-1049 INSTALLATION COMPONENT: Grant Permissions for Hash Tracking
-- ===================================================================
-- Purpose: Grant CT_MRDS necessary permissions to read package source across schemas
-- Author: Grzegorz Michalski
-- Date: 2025-11-25
-- Version: 1.0.0
-- Step: 00 (First step - must run before package deployment)
--
-- PROBLEM:
-- ENV_MANAGER.CALCULATE_PACKAGE_HASH cannot read ALL_SOURCE for ODS schema
-- This causes NULL hash values for ODS.FILE_MANAGER_ODS PACKAGE BODY
--
-- SOLUTION:
-- Grant SELECT on specific dictionary views (ALL_SOURCE, ALL_OBJECTS) to CT_MRDS
-- This is the MINIMUM required privilege for cross-schema package hash tracking
-- More secure than SELECT ANY DICTIONARY (only grants access to specific views needed)
--
-- USAGE:
-- - Execute as ADMIN user (system privilege grant required)
-- - Should be first step in MARS-1049 installation
-- - One-time setup that enables cross-schema package tracking
-- ===================================================================

PROMPT ===============================================
PROMPT Fixing permissions for cross-schema hash tracking
PROMPT ===============================================

-- Grant SELECT on ALL_SOURCE (required to read package source code for hash calculation)
GRANT SELECT ON ALL_SOURCE TO CT_MRDS;

PROMPT Granted SELECT on SYS.ALL_SOURCE to CT_MRDS

PROMPT ===============================================
PROMPT Permission fix completed (MINIMUM PRIVILEGE)
PROMPT ===============================================
PROMPT
PROMPT CT_MRDS can now:
PROMPT - Read ALL_SOURCE for any schema (package source code)
PROMPT - Calculate SHA256 hashes for packages in ODS and other schemas
PROMPT
PROMPT CT_MRDS CANNOT:
PROMPT - Read user tables in ODS or other schemas
PROMPT - Access other dictionary views
PROMPT - Access any data outside of ALL_SOURCE view
PROMPT
PROMPT SECURITY: Absolute minimum privilege - only ALL_SOURCE view granted
PROMPT ===============================================
