lundi 22 septembre 2014

cksum en environnement windows

Lorsqu'on veut télécharger les produits oracle sur OTN (otn.oracle.com) , il y a un cksum inscrit en face du fichier zip à télécharger.
Après le téléchargement on peut vérifier le cksum sur notre serveur (ou notre pc) et comparer avec celui qui est sur OTN. S'ils sont différents c'est qu'il y a une corruption quelque part et qu'il y a de forte chances que vous rencontriez des problèmes pendant votre installation.

Exemple:







En environnement linux, la commande "cksum" vient avec la plupart des distributions.
Mais que faire en environnement Windows?

Pour arriver à faire cela sous Windows, j'ai téléchargé l'outil "win-bash" (shell-w32-ix86.zip).
Voici le lien pour télécharger: http://sourceforge.net/projects/win-bash/?source=typ_redirect

Décompresser le fichier shell-w32-ix86.zip dans un répertoire, par exemple "c:\win-bash"
On obtient le répertoire "c:\win-bash\shell-w32-ix86"

Ouvrir une fenêtre DOS et ajouter ce répertoire dans le path:
set Path=%Path%;c:\win-bash\shell-w32-ix86

Vérifier le cksum comme suit:
cksum.exe <Fichier_zip_telechargé>

Exemple:
C:\Users\Herve Etche>cksum.exe c:\downloads\winx64_12c_database_1of2.zip
4181069701
1337085275 c:\downloads\winx64_12c_database_1of2.zip

C:\Users\Herve Etche>cksum.exe c:\downloads\winx64_12c_database_2of2.zip
847151935 1373044868 c:\downloads\winx64_12c_database_2of2.zip


On voit bien que les valeurs obtenues sont identiques à celles qu'on avait sur OTN.
La première valeur qu'on obtient ici étant le cksum et la seconde étant la taille du fichier en bytes.

Note:
Cet outil peut être utilisé pour valider le cksum de n'importe quel fichier téléchargé d'OTN (Linux, Solaris, Windows, etc...).

Exemple:


C:\Users\Herve Etche>cksum.exe c:\downloads\linuxamd64_12c_database_1of2.zip
3389130601
1361028723 c:\downloads\linuxamd64_12c_database_1of2.zip

C:\Users\Herve Etche>cksum.exe c:\downloads\linuxamd64_12c_database_2of2.zip
273248753
1116527103 c:\downloads\linuxamd64_12c_database_2of2.zip


Hope it helps...

jeudi 18 septembre 2014

Comment créer des utilisateurs communs (common users) sans le préfixe C##

Avec Oracle database 12c, lorsqu'on veut créer un utilisateur commun (common user) avec un nom ordinaire (un nom tel qu'on utilisait dans les versions antérieures), on reçoit le message d'erreur suivant:

ERREUR à la ligne 1 :
ORA-65096: nom utilisateur ou de role commun non valide


Exemple:

C:\Users\Herve Hetche>sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Jeu. Sept. 11 14:27:20 2014
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ConnectÚ Ó :
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SYS@oracdb> show con_name
CON_NAME
------------------------------
CDB$ROOT

SYS@oracdb> create user hetche identified by hetche;
create user hetche identified by hetche
            *
ERREUR à la ligne 1 :
ORA-65096: nom utilisateur ou de role commun non valide


SYS@oracdb>

Cela est causé par le paramètre caché "_common_user_prefix".

SYS@oracdb> select value from v$parameter
  2  where name='_common_user_prefix';

VALUE
--------------------------------------------------------------------------------
C##

SYS@oracdb>

OU

SYS@oracdb> select a.ksppinm "Parameter",
b.ksppstvl "Session Value",
c.ksppstvl "Instance Value", a.ksppdesc "Description"
from x$ksppi a,
x$ksppcv b,
x$ksppsv c
where a.indx = b.indx and a.indx = c.indx
and substr(ksppinm,1,1)=’_’ and lower(a.ksppinm) like ‘%common_user_prefix%’;

