Google Website Translator Gadget

Mostrando entradas con la etiqueta Database. Mostrar todas las entradas
Mostrando entradas con la etiqueta Database. Mostrar todas las entradas

miércoles, 13 de agosto de 2014

PostgreSQL: cicle de vida

PostgreSQL logo
PostgreSQL

cicle de vida de PostgreSQL

PostgreSQL és un un sistema gestor de base de dades (SGBD, DBMS) de codi lliure (Open Source), molt popular ja que es distribueix gratuïtament, i es una alternativa a altres sistemes de pagament (SQL Server, Oracle).

Com tot sistema que introduïm a la nostre empresa, cal que tinguem present el cicle de vida (lifecycle) per mantenir un cert nivell de suport i de protecció davant vulnerabilitats.

Les darreres versions (9.3.4) que pots obtenir aquí tenen una durada fins al 2016, però per a consultar-ho pots seguir els següents enllaços:



miércoles, 23 de julio de 2014

Oracle: Optimització SELECT amb LIKE, UPPER i PrepareStatement

www.oracle.com

Optimització SELECT, LIKE, UPPER, PrepareStatement

Quan comences a treballar en un projecte, es bó anar anotant totes aquelles millores que poden ser incloses a la següent versió.
Una de les més habituals es l'optimització de les sentències d'accés a BB.DD. (i possiblement de tot el disseny de la BB.DD), que si no poden ser optimitzades en una primera instància, caldrà revaluar-les a posteriori.

Al següent enllaç he trobat informació força interessant sobre una sèrie de punts a tenir en compte per a diverses BB.DD. com Oracle, MySQL, SQL Server.
PasExemple
Crear la sentència amb UPPER
SELECT first_name, last_name, phone_number
FROM employees
WHERE UPPER(last_name) = UPPER('Rincewind')
Crear un índex sobre el camp amb UPPER
FBI - Function Based Index
CREATE INDEX emp_up_name
ON employees (UPPER(last_name));
Coordinar amb el Database Manager la actualització de les estadístiques (DBMS_STATS)Per defecte els FBI no s'utilitzen per al càlcul del execution plan.
Consulta a Oracle algunes altres advertències com, per exemple, incidències amb les funcions.Oracle Database cannot convert data in all cases, even when conversion is explicitly requested.
En el cas de PrepareStatement es important tenir en compte:
- El ? ha de estar sense cometes.
- Les cometes s'afegeixen al assignar la variable

sql_inst="SELECT * FROM C01001 WHERE UPPER(DESCRIPTION) LIKE ? ";
...
stmt.setString(1, "%"+Bean.getDescription().toUpperCase()+"%");

Nota: Per al cas de SQLServer, el procediment difereix una mica, consulltar l' article complert per a obtenir més informació.



Enllaços relacionats:




sábado, 14 de diciembre de 2013

Oracle Database end-of-life support

www.oracle.com

Oracle Database Lifecycle

Una de les coses que cal vigilar tant des de un punt de vista de gestió de riscos com de la gestió de inversions es el final de cicle de vida dels productes.

Oracle publica en el següent link la seva política de suport.

Final del cicle de vida (end-of-life)

Si aneu a la pàgina trobareu (Sota el ambigu concepte de "Technology") un document (PDF) on especifica el suport per a les Bases de Dades Oracle:

Oracle Database GA Date
(General Availability)
Premier Support
(for five years from the GA)
Extended Support
(for an additional fee)
12.1Juny 2013Juliol 2018Juliol 2021
11.2Set. 2009Gener 2015Gener 2018
11.1Agost 2007Agost 2012Agost 2015
10.2Juliol 2005Juliol 2010Juliol 2013
10.1Gener 2004Gener 2009Gener 2012

En general, tal com indica aquí:
... Generally, only releases in these first two stages of support are included in the Critical Patch Update program.
For most products, only the latest versions within each release receive Critical Patch Update patches
...

