db_conn_coll.sql 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. SET ECHO OFF
  2. SET TERMOUT OFF
  3. SET DEFINE ON
  4. SET MARKUP HTML OFF
  5. SET TAB OFF
  6. SET TRIMOUT ON
  7. SET TRIMSPOOL ON
  8. SET PAGESIZE 5000
  9. SET LINESIZE 300
  10. SET SERVEROUTPUT ON
  11. SET SERVEROUTPUT UNLIMITED
  12. SET FEEDBACK OFF
  13. SET VERIFY OFF
  14. SET TERMOUT ON
  15. define EXPECTED_PDB=0
  16. define EXPECTED_PDB=&1
  17. PROMPT db_conn_coll.sql ...
  18. SET TERMOUT OFF
  19. spool temp2.sql
  20. -- Check CDB/PDB BEGIN
  21. DECLARE
  22. ERR_C NUMBER := null;
  23. ERR_M VARCHAR2(500) := '';
  24. EBS_SCHEMA VARCHAR2(100) := '';
  25. PDB_EXP_ VARCHAR2(100) := '&&EXPECTED_PDB';
  26. PDB_CRT_ VARCHAR2(100) := '&&EXPECTED_PDB';
  27. BEGIN
  28. BEGIN
  29. -- Check if this is the expected container (in CDBs)
  30. select max(sys_context('USERENV', 'CON_NAME')) C1
  31. into PDB_CRT_
  32. from V$PARAMETER
  33. where NAME = 'enable_pluggable_database'
  34. and VALUE = 'TRUE'
  35. and '&&EXPECTED_PDB' != '0';
  36. if PDB_EXP_ != nvl(PDB_CRT_, PDB_EXP_) then
  37. dbms_output.put_line('SPOOL DB_sql_' || replace(PDB_EXP_, '$', '_') || '_001.log');
  38. dbms_output.put_line('PROMPT DB: CT-02018: ERROR: Cannot connect user ' || USER || ' to PDB: ' || PDB_EXP_ || '. Still connected to ' || PDB_CRT_ || '.');
  39. dbms_output.put_line('SPOOL OFF');
  40. return;
  41. elsif PDB_CRT_ is not null then
  42. dbms_output.put_line('PROMPT Connected to PDB: ' || PDB_CRT_);
  43. end if;
  44. EXCEPTION
  45. when others then
  46. ERR_C := SQLCODE;
  47. ERR_M := SUBSTR(SQLERRM, 1 , 500);
  48. dbms_output.put_line('REM CON_NAME CHECK: SQLCODE: ' || to_char(ERR_C) || ': ' || ERR_M);
  49. END;
  50. -- Check if DB collection is needed
  51. if '~' || upper('&&SCRIPT_PRODUCTS') || '~' like '%~DB~%' then
  52. dbms_output.put_line('PROMPT Collecting database usage information with Review Lite script ...');
  53. dbms_output.put_line('@ReviewLite.sql');
  54. dbms_output.put_line('@DBAFUSExtract.sql');
  55. end if;
  56. -- Check if this is an EBS database and if EBS collection is needed
  57. BEGIN
  58. execute immediate 'select trim(min(decode(OWNER, ''APPS'', '' APPS'', OWNER))) from DBA_OBJECTS a where a.OBJECT_NAME = ''FND_PRODUCT_GROUPS'' and a.OBJECT_TYPE in (''SYNONYM'') and ''~'' || upper(''&&SCRIPT_PRODUCTS'') || ''~'' like ''%~EBS~%''' into EBS_SCHEMA;
  59. if EBS_SCHEMA is not null then
  60. dbms_output.put_line('PROMPT Collecting EBS data from SCHEMA [' || EBS_SCHEMA || '] ...');
  61. dbms_output.put_line('@EBSCollection.sql');
  62. end if;
  63. EXCEPTION
  64. when others then
  65. ERR_C := SQLCODE;
  66. ERR_M := SUBSTR(SQLERRM, 1 , 500);
  67. dbms_output.put_line('REM EBS CHECK: SQLCODE: ' || to_char(ERR_C) || ': ' || ERR_M);
  68. END;
  69. END;
  70. /
  71. spool off
  72. show errors
  73. --PROMPT SCRIPT_SI=[&&SCRIPT_SI]
  74. SET TERMOUT ON
  75. --PAUSE Press ENTER >
  76. @@temp2.sql