Parameter
--------------------------------------------------------------------------------
Session Value
--------------------------------------------------------------------------------
Instance Value
--------------------------------------------------------------------------------
Description
--------------------------------------------------------------------------------
_common_user_prefix
C##
C##

Enforce restriction on a prefix of a Common User/Role/Profile name

SYS@oracdb>

Modifier le paramètre comme suit:

SYS@oracdb> alter system set "_common_user_prefix"='' scope=both;
alter system set "_common_user_prefix"='' scope=both
                 *
ERREUR à la ligne 1 :
ORA-02095: Le paramètre d'initialisation indiqué ne peut pas être modifié


SYS@oracdb> alter system set "_common_user_prefix"='' scope=spfile;
Système modifié.
SYS@oracdb>

Et redémarrer la BD:

SYS@oracdb> shutdown immediate
Base de donnÚes fermÚe.
Base de donnÚes dÚmontÚe.
Instance ORACLE arrÛtÚe.
SYS@oracdb> startup
Instance ORACLE lancÚe.

Total System Global Area  730714112 bytes
Fixed Size                  2443824 bytes
Variable Size             545261008 bytes
Database Buffers          176160768 bytes
Redo Buffers                6848512 bytes
Base de donnÚes montÚe.
Base de donnÚes ouverte.
SYS@oracdb>

Vérifier la valeur du paramètre (on vient bien qu'elle est nulle):

SYS@oracdb> select value from v$parameter
  2  where name='_common_user_prefix';

VALUE
--------------------------------------------------------------------------------


SYS@oracdb> select a.ksppinm "Parameter",
  2  b.ksppstvl "Session Value",
  3  c.ksppstvl "Instance Value", a.ksppdesc "Description"
  4  from x$ksppi a,
  5  x$ksppcv b,
  6  x$ksppsv c
  7  where a.indx = b.indx and a.indx = c.indx
  8  and substr(ksppinm,1,1)='_' and lower(a.ksppinm) like '%common_user_prefix%';

Parameter
--------------------------------------------------------------------------------
Session Value
--------------------------------------------------------------------------------
Instance Value
--------------------------------------------------------------------------------
Description
--------------------------------------------------------------------------------
_common_user_prefix
Enforce restriction on a prefix of a Common User/Role/Profile name


Reprendre la création de l'utilisateur:

SYS@oracdb> create user hetche identified by hetche;
Utilisateur créé.
SYS@oracdb> grant dba to hetche;
Autorisation de privilèges (GRANT) acceptée.
SYS@oracdb> column username format a20
SYS@oracdb> select username, common from dba_users where username='HETCHE';


USERNAME              COM
---------------------             ---
HETCHE                   YES

SYS@oracdb>

Si vous voulez remettre la valeur par défaut, à vous de décider !

Hope it helps....

mardi 9 septembre 2014

Oracle 12c - Architecture Multitenant

Les documents de "My Oracle Support" suivants contiennent des informations intéressantes sur l'architecture Multitenant d'oracle 12c.
Je vous les partage, qui sait? Ils peuvent peut-être vous servir un jour...

Master Note for the Oracle Multitenant Option (Doc ID 1519699.1)
Oracle Multitenant Option - 12c : Frequently Asked Questions (Doc ID 1511619.1)
Removal of Database Options in a Multitenant Setup (Doc ID 1616554.1)

Oracle Multitenant: Configuration and Customization Fundamentals (Doc ID 1633071.1)

Hope it helps...

Oracle Database 12c - Configuration Single Tenant

Avec Oracle Database 12c, si l'on utilise une PDB par CDB l'on ne paie pas d'option supplémentaire? C'est cette configuration qu'on appelle "Single Tenant". Cette configuration est disponible dans toutes les éditions sans frais supplémentaires contrairement au Multitenant qui n'est disponible que dans l'Enterprise Edition et qui n'est pas gratuit.


Pour plus de détails, voir:

https://blogs.oracle.com/Multitenant/entry/single_tenant_configuration
http://docs.oracle.com/database/121/DBLIC/editions.htm#CIHBAEID

Hope it helps...