Tablespace Transportable sur Différentes Plateformes
___________________________________________________
Dans notre exemple, nous transporterons un espace de table appelé TEST. L’espace de table doit être autonome sans aucun objet faisant référence à d’autres espaces de table, donc pour cela, vérifiez si le système d’exploitation de l’espace de table est autonome en utilisant la requête ci-dessous:
EXÉCUTER dbms_tts.transport_set_check(‘TEST’, TRUE, TRUE);
SELECT* FROM transport_set_violations;
Si vous avez des objets référencés croisés. Supprimez ces objets de l’espace de table de TEST (Veuillez noter que cela se fait dans un environnement de test afin que je puisse facilement supprimer les objets référencés. Ne déposez aucun objet sans consulter votre DBA senior dans un environnement de production. Vous ne savez jamais quel objet a quelle dépendance. Supposons que vous ayez des index dans l’espace de table de TEST pointant vers des tables dans un autre espace de table. Vous pouvez déplacer ces index en toute sécurité en utilisant la procédure pl/ sql ci-dessous:
commencer
pour c1 dans (sélectionnez le nom d’index a1 dans les index d’utilisateur)
boucle
exécuter immédiatement ‘alter index’ // c1.a1 // ‘reconstruire l’espace de table en ligne < nom de l’espace de table >’;
boucle de fin;
fin;
/
Maintenant, continuez et vérifiez à nouveau les violations. Si vous obtenez une erreur comme:
SÉLECTIONNEZ * DE transport_set_violations;
VIOLATIONS
—————————
Violation 46: contacter le support Oracle
Violation 46: contacter le support Oracle
Violation 46 : contactez le support Oracle
Exécutez cette requête pour vérifier pourquoi la violation génère
SÉLECTIONNEZ TRIM(OBJ1_OWNER) // ‘, ‘ // TRIM(OBJ1_NAME) || ‘, ‘ ||
TRIM(OBJ1_SUBNAME) |/ ‘,’ // TRIM(OBJ1_TYPE) || ‘, ‘ ||
TRIM(TS1_NAME) |/ ‘,’ // TRIM(OBJ2_OWNER) || ‘, ‘ ||
TRIM(OBJ2_NAME) |/ ‘,’ // TRIM(OBJ2_SUBNAME) || ‘, ‘ ||
TRIM(OBJ2_TYPE) |/ ‘,’ // TRIM(TS2_NAME)) || ‘, ‘ ||
TRIM(CONSTRAINT_NAME) || ‘,’ || TRIM(REASON)
DE PLUGGABLE_SET_CHECK
OÙ MESG_ID=46;
Cela donnera une sortie de ce qu’est exactement la violation pour l’espace de table transportable. Corrigez ces violations et lancez la procédure de transport de l’espace de table. Dans mon exemple, j’avais utilisé le cryptage transparent des données (TDE) pour quelques colonnes de la base de données. La requête a signalé que vous ne pouvez pas utiliser TT_TBS lorsque vous avez des colonnes chiffrées. J’ai donc dû déchiffrer les colonnes que j’ai chiffrées à l’aide d’une requête comme.
SELECT* FROM dba_encrypted_columns;
MODIFIER LE compte DE LA TABLE (DÉCRYPTER le titulaire de la carte);
Après avoir déchiffré les colonnes. Nous allons plus loin
1. Vérifiez la version ENDIAN de la source et de la cible à l’aide du script ci-dessous:
—
— Quelles sont les possibilités de plate-forme d’espace de table transportable disponibles?
SELECT
SÉLECTIONNEZ
platform_name
, endian_format
DE v vtransportable_platform
TRIER PAR platform_name
;
—
— Quelle est la limite actuelle de ma base de données et de ma plate-forme ?
SELECT
SÉLECTIONNEZ
D.name
, TP.endian_format
DE
v TPtransportable_platform TP
, vdatabasedatabase D
OÙ TP.platform_name = D.platform_name
;
il indiquera si l’ENDIAN est « petit » ou « grand ». Si l’endian est le même sur la cible et la source, pas besoin d’opter pour un espace de table transportable. Vous pouvez simplement exporter l’espace de table et l’importer vers la cible. Sinon, procédez comme ci-dessous
2. Modifiez l’espace de table et mettez-le en mode lecture seule sur la source. Dans notre exemple, nous transporterons un espace de table appelé TEST vers le serveur cible.
MODIFIER LE test de l’ESPACE DE TABLE EN LECTURE SEULE ;
3. exportez maintenant les métadonnées de l’espace de table.
## Windows ###
exp USERID = ‘system/oracle@Source AS SYSDBA’ TRANSPORT_TABLESPACE= y TABLESPACES = FICHIER DE test = test_repository.dmp log=test_repository.txt
### Unix ###
exp\’sys/oracle AS SYSDBA\’TRANSPORT_TABLESPACE = y TABLESPACES= fichier DE test = test_repository.dmp log=test_repository.txt
Accédez à target et copiez dumpfile à n’importe quel emplacement avec les fichiers de données de cet espace de table.
imp\’sys/oracle AS SYSDBA\’TABLESPACES =test TRANSPORT_TABLESPACE=y FILE=test_repository.fichiers de données dmp = ‘users_01.dbf’
4. Till ci-dessus est pour lorsque vous exportez un espace de table vers une machine avec les mêmes informations endian. Si vous êtes un endian différent, procédez comme ci-dessous. Nous allons convertir de Solaris SPARC 64 bits (GRAND) en Windows 32 bits (Petit)
5. Convertir les fichiers de données en utilisant RMAN et db_file_name_convert
# n’utilisez pas cette méthode: Sur la machine source: Avec le nom de fichier d’origine
RMAN > convertir l’espace de table ‘TEST’
en plate-forme ‘Microsoft Windows IA (32 bits)’
format=’/datafiles/rmanbkp/%N_%f’
parallélisme = 4;
## utilisez cette méthode: Sur la machine Source: Avec le nom de fichier converti nom de fichier
RMAN > convertir l’espace de table ‘TEST’
2 > en plate-forme ‘Microsoft Windows IA (32 bits)’
3 > db_file_name_convert’/fichiers de données/oradata/SWX’,’/fichiers de données/rmanbkp’
4 > parallélisme = 4;
Une fois les fichiers convertis, vous pouvez les trouver dans ‘/datafiles/rmanbkp’. Copiez ces fichiers convertis avec le vidage des métadonnées de TT_TBS et placez-les sur le serveur source et exécutez l’importation:
imp USERID = ‘système/mot de passe @cible EN TANT QUE SYSDBA’
TRANSPORT_TABLESPACE=y
FICHIERS DE DONNÉES =’C:\datafiles\test01 .DBF ‘,’C:\datafiles\test02 .DBF’
TABLESPACES= test
FILE=test_repository.dmp
Dans les cas ci-dessus, nous avons converti les fichiers sur la plate-forme source. Cependant, vous pouvez également le faire sur la plate-forme cible. Par exemple, vous pouvez copier le fichier test01.dbf avec le vidage des métadonnées sur une machine cible Windows Server 2003 32 bits et le convertir là-bas:
RMAN > convertir
2 > fichier de données ‘c:/users01 .dbf ‘ # # répertoire dans lequel vous placerez votre fichier de données à partir du format du serveur source
3 >’c:/datafiles/rmanbkp/%N_%f ‘ # # répertoire où vous obtiendrez le fichier converti
4 > ;
Cette approche créera un fichier au format spécifié dans le répertoire.
Mais pourquoi voudriez-vous convertir les fichiers de données sur la plate-forme cible, exactement? Une des raisons pourrait être un temps d’arrêt plus court, qui nécessite que les espaces de table soient en LECTURE SEULE uniquement pendant la durée de la copie sur l’hôte cible. Vous pouvez triple-mettre en miroir le fichier de données, rendre l’espace de table en lecture seule, casser le troisième miroir et rendre immédiatement l’espace de table en lecture / écriture. Ce troisième miroir pourrait alors être monté sur le système cible et converti à loisir. Cette disposition minimise la durée pendant laquelle l’espace de table doit rester en lecture seule.
Une autre raison pourrait être la performance. La base de données OLTP peut être sous une charge constante et l’utilisation de l’opération de conversion RMAN peut fatiguer le système plus que souhaité. Au lieu de cela, la conversion peut être déchargée sur le serveur de l’entrepôt de données, où davantage de PROCESSEURS sont généralement disponibles pour des opérations parallèles.