Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives

Esc     cancel/go back to normal mode    Annuler / basculer en mode normal
:q      quit                             Quitter
:wq!    write and quit                   Sauvegarder et quitter
G       go to eof                        Aller à la fin du fichier
1G      go to line 1                     Aller à la ligne 1
50G     go to line 50                    Aller à la ligne 50
-       go to begin of prev line         Aller au bédut de la ligne précédente
+       go to begin of next line         Aller au début de la ligne suivante
$       go to end of current line        Aller à la fin de la ligne courante
^       go to begin of current line      Aller au début de la ligne courante
/xxx    find xxx                         Trouver le mot xxx
z.      refresh                          Rafraichir
dd      delete line                      Supprimer la ligne
D       delete rest of line              Supprimer la ligne à partir du curseur
x       delete current char              Supprimer le caractère courrant
a       insert after current char        Passer en mode insertion après le curseur
i       insert ahead of current char     Passer en mode insertion avant le curseur
o       insert after current line        Passer en mode insertion après la ligne courante
cw      change word under cursor         Modifier le mot sous le curseur
J       join lines                       Joindre le lignes
yy      copy line to clipboard           Copier la ligne
p       paste line above cursor          Coller les données après le curseur

Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives

Une nouveauté sur la 11g est l'apparition de l'ACS pour Adaptive Cursor Sharing. Cette nouvelle fonctionnalité permet de pallier aux problèmes de bind rencontrer sur les requêtes SQL utilisant des paramètres.

Rappel : Il est possible d'utiliser des variables ou des litéraux dans les requêtes. Les litéraux sont des valeurs en dur dans la requête (type='manager' par exemple). Chaque requête génère alors un plan potentiellement différent pour chaque valeur du litéral. Plus le nombre requête avec des valeurs différentes est important plus la consommation mémoire dans le sharepool est importante.

De plus le calcul d'un nouveau plan (hard parse) est très couteux en CPU. Pour pallier cette problématique, l'utilisation des variables dans les requêtes permet de limiter ce problème car un seul plan est déterminé par l'optimiseur et les valeurs. Les requêtes suivantes vont reprendre le plan calculé (soft parse). Le problème c'est que le premier plan calculer n'est pas forcement le plus optimal suivant les valeurs utilisées pour chaque variable.

Un paramètre d'initialisation : CURSOR_SHARING pouvait prendre plusieurs valeurs et le comportement de l'optimiseur est différent suivant qu'il y ai ou non des histogrammes sur les colonnes :

Prenons un exemple de requête :

SELECT * FROM emp WHERE TYPE='Manager'
CURSOR_SHARING Consommation Mémoire Performance de la requête Comportement de l'optimiseur
EXACT La plus forte (chaque requête a son propre curseur) la meilleure (chaque requête a son propre plan, optimal pour les litéraux utilisés)

l'optimiseur vous la requête tel quelle (qu'il y ai ou non des histogrammes)
--> where type='Manager'

FORCE La meilleure (la plus réduite possible) potentiellement le pire, l'optimiseur forcant l'utilisation de variable et ne calculant alors qu'un seul plan. l'optimiseur force le remplacement du ou des litéraux par des variables (qu'il y ai ou non des histogrammes)
--> where type=:a
SIMILAR sans Histo La meilleure (la plus réduite possible) potentiellement le pire, l'optimiseur forcant l'utilisation de variable et ne calculant alors qu'un seul plan. Le fait qu'il n'y ai pas d'histogramme indique pour l'optimiseur que la colonne est répartie de manière équitable (not skew = pas de biais), il va donc utiliser le remplacement de la ou les variables
--> where type=:a
SIMILAR avec Histo Pas autant que le mode EXACT mais assez proche tout de même la meilleure (chaque requête a son propre plan, optimal pour les litéraux utilisés)  Pour l'optimiseur le fait qu'il y ai un histogramme lui indique que la colonne contient des données non uniformement distribuées (les valeurs peuvent influencer le plan). Dans ce cas, il n'opére pas de modification de la requête.
--> where type='Manager'

 Avec l'ACS, le comportement de l'optimiseur est un peut plus complexe :

Commentaire (0) Clics: 5871

Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives

Excel est un excellent tableur. Pourtant contrairement à une base de données, il est plus difficile d'y faire une jointure.

La jointure en base de données permet (entre autre) de récupérer un ou plusieurs champs d'une (ou plusieurs) autre table que la table principale.

Dans excel la table principale est un tableau et les autres tables périphériques d'autres tableaux.

La fonction RECHERCHEV est une fonction excel qui permet de récupérer des informations d'autres tableaux et donc de faire une "jointure" dans excel.

A partir du tableau d'origine une cellule appelle la fonction RECHERCHEV qui va rechercher la présence d'un élement du tableau original dans un autre tableau. Les tableaux n'ont pas nécessairement la même taille (ni en nombre de lignes ni en nombre de colonnes).

Exemple :

Commentaire (0) Clics: 13281

Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives

Dans excel, j'ai toujours trouvé qu'il y avait un manque cruel de la fonction de comptage des éléments distinct d'une plage.

Une petite fonction utilisateur est donc nécessaire pour pallier ce manque.

voici le code de cette fonction :

Function NbValUniques(laPlage As Range)
Dim ValeursUniques As New Collection
On Error Resume Next
For Each cell In laPlage
ValeursUniques.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0
NbValUniques = ValeursUniques.Count
End Function

Il suffit alors d'appeller cette fonction comme n'importe quelle autre depuis une cellule excel et de définir la plage des éléments à compter :

 

Commentaire (0) Clics: 5078

Sous-catégories

Des tutoriaux et cours gratuits sur Oracle

Articles traitant de l'intégration de données

Tutoriaux sur Unix et les shells scripts