une base de données Oracle devrait avoir plus d'un tablespace pour le stockage de données?

StackOverflow https://stackoverflow.com/questions/1291317

  •  18-09-2019
  •  | 
  •  

Question

Mon équipe maintient une base de données Oracle qui est environ. 200GB taille. Toutes les données (tables, index, etc) vit dans un seul tablespace « UTILISATEURS ». Est-ce une mauvaise idée? Quels sont les avantages d'avoir plusieurs tablespaces, et dans quelles circonstances ce que je voudrais ajouter à ma base de données?

Merci!

Était-ce utile?

La solution

Mon parti pris (ce qui est en grande partie une question de préférence personnelle) est que s'il n'y a aucun avantage convaincant pour créer tablespaces supplémentaires, la vie est plus facile avec un espace de table unique.

  • Il n'y a aucun avantage de performance pour mettre des objets dans différents tablespaces. Il y a un vieux mythe qui sépare les tables et les index auraient des avantages de performance. Il y a un avantage potentiel pour la diffusion d'E / S sur toutes les broches disponibles, mais qui est mieux fait avec plusieurs fichiers de données dans un tablespace seul puis avec plusieurs tablespaces depuis Oracle fait une allocation ronde des degrés dans les différents fichiers de données en supposant que votre SAN ISN « t faire déjà quelque chose à égaliser E / S.
  • Si vous avez de grandes tables, recherche / histoire statiques tels que vous pourriez apporter une nouvelle copie de la base de données sur le site du client en apportant simplement les tablespaces plus petites transactions, ce serait une raison de considérer plusieurs tablespaces. Mais il y a très peu d'applications qui ont ce genre de configuration. Si vous devez apporter tous les 200 Go, peu importe combien de tablespaces vous.
  • Dans le même sens, si vous avez de grandes lecture seule des objets, les mettre dans un espace de table en lecture seule peut diminuer considérablement le temps et l'espace requis pour les sauvegardes. Encore une fois, cependant, ce n'est pas particulièrement courante dans la pratique en dehors des entrepôts de données.
  • Si votre application peut fonctionner sans un sous-ensemble d'objets, il peut y avoir un avantage à créer des tablespaces distincts afin que vous puissiez prendre un hors-ligne et faire un tablespace restauration de niveau. Encore une fois cependant, quelques applications peuvent fonctionner sans un ensemble de objects-- si vous perdez le tablespace d'index, par exemple, l'application est probablement aussi mort que vous aviez tout perdu.
  • Si vous avez un grand nombre de tables vides ou presque vides et un certain nombre de très grandes tables, tablespaces distinctes avec les différentes politiques d'allocation de mesure peuvent être preferrable du point de vue de l'utilisation de l'espace. Cela arrive de temps en temps avec des applications packagées où une installation donnée utilise un pourcentage relativement faible des tables disponibles et vous ne voulez pas chacune des tables vides ont une étendue relativement importante qui lui est attribué. Avec la gestion automatique de mesure dans un tablespace géré localement, ce qui tend à ne pas être une préoccupation majeure, il peut être plus au sujet si vous souhaitez utiliser des degrés uniformes.
  • Si différents objets ont des priorités différentes pour les performances du disque, et vous avez différents types de disque disponible, tablespaces séparés peuvent vous permettre de mettre différents objets sur différents ensembles de disques. Dans un entrepôt de données, par exemple, vous pouvez mettre des données plus anciennes sur le disque plus lent, moins cher et plus récentes données sur le disque plus coûteux. Cela ne se produit pas beaucoup avec les applications OLTP.

À moins que votre demande tombe dans l'un de ces cas particuliers, le seul avantage d'avoir tablespaces séparés est de faire appel au sens de l'organisation d'un DBA. Personnellement, je suis plus qu'heureux de pouvoir éviter de spécifier un nom de tablespace chaque fois que je crée un objet ou de passer des cycles de déplacer des objets du tablespace « mauvais » quand ils inévitablement se créés dans le tablespace par défaut par erreur. Personnellement, je ne suis pas trop inquiet si quelques dizaines de Mo d'espace sont « gaspillées » lors de l'utilisation tablespaces gérés localement avec gestion automatique de mesure sur un ensemble optimisé à la main de tablespaces avec différentes tailles d'extent uniformes. D'autre part, les bons DBA ont tendance à être très préoccupés par les choses organisées « tellement », donc je ne suis pas militantly opposé si un DBA veut avoir tablespaces d'index et de données séparés juste parce que fait appel au sens de l'esthétique de quelqu'un.

