- Complete PDB export/import workflow (16 scripts in clienti/oracle-xe-21c/import/) - Recreare PDB script with step-by-step guide (recreare_pdb.sql) - Universal audit cleanup script for Oracle XE 11g-21c (cleanup_audit.sql) - Troubleshooting guide with all lessons learned (depanare-ora-12954-spatiu.md) - Fixed: DIRECTORY grant syntax, DBMS_LOCK grant, remap_tablespace USERS:ROA, impdp quoted AS SYSDBA for Windows, AWR retention 8 days, datafile full path - Updated roa-windows-setup docs with XE prevention steps and gotchas table Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
237 lines
7.6 KiB
SQL
237 lines
7.6 KiB
SQL
-- ============================================================
|
|
-- EXPORT COMPLET PDB XEPDB1 - Oracle XE 21c
|
|
-- Scop: backup inainte de recreare PDB pentru recuperare spatiu
|
|
-- Rulat ca SYS AS SYSDBA conectat la PDB (XEPDB1)
|
|
-- ============================================================
|
|
-- NOTA: Inainte de rulare, asigura-te ca directorul C:\DMPDIR exista
|
|
-- si ca DMPDIR e definit: CREATE OR REPLACE DIRECTORY DMPDIR AS 'C:\DMPDIR';
|
|
-- ============================================================
|
|
|
|
SET ECHO ON
|
|
SET FEEDBACK ON
|
|
SET LONG 100000
|
|
SET LONGCHUNKSIZE 100000
|
|
SET PAGESIZE 0
|
|
SET LINESIZE 300
|
|
SET TRIMSPOOL ON
|
|
SET HEADING OFF
|
|
SET VERIFY OFF
|
|
SET SERVEROUTPUT ON SIZE UNLIMITED
|
|
|
|
-- ============================================================
|
|
-- PASUL 1: Export scheme cu Data Pump (ruleaza separat din CMD)
|
|
-- ============================================================
|
|
-- expdp \"sys/parola@XEPDB1 AS SYSDBA\" schemas=CONTAFIN_ORACLE,FIRMA directory=DMPDIR dumpfile=schemas_export.dmp logfile=schemas_export.log
|
|
-- expdp \"sys/parola@XEPDB1 AS SYSDBA\" tables=SYS.AUTH_SERII,SYS.AUTH_DETALII,SYS.INFO directory=DMPDIR dumpfile=sys_tables.dmp logfile=sys_tables_export.log
|
|
|
|
-- ============================================================
|
|
-- PASUL 2: Export sinonime publice
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\02_sinonime_publice.sql
|
|
|
|
SELECT 'CREATE PUBLIC SYNONYM ' || synonym_name || ' FOR ' ||
|
|
table_owner || '.' || table_name || ';'
|
|
FROM dba_synonyms
|
|
WHERE owner = 'PUBLIC'
|
|
AND table_owner IN ('CONTAFIN_ORACLE', 'FIRMA')
|
|
ORDER BY synonym_name;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 3: Export grant-uri
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\03_granturi.sql
|
|
|
|
-- 3a. Grant-uri pe obiecte SYS catre schemele aplicatiei
|
|
SELECT 'GRANT ' || privilege || ' ON ' || owner || '.' || table_name ||
|
|
' TO ' || grantee || ';'
|
|
FROM dba_tab_privs
|
|
WHERE (grantee IN ('CONTAFIN_ORACLE', 'FIRMA')
|
|
AND owner = 'SYS')
|
|
ORDER BY grantee, table_name;
|
|
|
|
-- 3b. Grant-uri de la schemele aplicatiei catre PUBLIC
|
|
SELECT 'GRANT ' || privilege || ' ON ' || owner || '.' || table_name ||
|
|
' TO ' || grantee || ';'
|
|
FROM dba_tab_privs
|
|
WHERE grantor IN ('CONTAFIN_ORACLE', 'FIRMA')
|
|
ORDER BY grantee, owner, table_name;
|
|
|
|
-- 3c. System privileges
|
|
SELECT 'GRANT ' || privilege || ' TO ' || grantee || ';'
|
|
FROM dba_sys_privs
|
|
WHERE grantee IN ('CONTAFIN_ORACLE', 'FIRMA')
|
|
ORDER BY grantee, privilege;
|
|
|
|
-- 3d. Role privileges
|
|
SELECT 'GRANT ' || granted_role || ' TO ' || grantee || ';'
|
|
FROM dba_role_privs
|
|
WHERE grantee IN ('CONTAFIN_ORACLE', 'FIRMA')
|
|
ORDER BY grantee, granted_role;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 4: Export DIRECTORY-uri custom
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\04_directories.sql
|
|
|
|
SELECT 'CREATE OR REPLACE DIRECTORY ' || directory_name ||
|
|
' AS ''' || directory_path || ''';'
|
|
FROM dba_directories
|
|
WHERE origin_con_id != 1
|
|
ORDER BY directory_name;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 5: Export proceduri, functii, pachete SYS custom
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\05_sys_code_objects.sql
|
|
|
|
-- Packages (include si body automat)
|
|
PROMPT -- PACKAGES
|
|
SELECT DBMS_METADATA.GET_DDL('PACKAGE', object_name, 'SYS')
|
|
FROM dba_objects
|
|
WHERE owner = 'SYS' AND oracle_maintained = 'N'
|
|
AND object_type = 'PACKAGE'
|
|
AND object_name NOT LIKE 'KUPC%'
|
|
AND object_name NOT LIKE 'AQ$%';
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
-- Proceduri
|
|
PROMPT -- PROCEDURES
|
|
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', object_name, 'SYS')
|
|
FROM dba_objects
|
|
WHERE owner = 'SYS' AND oracle_maintained = 'N'
|
|
AND object_type = 'PROCEDURE'
|
|
AND object_name NOT LIKE 'KUPC%'
|
|
AND object_name NOT LIKE 'AQ$%';
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
-- Functii
|
|
PROMPT -- FUNCTIONS
|
|
SELECT DBMS_METADATA.GET_DDL('FUNCTION', object_name, 'SYS')
|
|
FROM dba_objects
|
|
WHERE owner = 'SYS' AND oracle_maintained = 'N'
|
|
AND object_type = 'FUNCTION'
|
|
AND object_name NOT LIKE 'KUPC%'
|
|
AND object_name NOT LIKE 'AQ$%';
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 6: Export tabele custom SYS (structura)
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\06_sys_tables.sql
|
|
|
|
SELECT DBMS_METADATA.GET_DDL('TABLE', object_name, 'SYS')
|
|
FROM dba_objects
|
|
WHERE owner = 'SYS' AND oracle_maintained = 'N'
|
|
AND object_type = 'TABLE'
|
|
AND object_name IN ('AUTH_SERII', 'AUTH_DETALII', 'INFO');
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
-- Sequence
|
|
SELECT DBMS_METADATA.GET_DDL('SEQUENCE', 'SEQ_AUTH_SERII', 'SYS') FROM dual;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
-- Index custom
|
|
SELECT DBMS_METADATA.GET_DDL('INDEX', 'PK_AUTH_SERII', 'SYS') FROM dual;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 7: Export VIEW-uri custom SYS
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\07_sys_views.sql
|
|
|
|
SELECT DBMS_METADATA.GET_DDL('VIEW', 'VAUTH_SERII', 'SYS') FROM dual;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 8: Export TRIGGER-uri custom SYS
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\08_sys_triggers.sql
|
|
|
|
SELECT DBMS_METADATA.GET_DDL('TRIGGER', 'LOGON_AUDIT_TRIGGER', 'SYS') FROM dual;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 9: Export CONTEXT
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\09_context.sql
|
|
|
|
SELECT DBMS_METADATA.GET_DDL('CONTEXT', 'SESIUNE') FROM dual;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 10: Export useri si profile
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\10_useri.sql
|
|
|
|
SELECT DBMS_METADATA.GET_DDL('USER', username)
|
|
FROM dba_users
|
|
WHERE oracle_maintained = 'N'
|
|
AND username NOT IN ('PDBADMIN')
|
|
ORDER BY username;
|
|
|
|
SELECT '/' FROM dual;
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- PASUL 11: Export tablespace-uri custom
|
|
-- ============================================================
|
|
SPOOL C:\DMPDIR\11_tablespaces.sql
|
|
|
|
SELECT 'CREATE TABLESPACE ' || tablespace_name ||
|
|
' DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 4G;'
|
|
FROM dba_tablespaces
|
|
WHERE tablespace_name NOT IN ('SYSTEM', 'SYSAUX', 'UNDOTBS1', 'TEMP', 'USERS')
|
|
AND contents = 'PERMANENT';
|
|
|
|
SPOOL OFF
|
|
|
|
-- ============================================================
|
|
-- REZUMAT FISIERE GENERATE
|
|
-- ============================================================
|
|
PROMPT
|
|
PROMPT =============================================
|
|
PROMPT EXPORT COMPLET - FISIERE GENERATE
|
|
PROMPT =============================================
|
|
PROMPT C:\DMPDIR\02_sinonime_publice.sql
|
|
PROMPT C:\DMPDIR\03_granturi.sql
|
|
PROMPT C:\DMPDIR\04_directories.sql
|
|
PROMPT C:\DMPDIR\05_sys_code_objects.sql
|
|
PROMPT C:\DMPDIR\06_sys_tables.sql
|
|
PROMPT C:\DMPDIR\07_sys_views.sql
|
|
PROMPT C:\DMPDIR\08_sys_triggers.sql
|
|
PROMPT C:\DMPDIR\09_context.sql
|
|
PROMPT C:\DMPDIR\10_useri.sql
|
|
PROMPT C:\DMPDIR\11_tablespaces.sql
|
|
PROMPT =============================================
|
|
PROMPT
|
|
PROMPT NU UITA sa rulezi si Data Pump SEPARAT:
|
|
PROMPT expdp \"sys/parola@XEPDB1 AS SYSDBA\" schemas=CONTAFIN_ORACLE,FIRMA directory=DMPDIR dumpfile=schemas_export.dmp logfile=schemas_export.log
|
|
PROMPT expdp \"sys/parola@XEPDB1 AS SYSDBA\" tables=SYS.AUTH_SERII,SYS.AUTH_DETALII,SYS.INFO directory=DMPDIR dumpfile=sys_tables.dmp logfile=sys_tables_export.log
|
|
PROMPT =============================================
|