Suite

Comment puis-je charger un fichier sqlite dans oracle 11g ?


J'ai un fichier SQLite que je l'ai pris de Sptialite DB. Je dois convertir ce fichier en SDO. SVP aidez moi


Vous pouvez utiliser OGR2OGR pour ce faire, l'écriture sur Oracle se fait via le pilote OCI ; la lecture à partir de SpatialLite se fait via le pilote SQLite, donc quelque chose comme :

ogr2ogr -f OCI OCI:warmerda/[email protected] db.sqlite

devrait le faire.


Utilisations appropriées pour SQLite

SQLite n'est pas directement comparable aux moteurs de base de données SQL client/serveur tels que MySQL, Oracle, PostgreSQL ou SQL Server, car SQLite essaie de résoudre un problème différent.

Les moteurs de base de données SQL client/serveur s'efforcent de mettre en œuvre un référentiel partagé de données d'entreprise. Ils mettent l'accent sur l'évolutivité, la concurrence, la centralisation et le contrôle. SQLite s'efforce de fournir un stockage de données local pour les applications et les appareils individuels. SQLite met l'accent sur l'économie, l'efficacité, la fiabilité, l'indépendance et la simplicité.

SQLite n'est pas en concurrence avec les bases de données client/serveur. SQLite est en concurrence avec fopen().


1.1. Mises en garde

¹Le chiffre de 35 % ci-dessus est approximatif. Les horaires réels varient en fonction du matériel, du système d'exploitation et des détails de l'expérience, et en raison des fluctuations aléatoires des performances sur le matériel du monde réel. Voir le texte ci-dessous pour plus de détails. Essayez les expériences vous-même. Signalez les écarts importants sur le forum SQLite.

Le chiffre de 35% est basé sur l'exécution de tests sur chaque machine que l'auteur a facilement à portée de main. Certains critiques de cet article signalent que SQLite a une latence plus élevée que les E/S directes sur leurs systèmes. On ne comprend pas encore la différence. Nous voyons également des indications selon lesquelles SQLite ne fonctionne pas aussi bien que les E/S directes lorsque les expériences sont exécutées à l'aide d'un cache de système de fichiers froid.

Alors laissez votre conclusion être ceci : la latence de lecture/écriture pour SQLite est compétitive avec la latence de lecture/écriture des fichiers individuels sur le disque. Souvent, SQLite est plus rapide. Parfois, SQLite est presque aussi rapide. Quoi qu'il en soit, cet article réfute l'hypothèse courante selon laquelle une base de données relationnelle doit être plus lente que les E/S directes du système de fichiers.


3. Compiler une extension chargeable

Les extensions chargeables sont en code C. Pour les compiler sur la plupart des systèmes d'exploitation de type Unix, la commande habituelle ressemble à ceci :

Les Mac sont de type Unix, mais ils ne suivent pas les conventions habituelles des bibliothèques partagées. Pour compiler une bibliothèque partagée sur un Mac, utilisez une commande comme celle-ci :

Si, lorsque vous essayez de charger votre bibliothèque, vous obtenez un message d'erreur indiquant "mach-o, mais mauvaise architecture", vous devrez peut-être ajouter les options de ligne de commande "-arch i386" ou "arch x86_64" à gcc, selon comment votre application est construite.

Pour compiler sous Windows à l'aide de MSVC, une commande similaire à la suivante fonctionnera généralement :

Pour compiler pour Windows à l'aide de MinGW, la ligne de commande est identique à celle d'unix, sauf que le suffixe du fichier de sortie est remplacé par ".dll" et que l'argument -fPIC est omis :


Comment puis-je charger un fichier sqlite dans oracle 11g ? - Systèmes d'information géographique

SQLite est une bibliothèque en langage C qui implémente un moteur de base de données SQL petit, rapide, autonome, haute fiabilité et complet. SQLite est le moteur de base de données le plus utilisé au monde. SQLite est intégré à tous les téléphones mobiles et à la plupart des ordinateurs et est intégré à d'innombrables autres applications que les gens utilisent tous les jours. Plus d'information.

Le format de fichier SQLite est stable, multiplateforme et rétrocompatible et les développeurs s'engagent à le conserver jusqu'en 2050. Les fichiers de base de données SQLite sont couramment utilisés comme conteneurs pour transférer un contenu riche entre les systèmes Ώ] ΐ& #93 Α] et ​​comme format d'archivage à long terme pour les données Β]. Il existe plus d'un billion (1e12) de bases de données SQLite en cours d'utilisation Γ].

Le code source de SQLite est dans le domaine public et est libre d'utilisation pour tout le monde.

Dernière version