Autres conseils

Voir http://download.oracle.com /docs/cd/B10501_01/server.920/a96521/tspaces.htm

Voir http://download.oracle.com /docs/cd/B28359_01/server.111/b28318/physical.htm

  

Vous pouvez utiliser plusieurs tablespaces pour   effectuer les tâches suivantes:

     

disque de contrôle allocation d'espace pour   les données de base de données

     

Attribuer des quotas d'espace spécifiques pour   les utilisateurs de la base de données

     

disponibilité de contrôle des données en prenant   individuels en ligne ou tablespaces   hors ligne

     

Effectuer une sauvegarde de base de données partielle ou   les opérations de récupération

     

Allouer stockage de données à travers les dispositifs   pour améliorer la performance

L'une des raisons pour l'utilisation de différents tablespaces serait le désir d'utiliser le transport tablespace pour déplacer des données entre les bases de données. Si vous avez un nombre limité de données que vous souhaitez déplacer sans avoir à exporter et importer ensuite le transport tablespace est une bonne option, surtout s'il est important, pour des raisons de test que les données ont exactement la même structure physique que le système source ( pour le travail d'analyse des performances, par exemple).

Je suis en désaccord avec l'évaluation Caves Justin. Un DBA de production aurait probablement une opinion très différente.

Transportable tablespaces fonction pour des sous-ensembles mobiles de données entre les bases de données, sans avoir à déplacer la base de données entière.

en lecture seule tablespaces si vous ne sauvegardez pas la base de données entière chaque semaine, ce qui pourrait prendre plusieurs heures, et vous ne pouvez pas supporter le coup de performance pour ce laps de temps, même si votre limite le taux.

sauvegarder uniquement certains tablespaces à des dates fixes en raison de la taille pure, bien que beaucoup d'endroits n'ont tout simplement pas les bases de données ce grand. même raison que le point ci-dessus.

En fonction de votre application, disons il y a des modules qui peuvent fonctionner indépendamment l'un de l'autre du côté de la demande. S'ils ont chacun leur propre ensemble de tablespaces, vous pouvez prendre une applications tablespaces hors ligne pour faire une reorg sans affecter les autres modules ... ils peuvent fonctionner normalement.

que pour la séparation des données et indices: la raison traditionnelle était de mettre les deux sur différents disques afin qu'ils ne sont pas en concurrence les uns avec les autres sages performances. Pas tant d'un problème d'aujourd'hui des capacités de stockage, comme les réseaux SAN, où il est tous vraiment la même zone de stockage, mais il est toujours la considération que vous allez obtenir discorde au niveau d'en-tête de fichier, même avec tablespaces géré localement si vous avez tous vos objets dans la même table où vous ne pouvez pas séparer les locigally index des tables !! Même si vous créez 20 fichiers de données dans une table, vous ne recevez pas de décider où les tables et les index vont, puis un jour, vous vous remarquez avez majeure affirmation au niveau d'en-tête de fichier en raison de l'activité massive contre sur la table où ses index arriver à être dans le même fichier de données! En fait Scrap. si vous avez seulement un ts, alors vous sans expérience doute affirmation d'en-tête du fichier.

il y a plus de raisons pour avoir cette séparation logique, et non, ce n'est pas sur les performances pour la plupart, il est plus sur l'administration dans un environnement de production.

S. Lott a déjà donné une bonne liste des raisons générales pour lesquelles on pourrait vouloir diviser sur plusieurs que jusqu'à tablespaces.

Plus spécifique à votre situation ...

Je me demande s'il y a des raisons spécifiques pour changer les choses maintenant. Il n'y a pas une mince tâche de faire un changement structurel comme ça. Y at-il des problèmes de performance? Courez-vous contre les limites d'espace de stockage? Avez-vous besoin d'attribuer des quotas d'espace? Votre sauvegarde actuelle et restaurer le plan répond à vos besoins?

Si vous pouviez revenir en arrière dans le temps et refaire les choses depuis le début, vous voulez certainement à l'intention de diviser sensiblement la base de données dans différents espaces de table. Mais il vaut la peine maintenant?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top