Migration vers Oracle Base Database Service ou Oracle Exadata Database Service on Dedicated Infrastructure

Cette section explique comment migrer vos charges globales de serveur x86 ou Oracle Database Appliance sur site vers Oracle Base Database Service ou Oracle Exadata Database Service on Dedicated Infrastructure, et migrer vos applications VMware vers Oracle Cloud VMware Solution.

Architecture

Grâce à Oracle Zero Downtime Migration, automatisez la migration de votre base de données tout en subissant un temps d'arrêt minimal lors de la migration de vos données sur site vers le cloud.

Migrez vos applications sur site exécutées sur VMware vers Oracle Cloud VMware Solution à l'aide d'outils VMware tels que HCX et vMotion. Oracle Cloud VMware Solution vous offre une implémentation entièrement automatisée d'un centre de données défini par logiciel (SDDC) VMware dans votre location OCI, exécuté sur des instances Bare Metal OCI.

Le diagramme suivant illustre cette architecture de référence.



x86-oda-migrate-base-exadata-vmware.zip

Cette architecture prend en charge les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique précise qui contient un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (dans des pays voire des continents).

  • Réseau cloud virtuel (VCN) et sous-réseau

    Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent un contrôle total sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.

  • Oracle Exadata Database Service on Dedicated Infrastructure

    Oracle Exadata Database Service on Dedicated Infrastructure fournit Oracle Exadata Database Machine en tant que service dans un centre de données OCI. Le service Oracle Exadata Database Service on Dedicated Infrastructure peut héberger de nombreuses bases de données Oracle exécutées dans des clusters de machines virtuelles exécutés sur un seul rack Exadata dans une région OCI. Oracle Exadata Database Service on Dedicated Infrastructure est une plate-forme idéale pour la consolidation de bases de données.

  • Oracle Base Database Service

    Oracle Base Database Service vous permet de garder un contrôle absolu sur vos données tout en exploitant les fonctionnalités combinées d'Oracle Database et d'Oracle Cloud Infrastructure (OCI). OCI propose des systèmes de base de données à noeud unique et des systèmes de base de données RAC à plusieurs noeuds sur des machines virtuelles. Un seul système Oracle Base Database Service peut héberger une seule base de données Conteneur Oracle. Cette base de données Conteneur peut héberger plusieurs bases de données pluggables. Oracle Base Database Service est idéal pour la consolidation de bases de données pour les bases de données pouvant être migrées vers des bases de données pluggables.

  • Oracle Cloud VMware Solution Centre de données défini par logiciel (SDDC)

    Oracle et VMware se sont associés pour développer une implémentation de centre de données défini par logiciel (SDDC) certifiée VMware à utiliser dans Oracle Cloud Infrastructure. Cette implémentation, appelée Oracle Cloud VMware Solution, utilise OCI pour héberger un SDDC VMware hautement disponible. Elle permet également une migration transparente de tous vos workloads de SDDC VMware sur site vers Oracle Cloud VMware Solution. Oracle Cloud VMware Solution contient les composants VMware suivants :

    • VMware vSphere ESXi
    • VMware vSAN
    • VMware vCenter
    • VMware NSX-T
    • VMware HCX (facultatif)
  • Bare Metal

    Un centre de données défini par logiciel (SDDC) Oracle Cloud VMware Solution contient des serveurs Bare Metal hébergeant Oracle Cloud VMware Solution. Le serveur Bare Metal prend en charge les applications qui nécessitent un nombre élevé de coeurs, de grandes quantités de mémoire et une bande passante élevée (telle qu'Oracle Cloud VMware Solution). Vous pouvez déployer Oracle Cloud VMware Solution sur des serveurs Bare Metal et configurer des machines virtuelles avec des améliorations de performances significatives par rapport aux autres clouds publics et centres de données sur site.

  • Passerelle de service

    La passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic du VCN vers le service Oracle transite par la structure réseau Oracle et ne traverse jamais Internet.

  • Dynamic routing gateway (DRG)

    Le DRG est un routeur virtuel qui fournit un chemin pour le trafic de réseau privé entre les réseaux cloud virtuels de la même région, entre un VCN et un réseau en dehors de la région, tel qu'un VCN dans une autre région Oracle Cloud Infrastructure, un réseau sur site ou un réseau dans un autre fournisseur cloud.

  • FastConnect

    Oracle Cloud Infrastructure FastConnect permet de créer facilement une connexion privée dédiée entre le centre de données et Oracle Cloud Infrastructure. FastConnect offre des options de bande passante plus élevée et une expérience réseau plus fiable par rapport aux connexions Internet.

  • Stockage de fichiers

    OCI File Storage est utilisé lors de la migration pour importer la base de données migrée à partir d'un système de fichiers partagé.

  • Stockage d'objets

    OCI Object Storage est utilisé lors de la migration pour le stockage temporaire.

Avant de commencer

Avant de commencer, vérifiez les versions des principaux composants utilisés dans cette configuration et consultez la documentation du produit pour référence ultérieure.

Vérifier les exigences

  • Assurez-vous que la base de données source est en cours d'exécution sur un serveur x86 ou qu'Oracle Database Appliance exécute la version 19.18 Standard Edition ou Enterprise Edition.
  • La base de données cible Oracle Exadata Database Service on Dedicated Infrastructure doit être Oracle Enterprise Extreme Performance version 19.18 ou supérieure.
  • La base de données Oracle Base Database Service cible peut être Standard Edition, Enterprise Edition, Enterprise Edition High Performance, Enterprise Edition Extreme Performance version 19.18 ou supérieure.
  • Oracle Zero Downtime Migration doit être de version 21.4 ou supérieure.
  • Le stockage intermédiaire doit inclure OCI Object Storage, Oracle ZFS Storage Appliance (NAS) et OCI File Storage.

Réviser la documentation

Ce guide stratégique explique comment migrer les charges de travail de votre base de données. Reportez-vous à la solution ci-dessous pour savoir comment migrer vos charges globales VMware. Les ressources supplémentaires sont utiles pour le contexte, les détails et les références de la migration de la base de données.

Découvrez comment migrer les composants VMware de votre charge globale vers Oracle Cloud VMware Solution.

Consultez les ressources Oracle Zero Downtime Migration :

Vérifiez les ressources de migration logique :

Consultez les ressources Oracle Database :

A propos des produits et rôles requis

Cette solution nécessite les produits suivants :

  • Oracle Cloud Infrastructure Identity and Access Management
  • Calcul OCI
  • OCI Object Storage
  • OCI File Storage
  • Oracle Zero Downtime Migration
  • Serveur x86 ou Oracle Database Appliance
  • Oracle Exadata Database Service on Dedicated Infrastructure ou Oracle Base Database Service

Il s'agit des rôles nécessaires pour chaque produit.

Nom du produit : Rôle Obligatoire pour...
Oracle Cloud Infrastructure Identity and Access Management : OCI_user Créer des clés d'API pour télécharger des données vers le bucket
OCI Compute : admin Créez une instance OCI Compute pour exécuter le logiciel Oracle Zero Downtime Migration
OCI Object Storage : Storage Admin Créer des buckets OCI Object Storage pour télécharger des données exportées
OCI File Storage : Storage Admin Création d'OCI File Storage pour la migration logique
Oracle Zero Downtime Migration : opc Créez zdmuser pour installer et exécuter le logiciel Oracle Zero Downtime Migration.
Oracle Zero Downtime Migration : zdmuser
  • Installation du logiciel Oracle Zero Downtime Migration
  • Exécution d'Oracle Zero Downtime Migration
Serveur x86 ou Oracle Database Appliance : root/sudoer user
  • Monter le partage de système de fichiers réseau à partir du périphérique de stockage connecté au réseau pour exporter la base de données pour les migrations logiques
  • Activer le SSH sans mot de passe à partir de la machine virtuelle Oracle Zero Downtime Migration
  • Exécutez les commandes sudo pour installer l'agent logiciel Oracle Zero Downtime Migration.
  • Exécuter des commandes sudo pour sauvegarder ou exporter une base de données
Serveur x86 ou base de données Oracle Database Appliance : sys/system Exécuter Data Pump pour exporter la base de données
Oracle Exadata Database Service on Dedicated Infrastructure ou Oracle Base Database Service : Database Admin Créer une base de données cible
Noeuds de cluster de machines virtuelles Oracle Exadata Database Service on Dedicated Infrastructure ou Oracle Base Database Service : opc
  • Montez le partage de système de fichiers réseau à partir d'OCI File Storage pour importer la base de données pour les migrations logiques
  • Activer le SSH sans mot de passe à partir de la machine virtuelle Oracle Zero Downtime Migration
  • Installation de l'agent logiciel Oracle Zero Downtime Migration
  • Exécutez les commandes sudo pour restaurer ou importer la base de données.
Oracle Exadata Database Service on Dedicated Infrastructure ou base de données Oracle Base Database Service : sys/system Exécuter Data Pump pour importer la base de données pour la migration logique

Reportez-vous à Produits, solutions et services Oracle pour obtenir ce dont vous avez besoin.

Remarques concernant la migration

Avant de commencer la migration, passez en revue ces hypothèses et considérations.

  • Oracle Zero Downtime Migration prend en charge deux types de migration de base de données du serveur x86 ou d'Oracle Database Appliance vers Oracle Base Database Service et Oracle Exadata Database Service on Dedicated Infrastructure : migration logique et migration physique. Nous vous recommandons d'utiliser la migration logique car cette méthode est la plus simple. Les migrations physiques nécessitent que les bases de données source et cible soient au même niveau de patch.
  • Les étapes de ce guide décrivent la migration à l'aide d'une migration logique hors ligne. Reportez-vous à la section Consulter la documentation pour plus d'informations sur la migration à l'aide d'une migration logique en ligne. Lors de la migration en ligne logique, Oracle Zero Downtime Migration configure Oracle GoldenGate pour les migrations entre les bases de données source et cible afin de garantir que les bases de données sont toujours en ligne pendant la migration.
  • Pendant la migration logique, les bases de données pluggables et/ou les schémas sont migrés. Les bases de données non Conteneur sont migrées vers des bases de données pluggables configurées dans une base de données Conteneur exécutée sur Oracle Base Database Service ou Oracle Exadata Database Service on Dedicated Infrastructure.
  • Un système de fichiers partagé est requis pour les migrations logiques. Lors de la migration logique, Oracle Zero Downtime Migration n'exporte pas les données directement vers OCI Object Storage. Sur la base de données source, Oracle Zero Downtime Migration exporte les données vers un système de fichiers partagé (système de fichiers réseau ou Oracle Advanced Cluster File System). Les données exportées sont ensuite téléchargées vers OCI Object Storage. Oracle Zero Downtime Migration déplace ensuite les vidages de données d'OCI Object Storage vers OCI File Storage. Enfin, Oracle Base Database Service ou Oracle Exadata Database Service on Dedicated Infrastructure peut importer les données à partir d'OCI File Storage via un système de fichiers réseau.
  • Les bases de données x86 ou Oracle Database Appliance sur site peuvent exécuter des bases de données à instance unique et RAC. Oracle Base Database Service peut exécuter des bases de données à instance unique et RAC, tandis qu'Oracle Exadata Database Service on Dedicated Infrastructure exécute toujours des bases de données RAC. Lors de la migration de base de données, Oracle Zero Downtime Migration convertit les bases de données mono-instance en bases de données RAC si nécessaire.
  • Le cryptage de base de données Oracle Transparent Data Encryption est facultatif pour les bases de données sur site exécutées sur des serveurs x86 ou Oracle Database Appliance. Lors de la migration de bases de données vers Oracle Base Database Service ou Oracle Exadata Database Service on Dedicated Infrastructure, la base de données cible est toujours cryptée.
  • Les bases de données source et cible doivent exécuter les mêmes fichiers de fuseau horaire. Pour obtenir des instructions, reportez-vous à "Mise à niveau du fichier de fuseau horaire et de l'horodatage avec les données de fuseau horaire" dans la section Consulter la documentation.
  • Les étapes de ce guide supposent qu'il existe une connectivité réseau directe entre le centre de données où Oracle Database Appliance est installé et le réseau cloud virtuel OCI où la base de données cible et la machine virtuelle Oracle Zero Downtime Migration sont configurées (via le VPN FastConnect ou IPSec comme indiqué dans le diagramme d'architecture).
  • Les bases de données source et cible ne doivent pas nécessairement avoir le même mot de passe sys, le même mot de passe de portefeuille, la même version de base de données, le même nom de base de données et le même niveau de patch.

