Files
ROMFASTSQL/clienti/oracle-xe-21c/import/recreare_pdb.sql
Claude Agent 6410339196 feat(clienti): add Oracle XE PDB recreare scripts and audit cleanup
- 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>
2026-03-24 16:31:17 +00:00

135 lines
5.8 KiB
SQL

-- ============================================================
-- RECREARE PDB XEPDB1 - Oracle XE 21c
-- Scop: PDB curat cu SYSAUX mic (~500 MB vs 7.8 GB)
-- ============================================================
--
-- IMPORTANT: Inlocuieste PAROLA_SYS cu parola reala a user-ului SYS.
-- Daca nu stii parola, seteaz-o INAINTE de export:
-- sqlplus / as sysdba
-- ALTER USER SYS IDENTIFIED BY "ParolaNoua123";
-- Apoi foloseste "ParolaNoua123" peste tot unde apare PAROLA_SYS.
--
-- PREREQUISITE: Exporturile trebuie sa fi fost rulate cu succes!
-- 1. expdp (Data Pump) - din CMD
-- 2. export_pdb_complet.sql - din SQLPlus
-- 3. Fisierele .dmp si .sql trebuie sa fie in C:\DMPDIR
--
-- TIMP ESTIMAT: ~30-45 minute (depinde de dimensiunea dump-urilor)
-- ============================================================
-- ************************************************************
-- PASUL 0: EXPORT (daca nu s-a facut deja)
-- ************************************************************
-- Conecteaza-te la PDB-ul VECHI si ruleaza exporturile:
--
-- A) Data Pump (din CMD, nu SQLPlus):
-- expdp \"sys/PAROLA_SYS@XEPDB1 AS SYSDBA\" schemas=CONTAFIN_ORACLE,FIRMA directory=DMPDIR dumpfile=schemas_export.dmp logfile=schemas_export.log
-- expdp \"sys/PAROLA_SYS@XEPDB1 AS SYSDBA\" tables=SYS.AUTH_SERII,SYS.AUTH_DETALII,SYS.INFO directory=DMPDIR dumpfile=sys_tables.dmp logfile=sys_tables_export.log
--
-- B) SQL export (din SQLPlus conectat la XEPDB1):
-- sqlplus sys/PAROLA_SYS@XEPDB1 AS SYSDBA
-- @C:\DMPDIR\import\export_pdb_complet.sql
--
-- VERIFICA: schemas_export.dmp si sys_tables.dmp exista in C:\DMPDIR
-- si log-urile nu contin erori fatale.
-- ************************************************************
-- ============================================================
-- PASUL 1: Drop PDB vechi
-- ============================================================
-- Conectare: sqlplus / as sysdba (conecteaza la CDB$ROOT)
-- SAU: sqlplus sys/PAROLA_SYS AS SYSDBA
ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER PLUGGABLE DATABASE XEPDB1 CLOSE IMMEDIATE;
DROP PLUGGABLE DATABASE XEPDB1 INCLUDING DATAFILES;
-- ============================================================
-- PASUL 2: Recreare PDB din seed
-- ============================================================
CREATE PLUGGABLE DATABASE XEPDB1 ADMIN USER PDBADMIN IDENTIFIED BY "RomfastRP2023"
FILE_NAME_CONVERT = ('pdbseed', 'XEPDB1');
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE;
-- ============================================================
-- PASUL 3: Conectare la PDB-ul nou + creare DMPDIR
-- ============================================================
ALTER SESSION SET CONTAINER = XEPDB1;
CREATE OR REPLACE DIRECTORY DMPDIR AS 'C:\DMPDIR';
GRANT READ, WRITE ON DIRECTORY DMPDIR TO SYS;
-- ============================================================
-- PASUL 4: FAZA 1 - Infrastructura (inainte de Data Pump)
-- ============================================================
-- Ruleaza import master-ul care creeaza:
-- tablespaces -> useri -> directories -> tabele SYS -> context
@C:\DMPDIR\import\11_import_master.sql
-- ============================================================
-- PASUL 5: DATA PUMP IMPORT (din CMD, NU din SQLPlus!)
-- ============================================================
-- Deschide CMD nou si ruleaza:
--
-- impdp \"sys/PAROLA_SYS@XEPDB1 AS SYSDBA\" directory=DMPDIR dumpfile=schemas_export.dmp logfile=schemas_import.log remap_tablespace=USERS:ROA
-- impdp \"sys/PAROLA_SYS@XEPDB1 AS SYSDBA\" directory=DMPDIR dumpfile=sys_tables.dmp logfile=sys_tables_import.log table_exists_action=APPEND
--
-- ASTEAPTA sa termine AMBELE importuri inainte de pasul 6!
-- Verifica log-urile: schemas_import.log si sys_tables_import.log
-- ============================================================
-- ============================================================
-- PASUL 6: FAZA 2 - Obiecte dependente (dupa Data Pump)
-- ============================================================
-- Conecteaza-te inapoi la PDB:
-- sqlplus sys/PAROLA_SYS@XEPDB1 AS SYSDBA
-- SAU daca esti deja conectat la CDB$ROOT:
-- ALTER SESSION SET CONTAINER = XEPDB1;
@C:\DMPDIR\import\11_import_master_faza2.sql
-- ============================================================
-- PASUL 7: Compilare obiecte invalide
-- ============================================================
EXEC DBMS_UTILITY.COMPILE_SCHEMA('CONTAFIN_ORACLE');
EXEC DBMS_UTILITY.COMPILE_SCHEMA('FIRMA');
EXEC DBMS_UTILITY.COMPILE_SCHEMA('SYS', FALSE);
-- ============================================================
-- PASUL 8: Verificare finala
-- ============================================================
PROMPT
PROMPT =============================================
PROMPT VERIFICARE SPATIU
PROMPT =============================================
SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS allocated_mb
FROM dba_data_files GROUP BY tablespace_name ORDER BY allocated_mb DESC;
SELECT ROUND(SUM(bytes)/1024/1024) AS total_mb FROM dba_data_files;
PROMPT
PROMPT =============================================
PROMPT OBIECTE INVALIDE (ar trebui sa fie 0)
PROMPT =============================================
SELECT owner, object_name, object_type, status
FROM dba_objects
WHERE status = 'INVALID'
AND owner IN ('SYS', 'CONTAFIN_ORACLE', 'FIRMA', 'ROMPETROLE')
ORDER BY owner, object_type, object_name;
PROMPT
PROMPT =============================================
PROMPT AUTO TASKS (ar trebui DISABLED)
PROMPT =============================================
SELECT client_name, status FROM dba_autotask_client;
PROMPT
PROMPT =============================================
PROMPT RECREARE PDB COMPLETA!
PROMPT Total alocat ar trebui sa fie ~2-3 GB
PROMPT (vs 11.5 GB inainte de recreare)
PROMPT =============================================