Maintenance des blocs d'initialisation

Lorsque vous utilisez Data Gateway ou Remote Data Connector avec Oracle Analytics Cloud, un léger temps système s'ajoute à la durée de chaque exécution de requête.

Vous ne vous rendrez pas compte de cette durée supplémentaire lorsque vous exécuterez un rapport car elle est inférieure à 0,3 seconde. En revanche, vous pouvez rencontrer des problèmes de performances si vous exécutez de nombreux blocs d'initialisation (le nombre dépend de vos exigences de performances) dès qu'un utilisateur se connecte car les requêtes de bloc d'initialisation sont exécutées en série. L'utilisation de l'option de différé pour les blocs d'initialisation ne règle pas le problème car ceux-ci sont exécutés lorsque vous ouvrez la première page de tableau de bord.

Le problème se pose lorsque vous utilisez les applications Oracle BI Applications car elles exécutent plus de 200 blocs d'initialisation. Pour Oracle Analytics Cloud, le meilleur moyen d'éviter ces problèmes de performances est de réduire le nombre de blocs d'initialisation.

Nos recommandations sur la façon de réduire le nombre de blocs d'initialisation de session sont les suivantes :

  • Désactivez tous les blocs d'initialisation dont vous n'avez pas véritablement besoin.

    Par exemple, dans Oracle BI Applications, désactivez les blocs d'initialisation qui font référence à des modules Oracle BI Applications que vous n'utilisez plus.

  • Sauf en présence d'une règle de priorité, fusionnez tous les blocs d'initialisation row_wise qui utilisent le même pool de connexions et renvoient le même type de données en plaçant UNION ALL entre les requêtes correspondantes.

    Par exemple :

    Init block 1: query1
    
    Init block 2: query2
    
    Merged init block: query1 union all query2
  • Désactivez tous les blocs d'initialisation qui sélectionnent une valeur codée en dur dans dual ou W_DUAL_G, et placez la valeur codée en dur dans l'initialiseur par défaut de la variable correspondante.
  • Fusionnez les blocs d'initialisation restants qui sélectionnent des données dans dual dans une seule instruction select.
  • Pour les clients Oracle BI Applications, désactivez tous les blocs d'initialisation servant à extraire les noms et les valeurs des attributs personnalisés Oracle Human Capital Management si l'attribut correspondant n'est pas utilisé (si la valeur par défaut standard HIDE est la valeur en cours de ces variables) ou si vous n'utilisez pas Oracle Human Capital Management en tant que source de données Oracle BI Applications (Oracle BI Applications compte 100 blocs d'initialisation de ce type) :
    HR xxx Attribute yyy
  • Fusionnez tous les blocs d'initialisation restants qui ne sont pas des blocs row_wise et qui utilisent le même pool de connexions. Par exemple :

    Le bloc d'initialisation 1 est basé sur query1 : select colA from tableA where….

    Le bloc d'initialisation 2 est basé sur query2 : select colB from tableB where….

    Vous pouvez les fusionner dans un seul bloc d'initialisation à l'aide d'une requête telle que la suivante :

    Select MAX(colA), MAX(colB) from (
    
    select cola as cola, null as colB from tableA where….
    
    Union all
    
    Select null, colB from tableB where…) tmp

Vous pouvez exécuter autant d'unions que nécessaire pour extraire toutes les variables d'un même pool de connexions dans une seule requête.

L'implémentation ou la maintenance de ce processus n'est pas simple. Vous risquez de commettre des erreurs en créant les requêtes et en affectant toutes les variables à un bloc d'initialisation unique. Si vous procédez à l'implémentation et à la maintenance des variables et requêtes de bloc d'initialisation avec attention, vous pouvez réduire significativement le temps nécessaire à la connexion et à l'affichage de la première page de tableau de bord.