Comment effectuer une transition de SQL Server DBA vers Oracle?


30

Par intérêt, si je devais passer d'un DBA SQL Server à Oracle, quel serait le principal apprentissage ou désapprentissage que je devrais faire?

Je suppose que les concepts sont les mêmes et que la différence n'est que le langage de programmation, mais je n'ai pas vu l'autre côté de la porte.



1
peu d'humour (désolé si OT), avez-vous rencontré? dba.stackexchange.com/questions/16884/…
booyaa

Réponses:


40

Oracle et SQL Server présentent un certain nombre de différences architecturales et idiomatiques, et plusieurs éléments clés de la terminologie sont utilisés différemment dans la documentation. Cela fait quelques années que je l'ai fait, mais certaines des principales différences idiomatiques sont:

  • Oracle n'a pas d'équivalent direct à tempdb. Les tables temporaires globales sont des entités persistantes et vous ne les créez pas à la volée comme vous le feriez avec une table temporaire dans SQL Server.

  • Le PL / SQL idiomatique est beaucoup plus procédural que le T-SQL idiomatique. D'un autre côté, PL / SQL a des fonctionnalités pour prendre en charge les opérations de curseur rapides, y compris les constructions de boucles parallèles. Souvent, les résultats du curseur intermédiaire sont utilisés de manière similaire au tri que l'on utiliserait pour les tables temporaires dans SQL Server. Cherchez à utiliser '%' pour obtenir un polymorphisme dans les types de variables de curseur.

  • SQL * Plus est un outil en ligne de commande similaire à SQLCMD. Sur une installation vanille, il peut être tout ce dont vous disposez. Si vous voulez un outil GUI comme SSMS, vous pouvez obtenir SQL Developer ou des outils tiers tels que TOAD. TOAD est assez cher.

  • Découvrez le rôle des segments de restauration (utilisés dans MVCC d'Oracle) et les joies de l'erreur «instantané trop ancien».

  • Créez un compte metalink si possible.

  • Lisez le guide des concepts. Il contient de nombreuses informations de démarrage utiles.

  • Les espaces disque logiques sont à peu près équivalents aux groupes de fichiers.

  • SQL et le dialecte SQL intégré dans PL / SQL ne sont pas tout à fait la même chose dans Oracle.

  • Oracle n'a pris en charge les CTE récursifs que récemment. Vous pouvez effectuer des requêtes récursives avec CONNECT BY.

  • Lisez la documentation de RMAN pour voir comment effectuer des sauvegardes. Vous pouvez effectuer quelques astuces intéressantes, comme fusionner des sauvegardes différentielles en une seule sauvegarde restaurable.

  • Le dictionnaire de données système contient les versions «ALL», «USER» et «DBA» des tables. 'USER_ ' affiche les objets appartenant à la connexion. 'ALL_ ' affiche tous les objets que la connexion peut lire. 'DBA_ *' est une vue globale, mais vous devez disposer des autorisations appropriées pour le voir. Vous utiliserez probablement le dictionnaire de données plus avec Oracle qu'avec SQL Server, alors apprenez-le.

  • Les tables en cluster sont appelées «tables ordonnées par index» dans Oracle. Les «tables groupées» d'Oracle font référence à une fonctionnalité très différente. Dans Oracle, une table en cluster est une fonctionnalité qui permet de combiner le stockage physique des tables maître / détail sur la base d'une clé commune. Cette fonctionnalité n'est pas largement utilisée.

  • Les vues indexées sont appelées «vues matérialisées» dans Oracle. Ils fonctionnent un peu différemment, avec suffisamment de nuances pour mériter leur propre question.

  • Oracle n'a pas de concept équivalent à une «base de données» dans SQL Server. Dans Oracle, un schéma n'est que le propriétaire de certains objets de base de données.

  • PL / SQL a une structure de module explicite appelée «packages».

  • Regardez l'utilisation de séquences au lieu de colonnes d'identité.

  • Obtenir un plan de requête est un peu plus compliqué dans les anciennes versions d'Oracle (avant 10g). Vous devez créer une table (du bon format) pour vider le plan, puis 'EXPLAIN PLAN' la requête dans la table pour obtenir le plan de requête. Vous pouvez ensuite récupérer le plan de requête hors de la table. Tout le monde et son chien ont des requêtes de plan de requête préférées. Faites une recherche Google et trouvez-en un, puis frigorifiez-le au goût. 10g a ajouté un package appelé dbms_xplan , ce qui simplifie le travail avec les plans de requête.

  • Si vous exécutez Oracle sur un hôte unix ou linux, avoir une connaissance pratique des scripts shell ne nuirait pas.

  • Oracle prend en charge les transactions autonomes - vous pouvez valider une transaction autonome interne et vous attendre à ce qu'elle reste validée si le parent annule. Les transactions imbriquées SQL Server ne sont pas de véritables transactions imbriquées et ont une sémantique différente. Vous pouvez émuler ce comportement avec une procédure stockée CLR dans SQL Server en ouvrant une connexion indépendante et en effectuant l'opération autonome à travers cela.

Oracle est livré avec moins d'outils BI prêts à l'emploi, bien qu'Oracle vende des serveurs OLAP, des outils de génération de rapports et des outils ETL.

  • Oracle regroupe un outil de chargement en masse appelé SQL * Loader, dont la fonction est similaire à bcp.

  • L'équivalent le plus proche de SSIS est Oracle Warehouse Builder (OWB), mais il s'agit d'un élément distinct et non fourni avec le système de base.

  • Oracle crée un outil de génération de rapports appelé Oracle Reports , mais il n'est pas non plus fourni avec le système de base. Il s'agit de l'équivalent le plus proche de Reporting Services.

  • Oracle crée également un outil ROLAP appelé Discoverer . Il s'agit du produit le plus proche du générateur de rapports produit par Oracle. Les versions plus récentes («Drake») prennent en charge le moteur OLAP d'Oracle.

  • Oracle avait un produit OLAP appelé Express. À un moment donné, ils l'ont intégré au moteur Oracle DBMS de base, stockant ses structures de données natives dans des objets blob opaques. Il n'est pas totalement compatible avec Express et possède une interface propriétaire avec très peu de support des outils frontaux OLAP tiers.

  • Oracle BI Enterprise Edition est ce qui était auparavant Siebel Analytics. Cela a une fonctionnalité OLAP mais je ne la connais pas. Peut-être que quelqu'un qui l'a utilisé aimerait commenter. Sans admettre directement que Siebel était un produit complètement distinct de ses propres outils de BI, Oracle a déclaré qu'il n'y avait «aucun chemin de mise à niveau» d'Oracle BI Standard Edition vers Enterprise Edition. Notez que les suites Standard et Enterprise BI sont des produits distincts et ne sont pas fournies avec le système de base.

  • En pratique, la chose la plus proche des SSAS vendus par Oracle est Essbase (anciennement Hyperion). Il s'agit d'un produit distinct et non fourni avec le système de base.

Sans surprise, la stratégie de BI d'Oracle est considérée par les experts de l'industrie comme une sorte de petit-déjeuner pour chien.

Il y a probablement d'autres choses que je ne peux pas penser à OTOH; Je les ajouterai en pensant à eux.


1
Wow c'est très proche de ce que je cherchais. Grande information! J'ai lu qu'Oracle a des travaux de type serveur SQL qui peuvent être exécutés automatiquement. Quelque chose d'équivalent à SSIS dans Oracle?
darwindeeds

1
La chose la plus proche de SSIS dans Oracle est Oracle Warehouse Builder (OWB), mais il n'est pas fourni avec le système de base. Vous devez l'acheter séparément. Il existe un outil de chargement en masse similaire à bcp appelé SQL * Loader.
ConcernedOfTunbridgeWells

6
Choses que j'ajouterais à cette liste: dans Oracle, les lecteurs ne bloquent jamais les écrivains et les écrivains ne bloquent jamais les lecteurs. Ma compréhension est que cela est toujours différent dans une installation par défaut dans SQL Server. Oracle ne permet jamais de lire des données non validées. Vous utilisez à peine les tables temporaires dans Oracle - tout faire en une seule grande instruction est très souvent beaucoup plus rapide. Des validations fréquentes ralentiront le chargement en masse. Idéalement, il suffit d'émettre un seul commit une fois que tout est fait.
a_horse_with_no_name

1
@a_horse_with_no_name votre compréhension est correcte
Jack Douglas


10

Nous travaillons avec Oracle et SQL Server, et notre responsable DBA, Michelle Malcher, aide fréquemment les collègues dans cette transition. Sur la base de cette expérience, elle a écrit un livre intitulé "Oracle Database Administration for Microsoft SQL Server DBAs (Oracle Press)". J'ai aimé ce livre.

Je ne sais pas si recommander un livre par un collègue est approprié pour ce site. Je ne rapporte pas à Michelle, je dirige une équipe de développeurs.


2
Je me souviens d'avoir participé à une conversation sur l'auto-promotion sur meta.stackoverflow.com et d'avoir répondu que la zone grise autour de l'auto-promotion était OK si elle était pertinente pour la question. Jeff Atwood a accepté.
ConcernedOfTunbridgeWells

2
Je ne travaille pas avec Michelle, mais j'ai beaucoup aimé ce livre. J'ai trouvé cette façon d'expliquer - comparer l'architecture SQL Server avec celle d'Oracle plus intéressante que de dire, en lisant un livre Oracle DBA standard.
RK Kuppala
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.