Es important tenir en compte les condicions de suport, per exemple en el CPU (Critical Patch Update) afegeixen els següents comentaris:
...
Critical Patch Update Supported Products and Versions
Patches released through the CPU program are provided only for product versions that are covered under the Premier Support or Extended Support phases
...
Products in Extended Support
Patches released through the CPU program are available to customers who have purchased Extended Support...
Customers must have a valid Extended Support service contract to download patches released.
...
Product releases that are not under Premier Support or Extended Support are not tested for the presence of vulnerabilities.
...

Enllaços relacionats:




miércoles, 3 de abril de 2013

Com solventar l'error ORA-12519

ORA-12519: TNS:no appropriate service handler found
es un error que apareix quan les connexions disponibles queden saturades.

Això es pot produïr facilment quan es un marge de temps petit es fan moltes connexions a la BB.DD. ja que el listener no rep la informació de que la connexió ha estat tancada.

Una forma de veure-ho es monitoritzar el resultat de la comanda:
select count(*) from v$session;

Malauradament no hi ha cap manera de fer que el listener rebi informació de les connexions tancades i l'única manera es:
  • ampliar el limit de processos fent:
ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE
i reiniciar la BB.DD.

  • Revisar el codi font de l'aplicació per a optimitzar les connexions.



Enllaços:
https://forums.oracle.com/forums/thread.jspa?messageID=1252551

miércoles, 6 de marzo de 2013

Eclipse - Oracle 28001 Error - password expired

www.oracle.com

Eclipse - Oracle 28001 Error

Marxes a casa desprès d'un dia dur de programació, i al dia següent quan intentes connectar-te a la BB.DD. Oracle des de el teu entorn Eclipse... zasca!!!! Error!!!
 "Creating connection to " has encountered a problem.
Could not connect to DDBB


Però si ahir funcionava!!! Es la teva exclamació.... si revisem atentament observem un detall del error:
28001-ORA: The password has expired.

Que està passant?

La solució es simple, Oracle 11 presenta unes caducitats per defecte dels usuaris i passwords.
Per a solventar-ho només cal connectar-se com a sysdba i revisar el següent:

select profile, limit from dba_profiles where RESOURCE_NAME='PASSWORD_LIFE_TIME';

Ens tornarà la expiració actual. Pots canviar-la a ilimitada amb:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

I per a recuperar els usuaris verifiques l'estat amb:
select username, account_status from dba_users;

I canviar-ho amb la sentència:
alter user HR identified by test;
alter user HR account unlock;




lunes, 12 de noviembre de 2012

Oracle i Java: Com programar commit i rollback

www.oracle.com

Commit i Rollback amb Oracle i Java

Quan programes aplicacions i tens informació a grabar en diverses taules et cal tractar totes les sentències SQL com a un única transacció per a mantenir la integritat de la informació.
Per exemple: Si actualitzes la informació de la venda, i del stock disponible, han de ser efectuades al mateix temps.
La transacció es un conjunt de execucions que es tracten de manera única de manera que totes les instruccions son confirmades o denegades de manera conjunta.

Pas 1: Desactivar el auto commit.
Per defecte totes les instruccions es tracten com transaccions individuals, per tant cal desactivar-ho amb la instrucció:
con.setAutoCommit(false);


Pas 2: Activació manual de commit.
Un cop desactivat les instruccions SQL només seran confirmades si explicitament invoquem el mètode commit.
conn.commit();


Pas 3: Activació manual de rollback.
Si per alguna raó hi ha una incidència es pot evitar la grabació del tots els registres amb la instrucció rollback:
conn.rollback();


Enllaços relacionats:
http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

domingo, 11 de noviembre de 2012

Mapping de Oracle SQL a Java Types

Java logo
java.com
www.oracle.com
Al desenvolupar una aplicació tindràs dubtes de quin mapping fer entre Oracle i Java.
Aquest es el mapping que he utilitzat amb Oracle XE 11g2 i Java 7.

