IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Recovery Manager Oracle Discussion :

Pb utilisation RMAN - Transportable tablespace sur 10g


Sujet :

Recovery Manager Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut Pb utilisation RMAN - Transportable tablespace sur 10g
    Bonjour à tous,

    Je travaille sur 2 serveurs Windows XP.
    Le 1er contient une base Oracle 10.2.0.4.0 nommée DB1
    Le 2ème contient une base Oracle 10.2.0.4.0 nommée DB2

    J'aimerai dupliquer la base DB1 dans la base DB2 et voici ce que j'ai fait jusqu'ici :
    - J'ai passé ma base DB1 en mode Archivelog
    - J'ai créé un backup avec RMAN par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BACKUP FULL DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
    - J'ai réussi à la dupliquer dans ma base DB2 avec RMAN par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DUPLICATE TARGET DATABASE
    Mais maintenant j'aimerai dupliquer la base DB1 dans la base DB2 en utilisant les tablespaces transportables avec l'outil RMAN (pour comparer les 2 solutions)

    Pourquoi avec RMAN ?? parce que je souhaite garder la DB1 accessible 24h/24 et donc je ne veux pas que mes tablespaces soient à un moment donné en READ-ONLY.

    J'ai tous d'abord plusieurs questions :
    Les deux bases peuvent-elles avoir un nom différent ?
    Les deux bases peuvent-elles être sur 2 serveurs distincts ?
    Ma base DB2 doit-elle être vide avant la duplication ?

    Voici ce que j'ai fait jusqu'ici :

    1. Vérifier d’abord la dépendance du tablespace à transporter avec les autres tablespace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sqlplus / nolog
    connect / as sysdba ;
     
    SQL> execute DBMS_TTS.TRANSPORT_SET_CHECK ('TSDATA1',TRUE);
     
    PL/SQL procedure successfully completed.
     
    SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
     
    Index SCOTT.PK_TABLE1 in tablespace TSINDEX1 enforces primary constraints of table SCOTT.TABLE1 in tablespace TSDATA1
    Ici on voit que le tablespace TSDATA1 dépend aussi du tablespace TSINDEX1
    Il faut donc le transporter avec et avant cela regarder les dépendances de TSINDEX1 --> il n'y en a qu'avec le tablespace TSDATA1, donc nous pouvons les transporter juste tous les 2.

    2. Se connecter ensuite à RMAN pour transporter les 2 tablespaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RMAN target /
    transport tablespace TSDATA1,TSINDEX1 TABLESPACE DESTINATION 'D:\oracle\product\10.2.0\oradata\DB2' AUXILIARY DESTINATION 'D:\oracle\product\10.2.0\oradata\DB2\Auxiliaires';
    Là j'ai un doute car je ne sais pas trop s'il faut mettre DB2 ou DB1 comme répertoire ??

    3. Copier ensuite le contenu de ces 2 répertoires dans ceux du serveur cible (même chemins) :
    Là j'ai copié les différents fichiers du serveur 1 dans plusieurs répertoires du serveur 2 :
    • Les datafiles dans le répertoire 'D:\oracle\product\10.2.0\oradata\DB2'
    • Les fichiers du répertoire « Auxiliaires » dans le répertoire du même nom
    • Les fichiers « impscrpt.sql », « DMPFILE.DMP » et « explog.log » dans un répertoire « D:\oracle\product\10.2.0\oradata\DB2\Dump »

    4. Créer maintenant dans la base cible DB2 sur le serveur 2 un directory faisant référence à ce nouveau répertoire dans lequel se trouve le dump à charger avec le user SYSTEM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sqlplus / nolog
    connect / as sysdba ;
     
    SQL > create directory dmpdir as 'D:\oracle\product\10.2.0\oradata\DB2\Dump';
     
    Directory created.
    Puis donner les droits au USER qui effectuera l’import :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL > GRANT read, write ON DIRECTORY dmpdir TO SYSTEM;
     
    Grant succeeded.
    5. Lancer ensuite la commande d’import :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IMPDP system/<password> DUMPFILE=DMPFILE.DMP DIRECTORY=dmpdir TRANSPORT_DATAFILES='TSDATA1_01.DBF', 'TSINDEX1_01.DBF'
    Et voici l'erreur que j'obtiens :
    Import: Release 10.2.0.4.0 - Production on Wednesday, 28 July, 2010 19:28:54

    Copyright (c) 2003, 2007, Oracle. All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DUMPFILE=DMPFILE.DMP DIRECTORY=dmpdir
    TRANSPORT_DATAFILES=' D:\oracle\product\10.2.0\oradata\DB2\TSDATA1_01.DBF',
    ' D:\oracle\product\10.2.0\oradata\DB2\TSINDEX1_01.DBF'
    ORA-39126: Worker unexpected fatal error in KUPW$WORKER.LOAD_METADATA [TABLE_DATA:"SYSTEM"."SYS_IMPO
    RT_TRANSPORTABLE_01"]
    SELECT process_order, flags, xml_clob, NVL(dump_fileid, :1), NVL(dump_position, :2), dump_length,
    dump_allocation, grantor, object_row, object_schema, object_long_name, processing_status,
    processing_state, base_object_type, base_object_schema, base_object_name, property, size_estimate,
    in_progress FROM "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" WHERE process_order between :3 AND :4
    AND processing_state <> :5 AND duplicate = 0 ORDER BY process_order
    ORA-01187: cannot read from file 201 because it failed verification tests
    ORA-01110: data file 201: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DB2\TEMP01.DBF'

    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
    ORA-06512: at "SYS.KUPW$WORKER", line 6351

    ----- PL/SQL Call Stack -----
    object line object
    handle number name
    1BEFAE58 15032 package body SYS.KUPW$WORKER
    1BEFAE58 6372 package body SYS.KUPW$WORKER
    1BEFAE58 3579 package body SYS.KUPW$WORKER
    1BEFAE58 6972 package body SYS.KUPW$WORKER
    1BEFAE58 1314 package body SYS.KUPW$WORKER
    18637624 2 anonymous block

    Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at 19:28:58
    Je ne comprends pas trop...
    Pourquoi le datafile
    TEMP01.DBF
    du tablespace TEMP pose pb ?
    Ai-je oublié une étape ?

    Pour rappel ma base DB2 est actuellement à l'image de la DB1 (seule une table n'a pas été créé) donc elle n'est pas vide.

    Si quelqu'un a un peu de temps pour m'aider ça serait vraiment sympa.
    J'espère aussi que ce post va aider d'autres personnes.

    Merci

    Cat

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Est-ce que le tempfile mentionné dans le message d'erreur existe ou non ? S'il n'existe pas, essayez de le créer. Il se peut tout simplement qu'il soit nécessaire pour réaliser le tri de la requête SQL exécutée par IMPDP.

    Il est peut-être aussi possible d'augmenter le paramètre PGA_AGGREGATE_TARGET de la base DB2 pour éviter d'avoir à utiliser le tablespace temporaire pour faire un tri.

    Les deux bases peuvent-elles avoir un nom différent ?
    Oui.

    Les deux bases peuvent-elles être sur 2 serveurs distincts ?
    Oui

    Ma base DB2 doit-elle être vide avant la duplication ?
    Non mais il faut prendre soin ne pas avoir 2 tablespaces qui ont le même nom dans la même base.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    Merci de votre aide Pifor.

    J'avais en effet un pb avec mon tablespace TEMP puisque le datafile correspondant était corrompu.

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SQL> CREATE TEMPORARY TABLESPACE temp1
    TEMPFILE 'D:\oracle\product\10.2.0\oradata\DB2\temp101.dbf' SIZE 64M;
     
    Tablespace created.
     
    SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp1;
     
    Database altered.
     
    SQL> DROP TABLESPACE temp ;
     
    Tablespace dropped.
     
    SQL> CREATE TEMPORARY TABLESPACE temp
    TEMPFILE 'D:\oracle\product\10.2.0\oradata\DB2\temp01.dbf'
    SIZE 500M AUTOEXTEND ON NEXT 64M
    EXTENT MANAGEMENT LOCAL;
     
    Tablespace created.
     
    SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
     
    Database altered.
     
    SQL> DROP TABLESPACE temp1 ;
     
    Tablespace dropped.
    Maintenant j'ai bien mon tablespace TEMP contenant le datafile TEMP01.DBF qui fonctionne.
    J'en ai aussi profité pour augmenter ma PGA_AGGREGATE_TARGET.

    Puis j'ai relancé l'import des tablespaces transportables et j'ai eu l'erreur suivante :

    Import: Release 10.2.0.4.0 - Production on Thursday, 29 July, 2010 13:30:41

    Copyright (c) 2003, 2007, Oracle. All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DUMPFILE=DMPFILE.DMP
    DIRECTORY=dmpdir TRANSPORT_DATAFILES='D:\oracle\product\10.2.0\oradata\DB2\TSDATA1_01.DBF',
    'D:\oracle\product\10.2.0\oradata\DB2\TSINDEX1_01.DBF'
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    ORA-39123: Data Pump transportable tablespace job aborted
    ORA-29349: tablespace 'TSINDEX1' already exists

    Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at 13:30:46
    Normal puisque j'ai déjà des tablespaces TSDATA1 et TSINDEX1 dans ma base DB2.

    J'ai donc supprimé ces 2 tablespaces sans supprimer les datafiles qui sont en fait ceux que j'ai copié du serveur 1 sur le serveur 2.

    Puis j'ai relancé l'import et j'ai eu le message suivant :
    Import: Release 10.2.0.4.0 - Production on Thursday, 29 July, 2010 13:33:05

    Copyright (c) 2003, 2007, Oracle. All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DUMPFILE=DMPFILE.DMP
    DIRECTORY=dmpdir TRANSPORT_DATAFILES='D:\oracle\product\10.2.0\oradata\DB2\TSDATA1_01.DBF',
    'D:\oracle\product\10.2.0\oradata\DB2\TSINDEX1_01.DBF'
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    Processing object type TRANSPORTABLE_EXPORT/TABLE
    Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
    Processing object type TRANSPORTABLE_EXPORT/INDEX
    Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
    Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/COMMENT
    Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT
    Processing object type TRANSPORTABLE_EXPORT/TRIGGER
    Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/POST_TABLE_ACTION
    Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 13:33:37
    Donc ça fonctionne !!
    J'ai juste une petite question à poser...

    Suis-je obligée de dropper mes tablespaces à chaque fois avant l'import ??
    Admettons que je veuille dupliquer ma DB1 tous les mois. J'aurai forcément le TSDATA1 déjà présent dans la DB2 le mois suivant.
    Est-ce qu'on ne peut pas juste le remplacer automatiquement ?? Peut-être par la fonction de renommage ? mais je ne comprends pas comment ça marche.

    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    Ah ! Une autre question me vient.

    Est-ce que les transportables tablespaces fonctionnent sur oracle 9.2.0 sans avoir à passer les tablespaces de la DB1 en READ-ONLY, donc en gardant les données accessibles 24h/24 ?

    Merci.

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    J'ai une partie des réponses :

    Transportable Tablespace from RMAN backupsets:
    Transportable tablespace supports the fastest method of copying set of tablespaces from one Oracle database to another.
    In general, tablespaces must be kept in read only mode before being transported. It will be difficult task to put bigger size tablespaces and 24x7 accessed high availability tablespaces in the read only mode for longer time. This could prove a potential problem with the high availability databases.
    Starting with version 10g Release 2, Transportable tablespace can be created from RMAN backupsets. In contrast, when RMAN creates transportable tablespace set from backupsets, it doesn’t touch the live datafiles from the tablespace to be transported and this elements the need of putting the tablespace in read only mode. Hence, it improves the availability.
    Par contre sur le fait de devoir d'abord supprimer les tablespaces de la DB2 avant de les ré-importer je n'ai rien trouvé.

    Si quelqu'un connait la réponse n'hésitez pas.

    Merci

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Cette limitation est documentée dans l'Admin.Guide http://download.oracle.com/docs/cd/B...htm#ADMIN01101:
    You cannot transport a tablespace to a target database in which a tablespace with the same name already exists. However, you can rename either the tablespace to be transported or the destination tablespace before the transport operation.
    La commande TRANSPORT TABLESPACE de RMAN reprend bien ces limitations:http://download.oracle.com/docs/cd/B....htm#sthref990

    The limitations on creating transportable tablespace sets described in Oracle Database Administrator's Guide apply to transporting tablespaces from backup, with the exception of the requirement to make the tablespaces read-only.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transport tablespace avec rman
    Par breizh76 dans le forum Administration
    Réponses: 3
    Dernier message: 27/11/2012, 20h00
  2. RMAN : utiliser RMAN 10g sur catalog 8i ?
    Par taupe31 dans le forum Recovery Manager
    Réponses: 1
    Dernier message: 31/08/2007, 13h40
  3. Utilisation de l'ASP sur un serveur Apache
    Par 3adoula dans le forum Réseau
    Réponses: 1
    Dernier message: 29/10/2004, 14h34
  4. tablespace sur windows
    Par testeur dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/10/2004, 10h04
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo