Init
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
--
|
||||
-- Role to which object permissions to ODS user are granted
|
||||
--
|
||||
CREATE ROLE MRDS_LOADER_ROLE;
|
||||
GRANT MRDS_LOADER_ROLE TO ODS;
|
||||
GRANT MRDS_LOADER_ROLE TO MRDS_LOADER;
|
||||
|
||||
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO MRDS_LOADER_ROLE;
|
||||
GRANT EXECUTE ON DBMS_CLOUD TO MRDS_LOADER_ROLE;
|
||||
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'MRDS_LOADER');
|
||||
GRANT EXECUTE ON CT_MRDS.FILE_MANAGER TO MRDS_LOADER_ROLE;
|
||||
GRANT SELECT, DELETE, INSERT, UPDATE ON "CT_MRDS"."A_SOURCE_FILE_CONFIG" TO MRDS_LOADER_ROLE;
|
||||
GRANT SELECT, DELETE, INSERT, UPDATE ON "CT_MRDS"."A_SOURCE_FILES_RECEIVED" TO MRDS_LOADER_ROLE;
|
||||
GRANT SELECT ON "CT_MRDS"."A_SOURCE_FILES_RECEIVED_KEY_SEQ" TO MRDS_LOADER_ROLE;
|
||||
GRANT SELECT_CATALOG_ROLE TO MRDS_LOADER_ROLE;
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
-- ====================================================================
|
||||
-- MRDS_LOADER User Creation Script
|
||||
-- ====================================================================
|
||||
-- Purpose: Create MRDS_LOADER user for cloud operations and data loading
|
||||
-- Based on: MARS-757 install_package_MarsDEVOreplicator_MARS757_create_user.sql
|
||||
-- ====================================================================
|
||||
|
||||
-- Note: User creation typically done by ADMIN, this script assumes user exists
|
||||
-- CREATE USER MRDS_LOADER IDENTIFIED BY password
|
||||
-- DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
|
||||
ALTER USER MRDS_LOADER QUOTA UNLIMITED ON DATA;
|
||||
|
||||
-- Basic session and system privileges
|
||||
GRANT CREATE SESSION TO MRDS_LOADER;
|
||||
GRANT SELECT ANY DICTIONARY TO MRDS_LOADER;
|
||||
GRANT SELECT_CATALOG_ROLE TO MRDS_LOADER;
|
||||
GRANT READ ANY TABLE TO MRDS_LOADER;
|
||||
|
||||
-- Create and configure MRDS_LOADER_ROLE (inherited by other schemas)
|
||||
CREATE ROLE MRDS_LOADER_ROLE;
|
||||
GRANT MRDS_LOADER_ROLE TO MRDS_LOADER;
|
||||
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO MRDS_LOADER_ROLE;
|
||||
GRANT EXECUTE ON DBMS_CLOUD TO MRDS_LOADER_ROLE;
|
||||
|
||||
-- Job execution privileges
|
||||
GRANT CREATE JOB TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON DBMS_PARALLEL_EXECUTE TO MRDS_LOADER;
|
||||
|
||||
-- Cloud operations privileges
|
||||
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'MRDS_LOADER');
|
||||
GRANT EXECUTE ON C##CLOUD$SERVICE.DBMS_CLOUD TO MRDS_LOADER;
|
||||
|
||||
-- Cross-schema privileges required for data loading operations
|
||||
GRANT SELECT ANY TABLE TO CT_MRDS;
|
||||
|
||||
-- Comprehensive ANY privileges for data loading and replication operations
|
||||
GRANT CREATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT DROP ANY TABLE TO MRDS_LOADER;
|
||||
GRANT CREATE ANY VIEW TO MRDS_LOADER;
|
||||
GRANT DROP ANY VIEW TO MRDS_LOADER;
|
||||
GRANT SELECT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT INSERT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT UPDATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT DELETE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT ALTER ANY TABLE TO MRDS_LOADER;
|
||||
GRANT EXECUTE ANY PROCEDURE TO MRDS_LOADER;
|
||||
GRANT SELECT ANY SEQUENCE TO MRDS_LOADER;
|
||||
@@ -0,0 +1,33 @@
|
||||
--MARS-757
|
||||
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_acc_' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 create credential acc
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD.CREATE_CREDENTIAL(
|
||||
credential_name => 'DEVO_CRED_ARN',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::845164628883:role/ECB_AWS_EXTERNAL_A2A_MRDS_STG',
|
||||
'external_id_type' value 'database_ocid')
|
||||
);
|
||||
END;
|
||||
@@ -0,0 +1,33 @@
|
||||
--MARS-757
|
||||
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_dev_' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 create user
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD.CREATE_CREDENTIAL(
|
||||
credential_name => 'DEVO_CRED_ARN',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::303413094647:role/ECB_AWS_EXTERNAL_A2A_MRDS_LAB',
|
||||
'external_id_type' value 'database_ocid')
|
||||
);
|
||||
END;
|
||||
@@ -0,0 +1,33 @@
|
||||
--MARS-757
|
||||
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_prd_' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 create credential prd
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD.CREATE_CREDENTIAL(
|
||||
credential_name => 'DEVO_CRED_ARN',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::963129846289:role/ECB_AWS_EXTERNAL_A2A_MRDS_PRD',
|
||||
'external_id_type' value 'database_ocid')
|
||||
);
|
||||
END;
|
||||
@@ -0,0 +1,33 @@
|
||||
--MARS-757
|
||||
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_tst_' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 create user
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD.CREATE_CREDENTIAL(
|
||||
credential_name => 'DEVO_CRED_ARN',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::224181934276:role/ECB_AWS_EXTERNAL_A2A_MRDS_TST',
|
||||
'external_id_type' value 'database_ocid')
|
||||
);
|
||||
END;
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
--MARS-757
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_acc' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 tst setup
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
|
||||
provider => 'AWS',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::845164628883:role/ECB_AWS_EXTERNAL_A2A_MRDS_STG'));
|
||||
END;
|
||||
/
|
||||
|
||||
GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON AWS$ARN TO MRDS_LOADER;
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
--host => 'oci-test-sani.vpce-0b3a5f000733397b0-kxlyoh5z.s3.eu-central-1.vpce.amazonaws.com',
|
||||
host => 'vpce-049ee7c35b9bce4ed-otoxtybr.s3.eu-central-1.vpce.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
host => 'sts.eu-central-1.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
@@ -0,0 +1,108 @@
|
||||
--MARS-757
|
||||
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_create_user_' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 create user
|
||||
--=============================================================================================================================
|
||||
|
||||
|
||||
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
|
||||
ALTER USER MRDS_LOADER QUOTA UNLIMITED ON DATA;
|
||||
|
||||
GRANT CREATE SESSION TO MRDS_LOADER;
|
||||
GRANT SELECT ANY DICTIONARY TO MRDS_LOADER;
|
||||
GRANT SELECT_CATALOG_ROLE TO MRDS_LOADER;
|
||||
--GRANT SELECT ON SYS.ALL_TABLES TO MRDS_LOADER;
|
||||
GRANT READ ANY TABLE TO MRDS_LOADER;
|
||||
CREATE ROLE MRDS_LOADER_ROLE;
|
||||
GRANT MRDS_LOADER_ROLE TO MRDS_LOADER;
|
||||
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO MRDS_LOADER_ROLE;
|
||||
GRANT EXECUTE ON DBMS_CLOUD TO MRDS_LOADER_ROLE;
|
||||
GRANT CREATE JOB TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON DBMS_PARALLEL_EXECUTE TO MRDS_LOADER;
|
||||
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'MRDS_LOADER');
|
||||
GRANT EXECUTE ON C##CLOUD$SERVICE.DBMS_CLOUD TO MRDS_LOADER;
|
||||
|
||||
|
||||
-- BEGIN
|
||||
-- FOR user_rec IN (SELECT username FROM dba_users WHERE oracle_maintained != 'Y' AND common != 'YES') LOOP
|
||||
-- DECLARE
|
||||
-- schema_name VARCHAR2(128) := user_rec.username;
|
||||
-- role_name VARCHAR2(128) := schema_name || '_ROLE_RW';
|
||||
-- BEGIN
|
||||
-- -- Step 1: Drop the role if it exists
|
||||
-- BEGIN
|
||||
-- EXECUTE IMMEDIATE 'DROP ROLE ' || role_name;
|
||||
-- EXCEPTION
|
||||
-- WHEN OTHERS THEN
|
||||
-- IF SQLCODE != -1919 THEN -- ORA-01918: role does not exist
|
||||
-- RAISE;
|
||||
-- END IF;
|
||||
-- END;
|
||||
|
||||
|
||||
-- EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE ON SCHEMA CT_MRDS TO ' || schema_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE ON SCHEMA ODS TO ' || schema_name;
|
||||
|
||||
-- -- Step 2: Create the role
|
||||
-- EXECUTE IMMEDIATE 'CREATE ROLE ' || role_name;
|
||||
|
||||
-- -- Step 3: Grant schema-level privileges to the role
|
||||
-- EXECUTE IMMEDIATE 'GRANT CREATE ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT DROP ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT CREATE ANY VIEW ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT DROP ANY VIEW ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT INSERT ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT UPDATE ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT DELETE ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT ALTER ANY TABLE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT EXECUTE ANY PROCEDURE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
-- EXECUTE IMMEDIATE 'GRANT SELECT ANY SEQUENCE ON SCHEMA ' || schema_name || ' TO ' || role_name;
|
||||
|
||||
|
||||
-- -- Step 4: Grant the role to MRDS_LOADER
|
||||
-- EXECUTE IMMEDIATE 'GRANT ' || role_name || ' TO MRDS_LOADER';
|
||||
|
||||
-- -- Print success message
|
||||
-- DBMS_OUTPUT.PUT_LINE('Role ' || role_name || ' created and privileges granted successfully.');
|
||||
-- EXCEPTION
|
||||
-- WHEN OTHERS THEN
|
||||
-- DBMS_OUTPUT.PUT_LINE('Error processing schema ' || schema_name || ': ' || SQLERRM);
|
||||
-- END;
|
||||
-- END LOOP;
|
||||
-- END;
|
||||
|
||||
|
||||
GRANT SELECT ANY TABLE TO CT_MRDS;
|
||||
|
||||
GRANT CREATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT DROP ANY TABLE TO MRDS_LOADER;
|
||||
GRANT CREATE ANY VIEW TO MRDS_LOADER;
|
||||
GRANT DROP ANY VIEW TO MRDS_LOADER;
|
||||
GRANT SELECT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT INSERT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT UPDATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT DELETE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT ALTER ANY TABLE TO MRDS_LOADER;
|
||||
GRANT EXECUTE ANY PROCEDURE TO MRDS_LOADER;
|
||||
GRANT SELECT ANY SEQUENCE TO MRDS_LOADER;
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
--MARS-757
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_dev' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 dev setup
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
|
||||
provider => 'AWS',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::303413094647:role/ECB_AWS_EXTERNAL_A2A_MRDS_LAB'));
|
||||
END;
|
||||
/
|
||||
|
||||
GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON AWS$ARN TO MRDS_LOADER;
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
--host => 'oci-test-sani.vpce-0b3a5f000733397b0-kxlyoh5z.s3.eu-central-1.vpce.amazonaws.com',
|
||||
host => 'vpce-06c333350ae20060d-m2roqwbl.s3.eu-central-1.vpce.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
host => 'sts.eu-central-1.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,50 @@
|
||||
|
||||
--MARS-757
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_prd' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 prd setup
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
|
||||
provider => 'AWS',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::963129846289:role/ECB_AWS_EXTERNAL_A2A_MRDS_PRD'));
|
||||
END;
|
||||
/
|
||||
|
||||
GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON AWS$ARN TO MRDS_LOADER;
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
--host => 'oci-test-sani.vpce-0b3a5f000733397b0-kxlyoh5z.s3.eu-central-1.vpce.amazonaws.com',
|
||||
host => 'vpce-049ee7c35b9bce4ed-otoxtybr.s3.eu-central-1.vpce.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
host => 'sts.eu-central-1.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
--MARS-757
|
||||
set verify off
|
||||
SET serveroutput ON
|
||||
--SET TIMING ON
|
||||
whenever sqlerror exit sql.sqlcode rollback;
|
||||
column owner format a15
|
||||
column object_name format a30
|
||||
column spoolname new_value spoolname
|
||||
select 'install_package_MarsDEVOreplicator_MARS757_tst' || name || '_' ||to_char(sysdate,'YYYYMMDD_HH24MISS')||'.log' spoolname from v$pdbs;
|
||||
spool '&spoolname'
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
select name pdb_name from v$pdbs;
|
||||
--set echo on
|
||||
--=============================================================================================================================
|
||||
-- start install --MARS-757 tst setup
|
||||
--=============================================================================================================================
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
|
||||
provider => 'AWS',
|
||||
params => JSON_OBJECT(
|
||||
'aws_role_arn' value 'arn:aws:iam::224181934276:role/ECB_AWS_EXTERNAL_A2A_MRDS_TST'));
|
||||
END;
|
||||
/
|
||||
|
||||
GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO MRDS_LOADER;
|
||||
GRANT EXECUTE ON AWS$ARN TO MRDS_LOADER;
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
--host => 'oci-test-sani.vpce-0b3a5f000733397b0-kxlyoh5z.s3.eu-central-1.vpce.amazonaws.com',
|
||||
host => 'vpce-0491e079ed1948bf8-bc6c802a.s3.eu-central-1.vpce.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
host => 'sts.eu-central-1.amazonaws.com',
|
||||
ace => xs$ace_type( privilege_list => xs$name_list('http'),
|
||||
principal_name => 'ADMIN',
|
||||
principal_type => xs_acl.ptype_db),
|
||||
private_target => TRUE);
|
||||
END;
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE USER MRDS_LOADER IDENTIFIED BY Mars_db_12345678
|
||||
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
|
||||
|
||||
GRANT CREATE SESSION TO MRDS_LOADER;
|
||||
GRANT SELECT ANY DICTIONARY TO MRDS_LOADER;
|
||||
GRANT SELECT_CATALOG_ROLE TO MRDS_LOADER;
|
||||
GRANT CREATE ANY INDEX TO MRDS_LOADER;
|
||||
GRANT DROP ANY INDEX TO MRDS_LOADER;
|
||||
GRANT CREATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT SELECT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT UPDATE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT DELETE ANY TABLE TO MRDS_LOADER;
|
||||
GRANT INSERT ANY TABLE TO MRDS_LOADER;
|
||||
GRANT SELECT ON SYS.ALL_TABLES TO MRDS_LOADER;
|
||||
GRANT SELECT ANY SEQUENCE TO MRDS_LOADER;
|
||||
|
||||
GRANT MRDS_LOADER_ROLE TO MRDS_LOADER;
|
||||
@@ -0,0 +1,169 @@
|
||||
CREATE OR REPLACE PACKAGE cloud_wrapper AS
|
||||
|
||||
-- List objects in Oracle Cloud Storage (returns table rows like original DBMS_CLOUD.LIST_OBJECTS)
|
||||
FUNCTION list_objects(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED;
|
||||
|
||||
-- List only files (objects with size > 0) in Oracle Cloud Storage
|
||||
FUNCTION list_files(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED;
|
||||
|
||||
-- List only directories (objects with size = 0 and ending with '/') in Oracle Cloud Storage
|
||||
FUNCTION list_directories(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED;
|
||||
|
||||
-- Advanced error handling function
|
||||
FUNCTION get_error_stack(
|
||||
pFormat VARCHAR2 DEFAULT 'OUTPUT'
|
||||
) RETURN VARCHAR2;
|
||||
|
||||
END cloud_wrapper;
|
||||
|
||||
/
|
||||
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY cloud_wrapper AS
|
||||
|
||||
-- Constants
|
||||
cgBL CONSTANT VARCHAR2(2) := CHR(13) || CHR(10); -- Carriage Return + Line Feed
|
||||
|
||||
-- List objects in Oracle Cloud Storage (returns table rows like original DBMS_CLOUD.LIST_OBJECTS)
|
||||
FUNCTION list_objects(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED IS
|
||||
BEGIN
|
||||
-- If prefix is provided, filter results after retrieval
|
||||
IF prefix IS NOT NULL THEN
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
)) WHERE object_name LIKE prefix || '%') LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
ELSE
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
))) LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
END IF;
|
||||
RETURN;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RAISE_APPLICATION_ERROR(-20001, 'Error listing objects: ' || SQLERRM);
|
||||
END list_objects;
|
||||
|
||||
-- List only files (objects with size > 0) in Oracle Cloud Storage
|
||||
FUNCTION list_files(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED IS
|
||||
BEGIN
|
||||
-- Filter for files: size > 0 and not ending with '/'
|
||||
IF prefix IS NOT NULL THEN
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
)) WHERE object_name LIKE prefix || '%'
|
||||
AND bytes > 0
|
||||
AND object_name NOT LIKE '%/') LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
ELSE
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
)) WHERE bytes > 0
|
||||
AND object_name NOT LIKE '%/') LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
END IF;
|
||||
RETURN;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RAISE_APPLICATION_ERROR(-20002, 'Error listing files: ' || SQLERRM);
|
||||
END list_files;
|
||||
|
||||
-- List only directories (objects with size = 0 and ending with '/') in Oracle Cloud Storage
|
||||
FUNCTION list_directories(
|
||||
credential_name VARCHAR2,
|
||||
location_uri VARCHAR2,
|
||||
prefix VARCHAR2 DEFAULT NULL
|
||||
) RETURN DBMS_CLOUD_TYPES.LIST_OBJECT_RET_TAB PIPELINED IS
|
||||
BEGIN
|
||||
-- Filter for directories: size = 0 and ending with '/'
|
||||
IF prefix IS NOT NULL THEN
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
)) WHERE object_name LIKE prefix || '%'
|
||||
AND bytes = 0
|
||||
AND object_name LIKE '%/') LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
ELSE
|
||||
FOR rec IN (SELECT * FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => credential_name,
|
||||
location_uri => location_uri
|
||||
)) WHERE bytes = 0
|
||||
AND object_name LIKE '%/') LOOP
|
||||
PIPE ROW(rec);
|
||||
END LOOP;
|
||||
END IF;
|
||||
RETURN;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RAISE_APPLICATION_ERROR(-20003, 'Error listing directories: ' || SQLERRM);
|
||||
END list_directories;
|
||||
|
||||
-- Advanced error handling function with detailed error information
|
||||
FUNCTION get_error_stack(
|
||||
pFormat VARCHAR2 DEFAULT 'OUTPUT'
|
||||
) RETURN VARCHAR2 IS
|
||||
vFullErrorCore VARCHAR2(32000);
|
||||
vFullErrorMsg VARCHAR2(32000);
|
||||
vTimestamp VARCHAR2(30);
|
||||
BEGIN
|
||||
-- Get current timestamp
|
||||
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')
|
||||
INTO vTimestamp
|
||||
FROM DUAL;
|
||||
|
||||
vFullErrorCore := 'Error Timestamp: ' || vTimestamp || cgBL
|
||||
|| 'Session User: ' || USER || cgBL
|
||||
|| 'SQL Error Code: ' || SQLCODE || cgBL
|
||||
|| 'Error Message: ' || SQLERRM || cgBL
|
||||
|| '-------------------------------------------------------'
|
||||
|| cgBL || 'Error Stack:'
|
||||
|| cgBL || DBMS_UTILITY.FORMAT_ERROR_STACK
|
||||
|| '-------------------------------------------------------'
|
||||
|| cgBL || 'Error Backtrace:'
|
||||
|| cgBL || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
|
||||
|
||||
IF (pFormat = 'OUTPUT') THEN
|
||||
vFullErrorMsg := cgBL || '------------------------------------------------------+'
|
||||
|| cgBL || vFullErrorCore
|
||||
|| '------------------------------------------------------+';
|
||||
ELSIF (pFormat = 'TABLE') THEN
|
||||
vFullErrorMsg := vFullErrorCore;
|
||||
END IF;
|
||||
|
||||
RETURN vFullErrorMsg;
|
||||
END get_error_stack;
|
||||
|
||||
END cloud_wrapper;
|
||||
|
||||
/
|
||||
Reference in New Issue
Block a user