Mapping Oracle - Java

JavaJDBCOracle 11.2Java to SQLOracle DB to Java
byte (8-bit signed)
-128,+127
TINYINT (8-bit)
signed: -128, +127
or unsigned: 0, 255
NUMBERupdateByte(Column name, value)getByte("Column name")
short (16-bit)
-32768 , +32767
SMALLINTNUMBERgetShort("Column name")
int
(32-bit signed)
-2147483648 to 2147483647
INTEGER
32-bit signed
NUMBERgetInt("Column name")
float (32 bit)DECIMAL,
NUMERIC (*3)
NUMBERupdateFloat(Column name, value)getBigDecimal("Column name")
getFloat("Column name")
long (64-bit)BIGINTNUMBERgetLong("Column name")
double (64-bit)FLOAT
DOUBLE
NUMBER
booleanBITgetBoolean("Column name")
char
(16-bit Unicode)
StringVarchar2(nn)getString("Column name")
Timestamp
(*1,*2)
TimestampgetTimestamp("Column name")
Timestamp
(*1,*2)
TimestampgetDate("Column name")
-Fallarà-

Java Timestamp <- Java Date (Cast)
*1: Si es treballa amb molta precisió (nanosegons) es millor revisar el link de Oracle per tal de assegurar les conversions.
*2: Amb Java7 hi ha algunes diferències però estic buscant la documentació oficial.
*3: JDBC requires that all DECIMAL and NUMERIC types support both a precision and a scale of at least 15. Example: "12.345" has a precision of 5 and a scale of 3
NUMERIC (12,4) types representes with exactly the specified precision
DECIMAL (12,4) types allows an implementation to add additional precision beyond that specified

Source font:
Oracle: JDBC Developer's Guide (Actualitzat a la versió 11.2)
Java: Primitive datatypes: Aqui trobaràs els formats primitius de Java
http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/mapping.html#996857
http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html

martes, 4 de septiembre de 2012

Oracle error: ORA-00911: invalid character

www.oracle.com

Oracle ORA-00911 error

Quan comences a programar i et cal construir sentències en SQL tens diverses opcions.

Si les programes directament dins de Java pots obtenir el següent missatge:

ORA-00911: invalid character

Això es degut a un error trivial que et costarà trobar.... l'ús del punt i coma (;)

Sentència errònia:
insert into TKC.CONFIG01 (PAR01,PAR02) values ('dsfsdf','dfsdf');

Sentència corregida:
insert into TKC.CONFIG01 (PAR01,PAR02) values ('dsfsdf','dfsdf')

Veuràs que al construir la sentència no cal afegir el ; que caldria habitualment.

domingo, 26 de agosto de 2012

Oracle: TNS-12518: TNS:listener could not hand off client connection

www.oracle.com

Oracle TNS-12518 error

De vegades al acabar d’instal•lar un Oracle comencem a tenir errors al connectar-nos a la Base de Dades com, per exemple:

TNS-12518: TNS:listener could not hand off client connection
TNS-12541: TNS:no listener

Revisa els Firewall i els ports següents (o els que hagis configurat al seu lloc), perquè molt possiblement estiguin tancats per defecte.
Moltes de les accions les hauràs de fer manualment per línia de comandes.
  • 1521: Oracle Database Listener
  • 2030: Oracle Services for Microsoft Transaction Server
  • 8080: Oracle HTTP Transaction Server

 Per canviar els ports per defecte pots consultar:
A new IS hope: Canviar el port http 

martes, 21 de agosto de 2012

Oracle Express 11r2: Canviar el port http

www.oracle.com

Oracle: Canviar el port http

Al tenir un portàtil amb molts components correns simultàniament, es inevitable haver de canviar ports per defecte als productes.
Aqui tens els passos per a fer-ho amb Oracle Express 11r2: Canviar el port http sobre Windows 7.

