Compare commits
2 Commits
2b116c0256
...
cafa30f8f3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cafa30f8f3 | ||
|
|
a0f4146a24 |
@@ -2000,7 +2000,6 @@ AS
|
|||||||
vOdsPrefix VARCHAR2(500);
|
vOdsPrefix VARCHAR2(500);
|
||||||
vArchivePrefix VARCHAR2(500);
|
vArchivePrefix VARCHAR2(500);
|
||||||
|
|
||||||
vTableExists NUMBER;
|
|
||||||
vParameters VARCHAR2(4000);
|
vParameters VARCHAR2(4000);
|
||||||
vAreaUpper VARCHAR2(20);
|
vAreaUpper VARCHAR2(20);
|
||||||
|
|
||||||
@@ -2011,14 +2010,14 @@ AS
|
|||||||
|
|
||||||
SELECT grantee, privilege, grantable
|
SELECT grantee, privilege, grantable
|
||||||
BULK COLLECT INTO pGrantList
|
BULK COLLECT INTO pGrantList
|
||||||
FROM DBA_TAB_PRIVS
|
FROM ALL_TAB_PRIVS
|
||||||
WHERE owner = 'ODS'
|
WHERE table_schema = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')
|
||||||
AND table_name = pTableName
|
AND table_name = pTableName
|
||||||
AND grantee NOT IN ('SYS', 'SYSTEM', 'PUBLIC') -- Exclude system accounts
|
AND grantee NOT IN ('SYS', 'SYSTEM', 'PUBLIC') -- Exclude system accounts
|
||||||
ORDER BY grantee, privilege;
|
ORDER BY grantee, privilege;
|
||||||
|
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT(
|
ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
'Saved ' || pGrantList.COUNT || ' grants for table: ODS.' || pTableName,
|
'Saved ' || pGrantList.COUNT || ' grants for table: ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName,
|
||||||
'INFO'
|
'INFO'
|
||||||
);
|
);
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
@@ -2055,7 +2054,7 @@ AS
|
|||||||
FOR i IN 1..pGrantList.COUNT LOOP
|
FOR i IN 1..pGrantList.COUNT LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
vGrantSQL := 'GRANT ' || pGrantList(i).privilege ||
|
vGrantSQL := 'GRANT ' || pGrantList(i).privilege ||
|
||||||
' ON ODS.' || pTableName ||
|
' ON ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName ||
|
||||||
' TO ' || pGrantList(i).grantee;
|
' TO ' || pGrantList(i).grantee;
|
||||||
|
|
||||||
IF pGrantList(i).grantable = 'YES' THEN
|
IF pGrantList(i).grantable = 'YES' THEN
|
||||||
@@ -2084,7 +2083,7 @@ AS
|
|||||||
|
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT(
|
ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
'Restored ' || vGrantCount || ' of ' || pGrantList.COUNT ||
|
'Restored ' || vGrantCount || ' of ' || pGrantList.COUNT ||
|
||||||
' grants for table: ODS.' || pTableName ||
|
' grants for table: ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName ||
|
||||||
CASE WHEN vFailCount > 0 THEN ' (' || vFailCount || ' failed)' ELSE '' END,
|
CASE WHEN vFailCount > 0 THEN ' (' || vFailCount || ' failed)' ELSE '' END,
|
||||||
'INFO'
|
'INFO'
|
||||||
);
|
);
|
||||||
@@ -2092,17 +2091,17 @@ AS
|
|||||||
|
|
||||||
PROCEDURE DROP_IF_EXISTS(pTableName VARCHAR2) IS
|
PROCEDURE DROP_IF_EXISTS(pTableName VARCHAR2) IS
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT COUNT(*) INTO vTableExists
|
ENV_MANAGER.LOG_PROCESS_EVENT('Attempting to drop table: ' || pTableName, 'DEBUG');
|
||||||
FROM ALL_TABLES
|
EXECUTE IMMEDIATE 'DROP TABLE ' || SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || pTableName;
|
||||||
WHERE OWNER = 'ODS' AND TABLE_NAME = pTableName;
|
ENV_MANAGER.LOG_PROCESS_EVENT('Table dropped successfully: ' || pTableName, 'INFO');
|
||||||
|
|
||||||
IF vTableExists > 0 THEN
|
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT('Dropping existing table: ' || pTableName, 'INFO');
|
|
||||||
EXECUTE IMMEDIATE 'DROP TABLE ODS.' || pTableName;
|
|
||||||
END IF;
|
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
|
IF SQLCODE = -942 THEN -- ORA-00942: table or view does not exist
|
||||||
|
ENV_MANAGER.LOG_PROCESS_EVENT('Table does not exist, skipping drop: ' || pTableName, 'INFO');
|
||||||
|
ELSE
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT('Error dropping table ' || pTableName || ': ' || SQLERRM, 'WARNING');
|
ENV_MANAGER.LOG_PROCESS_EVENT('Error dropping table ' || pTableName || ': ' || SQLERRM, 'WARNING');
|
||||||
|
RAISE; -- Re-raise if not "table not exists" error
|
||||||
|
END IF;
|
||||||
END DROP_IF_EXISTS;
|
END DROP_IF_EXISTS;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|||||||
Reference in New Issue
Block a user