Liens communs

  • Caractéristiques
  • Quand utiliser SQLite
  • Commencer
  • Versions antérieures
  • Syntaxe SQL
    • Pragmas
    • Fonctions SQL
    • Fonctions date et heure
    • Fonctions agrégées
    • Fonctions de fenêtre
    • Fonctions mathématiques
    • Fonctions JSON
    • introduction
    • Liste des API en langage C

    Le développement et le support continus de SQLite sont rendus possibles en partie par les membres du consortium SQLite, notamment :


    Comment puis-je charger un fichier sqlite dans oracle 11g ? - Systèmes d'information géographique

    Ce chapitre fournit des instructions pour assurer la sécurité d'Enterprise Manager.

    Directives pour une infrastructure et des installations sécurisées

    La sécurisation de votre déploiement Oracle Enterprise Manager implique la sécurisation de toutes les couches de la pile, en commençant par le système d'exploitation (OS) sous-jacent sur lequel résident l'OMS et le référentiel jusqu'aux composants Enterprise Manager eux-mêmes. Ces recommandations augmenteront la sécurité globale et empêcheront certaines attaques DoS.

    Sécuriser l'infrastructure et le système d'exploitation

    Renforcez les machines elles-mêmes en supprimant tous les services non sécurisés tels que rsh, rlogin, telnet et rexec sur la plate-forme Linux (pour la liste des services non sécurisés et comment les supprimer sur différentes plates-formes, veuillez vous référer aux benchmarks CIS). Il est également recommandé d'arrêter les services non essentiels, cela minimise l'« empreinte d'attaque » de l'hôte et réduit la consommation de ressources par les services qui ne sont pas nécessaires, libérant ainsi des ressources système pour offrir les meilleures performances de l'OMS.

    Restreindre l'accès au système d'exploitation en ne prenant en charge que l'accès indirect ou basé sur l'emprunt d'identité à tous les répertoires d'origine Oracle Home à l'aide d'utilitaires tels que sudo ou PowerBroker. Protégez le répertoire d'accueil de WebLogic Server, en particulier le répertoire de domaine qui contient les fichiers de configuration, les fichiers de sécurité, les fichiers journaux et d'autres ressources Java EE pour le domaine WebLogic. Accordez à un seul utilisateur du système d'exploitation qui exécute WebLogic Server le privilège d'accès au répertoire.

    Assurez-vous que tous les répertoires d'origine Oracle Home sont corrigés avec la dernière CPU (Critical Patch Update). Il s'agit d'une bonne pratique recommandée pour sécuriser le service de gestion Oracle, le référentiel, les agents et les cibles gérées. Configurez vos informations d'identification My Oracle Support pour détecter les nouvelles alertes de sécurité et les processeurs à partir de Patch Advisor. Avec la norme de conformité par défaut des recommandations de sécurité pour les produits Oracle, lorsqu'une cible manque les derniers correctifs de sécurité, une violation de la norme de conformité est déclenchée. De plus, la configuration sécurisée pour l'hôte doit être associée aux hôtes de l'OMS et du référentiel. Il existe des normes de conformité supplémentaires pour la base de données et le WLS qui peuvent être appliquées en fonction de votre niveau de sécurité. Consultez la section Conformité du guide de l'administrateur d'Oracle Enterprise Manager Cloud Control pour plus d'informations sur les normes de conformité disponibles et sur la manière d'associer des cibles.

    L'OMS s'exécute sur Oracle WebLogic Server. La plupart des meilleures pratiques de sécurisation d'Oracle WebLogic Server s'appliquent également à la sécurisation de l'OMS. Reportez-vous à la section Sécurisation d'un environnement de production pour Oracle WebLogic Server d'Oracle Fusion Middleware pour plus d'informations.

    Assurez-vous que l'OMS, le référentiel et l'agent sont surveillés pour l'espace du système de fichiers. L'OMS écrit de nombreuses informations dans les fichiers journaux et de suivi, et un espace approprié doit être disponible pour un fonctionnement et un dépannage réussis. L'Agent s'appuie également sur l'espace du système de fichiers pour les fichiers journaux et de trace ainsi que sur la collecte des métriques cibles.

    Meilleures pratiques pour sécuriser l'infrastructure et le système d'exploitation

    Supprimez les services non sécurisés et arrêtez les services non essentiels sur tous les composants de l'infrastructure

    Restreindre l'accès au système d'exploitation et protéger les fichiers et répertoires critiques

    Appliquer les derniers correctifs de sécurité du système d'exploitation

    Adhérer aux normes de conformité de sécurité et appliquer les derniers correctifs Oracle CPU à tous les composants (OMS, référentiel et agent)

    Surveiller l'espace du système de fichiers pour l'OMS, le référentiel et l'agent

    Sécurisation du référentiel de gestion Oracle

    En plus des recommandations ci-dessus, des étapes sont nécessaires pour sécuriser le référentiel de gestion Oracle. Étant donné que le référentiel de gestion Oracle réside dans une base de données Oracle, un certain nombre des meilleures pratiques pour sécuriser la base de données Oracle elle-même s'appliquent également à la sécurisation du référentiel. Pour les meilleures pratiques sur la sécurité des bases de données Oracle, veuillez vous référer à la liste de contrôle de la sécurité des bases de données Oracle.

    Le document ci-dessus couvre également certaines étapes au niveau du système d'exploitation qui doivent être effectuées pour sécuriser la base de données. Vous trouverez ci-dessous des recommandations supplémentaires à mettre en œuvre dans le déploiement d'Enterprise Manager.

    Activer l'option de sécurité avancée

    Activez l'option de sécurité avancée (ASO) entre l'OMS et le référentiel pour vous assurer que les données entre l'OMS et le référentiel sont sécurisées du point de vue de la confidentialité et de l'intégrité. En plus de la configuration ASO requise sur la base de données de référentiel, vous devrez configurer l'OMS et l'agent pour vous connecter à une base de données de référentiel sécurisée. Les instructions détaillées pour la mise en œuvre d'ASO pour Enterprise Manager sont disponibles dans la section Enterprise Manager Security du manuel Oracle Enterprise Manager Cloud Control Administrator's Guide.

    Reportez-vous au manuel Oracle Database Advanced Security Administrator's Guide pour obtenir des informations détaillées sur ASO.

    Restreindre l'accès au réseau

    Restreindre l'accès réseau à l'hôte sur lequel réside le référentiel en plaçant la base de données du référentiel derrière un pare-feu et en vérifiant les adresses IP du réseau. L'écouteur doit être configuré pour accepter uniquement les demandes des nœuds OMS en ajoutant les paramètres suivants dans le fichier TNS_ADMIN/protocol.ora :

    tcp.excluded_nodes = (liste des adresses IP)

    tcp.invited_nodes = (liste d'adresses IP), liste tous les nœuds OMS ici)

    Le premier paramètre active la fonctionnalité tandis que les derniers paramètres interdisent et autorisent respectivement des adresses IP clientes spécifiques à se connecter à l'écouteur Oracle. Reportez-vous à la section Secure the Network Connection du Oracle Database Security Guide pour plus d'informations.

    Auditer les actions SYS

    Auditez toutes les opérations SYS (schéma) au niveau de la base de données en définissant AUDIT_SYS_OPERATIONS = TRUE.

    Utilisez la piste d'audit syslog du système d'exploitation pour minimiser le risque qu'un utilisateur privilégié, tel qu'un administrateur de base de données, puisse modifier ou supprimer des enregistrements d'audit stockés dans une piste du système d'exploitation si la version de la base de données du référentiel est 10gR2 ou ultérieure.

    Pour la base de données 10gR2, reportez-vous à la documentation d'audit pour obtenir plus d'informations sur la piste d'audit syslog.

    Pour la base de données 11g, définissez le paramètre d'initialisation AUDIT_SYS_LEVEL de manière appropriée pour utiliser la piste d'audit syslog. Reportez-vous à la documentation 11g pour plus de détails.

    Sécurisation des comptes d'utilisateurs

    Les utilisateurs doivent se connecter à la console avec leurs propres comptes individuels et ne pas utiliser l'utilisateur SYSMAN. SYSMAN est le propriétaire du schéma et dispose de plus de privilèges que les super-administrateurs d'Enterprise Manager. Plusieurs utilisateurs doivent disposer d'un super administrateur pour réduire le besoin d'accès à SYSMAN. Une bonne raison de créer plusieurs comptes de super-administrateur est de s'assurer qu'un utilisateur conserve l'accès au compte au cas où un autre utilisateur serait bloqué par une attaque par dictionnaire/force brute. Le privilège de super administrateur doit être limité aux utilisateurs qui ont vraiment besoin de toutes les autorisations que le super administrateur leur accorde.

    Dans certains cas, vous souhaiterez peut-être empêcher SYSMAN de se connecter à la console en exécutant l'instruction SQL suivante sur la base de données du référentiel en tant qu'utilisateur SYSMAN :

    Après avoir désactivé SYSMAN de la connexion à la console, vous pouvez l'activer en exécutant :

    Utilisez des profils de mot de passe pour appliquer le contrôle par mot de passe des administrateurs d'Enterprise Manager lorsque l'authentification basée sur le référentiel est utilisée. Il existe un profil de mot de passe prêt à l'emploi MGMT_ADMIN_USER_PROFILE avec les paramètres suivants pour les administrateurs d'Enterprise Manager :

    La fonction de vérification de mot de passe prête à l'emploi MGMT_PASS_VERIFY garantira que le mot de passe ne peut pas être le même que le nom d'utilisateur, sa longueur minimale est de 8 et il doit avoir au moins un alphabet, un chiffre et un caractère de ponctuation. Vous pouvez créer des profils de mot de passe personnalisés avec différentes valeurs pour répondre à vos exigences particulières, par exemple, une nouvelle fonction de vérification de mot de passe pour répondre à une exigence de complexité de mot de passe plus stricte.

    Modifiez régulièrement le mot de passe des utilisateurs SYSMAN et MGMT_VIEW en utilisant uniquement la méthode décrite dans la section Sécurité du manuel Oracle Enterprise Manager Cloud Control Administrator's Guide. La commande documentée ( update_db_password() ) vous aide à modifier les mots de passe liés à SYSMAN dans l'OMS et dans la base de données du référentiel. Si vous n'exécutez pas cette commande correctement, l'OMS peut ne pas démarrer en raison de mots de passe incohérents pour l'un des nombreux comptes. Vous serez invité à entrer les anciens et les nouveaux mots de passe SYSMAN.

    Lorsque vous modifiez le mot de passe MGMT_VIEW, vous pouvez sélectionner « -auto_generate » pour générer un mot de passe aléatoire que personne ne connaîtra. Le mot de passe MGMT_VIEW est utilisé uniquement par le système de création de rapports et ne doit pas être utilisé pour la connexion. Par conséquent, l'indicateur auto_generate peut garantir le mot de passe. n'est pas connu.

    Pour éviter l'interruption de service due au verrouillage des utilisateurs internes, les utilisateurs SYSMAN et MGMT_VIEW sont associés à MGMT_INTERNAL_USER_PROFILE lors de l'installation. Les paramètres de mot de passe sont tous définis sur ILLIMITÉ. De plus, pour éviter que les sessions ne soient suspendues ou ne prennent beaucoup de temps en raison de la limite de consommation de ressources, les paramètres du noyau de MGMT_INTERNAL_USER_PROFILE sont définis par défaut, ce qui est également illimité.

    Sécurisez et sauvegardez la clé de cryptage

    La clé de chiffrement est la clé principale utilisée pour chiffrer/déchiffrer les données sensibles, telles que les mots de passe et les informations d'identification préférées, stockées dans le référentiel. La clé elle-même est initialement stockée dans le référentiel et supprimée automatiquement une fois l'installation terminée. Il n'a besoin d'être dans le référentiel que lors d'une mise à niveau. En stockant la clé séparément du schéma Enterprise Manager, nous nous assurons que les données sensibles telles que les informations d'identification préférées restent inaccessibles au propriétaire du schéma et aux autres utilisateurs SYSDBA (utilisateurs privilégiés pouvant effectuer des tâches de maintenance sur la base de données). Le fait de conserver la clé en dehors du schéma d'Enterprise Manager garantira que les données sensibles restent inaccessibles pendant l'accès aux sauvegardes du référentiel. De plus, le propriétaire du schéma Enterprise Manager (SYSMAN) ne doit pas avoir accès aux répertoires d'origine Oracle Home OMS pour empêcher la lecture ou l'écrasement de la clé emkey. Consultez le manuel Oracle Enterprise Manager Cloud Control Administrator's Guide pour obtenir des informations plus détaillées sur la prise en charge cryptographique d'Enterprise Manager et la clé emkey. Suivez le processus décrit ci-dessous pour sécuriser la clé de cryptage.

    Sauvegardez la clé de chiffrement dans un fichier en exécutant la commande suivante et conservez le fichier de chiffrement sur une machine distincte en toute sécurité, restreignez l'accès au seul propriétaire du logiciel OMS. Si la clé de chiffrement est perdue ou corrompue, les données chiffrées du référentiel sont inutilisables.

    $ emctl config emkey 𠄼opy_to_file_from_credstore 𠄾mkey_file emkey.ora

    La clé de chiffrement doit se trouver dans le référentiel pour certaines opérations telles que les correctifs et les mises à niveau d'Enterprise Manager.

    Retirez la clé du Repository une fois l'opération terminée.

    $ emctl config emkey –remove_from_repos

    Meilleures pratiques pour sécuriser le référentiel de gestion Oracle

    Activer l'option de sécurité avancée sur la base de données du référentiel et configurer OMS et l'agent

    Restreindre l'accès au réseau aux cibles connues

    Accordez le privilège de super administrateur pour sélectionner les administrateurs et ne vous connectez pas avec le compte SYSMAN

    Activez les profils de mots de passe forts et modifiez régulièrement les mots de passe des comptes liés aux applications

    Sécurisez et sauvegardez la clé de cryptage

    Sécurisation de l'agent de gestion Oracle

    Pour une meilleure sécurité lors de l'installation des agents, les agents doivent être déployés à l'aide du déploiement d'agent d'Enterprise Manager Enterprise Manager qui utilise le protocole SSH sécurisé. Lors du déploiement manuel d'agents, pour vous protéger contre la possibilité que les utilisateurs installent des agents non autorisés, utilisez des mots de passe d'enregistrement à usage unique qui ont une date d'expiration raisonnable au lieu de mots de passe d'enregistrement persistants. Les mots de passe d'enregistrement peuvent être créés dans la console ou à l'aide de la commande emctl secure setpwd.

    Installez l'agent en tant qu'utilisateur distinct de l'installation OMS et ne prenez en charge que l'accès basé sur l'emprunt d'identité à ce compte, tel que sudo ou la post-installation de PowerBroker pour empêcher les modifications non autorisées.

    Communication sécurisée

    Il existe plusieurs façons de sécuriser la communication entre OMS et l'agent, notamment les pare-feu, la fonction de verrouillage sécurisé OMS, l'activation de TLSv1, l'activation de suites de chiffrement et de certificats puissants. La section suivante les examine plus en détail.

    Meilleures pratiques pour la sécurisation de l'agent de gestion Oracle

    Utilisez la méthode de déploiement d'agent d'Enterprise Manager pour les installations d'agent.

    Utilisez des mots de passe d'enregistrement à usage unique avec des dates d'expiration

    Installer l'agent en tant qu'utilisateur distinct d'OMS ou des cibles

    Les agents sur les serveurs distants doivent être installés en tant qu'utilisateur OS distinct des cibles sur ce serveur, cependant, cela ne s'applique pas aux agents chaînés. Un agent chaîné ne peut pas être installé en tant qu'utilisateur distinct car il est installé avec l'OMS.

    Activer ICMP

    Enterprise Manager utilise la demande d'écho ICMP (Internet Control Message Protocol) standard pour vérifier l'état des machines hôtes cibles si l'agent n'a pas téléchargé ou répondu en temps opportun ou aux intervalles prévus. Si ICMP est désactivé, la cible semblera être en panne. Le pare-feu doit être configuré pour permettre à ICMP d'empêcher les fausses alertes de cible.

    Une balise est une cible qui permet à l'agent de gestion de surveiller les services à distance. Une balise peut surveiller un ou plusieurs services à tout moment. ICMP et User Datagram Protocol (UDP) sont également utilisés pour transférer des données entre des cibles Beacon qui permettent à un agent de surveiller les services et les composants réseau que vous surveillez. S'il existe un pare-feu ou une liste de contrôle d'accès entre les composants de l'application Web et les balises que vous utilisez pour surveiller ces composants, vous devez le configurer pour autoriser le trafic ICMP, UDP et HTTP.

    Configurer l'agent de gestion Oracle pour les pare-feu

    Lorsque l'hôte sur lequel réside l'agent est protégé par un pare-feu, vous devez configurer l'agent pour qu'il utilise un proxy ou configurer le pare-feu pour autoriser les communications entrantes depuis l'OMS. Pour configurer le pare-feu, vous devez déterminer le port attribué à l'agent et si la communication est HTTP ou HTTPS. Vous pouvez trouver ces informations en exécutant emctl status agent.

    Pour configurer le proxy, définissez les propriétés suivantes à l'aide de la console Enterprise Manager pour modifier les propriétés de l'agent ou l'agent emctl setproperty et redémarrez l'agent. Le domaine proxy, l'utilisateur et le mot de passe peuvent ne pas être requis dans tous les environnements.

    Configurer Oracle Management Service pour les pare-feu

    Dans les cas où Oracle Management Service est derrière un pare-feu, des configurations seront nécessaires pour autoriser les communications proxy avec les agents ou les communications entrantes via le pare-feu.

    Si les agents qui se trouvent derrière le pare-feu se trouvent dans des domaines différents, vous pouvez configurer le proxy pour autoriser la communication pour ces agents et utiliser le paramètre dontProxyFor pour identifier les agents au sein du pare-feu. Pour configurer le proxy sur le service de gestion, définissez les propriétés suivantes à l'aide de la propriété emctl set. Le domaine proxy, l'utilisateur et le mot de passe peuvent ne pas être requis dans tous les environnements.

    Pour configurer le pare-feu afin d'autoriser les communications entrantes des agents pour les téléchargements de métriques, le pare-feu doit être configuré pour accepter le trafic HTTP/HTTPS sur les ports de téléchargement. Les ports par défaut sont 4889 (HTTP) et 1159 (HTTPS). Si vos ports ont été personnalisés, vous devrez utiliser ces ports.

    S'il existe un pare-feu entre votre navigateur et la console Enterprise Manager, vous devez configurer le pare-feu pour permettre à la console de recevoir le trafic HTTP/HTTPS sur le port 7788/7799 (par défaut). Vous pouvez valider votre port en regardant l'URL avec laquelle vous accédez à la console.

    Les installations de composants supplémentaires telles que JVMD, APD et BI ont des exigences de port supplémentaires. Par exemple, si BI Publisher est installé, des ports supplémentaires peuvent être nécessaires pour accéder à la console de création de rapports. Les ports par défaut sont 9702/9703 (http/https). Pour plus d'informations, veuillez consulter la documentation spécifique au composant.

    Pour gérer les cibles de base de données configurées derrière des pare-feu, vous devez autoriser le trafic Oracle Net sur les ports d'écoute (généralement 1521 mais souvent personnalisés). Pour plus d'informations sur la configuration des bases de données Oracle pour les pare-feu, consultez le manuel Oracle Database 2 Day + Security Guide.

    Console de sécurité

    La console de sécurité est disponible uniquement pour les super administrateurs et fournit toutes les informations de configuration liées à la sécurité en un seul emplacement, vous permettant d'afficher, d'analyser et d'optimiser la sécurité de votre environnement géré. Pour accéder à la console de sécurité, dans le menu Configuration, sélectionnez Sécurité , puis Console de sécurité .

    Lorsque la console de sécurité s'affiche pour la première fois, elle est divisée en deux fenêtres principales, la fenêtre de menu sur le côté gauche et la fenêtre d'informations sur le côté droit.

    La console de sécurité contient à la fois des informations statiques (texte) et dynamiques. Le texte est destiné à fournir un contexte rapide et de haut niveau aux données, il n'est pas destiné à remplacer votre documentation.


    Comment puis-je charger un fichier sqlite dans oracle 11g ? - Systèmes d'information géographique

    (1) Comment créer un champ AUTOINCREMENT ?

    Réponse courte : Une colonne déclarée INTEGER PRIMARY KEY s'auto-incrémentera.

    Réponse plus longue : si vous déclarez qu'une colonne d'une table est INTEGER PRIMARY KEY, chaque fois que vous insérez une valeur NULL dans cette colonne de la table, la valeur NULL est automatiquement convertie en un entier supérieur à la plus grande valeur de cette colonne. toutes les autres lignes du tableau, ou 1 si le tableau est vide. Ou, si la plus grande clé entière existante 9223372036854775807 est utilisée, une valeur de clé inutilisée est choisie au hasard. Par exemple, supposons que vous ayez une table comme celle-ci :

    Avec ce tableau, l'énoncé

    équivaut logiquement à dire :

    Il existe une fonction nommée sqlite3_last_insert_rowid() qui renverra la clé entière pour l'opération d'insertion la plus récente.

    Notez que la clé entière est supérieure d'une unité à la plus grande clé qui figurait dans la table juste avant l'insertion. La nouvelle clé sera unique sur toutes les clés actuellement dans la table, mais elle peut chevaucher des clés qui ont été précédemment supprimées de la table. Pour créer des clés uniques sur la durée de vie de la table, ajoutez le mot clé AUTOINCREMENT à la déclaration INTEGER PRIMARY KEY. Ensuite, la clé choisie sera une clé de plus que la plus grande clé qui ait jamais existé dans cette table. Si la plus grande clé possible a déjà existé dans cette table, INSERT échouera avec un code d'erreur SQLITE_FULL.

    (2) Quels types de données SQLite prend-il en charge ?

    (3) SQLite me permet d'insérer une chaîne dans une colonne de base de données de type entier !

    C'est une fonctionnalité, pas un bug. SQLite utilise le typage dynamique. Il n'applique pas de contraintes de type de données. Des données de tout type peuvent (généralement) être insérées dans n'importe quelle colonne. Vous pouvez placer des chaînes de longueur arbitraire dans des colonnes d'entiers, des nombres à virgule flottante dans des colonnes booléennes ou des dates dans des colonnes de caractères. Le type de données que vous affectez à une colonne dans la commande CREATE TABLE ne limite pas les données pouvant être placées dans cette colonne. Chaque colonne peut contenir une chaîne de longueur arbitraire. (Il y a une exception : les colonnes de type INTEGER PRIMARY KEY ne peuvent contenir qu'un entier signé de 64 bits. Une erreur se produira si vous essayez de mettre autre chose qu'un entier dans une colonne INTEGER PRIMARY KEY.)

    Mais SQLite utilise le type déclaré d'une colonne comme indice que vous préférez les valeurs dans ce format. Ainsi, par exemple, si une colonne est de type INTEGER et que vous essayez d'insérer une chaîne dans cette colonne, SQLite tentera de convertir la chaîne en un entier. S'il le peut, il insère l'entier à la place. Sinon, il insère la chaîne. Cette fonctionnalité est appelée affinité de type.

    (4) Pourquoi SQLite ne me permet-il pas d'utiliser « 0 » et « 0,0 » comme clé primaire sur deux lignes différentes de la même table ?

    Ce problème se produit lorsque votre clé primaire est de type numérique. Changez le type de données de votre clé primaire en TEXTE et cela devrait fonctionner.

    Chaque ligne doit avoir une clé primaire unique. Pour une colonne de type numérique, SQLite pense que '0' et '0.0' ont la même valeur parce qu'ils se comparent égaux numériquement. (Voir la question précédente.) Par conséquent, les valeurs ne sont pas uniques.

    (5) Plusieurs applications ou plusieurs instances de la même application peuvent-elles accéder à un seul fichier de base de données en même temps ?

    Plusieurs processus peuvent avoir la même base de données ouverte en même temps. Plusieurs processus peuvent effectuer un SELECT en même temps. Cependant, un seul processus peut apporter des modifications à la base de données à tout moment.

    SQLite utilise des verrous de lecture/écriture pour contrôler l'accès à la base de données. (Sous Win95/98/ME qui ne prend pas en charge les verrous de lecture/écriture, une simulation probabiliste est utilisée à la place.) Mais soyez prudent : ce mécanisme de verrouillage peut ne pas fonctionner correctement si le fichier de base de données est conservé sur un système de fichiers NFS. C'est parce que le verrouillage de fichier fcntl() est rompu sur de nombreuses implémentations NFS. Vous devez éviter de placer les fichiers de base de données SQLite sur NFS si plusieurs processus tentent d'accéder au fichier en même temps. Sous Windows, la documentation de Microsoft indique que le verrouillage peut ne pas fonctionner sous les systèmes de fichiers FAT si vous n'exécutez pas le démon Share.exe. Les personnes qui ont beaucoup d'expérience avec Windows me disent que le verrouillage des fichiers réseau est très bogué et n'est pas fiable. Si ce qu'ils disent est vrai, le partage d'une base de données SQLite entre deux ou plusieurs machines Windows peut provoquer des problèmes inattendus.

    Nous ne connaissons aucun autre embarqué Moteur de base de données SQL qui prend en charge autant de simultanéité que SQLite. SQLite permet à plusieurs processus d'ouvrir le fichier de base de données en même temps et à plusieurs processus de lire la base de données à la fois. Lorsqu'un processus veut écrire, il doit verrouiller l'intégralité du fichier de base de données pendant la durée de sa mise à jour. Mais cela ne prend normalement que quelques millisecondes. D'autres processus n'attendent que l'écrivain pour terminer, puis poursuivent leurs activités. D'autres moteurs de base de données SQL embarqués n'autorisent généralement qu'un seul processus à se connecter à la base de données à la fois.

    Cependant, les moteurs de base de données client/serveur (tels que PostgreSQL, MySQL ou Oracle) prennent généralement en charge un niveau de concurrence plus élevé et permettent à plusieurs processus d'écrire dans la même base de données en même temps. Ceci est possible dans une base de données client/serveur car il y a toujours un seul processus serveur bien contrôlé disponible pour coordonner l'accès. Si votre application a besoin de beaucoup de simultanéité, vous devriez envisager d'utiliser une base de données client/serveur. Mais l'expérience suggère que la plupart des applications ont besoin de beaucoup moins de simultanéité que leurs concepteurs ne l'imaginent.

    Lorsque SQLite essaie d'accéder à un fichier verrouillé par un autre processus, le comportement par défaut est de renvoyer SQLITE_BUSY. Vous pouvez ajuster ce comportement à partir du code C en utilisant les fonctions API sqlite3_busy_handler() ou sqlite3_busy_timeout().

    (6) SQLite est-il threadsafe ?

    Les fils sont mauvais. Évite-les.

    SQLite est thread-safe. Nous faisons cette concession car de nombreux utilisateurs choisissent d'ignorer les conseils donnés dans le paragraphe précédent. Mais pour être thread-safe, SQLite doit être compilé avec la macro de préprocesseur SQLITE_THREADSAFE définie sur 1. Les binaires précompilés Windows et Linux dans la distribution sont compilés de cette façon. Si vous n'êtes pas sûr que la bibliothèque SQLite à laquelle vous vous connectez est compilée pour être threadsafe, vous pouvez appeler l'interface sqlite3_threadsafe() pour le savoir.

    SQLite est threadsafe car il utilise des mutex pour sérialiser l'accès aux structures de données communes. Cependant, le travail d'acquisition et de libération de ces mutex ralentira légèrement SQLite. Par conséquent, si vous n'avez pas besoin que SQLite soit thread-safe, vous devez désactiver les mutex pour des performances maximales. Consultez la documentation du mode de thread pour plus d'informations.

    Sous Unix, vous ne devez pas transporter une base de données SQLite ouverte à travers un appel système fork() dans le processus enfant.

    (7) Comment lister toutes les tables/indices contenus dans une base de données SQLite

    Si vous exécutez le sqlite3 programme d'accès en ligne de commande, vous pouvez taper ".les tables" pour obtenir une liste de toutes les tables. Ou vous pouvez taper ".schéma" pour voir le schéma complet de la base de données, y compris toutes les tables et index. L'une ou l'autre de ces commandes peut être suivie d'un modèle LIKE qui restreindra les tables affichées.

    Depuis un programme C/C++ (ou un script utilisant des liaisons Tcl/Ruby/Perl/Python), vous pouvez accéder aux noms de table et d'index en effectuant un SELECT sur une table spéciale nommée "SQLITE_SCHEMA". Chaque base de données SQLite a une table SQLITE_SCHEMA qui définit le schéma de la base de données. La table SQLITE_SCHEMA ressemble à ceci :

    Pour les tableaux, le taper le champ sera toujours 'tableau' et le Nom champ sera le nom de la table. Donc, pour obtenir une liste de toutes les tables de la base de données, utilisez la commande SELECT suivante :

    Pour les indices, taper est égal à 'indice', Nom est le nom de l'index et nom_table est le nom de la table à laquelle appartient l'index. Pour les tableaux et les indices, le sql est le texte de l'instruction CREATE TABLE ou CREATE INDEX d'origine qui a créé la table ou l'index. Pour les index créés automatiquement (utilisés pour implémenter les contraintes PRIMARY KEY ou UNIQUE) le sql le champ est NULL.

    La table SQLITE_SCHEMA ne peut pas être modifiée à l'aide de UPDATE, INSERT ou DELETE (sauf dans des conditions exceptionnelles). La table SQLITE_SCHEMA est automatiquement mise à jour par des commandes telles que CREATE TABLE, CREATE INDEX, DROP TABLE et DROP INDEX.

    Les tables temporaires n'apparaissent pas dans la table SQLITE_SCHEMA. Les tables temporaires et leurs index et déclencheurs se produisent dans une autre table spéciale nommée SQLITE_TEMP_SCHEMA. SQLITE_TEMP_SCHEMA fonctionne exactement comme SQLITE_SCHEMA sauf qu'il n'est visible que par l'application qui a créé les tables temporaires. Pour obtenir une liste de toutes les tables, à la fois permanentes et temporaires, on peut utiliser une commande similaire à la suivante :

    (8) Existe-t-il des limites de taille connues pour les bases de données SQLite ?

    Voir limites.html pour une discussion complète des limites de SQLite.

    (9) Quelle est la taille maximale d'un VARCHAR dans SQLite ?

    SQLite n'impose pas la longueur d'un VARCHAR. Vous pouvez déclarer un VARCHAR(10) et SQLite se fera un plaisir d'y stocker une chaîne de 500 millions de caractères. Et il gardera tous les 500 millions de caractères intacts. Votre contenu n'est jamais tronqué. SQLite comprend le type de colonne de "VARCHAR(N)" pour être le même que "TEXTE", quelle que soit la valeur de N.

    (10) SQLite prend-il en charge un type BLOB ?

    SQLite vous permet de stocker des données BLOB dans n'importe quelle colonne, même les colonnes déclarées contenir un autre type. Les BLOBs peuvent même être utilisés comme PRIMARY KEYs.

    (11) Comment ajouter ou supprimer des colonnes d'une table existante dans SQLite.

    SQLite a une prise en charge limitée d'ALTER TABLE que vous pouvez utiliser pour ajouter une colonne à la fin d'une table ou pour modifier le nom d'une table. Si vous souhaitez apporter des modifications plus complexes à la structure d'un tableau, vous devrez recréer le tableau. Vous pouvez enregistrer les données existantes dans une table temporaire, supprimer l'ancienne table, créer la nouvelle table, puis recopier les données à partir de la table temporaire.

    Par exemple, supposons que vous ayez une table nommée « t1 » avec les noms de colonnes « a », « b » et « c » et que vous vouliez supprimer la colonne « c » de cette table. Les étapes suivantes illustrent comment cela pourrait être fait :

    (12) J'ai supprimé beaucoup de données mais le fichier de la base de données n'a pas diminué. Est-ce un bug ?

    Non. Lorsque vous supprimez des informations d'une base de données SQLite, l'espace disque inutilisé est ajouté à une "liste libre" interne et est réutilisé la prochaine fois que vous insérez des données. L'espace disque n'est pas perdu. Mais il n'est pas non plus renvoyé au système d'exploitation.

    If you delete a lot of data and want to shrink the database file, run the VACUUM command. VACUUM will reconstruct the database from scratch. This will leave the database with an empty free-list and a file that is minimal in size. Note, however, that the VACUUM can take some time to run and it can use up to twice as much temporary disk space as the original file while it is running.

    An alternative to using the VACUUM command is auto-vacuum mode, enabled using the auto_vacuum pragma.

    (13) Can I use SQLite in my commercial product without paying royalties?

    Oui. SQLite is in the public domain. No claim of ownership is made to any part of the code. You can do anything you want with it.

    (14) How do I use a string literal that contains an embedded single-quote (') character?

    The SQL standard specifies that single-quotes in strings are escaped by putting two single quotes in a row. SQL works like the Pascal programming language in this regard. Example:

    (15) What is an SQLITE_SCHEMA error, and why am I getting one?

    An SQLITE_SCHEMA error is returned when a prepared SQL statement is no longer valid and cannot be executed. When this occurs, the statement must be recompiled from SQL using the sqlite3_prepare() API. An SQLITE_SCHEMA error can only occur when using the sqlite3_prepare(), and sqlite3_step() interfaces to run SQL. You will never receive an SQLITE_SCHEMA error from sqlite3_exec(). Nor will you receive an error if you prepare statements using sqlite3_prepare_v2() instead of sqlite3_prepare().

    The sqlite3_prepare_v2() interface creates a prepared statement that will automatically recompile itself if the schema changes. The easiest way to deal with SQLITE_SCHEMA errors is to always use sqlite3_prepare_v2() instead of sqlite3_prepare().

    (17) I get some compiler warnings when I compile SQLite. Isn't this a problem? Doesn't it indicate poor code quality?

    Quality assurance in SQLite is done using full-coverage testing, not by compiler warnings or other static code analysis tools. In other words, we verify that SQLite actually gets the correct answer, not that it merely satisfies stylistic constraints. Most of the SQLite code base is devoted purely to testing. The SQLite test suite runs tens of thousands of separate test cases and many of those test cases are parameterized so that hundreds of millions of tests involving billions of SQL statements are run and evaluated for correctness prior to every release. The developers use code coverage tools to verify that all paths through the code are tested. Whenever a bug is found in SQLite, new test cases are written to exhibit the bug so that the bug cannot recur undetected in the future.

    During testing, the SQLite library is compiled with special instrumentation that allows the test scripts to simulate a wide variety of failures in order to verify that SQLite recovers correctly. Memory allocation is carefully tracked and no memory leaks occur, even following memory allocation failures. A custom VFS layer is used to simulate operating system crashes and power failures in order to ensure that transactions are atomic across these events. A mechanism for deliberately injecting I/O errors shows that SQLite is resilient to such malfunctions. (As an experiment, try inducing these kinds of errors on other SQL database engines and see what happens!)

    We also run SQLite using Valgrind on Linux and verify that it detects no problems.

    Some people say that we should eliminate all warnings because benign warnings mask real warnings that might arise in future changes. This is true enough. But in reply, the developers observe that all warnings have already been fixed in the builds used for SQLite development (various versions of GCC, MSVC, and clang). Compiler warnings usually only arise from compilers or compile-time options that the SQLite developers do not use themselves.

    (18) Case-insensitive matching of Unicode characters does not work.

    The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full Unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full Unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability.

    Instead of providing full Unicode case support by default, SQLite provides the ability to link against external Unicode comparison and conversion routines. The application can overload the built-in NOCASE collating sequence (using sqlite3_create_collation()) and the built-in like(), upper(), and lower() functions (using sqlite3_create_function()). The SQLite source code includes an "ICU" extension that does these overloads. Or, developers can write their own overloads based on their own Unicode-aware comparison routines already contained within their project.

    (19) INSERT is really slow - I can only do few dozen INSERTs per second

    Actually, SQLite will easily do 50,000 or more INSERT statements per second on an average desktop computer. But it will only do a few dozen transactions per second. Transaction speed is limited by the rotational speed of your disk drive. A transaction normally requires two complete rotations of the disk platter, which on a 7200RPM disk drive limits you to about 60 transactions per second.

    Transaction speed is limited by disk drive speed because (by default) SQLite actually waits until the data really is safely stored on the disk surface before the transaction is complete. That way, if you suddenly lose power or if your OS crashes, your data is still safe. For details, read about atomic commit in SQLite..

    By default, each INSERT statement is its own transaction. But if you surround multiple INSERT statements with BEGIN. COMMIT then all the inserts are grouped into a single transaction. The time needed to commit the transaction is amortized over all the enclosed insert statements and so the time per insert statement is greatly reduced.

    Another option is to run PRAGMA synchronous=OFF. This command will cause SQLite to not wait on data to reach the disk surface, which will make write operations appear to be much faster. But if you lose power in the middle of a transaction, your database file might go corrupt.

    (20) I accidentally deleted some important information from my SQLite database. How can I recover it?

    If you have a backup copy of your database file, recover the information from your backup.

    If you do not have a backup, recovery is very difficult. You might be able to find partial string data in a binary dump of the raw database file. Recovering numeric data might also be possible given special tools, though to our knowledge no such tools exist. SQLite is sometimes compiled with the SQLITE_SECURE_DELETE option which overwrites all deleted content with zeros. If that is the case then recovery is clearly impossible. Recovery is also impossible if you have run VACUUM since the data was deleted. If SQLITE_SECURE_DELETE is not used and VACUUM has not been run, then some of the deleted content might still be in the database file, in areas marked for reuse. But, again, there exist no procedures or tools that we know of to help you recover that data.

    (21) What is an SQLITE_CORRUPT error? What does it mean for the database to be "malformed"? Why am I getting this error?

    An SQLITE_CORRUPT error is returned when SQLite detects an error in the structure, format, or other control elements of the database file.

    SQLite does not corrupt database files without external help. If your application crashes in the middle of an update, your data is safe. The database is safe even if your OS crashes or takes a power loss. The crash-resistance of SQLite has been extensively studied and tested and is attested by years of real-world experience by billions of users.

    That said, there are a number of things that external programs or bugs in your hardware or OS can do to corrupt a database file. See How To Corrupt An SQLite Database File for further information.

    You can use PRAGMA integrity_check to do a thorough but time intensive test of the database integrity.

    You can use PRAGMA quick_check to do a faster but less thorough test of the database integrity.

    Depending how badly your database is corrupted, you may be able to recover some of the data by using the CLI to dump the schema and contents to a file and then recreate. Unfortunately, once humpty-dumpty falls off the wall, it is generally not possible to put him back together again.

    (22) Does SQLite support foreign keys?

    As of version 3.6.19 (2009-10-14), SQLite supports foreign key constraints. But enforcement of foreign key constraints is turned off by default (for backwards compatibility). To enable foreign key constraint enforcement, run PRAGMA foreign_keys=ON or compile with -DSQLITE_DEFAULT_FOREIGN_KEYS=1.

    (23) I get a compiler error if I use the SQLITE_OMIT_. compile-time options when building SQLite.

    The SQLITE_OMIT_. compile-time options only work when building from canonical source files. They do ne pas work when you build from the SQLite amalgamation or from the pre-processed source files.

    It is possible to build a special amalgamation that will work with a predetermined set of SQLITE_OMIT_. option. Instructions for doing so can be found with the SQLITE_OMIT_. documentation.

    (24) My WHERE clause expression column1="column1" does not work. It causes every row of the table to be returned, not just the rows where column1 has the value "column1".

    Use single-quotes, not double-quotes, around string literals in SQL. This is what the SQL standard requires. Your WHERE clause expression should read: column1='column1'

    SQL uses double-quotes around identifiers (column or table names) that contains special characters or which are keywords. So double-quotes are a way of escaping identifier names. Hence, when you say column1="column1" that is equivalent to column1=column1 which is obviously always true.

    (25) How are the syntax diagrams (a.k.a. "railroad" diagrams) for SQLite generated?

    Each diagram is hand-written using the Pikchr diagramming language. These hand-written specifications are converted into SVG and inserted inline in the HTML files as part of the documentation build process.

    Many historical versions of the SQLite documentation used a different process for generating the syntax diagrams. The historical process was based on Tcl/Tk and is described at http://wiki.tcl-lang.org/21708. The newer Pikchr-based syntax diagrams first landed on trunk on 2020-09-26.

    (26) The SQL standard requires that a UNIQUE constraint be enforced even if one or more of the columns in the constraint are NULL, but SQLite does not do this. Isn't that a bug?

    1. A unique constraint is satisfied if and only if no two rows in a table have the same values and have non-null values in the unique columns.
    2. A unique constraint is satisfied if and only if no two rows in a table have the same values in the subset of unique columns that are not null.

    (27) What is the Export Control Classification Number (ECCN) for SQLite?

    After careful review of the Commerce Control List (CCL), we are convinced that the core public-domain SQLite source code is not described by any ECCN, hence the ECCN should be reported as EAR99.

    The above is true for the core public-domain SQLite. If you extend SQLite by adding new code, or if you statically link SQLite with your application, that might change the ECCN in your particular case.

    (28) My query does not return the column name that I expect. Est-ce un bug ?


    How Can I Modify the TNSNAMES.ORA File?

    You can modify the file in a simple text editor. You can change an existing entry or create a new one.

    To add an entry into the file, you can either copy the format from above, or copy and paste an existing entry from the file.

    Then, make changes to it as needed.

    Change the net_service_name, or the name you want to give to the connection. Change the host to the server name or IP address you want to connect to. Finally, change the service_name to the name of the database you want to connect to.

    Save the file, and your changes will be saved.


    4.3 Installing Oracle Database Mobile Server

    Oracle Database Mobile Server consists of two main components: the Oracle Database Mobile Server and Mobile Development Kit. Each is installed separately from the Oracle Database Mobile Server installer package. The following sections describe all your installation options:

    4.3.1 GUI Install of the Mobile Server and MDK Components

    Once the Oracle Universal Installer is initiated, perform the following steps to install Oracle Database Mobile Server:

    On the "Welcome" screen, click "Next".

    On the "Installation Types" screen, choose the type of installation to execute. Your options are as follows:

    Each of these Install options is discussed in the following sections:

    4.3.1.1 Installation of the Mobile Server

    Install the Oracle Database Mobile Server from the Installation Types screen, as follows:

    Choose "Mobile Server" and click "Next" (see, Figure 4-1). On Solaris, AIX and HP-UX platforms, only the "Mobile Server" installation type is available, so the "Select Installation Type" screen is not displayed.

    Figure 4-1 Select Mobile Server

    On the "Specify Home" screen, as seen in Figure 4-2, enter the name for your mobile server installation and path where you want to install Oracle Database Mobile Server. Both fields cannot include any spaces. The path you specified is known as Oracle Home.

    Figure 4-2 Specify Home Details

    Choose an empty directory to install Mobile Server. If the installation location you specified is not empty, you will get the warning as shown in Figure 4-3, you can ignore this warning.

    Click "Yes" to install the mobile server repository. Click "Yes" to launch Repository Wizard to install and configure mobile server repository during the installation process. Cick "No" to postpone the installing and configuring of mobile server repository to after the installation process. Click "Next".

    Figure 4-4 Mobile Server Repository Configuration

    Click "Yes" or "No" to indicate if you want the demo applications installed on the server. Click "Next".

    Figure 4-5 Mobile Server Demo Application Configuration

    Select the installation directory of your application server (on the "Specify Application Server Home" screen).

    If you choose WebLogic as application server, specify WL_HOME as Application Server Home, where WL_HOME is the top-level installation directory for WebLogic Server.

    If you choose Oracle GlassFish server or GlassFish server Open Source Edition as application server, specify as-install as Application Server Home, where as-install is the base installation directory for GlassFish Server.

    If you choose TomEE as application server, specify CATALINA_HOME as Application Server Home, where CATALINA_HOME is the installation directory of TomEE Server.

    Figure 4-6 Specify Application Server Home

    Select a JDK installed on your machine (on the "Specify JDK Home" screen). For more information, refer to Section 3.3.2, "JDK Platform Support". If your application server is WebLogic server, choose the same JDK you use for the WebLogic server. The JDK should be the version as described in Table 3-1, otherwise, Mobile server will use the JDK for your WebLogic server, and not the one you specify in this screen.

    Figure 4-7 Specify JDK Home

    On the "Summary" page, click "Install" to start the installation of mobile server which is installed in your Oracle Home.

    If you previously clicked Yes to install the mobile server repository, then the Repository Wizard is now launched to create and populate the repository with the Mobile Server schema.

    Figure 4-8 Installation of Mobile Server

    Provide the URL for the back-end Oracle database for the mobile server repository, as follows:

    If you are connecting to a single Oracle database, provide the host name, port and SID or service name. This is shown in Figure 4-9.

    Figure 4-9 Provide Repository Database Information

    If you are connecting to a single Oracle 12c Pluggable database (PDB), provide the host name, port number and service name. This is shown in Figure 4-10.

    Figure 4-10 Provide Repository Database information with Oracle Database 12c

    If you are connecting to an Oracle RAC database, select the "Enter Custom JDBC URL" checkbox and enter the JDBC URL for this database. For an example of using Oracle Database Express Edition, see Figure 4-11.

    An Oracle RAC database URL takes the following format:

    Figure 4-11 Enter JDBC URL for Back-End Database in Repository Wizard

    The mobile server installs its meta-data in the back-end database. If you are not sure of the values to enter for the URL, then you can query the data dictionary to obtain these values.

    For Oracle 10g and 11g Database, connect as SYSTEM user and run the following queries to retrieve the SID:

    For Oracle 12c, connect as the administrator user of your Pluggable database and run the following queries to retrieve the service name:

    If you need to retrieve the port number, check the listener.ora file on the machine where the Oracle Database is installed.

    The Database Administrator account:

    for Oracle database 10g or 11g, it is a master account to create the mobile server repository schema/user

    for Oracle database 12c, it is a master account of your pluggable database to create the mobile server repository schema/user in that pluggable database

    The Mobile Server Repository account: Used to access all the database objects used by the mobile server.

    The Mobile Server Administrator account: Used to log into the Mobile Manager.

    The Repository Wizard asks for a user name and password for the Database Administrator account, which will be used to connect to the back-end database, create the schema and assign database privileges for the mobile server.

    Figure 4-12 Specify Username/Password

    Before you provide the user name, this user has to have the following privileges to create the mobile server repository in the back-end database:

    CREATE TABLESPACE, CREATE USER

    The following privileges are required with the Admin option:

    ALTER ANY TABLE, ALTER SESSION, ALTER SYSTEM, ANALYZE ANY, CREATE SESSION, CREATE ANY SEQUENCE, CREATE ANY VIEW, CREATE ANY TRIGGER, CREATE ANY INDEX, CREATE ANY TABLE, CREATE ANY SYNONYM, CREATE ANY PROCEDURE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE VIEW, CREATE INDEXTYPE, DELETE ANY TABLE, DROP ANY SEQUENCE, DROP ANY PROCEDURE, DROP ANY VIEW, DROP ANY SYNONYM, DROP ANY TRIGGER, DROP ANY INDEX, DROP ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, SELECT ANY DICTIONARY, SELECT_CATALOG_ROLE, UPDATE ANY TABLE

    You can set the mobile server privileges independently through an API. See Section 3.7, "Set DBA or Operational Privileges for the Mobile Server" in the Oracle Database Mobile Server Developer's Guide .

    If this is a new repository, the following message is displayed:

    Otherwise, the following message is displayed (shown in Figure 4-13):

    Select the schema you wish to upgrade or enable the "Create New Repository" check box.

    Figure 4-13 Create a New Repository or Upgrade an Existing Repository

    Enter the user name and password for the Mobile Server Repository account. The default name is MOBILEADMIN . This schema contains all database objects used by the mobile server. When the mobile server accesses the repository, it uses the Mobile Server Repository user name/password. Also, check whether you want to install sample applications or not. Click "Next".

    You should install the samples only on a development system you should NEVER install the samples on a production mobile server. Doing so creates a security risk on your production environment.

    Figure 4-14 Enter Password for Mobile Server Repository

    Enter the user name and password for the Mobile Server Repository account that you will use to log into the Mobile Manager.

    Figure 4-15 Mobile Server Administrator

    Enter the Schema Name and Password for the schema where the demo applications are installed. When the user accesses the user data in the Mobile Server repository, the Mobile Server authenticates the schema user name and password before access is provided to the user data. Enter the Password for the sample users.

    If you choose to install the samples, then the following mobile user accounts will be created: S11U1, JOHN, JANE, JACK, and JUNE. The password of the users is the one you specified in "Samples Clients Password".

    Figure 4-16 Enter Username and Password for the Demo Schema

    Complete the required information to deploy the Mobile Server on a WebLogic, GlassFish or TomEE Server.

    To deploy the Mobile Server on a WebLogic Server or GlassFish Server in a new domain, follow the instructions below:

    Choose "Yes" for "Create a New Domain for the Mobile Server" option.

    Choose "Yes" if you want to install iOS MDM support for the "Create an HTTPS listener for MDM" option, otherwise choose "No".

    Specify a "Domain Name" for the new domain.

    Select "Administration Server" (in Server Type) if deploying the Mobile Server on a WebLogic Administration Server, or select Managed Server if deploying the Mobile Server on a WebLogic Managed Server. The "Server Type" is only required if you are deploying the Mobile Server on a WebLogic Server.

    Specify a name for the WebLogic Managed Server in "Managed Server Name". The "Managed Server Name" is only required if you are deploying the Mobile Server on a WebLogic Managed Server.

    Specify an "Administrative Server" port for WebLogic. This is required for both - that is, if you are deploying the Mobile Server on a WebLogic Administration Server or on a Managed Server.

    Specify an "Administration Port" for GlassFish.

    Ensure the port you specified is available.

    Specify a "Managed Server" port for WebLogic. The "Server Port" is only required if you are deploying the Mobile Server on a WebLogic Managed Server.

    Specify a "Server Port" for GlassFish.

    Ensure the port you specified is available.

    Specify a port number for WebLogic or GlassFish HTTPS listener in MDM Port if you specify to install iOS MDM support. This listener will be configured with two-way SSL.

    Specify a name for the domain administrator in Admin Username. If you are deploying the Mobile Server on a WebLogic Server, the administrator name is set to weblogic.

    Specify a password for the domain administrator in Admin Password. The WebLogic Server requires that the password is at least eight characters in length and contains at least one non-alphabetic character otherwise, you will receive the following error: " The value for Admin Password is not valid ."

    The WebLogic domain directory is created by default as %APP_SERVER_HOME%..user_projectsdomains\%Domain Name% the GlassFish domain directory is created as %APP_SERVER_HOME%domains\%Domain Name%. Par exemple:

    If WebLogic is installed at C:OracleMiddlewarewlserver_10.3, and you specify "mobileserver" as the new domain name, then C:OracleMiddlewareuser_projectsdomainsmobileserver will be created and domain configuration files are stored at that directory.

    If GlassFish is installed at C:glassfish3glassfish, and you specify "mobileserver" as the new domain name, then C:glassfish3glassfishdomainsmobileserver will be created and domain configuration files are stored at that directory.

    Figure 4-17 Deploy the Mobile Server on a New WebLogic Server Domain

    Figure 4-18 Deploy the Mobile Server on a New GlassFish Server Domain

    To deploy the mobile server on an existing domain under Weblogic and Glassfish, follow the instructions:

    Choose "No" for the "Create a new domain for the Mobile Server" option.

    Choose "Yes" if you want to install iOS MDM support for the "Create an HTTPS listener for MDM" option, otherwise choose "No".

    Specify a name for the existing domain in Domain Name. The "Domain Name" is only required if you are deploying the Mobile Server on a GlassFish Server.

    Specify the "Domain Directory" for the existing domain.

    For WebLogic, set the domain directory to the folder where your domain configuration files are stored for GlassFish, set the domain directory to the parent of the folder where your domain configuration files are stored. Par exemple:

    If you want to deploy mobile server on an existing WebLogic domain called "msDomain", and the domain configuration files are stored at C:OracleMiddlewareuser_projectsdomainsmsDomain, then you should specify "C:OracleMiddlewareuser_projectsdomainsmsDomain" as the Domain Directory.

    If you want to deploy mobile server on an existing GlassFish domain called "msDomain", and the domain configuration files are stored at C:glassfish3glassfishdomainsmsDomain, then you should specify "C:glassfish3glassfishdomains" as the Domain Directory.

    Select "Administration Server" (in Server Type) if you are deploying the Mobile Server on a WebLogic Administration Server, or select Managed Server if you are deploying the Mobile Server on a WebLogic Managed Server. The "Server Type" is only required if deploying the Mobile Server on a WebLogic Server.

    Specify the "Administration Port" (in Admin Port) of the existing GlassFish Server domain. The "Admin Port" is only required if you are deploying the Mobile Server on a GlassFish Server.

    Specify the "Server Port" of the existing GlassFish Server domain. The "Server Port" is only required if you are deploying the Mobile Server on a GlassFish Server.

    Specify a port number for WebLogic or GlassFish HTTPS listener in MDM Port if you specify to install iOS MDM support. This listener will be configured with two-way SSL.

    Specify the administrator name of the existing domain (in Admin Username).

    Specify the password of the domain administrator (in Admin Password).

    Figure 4-19 Deploy the Mobile Server on an Existing WebLogic Server Domain

    Figure 4-20 Deploy the Mobile Server on an Existing GlassFish Server Domain

    To deploy the mobile server under TomEE, follow the instructions:

    Specify the "Server Port" value with HTTP connector port value in default Service named "Catalina" of TomEE server.

    Ensure the port you specified is available.

    You can look for the HTTP connector port value in %CATALINA_HOME%confserver.xml, where CATALINA_HOME is the installation directory of TomEE server.

    For example, the following is part of a content from %CATALINA_HOME%confserver.xml. In this example, the HTTP connector port value in default Service named "Catalina" is 8080.

    <Connector port="8080" protocol="HTTP/1.1"

    A summary screen appears informing you if a repository is installed or not. Click "Next".

    The installation screen appears. Wait until the install is completed. Click "Next".

    Once the repository wizard is finished, click "Finish" to leave the wizard.

    Click "Exit" to complete the installation.

    Review the installation log files repository.log or popolate.log for any errors, which are located in ORACLE_HOME mobileserver . The repository.log file contains all general installation information on a successful installation, and installation errors on a failed installation. Sometimes, if an unexpected exception occurred and was not caught by OUI, a file named popolate.log is created and contains the exception stack.

    When you configure multiple mobile servers against a single repository, this is known as a farm. You must enable the Device Manager, Mobile Manager and mobile client to work properly in a farm environment. For information on configuring all mobile servers to act properly in a farm, see Section 1.2, "Manage Mobile Server Farms" in the Oracle Database Mobile Server Administration and Deployment Guide .

    When installation is completed, launch script runmobileserver on Linux or runmobileserver.bat on Windows to start the Mobile Server.

    4.3.1.2 Installation of Mobile Development Kit

    Install Mobile Development Kit from the Installation Types screen by performing the following:

    Choose the "Mobile Development Kit" and clicking "Next".

    Figure 4-21 Select Mobile Development Kit

    On the "Specify Home Details" screen, enter the name and path where you want to install Mobile Development Kit, which cannot include any spaces.

    Figure 4-22 Specify Home Details

    On the "Summary" screen, click Install. Click "Exit" to return to the installation screen.

    You have now installed the Mobile Development Kit.

    4.3.2 Silent Install of the Mobile Server and MDK Components

    You can execute a command-line tool that runs the installer in silent mode. That is, it installs either the Mobile Development Kit or the mobile server for you without having to use the Installation GUI. The following sections describe how to silently install these components on either the Windows or UNIX platforms:

    4.3.2.1 Silent Install for Mobile Server or Mobile Development Kit on Windows

    The setup.exe command can be executed to run the installer in silent mode for Windows, as follows:

    There are two response files that contain variables that define how the mobile server or the MDK are installed. The following sections describe the response files:

    4.3.2.1.1 Response File for Mobile Server Install

    Variables to be filled for silent install in the response file oracle.mobile.install_type_2.rsp to install Oracle Database Mobile Server are as follows:

    Define the ORACLE_HOME destination directory, as follows:

    Define the name for your Oracle Home, as follows:

    Provide the hostname, port, and user for the back-end database, where the repository is to be installed, as follows:

    Specify true or false if the repository is to be created on the back-end database, as follows:

    Provide the database system user name and password, as follows:

    Provide the mobile server schema name and password, as follows:

    Provide the demo schema user name and password, as follows:

    Provide the demo client password, as follows:

    Provide the mobile server administrator user name and password, as follows:

    Specify true or false to indicate whether the samples are to be installed, as follows:

    Specify application server home, as follows:

    Refer to Step 7 in Section 4.3.1.1, "Installation of the Mobile Server" for how to set application server home.

    Specify the configuration file for mobile server deploy. For more information, refer to Section 4.3.2.3, "Configuration File for Deploying Mobile Serve". Note that b_repository must set to true if you want to deploy mobile server:

    Specify JDK home, as follows:

    4.3.2.1.2 Response File for MDK Install

    Variables in the oracle.mobile.install_type_1.rsp response file to install MDK, are as follows:

    Define the ORACLE_HOME destination directory, as follows:

    Define the name for your Oracle Home, as follows:

    Specify JDK home, as follows:

    4.3.2.2 Silent Install Mobile Server or the Mobile Development Kit on UNIX

    You can install the mobile server and/or the Mobile Development Kit by using the runInstaller command, which is on the top level of the CD or the downloaded ZIP file for the product.

    There are two response files that contain variables that define how the mobile server or the MDK are installed, which are located in the stage/Response folder of the CD or ZIP file.

    4.3.2.2.1 Response File for Mobile Server Install

    The response file for installing the mobile server is oracle.mobile.install_type_2.rsp . The variables that you can modify in this file for defining your install are as follows:

    Define the ORACLE_HOME destination directory, as follows:

    Define the name for your Oracle Home, as follows:

    Provide the hostname, port, and user for the back-end database, where the repository is to be installed, as follows:

    Specify true or false if the repository is to be created on the back-end database, as follows:

    Provide the database SYSTEM user name and password, as follows:

    Provide the mobile server schema name and password, as follows:

    Provide the mobile server demo schema user name and password, as follows:

    Provide the demo client password, as follows:

    Provide the mobile server admin user name and password, as follows:

    Specify true or false to indicate whether the samples are to be installed, as follows:

    Specify application server home, as follows:

    Refer to Step 7 in Section 4.3.1.1, "Installation of the Mobile Server" for how to set application server home.

    Specify the configuration file for mobile server deploy. Refer to Section 4.3.2.3, "Configuration File for Deploying Mobile Serve" for more information.

    b_repository must set to true if you want to deploy mobile server.

    Specify JDK home, as follows:

    4.3.2.2.2 Response File for MDK Install

    The response file for installing the MDK is oracle.mobile.install_type_1.rsp . You can define the variables in this file for your install as follows:

    Define the ORACLE_HOME destination directory, as follows:

    Define the name for your Oracle Home, as follows:

    Specify JDK home, as follows:

    4.3.2.2.3 Execute Silent Install of Mobile Server and MDK on UNIX

    After modifying the response files, if you want to install both the mobile server and the MDK, then execute the runInstaller command twice. Each execution is provided a different response file. The following installs the mobile server, as follows:

    where the options for this command are as follows:

    Table 4-3 The runInstaller Command Options

    Provide the path and name of the response file for the component that you are installing. There are two response files: one for installing the mobile server and one for installing the MDK.

    Always use this option, as it defines that this is a silent installation.

    Stops the GUI from displaying.

    4.3.2.3 Configuration File for Deploying Mobile Serve

    The configuration file specified in s_dep_conf_file variable is used to specify the required information to deploy mobile server. The file must be an INI format file. You can find the sample configuration file at %ORACLE_HOME%MobileServeradminmobileserver_config.ini.

    Table 4-4 Configuration File for Deploying Mobile Server on WebLogic, GlassFish and and TomEE Servers

    String type, required for WebLogic and GlassFish. Name of the WebLogic Server domain or GlassFish Server domain. If deploying the Mobile Server on a WebLogic Server and 'create_new_domain=false', this parameter is not required.

    String type, required for WebLogic and GlassFish. Domain directory. Refer to Step 16 in Section 4.3.1.1, "Installation of the Mobile Server" for how to set the domain directory.

    String type, required for WebLogic and GlassFish. Name of the domain administrator.Note: Use 'weblogic' as the administrator user name if you are creating a new domain for WebLogic Server.

    String type, required for WebLogic and GlassFish. Password of the domain administrator, please change the password after deployment.

    Note: WebLogic Server requires that the password is at least eight characters in length and contains at least one non-alphabetic character.

    Integer type, required for GlassFish, TomEE and WebLogic Managed Server.

    Set it to the server port for GlassFish and TomEE.

    If deploying the Mobile Server on a WebLogic Managed Server and 'create_new_domain=true', this parameter is required, set it to the Managed Server port

    Integer type, required for WebLogic and GlassFish.

    Set it to domain administration port for GlassFish.

    If deploying the Mobile Server on either a WebLogic Administration Server or a Managed Server, and 'create_new_domain=true', this parameter is required. Set it to Administration Server port for WebLogic.

    Boolean type, optional. Set to 'true' to create a new domain, or set to 'false' to use an existing domain, default value is 'true'.

    Boolean type, optional. If set to 'true', redeploy the Mobile Server even if it has already been deployed or already exists, default value is 'false'.

    String type, required for WebLogic if deploying the Mobile Server on a WebLogic Managed Server. Managed Server name.

    String type, required for WebLogic.

    Set to 'A' if deploying the Mobile Server on a WebLogic Administration Server.

    Set to 'M' if deploying the Mobile Server on a WebLogic Managed Server.

    Table 4-5 Sample Configuration File

    WebLogic Server configuration

    Specify the configuration parameters in [WLS] section[WLS]domain_name=mobileserver_wlsdomain_dir=C:OracleMiddlewareuser_projectsdomainsmobileserver_wlsadmin_user=weblogicadmin_password=welcome1admin_port=7001server_port=7009managed_server_name=ManagedServertarget_server_type=Mcreate_new_domain=trueforce_deploy=true

    GlassFish Server configuration

    Specify the configuration parameters in [GFS] section[GFS]domain_name=mobileserver_gfsdomain_dir=C:glassfish3glassfishdomainsadmin_user=adminadmin_password=welcome1server_port=8090admin_port=8089create_new_domain=trueforce_deploy=true

    TomEE Server configuration

    Specify the configuration parameters in [TOMEE] section[TOMEE]server_port=8080force_deploy=true

    4.3.3 Providing High Availability with a Farm of Multiple Mobile Servers

    In some cases, you may want to have multiple mobile servers using the same mobile server repository on an Oracle database or an Oracle RAC database. For example, as Figure 4-23 shows, if you wanted to load balance your mobile clients across multiple mobile servers, you could add a load balancer&mdashsuch as Oracle Web Cache&mdashbefore the shared mobile servers, and then your clients would be balanced across these mobile servers, of which each accesses the same data in the shared repository.

    This is the type of configuration that entails an Oracle Database Mobile Server Farm.

    Figure 4-23 Multiple Mobile Servers Sharing a Repository

    You can install multiple mobile servers, each on its own host, that use the same mobile server repository, as follows:

    Install the load balancer. Refer to Section 9.6 "Using a Load Balancer" in Administration and Deployment Guide for instructions about how to install a load balancer. Oracle Database Mobile Server certifies Oracle Web Cache as a load balancer. You can use any load balancer as long as the JSESSIONID is used.

    Install the first mobile server and the mobile server repository following the instructions in Section 4.3.1.1, "Installation of the Mobile Server".

    Install additional mobile servers. For each subsequent mobile server, follow the instructions in Section 4.3.1.1, "Installation of the Mobile Server", supplying the same JDBC URL for the back-end Oracle database where the mobile server repository exists. Select Yes for creating the repository, which registers the shared mobile server with the repository.

    Configure mobile servers with the load balancer URL. Because the mobile client accesses any of these mobile servers through a load balancer, you need to configure each mobile server with the load balancer URL. This ensures that when the setup.exe is downloaded by the client, the executable automatically includes the load balancer URL, instead of the mobile server URL.

    This process is similar to how the mobile server is configured to use with a reverse proxy. Configure both the reverse_proxy and DM_AUTO_SYNC_CACHE parameters in the mobile.ora configuration file, as follows:

    In a configuration with multiple mobile servers and a load balancer, you must ensure that the load balancer is configured to route HTTP requests within the same HTTP session to the same mobile server. To do this, configure the load balancer to honor the JSESSIONID cookie. When a user logs into a mobile server, an HTTP session is created for that user. An HTTP cookie with the name JSESSIONID is sent back to the mobile client. Subsequent HTTP requests from the mobile client will contain the HTTP cookie, which allows the mobile server to identify the session for that user. Refer to Section 9.6 "Using a Load Balancer" in Administration and Deployment Guide for more instructions about how to configure the load balancer to use with a mobile server farm.

    If the load balancer uses a different algorithm to distribute HTTP requests, such as round-robin or server-load based, then the mobile server will not work correctly.

    Perform additional configuration for device management and data synchronization for all mobile servers in the farm as described in Section 1.2, "Manage Mobile Server Farms" in the Oracle Database Mobile Server Administration and Deployment Guide .

    4.3.4 Install Oracle Database Mobile Server on Linux

    The following sections provide considerations when installing Oracle Database Mobile Server on a Linux platform:

    4.3.4.1 Patch Required if Using Linux Redhat 3.0

    If you install Oracle Database Mobile Server on Linux Redhat 3.0 and the following error occurs, apply the 3006854 patch and start the installation again.

    Error occurred during initialization of VM Unable to load native library: /tmp/myhost/jre/lib/i386/libjava.so: symbol __libc_wait , version GLIBC_2.0 not defined in file libc.so.6 with link time reference.

    4.3.4.2 Providing Enough Swap Space on the Linux Platform

    If the swap space is not sufficient on your Linux machine, then modify the value for the SWAP_SPACE variable in the install/linux/oraparam.ini file. The default value is set to SWAP_SPACE=1536 . For example, if your machine is not as powerful, decrease the swap space for example, SWAP_SPACE=1024 .

    4.3.5 Mobile Client Install

    The mobile client can use either Berkeley DB, SQLite or JavaDB database. For instructions on how to install the mobile client, see Chapter 2, "Installing the Mobile Client" in the Oracle Database Mobile Server Mobile Client Guide .


    2 réponses 2

    By I/O I mean this line with the redirect and append:

    Spawning a lot of subshells for the pipelines would also really slow down your code, as ceving's answer has shown. If you must set up a pipeline, I suggest you consider the faster, Bash-only alternative: process substitution.

    So I turned to some awk magic one-liner that does both the extract and clean functions at once:

    I don't think I need to explain the grep part. -F sets the field delimeter to " . If NF , the number of fields, is greater than 10, we're parsing the RecordStart tag so we save the values for ConnectionName and ConnectorType . If NF is not greater than 10, we're parsing the Telegram tag so we print the needed columns, including the two previously saved values, and display the last two columns in hex format and the rest as string.

    This will be the single change that will make your program fly in high speed lane. That's pretty much it. No command substitutions, almost no pipelines, not even Bash builtins which are still slow, and most importantly, no while read loop.


    Voir la vidéo: Kuinka ladata My Summer Car modit 2021 (Octobre 2021).