Assegura't que els serveis de Oracle estan arrencats
Executa les comandes següents:
(nnnn: Es el nou port que vols utilitzar. 8081 per exemple)
SQLPLUS /NOLOG
CONNECT SYSTEM/password
EXEC DBMS_XDB.SETHTTPPORT(nnnn);
Per a verificar que tot ha funcionat pots utilitzar LSNRCTL STATUS(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=your_computer)(PORT=8080))(Presentation=HTTP)(Session=RAW))

Enllaços relacionats:
Oracle: Changing the Listener Port Number for HTTP Connection

viernes, 15 de junio de 2012

Connexió des de Eclipse a Oracle

Si disposes de Eclipse pots connectar-te a Oracle directament seguint aquests passos:

Window / Open Perspective / Database Development
Database Connections / New...
Oracle
Omple els paràmetres
Fes un test!
Error Creating SQL Model Connection connection to ...
Error:IO Error: The Network Adapter could not establish the connection)
Si et torna aquest error típicament es que els paràmetres son incorrectes.
Comença per revisar:
host
username
i password
La cadena de connexió et pot servir de guia


domingo, 29 de abril de 2012

ORACLE logs (Oracle Database 11g Express Edition)

www.oracle.com

Oracle logs

Una de les coses que més amoïna en el manteniment de les aplicacions es el procés inacabable de fer neteja de tots els fitxers logs que les diferents aplicacions, Base de Dades, Web Servers, etc... van deixant per tot arreu.
Aquí tens els que he recopilat de Oracle (Oracle Database 11g Express Edition):
CAUTION! Esborral's amb la BB.DD. aturada i backUp previ.:-)

C:\oraclexe\app\oracle\admin\XE\adump
C:\oraclexe\app\oracle\admin\XE\dpdump
C:\oraclexe\app\oracle\diag\rdbms\xe\xe\alertlog.xml
Parametres inicialització
C:\oraclexe\app\oracle\diag\rdbms\xe\xe\cdumpalert_xe.log
C:\oraclexe\app\oracle\diag\rdbms\xe\xe\lckRDBMS lock
C:\oraclexe\app\oracle\diag\rdbms\xe\xe\trace
C:\oraclexe\app\oracle\diag\tnslsnr\-machinename-\listener\alertlog.xml
Errors listener
C:\oraclexe\app\oracle\diag\tnslsnr\-machinename-\listener\cdump
C:\oraclexe\app\oracle\diag\tnslsnr\-machinename-\listener\trace
C:\oraclexe\app\oracle\product\11.2.0\server\config\log(logs instal·lació)
C:\oraclexe\app\oracle\product\11.2.0\server\databaseoradim.log (Log de startup i shutdowns)
C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\trace
C:\oraclexe\app\oracle\product\11.2.0\server\log\-machinename-\client

domingo, 22 de abril de 2012

L'embolic de les llicències MS SQLServer

Quan decideixes desenvolupar una aplicació, la selecció de la BB.DD. sempre es una feinada.


  • MySql es una de les més utilitzades per ser gratuita. Pertany des de fa temps a oracle.com
  • Oracle XE es una altre opció gratuïta amb limitacions que pot utilitzar-se.
  • Per últim tenim a SQLServer de Microsoft. A la següent pàgina: SQLServer (Spanish) hi ha un comparador de les versions de SQL. Des de la gratuïta a la versió Datacenter.
Apa! A començar....

Enllaços relacionats:

SQL Server: Conèixer la versió instal·lada.

jueves, 19 de abril de 2012

Començant amb Oracle XE (part 2) - Java libraries

www.oracle.com

Oracle XE 11.2.0.2 (part 2)

Es generen unes llibreries per a interactuar amb Java. Oracle recomana utilitzar les proporcionades durant la instal·lació disponibles a:
ORACLE_HOME/jdbc
ORACLE_HOME/jlib

