A Annexure
01_Start_Upgrade.sql
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade initiation
SPOOL "&SPOOL_PATH"
DECLARE
l_app_name VARCHAR2(128);
l_app_currver VARCHAR2(30);
l_Sql VARCHAR2(256);
BEGIN
BEGIN
SELECT app_name
INTO l_app_name
FROM dba_applications
WHERE app_implicit <> 'Y'
AND app_name = (SELECT param_val FROM cstb_param WHERE Param_name = 'MULTI_TENANT_APP_NAME');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error1 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error1 others--->'||SQLERRM);
END;
BEGIN
SELECT MAX(app_version)
INTO l_app_currver
FROM dba_app_versions
WHERE app_name = l_app_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error2 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error2 others--->'||SQLERRM);
END;
l_Sql := 'ALTER PLUGGABLE DATABASE APPLICATION ' || l_app_name||' BEGIN UPGRADE '''|| l_app_currver || ''' TO '''|| '&P_APPLICATION_NEXTVER' ||'''';
dbms_output.put_line('l_sql: ' || l_Sql);
EXECUTE IMMEDIATE l_Sql;
l_Sql := 'ALTER SYSTEM SET DEFAULT_SHARING = NONE';
dbms_output.put_line('l_sql: ' || l_Sql);
EXECUTE IMMEDIATE l_Sql;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
03_Invalids_Recompilation_Inside_Upgrade.sql
/* Script for Shared Application + Shared Data */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade Invalids Recompilation
SPOOL "&SPOOL_PATH"
DECLARE
inval_cnt NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt < 3 LOOP
--SCRIPT
FOR J IN (Select 'alter ' || object_type || ' ' || object_name ||' compile' invalidobject1,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NOT NULL
AND object_type IN ('VIEW','SYNONYM','PROCEDURE','FUNCTION','PACKAGE','TRIGGER','MATERIALIZED VIEW'))
LOOP
BEGIN
l_object_name := j.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE J.invalidobject1;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('failed for -->' || l_object_name);
END;
END LOOP;
inval_cnt := inval_cnt + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
DECLARE
inval_cnt1 NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt1 < 3 LOOP
--SCRIPT
FOR k IN (Select 'alter package '|| object_name||' compile body' invalidobject2,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NOT NULL
AND object_type IN ('PACKAGE BODY'))
LOOP
BEGIN
l_object_name := k.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE k.invalidobject2;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
END LOOP;
inval_cnt1 := inval_cnt1 + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
select count(*) From user_objects Where status = 'INVALID';
SET ERRORLOGGING OFF
SPOOL OFF
04_End_Upgrade.sql
/* Pre-requisites: Step 3 on Application associated pdb creation is completed */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application end Upgrade
SPOOL "&SPOOL_PATH"
DECLARE
l_app_name VARCHAR2(128);
l_sql VARCHAR2(256);
BEGIN
BEGIN
SELECT app_name
INTO l_app_name
FROM dba_applications
WHERE app_implicit <> 'Y'
AND app_name = (SELECT param_val FROM cstb_param WHERE param_name = 'MULTI_TENANT_APP_NAME');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error1 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error1 others--->'||SQLERRM);
END;
l_sql := 'ALTER PLUGGABLE DATABASE APPLICATION ' || l_app_name||' END UPGRADE ';
dbms_output.put_line('l_sql: ' || l_sql);
EXECUTE IMMEDIATE l_sql;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
04_Invalids_Recompilation_Outside_Upgrade.sql
/* Script for Shared Application + Shared Data */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade Invalids Recompilation
SPOOL "&SPOOL_PATH"
DECLARE
inval_cnt NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt < 3 LOOP
--SCRIPT
FOR J IN (Select 'alter ' || object_type || ' ' || object_name ||' compile' invalidobject1,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NULL
AND object_type IN ('VIEW','SYNONYM','PROCEDURE','FUNCTION','PACKAGE','TRIGGER','MATERIALIZED VIEW'))
LOOP
BEGIN
l_object_name := j.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE J.invalidobject1;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('failed for -->' || l_object_name);
END;
END LOOP;
inval_cnt := inval_cnt + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
DECLARE
inval_cnt1 NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt1 < 3 LOOP
--SCRIPT
FOR k IN (Select 'alter package '|| object_name||' compile body' invalidobject2,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NULL
AND object_type IN ('PACKAGE BODY'))
LOOP
BEGIN
l_object_name := k.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE k.invalidobject2;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
END LOOP;
inval_cnt1 := inval_cnt1 + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
select count(*) From user_objects Where status = 'INVALID';
SET ERRORLOGGING OFF
SPOOL OFF
05_Start_Upgrade.sql
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade initiation
SPOOL "&SPOOL_PATH"
DECLARE
l_app_name VARCHAR2(128);
l_app_currver VARCHAR2(30);
l_Sql VARCHAR2(256);
BEGIN
BEGIN
SELECT app_name
INTO l_app_name
FROM dba_applications
WHERE app_implicit <> 'Y'
AND app_name = (SELECT param_val FROM cstb_param WHERE Param_name = 'MULTI_TENANT_APP_NAME');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error1 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error1 others--->'||SQLERRM);
END;
BEGIN
SELECT MAX(app_version)
INTO l_app_currver
FROM dba_app_versions
WHERE app_name = l_app_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error2 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error2 others--->'||SQLERRM);
END;
l_Sql := 'ALTER PLUGGABLE DATABASE APPLICATION ' || l_app_name||' BEGIN UPGRADE '''|| l_app_currver || ''' TO '''|| '&P_APPLICATION_NEXTVER' ||'''';
dbms_output.put_line('l_sql: ' || l_Sql);
EXECUTE IMMEDIATE l_Sql;
l_Sql := 'ALTER SYSTEM SET DEFAULT_SHARING = NONE';
dbms_output.put_line('l_sql: ' || l_Sql);
EXECUTE IMMEDIATE l_Sql;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
06_New_Object_Conversion.sql
/* Script for Shared Object Conversion for patch-set */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Upgrade New object Conversion
SPOOL "&SPOOL_PATH"
DECLARE
l_count NUMBER;
l_app_deployment VARCHAR2(30);
BEGIN
SELECT count(*)
INTO l_count
FROM user_objects
WHERE sharing = 'NONE' --to get the new set of DL approot objects if any
AND object_name IN
(SELECT DISTINCT a.object_name
FROM cstm_approot_objects a
WHERE sharing = 'DL'
AND UPPER(object_type) = 'TABLE'
AND EXISTS (SELECT 1
FROM user_objects b
WHERE b.object_name = a.object_name)
AND EXISTS (SELECT 1
FROM cstm_approot_functions_menu c
WHERE c.function_id = a.function_id
AND c.modifiable IN ('Y', 'S')));
dbms_output.put_line('l_count: ' || l_count);
IF l_count > 0 THEN
dbms_output.put_line('New DL objects are available');
SELECT param_val
INTO l_app_deployment
FROM cstb_param
WHERE param_name = 'MULTI_TENANT_DEPLOYMENT_MODEL';
dbms_output.put_line('l_app_deployment: '||l_app_deployment);
IF l_app_deployment IS NOT NULL AND l_app_deployment = 'SAUA' THEN
UPDATE smtb_menu menu
SET menu.approot_flg = 'Y'
WHERE menu.function_id IN
(SELECT function_id
FROM cstm_approot_functions_menu
WHERE modifiable = 'S'
UNION
SELECT summary_fn_id
FROM cstm_approot_functions_menu
WHERE modifiable = 'S'
AND summary_fn_id IS NOT NULL) --SMS function id 'S'
AND menu.approot_flg <> 'Y'; --excluding the already modified approot function ids in menu.
ELSIF l_app_deployment IS NOT NULL AND l_app_deployment = 'SASDD' THEN
UPDATE smtb_menu menu
SET menu.approot_flg = 'Y'
WHERE menu.function_id IN
(SELECT function_id
FROM cstm_approot_functions_menu
UNION
SELECT summary_fn_id
FROM cstm_approot_functions_menu
WHERE summary_fn_id IS NOT NULL)
AND menu.approot_flg <> 'Y'; --excluding the already modified approot function ids in menu.
ELSIF l_app_deployment IS NOT NULL AND l_app_deployment = 'SASDC' THEN
/*Assumption new table cstm_approot_menu_custom_movedtopdb will be available
and is populated with the function ids which are moved to PDB as part of custom deployment
It has 2 columns FUNCTION_ID and SUMMARY_FN_ID*/
UPDATE smtb_menu menu
SET menu.approot_flg = 'Y'
WHERE menu.function_id IN
(SELECT function_id
FROM cstm_approot_functions_menu
UNION
SELECT summary_fn_id
FROM cstm_approot_functions_menu
WHERE summary_fn_id IS NOT NULL)
AND menu.function_id NOT IN --excluding the function ids moved to PDB already.
(SELECT function_id
FROM cstm_approot_menu_movedtopdb
UNION
SELECT summary_fn_id
FROM cstm_approot_menu_movedtopdb
WHERE summary_fn_id IS NOT NULL)
AND menu.approot_flg <> 'Y'; --excluding the already modified approot function ids in menu.
END IF;
BEGIN
FOR I IN (SELECT 'BEGIN ' || chr(10) ||
'DBMS_PDB.SET_DATA_LINKED(''&P_APPROOT_USER''' || ',''' ||
Object_Name || ''',' || Namespace || '); ' || chr(10) ||
'EXCEPTION ' || chr(10) ||
'WHEN OTHERS THEN ' || chr(10) ||
'DBMS_OUTPUT.PUT_LINE(''ERROR ->''|| SQLERRM); ' ||
chr(10) || 'END;' sqlobject
FROM user_objects
WHERE sharing = 'NONE' --to get the new set of DL approot objects if any
AND object_name IN
(SELECT DISTINCT a.object_name
FROM cstm_approot_objects a
WHERE sharing = 'DL'
AND UPPER(object_type) = 'TABLE'
AND EXISTS (SELECT 1
FROM user_objects b
WHERE b.object_name = a.object_name)
AND EXISTS
(SELECT 1
FROM cstm_approot_functions_menu c
WHERE c.function_id = a.function_id
AND c.modifiable IN ('Y', 'S')))) LOOP
DBMS_OUTPUT.PUT_LINE(chr(10));
EXECUTE IMMEDIATE I.sqlobject;
DBMS_OUTPUT.PUT_LINE(I.sqlobject);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error --->' || SQLERRM);
END;
ELSE
dbms_output.put_line('No new DL objects available');
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
07_Object_Conversion.sql
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Upgrade object conversion
SPOOL "&SPOOL_PATH"
BEGIN
FOR I IN (SELECT 'BEGIN ' || chr(10) ||
'DBMS_PDB.SET_METADATA_LINKED(''&P_APPROOT_USER''' || ',''' ||
Object_Name || ''',' || Namespace || '); ' || chr(10) ||
'EXCEPTION ' || chr(10) || 'WHEN OTHERS then ' || chr(10) ||
'DBMS_OUTPUT.PUT_LINE(''ERROR ->''|| SQLERRM); ' ||
chr(10) || 'END;' sqlobject
FROM user_objects
WHERE sharing = 'NONE'
AND object_type NOT IN ('INDEX', 'LOB', 'TABLE PARTITION','SEQUENCE','JOB','MATERIALIZED VIEW','MATERIALIZED VIEW LOG')
AND application = 'Y'
AND (object_name,object_type) NOT IN (SELECT object_name,object_type
FROM cstm_approot_objects
WHERE function_id = 'DYNAMIC'
AND sharing = 'NONE'
)
) LOOP
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE I.sqlobject;
dbms_output.put_line(I.sqlobject);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
08_Invalids_Recompilation_Inside_Upgrade.sql
/* Script for Shared Application + Shared Data */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade Invalids Recompilation
SPOOL "&SPOOL_PATH"
DECLARE
inval_cnt NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt < 3 LOOP
--SCRIPT
FOR J IN (Select 'alter ' || object_type || ' ' || object_name ||' compile' invalidobject1,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NOT NULL
AND object_type IN ('VIEW','SYNONYM','PROCEDURE','FUNCTION','PACKAGE','TRIGGER','MATERIALIZED VIEW'))
LOOP
BEGIN
l_object_name := j.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE J.invalidobject1;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('failed for -->' || l_object_name);
END;
END LOOP;
inval_cnt := inval_cnt + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
DECLARE
inval_cnt1 NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt1 < 3 LOOP
--SCRIPT
FOR k IN (Select 'alter package '|| object_name||' compile body' invalidobject2,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NOT NULL
AND object_type IN ('PACKAGE BODY'))
LOOP
BEGIN
l_object_name := k.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE k.invalidobject2;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
END LOOP;
inval_cnt1 := inval_cnt1 + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
select count(*) From user_objects Where status = 'INVALID';
SET ERRORLOGGING OFF
SPOOL OFF
09_End_Upgrade.sql
/* Pre-requisites: Step 3 on Application associated pdb creation is completed */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application end Upgrade
SPOOL "&SPOOL_PATH"
DECLARE
l_app_name VARCHAR2(128);
l_sql VARCHAR2(256);
BEGIN
BEGIN
SELECT app_name
INTO l_app_name
FROM dba_applications
WHERE app_implicit <> 'Y'
AND app_name = (SELECT param_val FROM cstb_param WHERE param_name = 'MULTI_TENANT_APP_NAME');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error1 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error1 others--->'||SQLERRM);
END;
l_sql := 'ALTER PLUGGABLE DATABASE APPLICATION ' || l_app_name||' END UPGRADE ';
dbms_output.put_line('l_sql: ' || l_sql);
EXECUTE IMMEDIATE l_sql;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF
09_Invalids_Recompilation_Outside_Upgrade.sql
/* Script for Shared Application + Shared Data */
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application Upgrade Invalids Recompilation
SPOOL "&SPOOL_PATH"
DECLARE
inval_cnt NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt < 3 LOOP
--SCRIPT
FOR J IN (Select 'alter ' || object_type || ' ' || object_name ||' compile' invalidobject1,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NULL
AND object_type IN ('VIEW','SYNONYM','PROCEDURE','FUNCTION','PACKAGE','TRIGGER','MATERIALIZED VIEW'))
LOOP
BEGIN
l_object_name := j.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE J.invalidobject1;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('failed for -->' || l_object_name);
END;
END LOOP;
inval_cnt := inval_cnt + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
DECLARE
inval_cnt1 NUMBER := 0;
l_object_name VARCHAR2(240);
BEGIN
WHILE inval_cnt1 < 3 LOOP
--SCRIPT
FOR k IN (Select 'alter package '|| object_name||' compile body' invalidobject2,
object_name
FROM user_objects
WHERE status = 'INVALID'
AND created_appid IS NULL
AND object_type IN ('PACKAGE BODY'))
LOOP
BEGIN
l_object_name := k.object_name;
dbms_output.put_line(chr(10));
EXECUTE IMMEDIATE k.invalidobject2;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
END LOOP;
inval_cnt1 := inval_cnt1 + 1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FAILED FOR -->' || l_object_name);
END;
/
select count(*) From user_objects Where status = 'INVALID';
SET ERRORLOGGING OFF
SPOOL OFF
10_PDB_Sync.sql
SET VERIFY ON
SET HEAD ON
SET FEEDBACK 1
SET ARRAY 1
SET LINESIZE 10000
SET PAGESIZE 50000
SET LONG 10000
SET ECHO ON
SET TRIMSPOOL ON
SET COLSEP ';'
SET SERVEROUT OFF
clear screen
SPOOL ON
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
SET ERRORLOGGING ON
SET ECHO ON
prompt Welcome to Application PDB Sync
SPOOL "&SPOOL_PATH"
DECLARE
l_app_name VARCHAR2(128);
l_sql VARCHAR2(256);
BEGIN
BEGIN
SELECT app_name
INTO l_app_name
FROM dba_applications
WHERE app_implicit <> 'Y';
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error1 Nodata--->'||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error1 others--->'||SQLERRM);
END;
l_sql := 'ALTER PLUGGABLE DATABASE APPLICATION ' || l_app_name||' SYNC ';
dbms_output.put_line('l_sql: ' || l_sql);
EXECUTE IMMEDIATE l_sql;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error --->'||SQLERRM);
END;
/
SET ERRORLOGGING OFF
SPOOL OFF