Migration à l'aide de la migration logique

Les étapes suivantes décrivent comment effectuer une migration logique hors ligne. Pour la migration en ligne, reportez-vous au Guide détaillé - Migration en ligne logique d'une base de données sur site vers Oracle Autonomous Database dans la section Consulter la documentation.

  1. Créez une base de données cible Oracle Exadata Database Service on Dedicated Infrastructure ou Oracle Base Database Service à l'aide de la console OCI ou de l'API REST. Configurez la base de données comme suit :
    • La nouvelle base de données cible peut avoir un nom différent de celui de la base de données source.
    • La nouvelle base de données peut être une version plus récente que la base de données source.
    • Fournissez un mot de passe pour l'utilisateur sys. Notez le mot de passe.
    Une fois la base de données créée, notez son OCID.
  2. Dans la console OCI, créez une instance de calcul dans le VCN où la base de données cible sera configurée.
    Cette instance de calcul peut être n'importe quelle forme, avec au moins deux OCPU et 16 Go de RAM, exécutant le système d'exploitation Oracle Linux 7.9. Cette machine virtuelle sera utilisée pour exécuter le logiciel Oracle Zero Downtime Migration.
  3. Suivez la documentation d'installation d'Oracle Zero Downtime Migration dans la section Consulter la documentation pour télécharger et installer le logiciel Oracle Zero Downtime Migration 21.4 sur l'instance de calcul OCI.
    Exécutez le logiciel Oracle Zero Downtime Migration en tant que zdmuser.
  4. Connectez-vous en tant que zdmuser à l'instance de calcul exécutant le logiciel Oracle Zero Downtime Migration et générez une paire de clés SSH. Activez le SSH sans mot de passe à partir du compte zdmuser vers tous les noeuds de la base de données source (root, privilege-sudoer user).
  5. Assurez-vous que la machine virtuelle Oracle Zero Downtime Migration peut communiquer avec les hôtes de base de données source à l'aide du nom d'hôte et de l'adresse IP. Vérifiez les points suivants :
    • Modifiez le résolveur DNS VCN ou le fichier /etc/hosts dans la machine virtuelle Oracle Zero Downtime Migration si nécessaire.
    • Vérifiez qu'une règle de sécurité permet à la machine virtuelle Oracle Zero Downtime Migration de se connecter à la base de données source sur les ports de processus d'écoute par défaut 1521 et 22.
    • Assurez-vous que la machine virtuelle Oracle Zero Downtime Migration peut atteindre les hôtes de base de données cible sur les ports de processus d'écoute par défaut 1521 et 22.
  6. Sur l'appareil Oracle ZFS Storage Appliance ou le périphérique de stockage connecté au réseau, créez un partage de système de fichiers réseau à utiliser comme espace réservé pour les vidages de données de base de données pendant la progression de la migration.
  7. Montez le partage de système de fichiers réseau sur tous les noeuds de la base de données source.
    Assurez-vous que tous les utilisateurs disposent des droits d'accès en lecture, écriture et exécution (rwx). Notez le point de montage.
  8. Dans la console OCI, créez un stockage de fichiers OCI.
    Notez la cible de montage, l'export et l'adresse IP du réseau cloud virtuel (VCN).
  9. Utilisez l'adresse IP et effectuez l'export de l'étape 8 pour monter ce stockage de fichiers via un système de fichiers réseau sur tous les noeuds du cluster de machines virtuelles de base de données cible.
    Assurez-vous que le VCN inclut une stratégie de sécurité pour autoriser le protocole de système de fichiers réseau sur le sous-réseau de base de données cible. Notez le point de montage.
  10. Dans la console OCI, créez un bucket OCI Object Storage s'il n'en existe pas déjà un.
    Notez l'URL Swift, l'espace de noms Object Storage et le nom du bucket.
  11. Dans la console OCI, créez une clé d'API pour l'utilisateur OCI propriétaire de la base de données cible. Il dispose également des droits d'accès permettant de télécharger des données vers le bucket OCI Object Storage créé à l'étape 10.
    Notez l'OCID utilisateur, l'OCID de location, l'empreinte et la région OCI. Enregistrez les clés privées et publiques correspondantes dans les fichiers PEM. Cette clé d'API sera utilisée par Oracle Zero Downtime Migration pour se connecter à OCI afin d'obtenir des informations sur la base de données cible lors de la migration de base de données et de télécharger des vidages de données vers OCI Object Storage.
  12. Copiez les fichiers PEM de l'étape précédente vers la machine virtuelle Oracle Zero Downtime Migration.
  13. Connectez-vous en tant qu'utilisateur sys à la base de données source pour vous assurer que le paramètre Streams_Pool_Size est défini sur au moins 2G, par exemple :
    SQL>show parameter streams_pool_size;
    SQL>alter system set streams_pool_size=2G scope=both SID=’*’;                  
  14. Utilisez le modèle de fichier de réponses de migration logique d'Oracle Zero Downtime Migration inclus avec Zero Downtime Migration pour créer un fichier de réponses pour la migration. Les paramètres clés sont les suivants :
    • TARGETDATABASE_OCID : OCID de la base de données cible de l'étape 1.
    • MIGRATION_METHOD: OFFLINE_LOGICAL
    • DATA_TRANSFER_MEDIUM: OSS
    • TARGETDATABASE_ADMINUSERNAME: system
    • SOURCEDATABASE_ADMINUSERNAME: system
    • SOURCEDATABASE_CONNECTIONDETAILS_HOST : IP/nom d'hôte du premier noeud de la base de données source.
    • SOURCEDATABASE_CONNECTIONDETAILS_PORT: 1521
    • SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME : nom de service de la base de données pluggable source ou de la base de données non Conteneur. Utilisez lsnrctl pour rechercher.
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_TENANTID : OCID de location de l'étape 11.
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_USERID : OCID utilisateur de l'étape 11.
    • OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_FINGERPRINT : empreinte de l'étape 11.
    • OCIAUTHENTICATIONDETAILS_PRIVATEKEYFILE : chemin d'accès au fichier PEM de clé privée sur le serveur Oracle Zero Downtime Migration à partir de l'étape 12.
    • OCIAUTHENTICATIONDETAILS_REGIONID : ID de région OCI de l'utilisateur OCI à partir de l'étape 11.
    • TARGETDATABASE_CONNECTIONDETAILS_HOST : IP/nom d'hôte de la première machine virtuelle sur le système de base de données cible.
    • TARGETDATABASE_CONNECTIONDETAILS_PORT: 1521
    • TARGETDATABASE_CONNECTIONDETAILS_SERVICENAME : nom de service de la base de données pluggable cible dans la base de données cible. Utilisez lsnrctl pour rechercher.
    • SOURCECONTAINERDATABASE_ADMINUSERNAME: system
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_HOST : IP/nom d'hôte du premier noeud de la base de données source.
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_PORT: 1521
    • SOURCECONTAINERDATABASE_CONNECTIONDETAILS_SERVICENAME : nom de service de la base de données Conteneur source sur le serveur source. Utilisez lsnrctl pour rechercher).
    • DATAPUMPSETTINGS_JOBMODE: SCHEMA
    • DATAPUMPSETTINGS_FIXINVALIDOBJECTS: TRUE
    • DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME: mig
    • DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_PATH : point de montage du système de fichiers réseau à partir de l'étape 6.
    • DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME: mig
    • DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_PATH : point de montage du système de fichiers réseau à partir de l'étape 8.
    • DATAPUMPSETTINGS_CREATEAUTHTOKEN: TRUE
    • DATAPUMPSETTINGS_DATAPUMPPARAMETERS_IMPORTPARALLELISMDEGREE : mettez en commentaire cette ligne avec un signe dièse (#) si la cible est une instance Oracle Base Database Service exécutant Oracle Standard Edition 2. Sinon, entrez un nombre supérieur à deux ou utilisez la valeur par défaut d'Oracle Zero Downtime Migration (nombre d'UC).
    • DATAPUMPSETTINGS_DATAPUMPPARAMETERS_EXPORTPARALLELISMDEGREE : mettez en commentaire cette ligne avec un signe dièse (#) si la base de données source exécute Oracle Standard Edition 2. Sinon, entrez un nombre supérieur à deux ou utilisez la valeur par défaut d'Oracle Zero Downtime Migration (nombre d'UC).
    • DATAPUMPSETTINGS_DATABUCKET_NAMESPACE : espace de noms OCI Object Storage de l'étape 10.
    • DATAPUMPSETTINGS_DATABUCKET_BUCKETNAME : nom de bucket OCI Object Storage de l'étape 10.
    • TABLESPACEDETAILS_AUTOCREATE: TRUE
    • TABLESPACEDETAILS_USEBIGFILE: TRUE
    • TABLESPACEDETAILS_EXTENTSIZEMB: 512
    • EXCLUDEOBJECTS-1: owner:PDBADMIN
  15. Exécutez un travail de migration à exécution sèche Oracle Zero Downtime Migration (-eval) pour valider que tous les prérequis pour la migration sont remplis. L'outil Cloud Pre-Migration Advisor (CPAT) est exécuté pour valider que la base de données source est adaptée à la migration vers la base de données cible à l'aide de la migration logique Oracle Zero Downtime Migration. Résolvez les problèmes signalés par le CPAT avant de continuer. Par exemple :
    
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_x86_server/Oracle_Database_Appliance_node \
    -srcauth zdmauth \
    -srcarg1 user:root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name_from_step_4 \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_14 \
    -eval
    Cette commande demande deux mots de passe. Le premier mot de passe est le mot de passe système de la base de données source. Le deuxième mot de passe est le mot de passe système pour la base de données cible.
    Notez l'ID de travail Oracle Zero Downtime Migration.
    Après une migration sèche réussie, passez à l'étape suivante.
  16. Une fois la migration d'exécution sèche réussie, exécutez le travail Oracle Zero Downtime Migration. Par exemple :
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_first_x86_server/Oracle_Database_Appliance_node \
    -srcauth zdmauth \
    -srcarg1 user:root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name_from_step_4 \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_14
    Cette commande demande deux mots de passe. Le premier mot de passe est le mot de passe système de la base de données source. Le deuxième mot de passe est le mot de passe système pour la base de données cible.
    Notez l'ID de travail Oracle Zero Downtime Migration.