Es important utilitzar una de les llibreries disponibles:
ojdbc5.jar - ojdbc6.jar 
EN CAP CAS LES 2 !!!!
sDD

miércoles, 18 de abril de 2012

Començant amb Oracle XE (part 1)

www.oracle.com

Oracle XE 11.2.0.2



Al instal·lar Oracle segurament els firewalls estaran tancats i caldrà obrir-los.... però pots treballar igualment!!!
Tornem a la beneïda línia de comandes....
  1. Display the SQL command prompt window. For example, on Windows, click Start, then Programs (or All Programs), then Oracle Database 11g Express Edition, and then Run SQL Command Line.
  2. Obrir la connexió:
  3. Type: connect
    Enter user-name: system
    Enter password: <password-for-system>
  4. Create user and grant permissions:
  5. SQL> create user chris identified by <password-for-chris>;
    SQL> grant connect, resource to chris;
OK.... estas dintre i ja et sents un campió.... 
A més, portes molts anys treballant i creus que no ha canviat res al món de les BB.DD....
O potser si?...
Domines
REGEXP_COUNT, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_COUNT, REGEXP_INSTR,...?

UPPER, INITCAP, LOWER...?

LPAD, RPAD...?

CASE expressions in Queries


Fes una ullada ràpida al tutorial de Oracle: Oracle XE: SQL Tutorial potser trobes que alguna cosa nova si que en té el Oracle... :-) i també al Oracle Reference Language


Enllaços importants:
Oracle Express Edition

domingo, 15 de abril de 2012

Instal·lació Oracle Database Express Edition 11r2

www.oracle.com

Instal·lació Oracle XE 11.2.0.2

El nom complert de la nova versió es Oracle Database Express Edition 11g Release 2 però l'anomenarem XE 11.r2  per anar ràpid o simplement XE.... Punts importants:
  • Revisa molt bé les limitacions tècniques: CPU, memòria, tamany,...
  • Revisar l'apartat de incompatibilitats de les actualitzacions (upgrades). En concret especifica:
  • The following describes upgrade support for XE:
    - Upgrade from XE 11.2 to EE 11.2.0.2 is not supported.
    - Upgrade from XE 11.2 to SE 11.2.0.2 is not supported.
    
  • Verifica que els ports necessaris estiguin oberts al Firewall. Molt posiblement estiguin tancats per defecte. Moltes de les accions les hauràs de fer manualment per línia de comandes.

    • 1521: Oracle Database Listener
    • 2030: Oracle Services for Microsoft Transaction Server
    • 8080: Oracle HTTP Transaction Server

      VERIFICACIONS I ADAPTACIONS:
      Oracle XE instala uns enllaços de gestió. Per defecte: http://127.0.0.1:8090/apex/f?p=4950 (El port l'he modificat a 8090).
      Connexió a SQL
      SQL> conn xx/xx as sysdba;
      Connected.
      Check de port
      Check listening port
      (3316 es el PID de Windows) el pots verificar a Task Manager
      Ha de coincidir amb TNSListener
      Verificar que el listener respon (el firewall el pot estar tallant) amb TELNET o PUTTY al port 1215listener log (C:\oraclexe\app\oracle\diag\tnslsnr\-machinename-\listener\trace\listener.log) ha de indicar:
      TNS-12502: TNS:listener received 
       no CONNECT_DATA from client
      T'has equivocat i vols modificar el http desprès de la instal·lació?Visita la entrada canviar el port http

      NOTES ADDICIONALS:
      Disposa de instal·lador "SILENT". Els fitxers els trobaràs disponibles a DISK1\response
        • OracleXE-install.iss
        • OracleXE-remove.iss
        • OracleXE-repair.iss
      • Disfruta de la teva nova BB.DD. i comença a desenvolupar el futur!!!
      Enllaços interessants:Documentació oficial de Oracle XE