Arquivo

Archive for the ‘DB2 / Banco de dados’ Category

Adding DB2 jdbc drivers to a Maven Java project

You need to get the DB2 drivers, in my case db2jcc.jar and db2jcc_license_cu.jar, then, drop it to a folder at your file system, also, in my case I created a folder /opt/driveDB2 and drop the 2 files there.

Then, run the mvn install command, like in my examples (pay attention in your Version):

mvn install:install-file -Dfile=/opt/driveDB2/db2jcc.jar -DgroupId=com.ibm.db2.jcc -DartifactId=db2jcc4 -Dversion=10.1 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

mvn install:install-file -Dfile=/opt/driveDB2/db2jcc_license_cu.jar -DgroupId=com.ibm.db2 -DartifactId=db2jcc_license_cu -Dversion=10.1 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

At your project, just add the following lines to the pom.xml file:

<dependency>
    <groupId>com.ibm.db2.jcc</groupId>
    <artifactId>db2jcc4</artifactId>
    <version>10.1</version>
</dependency>

<dependency>
    <groupId>com.ibm.db2</groupId>
    <artifactId>db2jcc_license_cu</artifactId>
    <version>10.1</version>
</dependency>

Voa lá!

Categorias:DB2 / Banco de dados, JAVA Tags:, ,

Java + JDBC: imprimindo informações de tabelas

Preciso pegar as informações das tabelas/colunas nas quais fiz uma query, e sempre esqueço… Fica a dica aqui com um código bem bobinho. sugestões são bem vindas.

		Statement stmt = connection.createStatement();
		ResultSet rs = stmt.executeQuery("SELECT * FROM TABLE FETCH FIRST 10 ROWS ONLY");

		ResultSetMetaData rsmd = rs.getMetaData();
		int columnCount = rsmd.getColumnCount();

		// The column count starts from 1
		for (int i = 1; i <= columnCount; i++ ) {
		  String name = rsmd.getColumnName(i);
		  System.out.print(name + "|");
		}
		System.out.println();
		
		while (rs.next()) {
			String toPrint = "";
			for (int col = 1; col <= columnCount; col++) {
				toPrint += rs.getString(col) + "|";
			}
			System.out.println(toPrint);
		}

Creating a collection in IBM Watson Explorer crawling from Database

Perform a database Craw from a collection its something very common. With IBM Watson Explorer this is something very easy to do. In my example, Ill create a collection and will perform a simple query in a IBM DB2 database, but, the steps will be very similar for other databases, you just need to keep in mind that you will need the correct driver.

1- Put the driver in place:

Get the database jdbc and put in the correct folder, usually it is something like /opt/IBM/dataexplorer/WEX-11_0_2/Engine/lib/java/database/.

2- Create the collection copying defaults from default:

Selection_188.jpg

3- Add a new seed, this is where your collection will get data:

Selection_189.jpg

4- Choose Database:

Selection_190.jpg

5- Enter your database settings and the query that will be performed:

Selection_191.jpg

6- Its done, now you can test:

Selection_192.jpg

7- This can take a while depending on your query and connection, but when it finish, it will show some rows that the query returned in the following format. To see some row data, click Crawler XML:

Selection_193.jpg

8- Here is your data:

Selection_194

9- Now that we see that its working, you can start your craw. This step will feed your collection and can take a good time depending on your amount of data:

Selection_195

10-You must see Craw activity:

Selection_196

11- You can query your collection now to test, just enter your term and click search in the left options:

Selection_197

12- You will see something like this:

Selection_198

Thats it, you have created a collection that get data from Database!

Comparando DATAS no DB2

Este post serve como referência até pra mim, pois sempre esqueço como comparar datas no DB2. Na prática:

– Comparando TODA a data
SELECT * FROM XXX
where DATE(CAMPO)=DATE(‘2009-07-03’)
FETCH FIRST 100 ROWS ONLY FOR READ ONLY WITH UR;

– Comparando o ano – neste exemplo com a data atual
SELECT * FROM XXX
where YEAR(CAMPO)=YEAR(CURRENT TIMESTAMP)
FETCH FIRST 100 ROWS ONLY FOR READ ONLY WITH UR;

Um link completo sobre o assunto pode ser encontrado AQUI.

SQL: FOR READ e WITH UR

Muitas pessoas desconhecem as clausulas FOR READ e WITH UR, muito utilizadas em buscas em banco de dados, e que podem fazer uma imensa diferença na performance de sua aplicação/DB. Segue um pequeno exemplo que pode ser útil:

No caso:

SELECT * FROM TABELA FETCH FIRST 10 ROWS ONLY FOR READ ONLY WITH UR;

  • FETCH FIRST 10 ROWS ONLY -> quer dizer que é pra trazer somente as 10 primeiras linhas encontradas
  • FOR READ -> fala pro banco que esta trazendo dados somente para LEITURA, de forma superficial, quando você não usa isso, o banco deixa CURSORES posicionados na posição dos registros que você trouxe, ja preparando pra um update/delete – isso, consome recursos.
  • WITH UR -> quer dizer “with uncommited records”, ou seja, já traz os dados mais atualizados do banco, que sofreram um update, mesmo não tendo sofrido commit ainda.

Enjoy!

Estrutura de diretórios no DB2 e seus Logs

Featured imageMuitas pessoas tem dúvidas referentes a estrutura de diretórios do DB2 e onde se localizam seus Logs.

No link a seguir encontramos a referência completa: http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0024443.html

Todavia, para sabermos onde o DB2 está gerando logs, basta nos conectarmos no banco pelo DB2 command line:

db2 connect to XXXXX

E dar o comando:

db2 get dbm cfg

Procurar pela variável DIAGPATH.

Outra forma simples, e no caso, se o banco não estiver subindo (você pode estar com algum problema e ter que analisar os logs justamente por isso), pode-se efetuar uma busca no HD pelo arquivo DB2DIALG*.log . NORMALMENTE os logs encontram-se no diretório da Instancia, e não no diretório da instalação do DB2, por exemplo (no meu caso):

O DB2 está instalado em /opt/IBM/db2

Os logs encontram-se em /home/db2inst1/sqllib/db2dump/

Enjoy!

Catalogando base de dados DB2 e efetuando REORG

É necessário ter o DB2 instalado no computador (pelo menos o cliente).

Na linha de comando do db2 (db2cc):

  • Vendo o que vc tem catalogado:

db2 list database directory

1-      Catalogar o servidor

db2 catalog tcpip node <NODENAME> remote <REMOTE> server <PORT>

Exemplo: db2 catalog tcpip node prod_ecom remote servername.domain.com server 50001

2-      Catalogar a database

db2 catalog database <database_name> at node <node_name>Exemplo:db2 catalog database wcs_prod at node prod_ecom 

3-      Refresh:

db2 terminate 4- Conectar:db2 connect to tesou user db2prd using db2prd00

Apos conectar:

db2 reorg table db2prd.XXXXXXXXXXXX