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>
This commit is contained in:
134
clienti/oracle-xe-21c/import/recreare_pdb.sql
Normal file
134
clienti/oracle-xe-21c/import/recreare_pdb.sql
Normal file
@@ -0,0 +1,134 @@
|
||||
-- ============================================================
|
||||
-- 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 =============================================
|
||||
Reference in New Issue
Block a user