Tu sei qui

oracle

GianlucaBove.it

...just another technical blog...

Import / Export di database per Drupal basato su Oracle.

Esportare / Importare un database di Drupal in formato Oracle è possibile.
In questo articolo spieghiamo come.

In questa guida si presume che l'ambiente sia Linux con oracle enterprise 11g.

Innanzitutto va utilizzato il comando expdp per esportare il dump dello schema.

expdp dumpfile=drupal.dmp logfile=drupal.log schemas=drupal

Alla domanda di username si può specificare: / as sysdba
Verrà creato un file con estensione .dmp nella cartella logs di oracle (nel mio caso: /u01/app/oracle/product/11.2.0/orcl/rdbms/log/)

Ora abbiamo preparato il nostro dump e siamo pronti per creare il nuovo schema in cui importare il db.

Innanzitutto va creato il tablespace, colleghiamoci con / as sysdba per effettuare questa operazione:

CREATE tablespace drupal_data logging datafile 'drupal_data.dbf' SIZE 200m autoextend ON NEXT 50m maxsize 3072m extent management LOCAL;

Successivamente creiamo l'utenza e forniamo le grant all'utente:
GRANT CONNECT,resource TO drupal IDENTIFIED BY drupal;
ALTER USER drupal DEFAULT tablespace drupal_data;
GRANT EXECUTE ON dbms_crypto TO drupal;
 
GRANT SELECT ON v_$sql_plan TO drupal;
GRANT SELECT ON v_$sqlarea TO drupal;
 
GRANT CREATE synonym TO drupal;
 
GRANT CONNECT TO drupal;
GRANT resource TO drupal;
GRANT CREATE synonym TO drupal;
GRANT CREATE any TRIGGER TO drupal;
GRANT CREATE indextype TO drupal;
GRANT CREATE PROCEDURE TO drupal;
GRANT CREATE public synonym TO drupal;
GRANT CREATE TRIGGER TO drupal;
GRANT CREATE TYPE TO drupal;
GRANT unlimited tablespace TO drupal;
GRANT CREATE SEQUENCE TO drupal;
GRANT CREATE TABLE TO drupal;
 
GRANT SELECT ON dual TO public WITH GRANT OPTION;
GRANT EXECUTE ON dbms_random TO drupal;
GRANT EXECUTE ON dbms_output TO drupal;

Colleghiamoci ora con l'utenza appena creata (nell'esempio drupal):

Ed eseguiamo i seguenti comandi:

CREATE synonym all_constraints FOR sys.all_constraints;
CREATE synonym all_cons_columns FOR sys.all_cons_columns;
CREATE synonym all_sequences FOR sys.all_sequences;
CREATE synonym all_source FOR sys.all_source;
CREATE synonym all_users FOR sys.all_users;

Bene, siamo pronti per fare l'import, ma prima dobbiamo posizionare il file .dmp in un posto accessibile, per comodità /tmp:

- Copiare il file drupal.dmp dentro /tmp del server oracle.

- Eseguire come SYSDBA:

 
CREATE directory dir_tmp AS '/tmp';
GRANT READ,WRITE ON directory dir_tmp TO public;

Ora possiamo eseguire l'import con questa sintassi:
impdp dumpfile=drupal.dmp logfile=drupal.log directory=DIR_TMP TRANSFORM=oid:n

Colleghiamoci ora con l'utenza appena creata (nell'esempio drupal) ed eseguiamo l'ultimo step:

EXEC create_linguistic_indexes('MYINDEXTABLESPACENAME')

Ora non resta che adeguare il settings.php per far puntare il nostro drupal alla nostra istanza e siamo pronti.

Se riscontrate problemi o avete domande commentate qui sotto, cercherò di rispondere.