IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

EXECUTE_TUNING_TASK => Type d'instruction SQL non pris en charge


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Points : 63
    Points
    63
    Par défaut EXECUTE_TUNING_TASK => Type d'instruction SQL non pris en charge
    Bonjour,

    Je souhaite optimiser des requêtes SQL et après avoir optimisé la transcription fonctionnelle du code (pour certains SQL) et l'ajout d'index, j'ai débuté l'analyse des plans via le tuning que propose Oracle.
    Précision je ne suis pas DBA et sans formation particulière Oracle, juste un apprentissage sur le tas lors de mes différents projets pro...

    Donc pour une requête précise, ci-dessous et générée par un progiciel donc je n'ai pas la main dessus, qui prend beaucoup de temps pour seulement 20 000 enregistrements, je souhaite lancer le "profiling".
    Le problème c'est qu'en passant par SQLDeveloper (SQL Tuning Advisor) ou en créant une tache d'analyse manuellement, la réponse est la suivante "Type d'instruction SQL non pris en charge."

    Seconde précision, j'ai lancé des taches d'analyse pour des SQL plus complexes et avec des sous requêtes et çà passe sans problème, donc là je sèche

    Avez-vous une idée du pourquoi et si oui comment résoudre ce blocage ?

    Merci pour vos retours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    UPDATE	S_ADDR_PER BT
       SET (ADDR,
    	ADDR_LINE_2,
    	ADDR_LINE_3,
    	ADDR_LINE_4,
    	CITY,
    	ZIPCODE,
    	PER_ID) =
    	(SELECT	IT.AP_ADDR,
    		IT.AP_ADDR_LINE_2,
    		IT.AP_ADDR_LINE_3,
    		IT.AP_ADDR_LINE_4,
    		IT.AP_CITY,
    		IT.AP_ZIPCODE,
    		IT.T_ADDR_PER_PER_ID
    	   FROM	EIM_ADDR_PER IT
    	 WHERE (IT.T_ADDR_PER__RID = BT.ROW_ID AND
    		IF_ROW_BATCH_NUM = 2072040000 AND
    		IF_ROW_STAT_NUM = 0 AND
    		T_ADDR_PER__EXS = 'Y' AND
    		T_ADDR_PER__UNQ = 'Y' AND
    		T_ADDR_PER__STA = 0)),
    	DB_LAST_UPD = '2019-05-22 11:01:20',
    	DB_LAST_UPD_SRC = 'EIM',
    	LAST_UPD = '2019-05-22 11:01:20',
    	LAST_UPD_BY = '1-ZH2',
    	MODIFICATION_NUM = MODIFICATION_NUM + 1
     WHERE (ROW_ID IN
    	(SELECT	T_ADDR_PER__RID
    	   FROM	EIM_ADDR_PER
    	 WHERE (IF_ROW_BATCH_NUM = 2072040000 AND
    		IF_ROW_STAT_NUM = 0 AND
    		T_ADDR_PER__EXS = 'Y' AND
    		T_ADDR_PER__UNQ = 'Y' AND
    		T_ADDR_PER__STA = 0)))

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Que signifie "je souhaite lancer le "profiling""?

    Quel est le code erreur associé à ton message d'erreur? Les messages en français ne sont pas les plus explicites, ce serait mieux si tu passais ton logiciel en anglais..
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Points : 63
    Points
    63
    Par défaut
    Bonjour Ikebukuro,

    Citation Envoyé par Ikebukuro Voir le message
    Que signifie "je souhaite lancer le "profiling""?
    C'est que j'explique plus bas, avec l'option SQLDeveloper => "SQL Tuning Advisor" ou manuellement via la création d'une tache et sont lancement via EXECUTE_TUNING_TASK et dans le résultat j'ai ce message.
    Avec d'autre SQL j'ai soit la proposition de création d'index, et/ou de lancement des stats, et/ou la création d'un profile lié à un sqlid (ma requête). Pas avec cette requête :/

    Citation Envoyé par Ikebukuro Voir le message
    Quel est le code erreur associé à ton message d'erreur? Les messages en français ne sont pas les plus explicites, ce serait mieux si tu passais ton logiciel en anglais..
    Le message en anglais est exactement le même hélas: "type of sql statement not supported", et il n'y a pas de code erreur...

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Voici ce que j'ai trouvé sur le net : seuls les SELECTs sont gérés par le SQL Tuning Advisor, pas les INSERT, UPDATE, DELETE, MERGE...
    https://nzdba.wordpress.com/2014/01/...visor-and-dml/

    Ils citent le support Oracle : "the sql tuning advisor will check the select part only and not the DML part,yes technically it is considered DML but actually internally it will not use the DML but will use the SELECT part…"
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Points : 63
    Points
    63
    Par défaut
    Bonjour Ikebukuro,

    Merci pour ce lien, l'explication semble "sexy" en effet...

    Ceci-dit, dans l'optimisation de mes SQL j'ai déjà analysé manuellement, je veux dire en lançant les commandes DBMS_SQLTUNE moi même, un SQL d'UPDATE et Oracle m'a bien créé un profile approprié en plus de m'avoir proposé de lancer les statistiques, donc l'explication même sexy semble étrange :/

    Voilà le code sur lequel j'ai créé un profile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    UPDATE	EIM_ADDR_PER IT
    	SET	T_ADDR_PER__RID = NULL,
    	T_ADDR_PER__STA = 103,
    	IF_ROW_STAT_NUM = 103,
    	IF_ROW_STAT = 'AMBIGUOUS'
     WHERE (T_ADDR_PER__RID IS NOT NULL AND
    	EXISTS
    	(SELECT	'another match'
    	   FROM	S_ADDR_PER BT
    	 WHERE (BT.ADDR_NAME = IT.AP_ADDR_NAME AND
    		BT.ROW_ID <> IT.T_ADDR_PER__RID)) AND
    	IF_ROW_BATCH_NUM = :1 AND
    	IF_ROW_STAT_NUM = 0 AND
    	T_ADDR_PER__STA = 0)

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Attention, on parle du "SQL Tuning ADVISOR" et pas du package PL/SQL DBMS_SQLTUNE.

    L'Advisor est un outil et c'est lui qui est limité. Cela ne t'empêche pas, visiblement, de tuner un UPDATE mais pour cela il faut tout faire à la main avec les packages PL/SQL (qui eux-même sont appelés par l'Advisor).
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

Discussions similaires

  1. [AC-2003] Erreur -2147217900 Instruction SQL non valide
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/09/2010, 09h41
  2. <Type de données non pris en charge>
    Par Alex35 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/12/2007, 12h38
  3. ORA-00900 Instructions SQL non valides
    Par yLaplace dans le forum JDBC
    Réponses: 0
    Dernier message: 03/12/2007, 12h45
  4. [sql] instruction sql non valide
    Par liloo31 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/12/2006, 14h15
  5. Réponses: 4
    Dernier message: 01/07/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo