quarta-feira, 27 de outubro de 2010

Como mudar (trocar) o nome da máquina e manter o Sql Server 2000 funcionando

Na última semana realizamos alteração do nome de um servidor Sql Server e os Jobs do Sql Server Agent pararam de funcionar.
Tentamos excluir os Jobs e ocorreu a mensagem abaixo.



Realizamos 2 alterações para que o serviço tivesse seu funcionamento normalizado:
1. Atualizamos nome do Servidor
SELECT @@servername
sp_dropserver <'name_returned'>
sp_addserver <'correct_servername'>, 'local'

2. Atualizamos o valor do campo "originating_server" da tabela de jobs
USE msdb
GO
DECLARE @server sysname
SET @server = CAST(SERVERPROPERTY('ServerName')AS sysname)
UPDATE sysjobs
SET originating_server = @server
WHERE originating_server = 'wrong_servername'

Após atualizar as configurações do Sql Server foi possível excluir os Jobs que não mais desejados

Link de referência:
http://blog.sqlauthority.com/2006/12/20/sql-server-fix-error-14274-cannot-add-update-or-delete-a-job-or-its-steps-or-schedules-that-originated-from-an-msx-server-the-job-was-not-saved/

segunda-feira, 25 de outubro de 2010

Como importar tabelas para uma tablespace diferente no Oracle

No nosso exemplo iremos mover as tabelas do usuario01 para o usuario02

Usuários
usuario01/senha00
usuario02/senha00
system/senha01

Tablespaces
tsd_usuario02.dbf: tablespace de dados para o usuário02
tsi_usuario02.dbf: tablespace de indíces para o usuário02


O modo mais comum para mover as tablespace é utilizar o comando "move tablespace" após utilizar os campos "exp" e "imp"
Exemplo: select 'alter table usuario02.' || table_name || ' move tablespace tsd_usuario02;' from user_tables

Quando há campos do tipo blob nas tabelas, também é necessário utilizado o comando "move lob".
Exemplo: select 'alter table usuario02.' || table_name || ' move lob (' || column_name || ') store as (tablespace tsd_usuario02);' from dba_lobs where owner = 'USUARIO02'

No nosso caso, temos na mesma tabela campos do tipo "blob" e "long raw" que impossilita o uso do comando "move lob".
Para esse caso fixemos os seguintes passos:
1. Exportamos o script de criação das tabelas do usuario01
2. Alteramos o script para comportar as tablespaces do usuario02
3. Criamos o usuario02
4. Desabilitamos as constraints do usuario02
5. Importarmos os dados do usuario01 para o usuario02
6. Habilitamos as constraints do usuario02
7. Atualizamos os indíces
8. Atualizamos as estatísticas


Abaixo temos os passos realizados
exp userid=usuario01/senha00 full=y file=usuario01.dmp grants=y
imp fromuser=usuario01 file=usuario01.dmp indexfile=qtiusuario02.sql touser=qtiusuario02 (system/senha01)
. retirar os marcardos REM
. alterar as tablespaces para usuario02 (tsi_qti)
. retirar comentarios "... x rows"

sqlplus (system/senha01)
create tablespace tsdqtiusuario02 datafile 'd:\oraclexe\oradata\tsd_usuario02.dbf' size 100m autoextend on next 50m;

create tablespace tsiqtiusuario02 datafile 'd:\oraclexe\oradata\tsi_usuario02.dbf' size 50m autoextend on next 50m;

create user qtiusuario02 identified by senha00 default tablespace tsdqtiusuario02 temporary tablespace temp;

grant connect, resource to qtiusuario02;

@qtiusuario02.sql; (senha00)

select 'alter table ' || owner || '.' || table_name || ' disable constraint ' || constraint_name || ';' from user_constraints
--> executar o resultado do comando (qtiusuario02.disableconstraints.sql): @qtiusuario02.disableconstraints.sql;
exit

imp fromuser=usuario01 file=usuario01.dmp touser=qtiusuario02 ignore=y (system/senha01)

sqlplus (system/senha01)
select 'alter table ' || owner || '.' || table_name || ' enable constraint ' || constraint_name || ';' from user_constraints
--> executar o resultado do comando (qtiusuario02.enableconstraints.sql): @qtiusuario02.enableconstraints.sql;

select 'alter index qtiusuario02.' || index_name || ' rebuild tablespace tsiqtiusuario02;' from user_indexes where index_type = 'NORMAL'
--> executar o resultado desse comando

select 'analyze table qtiusuario02.' || table_name || ' compute statistics;' from user_tables
--> executar o resultado desse comando

sexta-feira, 22 de outubro de 2010

css hover no IE6

É sabido que hover não funciona no IE6.
Sua funcionalidade foi implementada somente do IE7 para frente.

Temos um Menu dropdown feito em CSS, utilizando o hover.
Claro, não funcionou no IE6.

Estudamos soluções javascript pura, csshover3.htc, jquery e falhou em todas elas.
A solução que melhor atendeu nossa demanda foi o projeto ie7-js, hoje hosteado pelo google.

Basta colocar o código abaixo dentro do head e o Browser irá se comportar como o IE7:

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js"></script>
<![endif]-->


Link de referência:
http://code.google.com/p/ie7-js/

sexta-feira, 15 de outubro de 2010

Como mudar (trocar) o nome da máquina e manter o Oracle 10g funcionando

Na última semana realizamos alteração do nome de um servidor Oracle e o serviço TSN Listener (OracleXETNSListener) parou de funcionar.

Realizamos 2 alterações para que o serviço tivesse seu funcionamento normalizado: atualizamos os arquivos "tnsnames.ora" e "listener.ora" com o novo novo do servidor.
Em seguida, reiniciamos os serviços OracleServiceXE e OracleXETNSListener;

No nosso caso, utilizamos o Oracle XE e os arquivos relacionados ficam no diretório "D:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN"

Link de referência:
http://geekswithblogs.net/svanvliet/archive/2007/04/03/how-to-change-windows-hostname-and-keep-oracle-10g-running.aspx

Como gerenciar profiles no IBM Websphere Application Server

IBM WebSphere Application Server 7 (WAS 7): manageprofiles.sh
O utilitário manageprofiles.sh é utilizado para gerenciar profiles. Entre seus aspectos, podemos excluir um profile.

Listar os profiles existentes:
/bin/manageprofiles.sh -listProfiles

Excluir um profile: nesse exemplo, o nome do profile é "appsrv01"
/bin/manageprofiles.sh -delete -profileName appsrv01
Em seguida, foi excluído fisicamente o diretório do profile "appsrv01".


Site de referência:
http://www.webspheretools.com/sites/webspheretools.nsf/docs/Delete%20a%20profile%20using%20manageprofiles.sh%20in%20WebSphere%207%20on%20centos5

ADMIN_CMD DB2 - Comandos CLP

Comandos como export, import, load, ... são chamados comandos CLP (Command Line Processor) e não podem ser executados diretamente por uma aplicação cliente via ODBC ou JDBC como fazemos com comandos SQL (select, insert, update, ...)
Para executar os comandos CLP existe uma procedure chamada "admin_cmd" utilizada para esse propósito.

Pequeno exemplo Java para chamada dessa procedure:
Nesse exemplo temos a tabela "banco01.area" no servidor "servidor01"

Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
con = DriverManager.getConnection("jdbc:db2://servidor01:50000/" + "banco01", "usuario", "senha");
String sql = "CALL SYSPROC.ADMIN_CMD(?)";
proc_stmt = con.prepareCall(sql);
String param = "export to c:\\temp\\area4.txt of del messages on server select * from area";
proc_stmt.setString(1, param);

rs = proc_stmt.executeQuery();
if (rs.next()) {
System.out.println("Total number of rows exported : " + rs.getString(1));
System.out.println("SQL for retrieving the messages: " + rs.getString(2));
System.out.println("SQL for removing the messages : " + rs.getString(3));

System.out.println(" ");
proc_stmt_msg = con.prepareCall(rs.getString(2));
rs_msg = proc_stmt_msg.executeQuery();
while (rs_msg.next()) {
System.out.println(rs_msg.getString(1) + rs_msg.getString(2));
}
proc_stmt_msg.close();
rs_msg.close();
}

proc_stmt.close();
rs.close();
con.close();

Link de referência:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.apdv.sample.doc/doc/java_jdbc/s-AdmCmdImport-java.htm

terça-feira, 28 de setembro de 2010

Como instalar o nmon no Linux

Para quem não conhece o nmon é um excelente utilitário de monitação no Linux.
Referência: http://nmon.sourceforge.net/pmwiki.php

A sua instalação é simples
1. Faça o download da versão compatível com o seu Linux
http://nmon.sourceforge.net/pmwiki.php?n=Site.Download

No meu caso, baixei o arquivo "nmon_x86_12a.zip" para o Red Hat 5.4

2. Descompacte o zip e renomeie o arquivo "nmon_x86_rhel52" para "nmon"

3. Copie o arquivo "nmon" para o diretório "/usr/bin" e dê direito de execução para esse arquivo

4. Pronto! Digite nmon para iniciar o aplicativo.


Como exemplo, selecione as opções c, m e d. Basta digitar as letras após iniciar o nmon.


Monitore o seu ambiente


Para sair do nmon, presione a letra "q" (quit)

segunda-feira, 27 de setembro de 2010

WebSphere Application Server como serviço no Linux

Colocar o Websphere Application Server como serviço do Linux (ou Windows).

[root@localhost bin]# pwd
/opt/IBM/WebSphere/AppServer-7.0/bin

Deployment Manager
[root@localhost bin]# ./wasservice.sh -add dmgr -serverName dmgr -profilePath /opt/IBM/WebSphere/AppServer-7.0/profiles/Dmgr01/ -user_id [usuario] -password [senha]

Node Agent
[root@localhost bin]# ./wasservice.sh -add nodeagent -serverName nodeagent -profilePath /opt/IBM/WebSphere/AppServer-7.0/profiles/AppSrv01/ -user_id [usuario] -password [senha]

Server (server1)
[root@localhost bin]# ./wasservice.sh -add server1 -serverName server1 -profilePath /opt/IBM/WebSphere/AppServer-7.0/profiles/AppSrv01/ -user_id [usuario] -password [senha]

Servers
Outro modo de deixar os servidores de aplicativos iniciarem automáticamente é trocar o parâmetro "Node restart state" para "RUNNING". Desse modo, quando iniciar o nodeagent, o server também será iniciado automáticamente. Basta criar o serviço de inicialização para o nodeagent.
Para alterar esse valor vá em "Application servers --> server1 --> Monitoring Policy", onde "serve1" é o nome do servidor de aplicativo. Altere o valor para todos os servers que deseja iniciar automáticamente quando o nodeagent for iniciado.




Reiniciar o Servidor e verificar se todos os serviços estão iniciados:
ps -ef | grep java

Para Windows, o procedimento é o mesmo - trocando apenas os diretórios e o comando (WASService.exe)

terça-feira, 21 de setembro de 2010

CVS, error writing to lock file

Hoje fui realizar alguns commits no CVS e, de repente, comecei a obter a mensagem "error writing to lock file"



Após verificar as permissões do CVS, percebi que o problema estava sendo ocasionado por falta de espaço em disco.

Após liberar o espaço em disco, alguns arquivos ficaram travados no processo anterior (quando ocorreu "error writing to lock file") e ocorreu a seguinte mensagem:



Os arquivos travados tiveram que ser excluídos fisicamente no diretório do servidor CVS para resolver o problema "cannot lock".

Agora está tudo OK.

quinta-feira, 26 de agosto de 2010

Rational Application Developer Perspective

Arquivo que contém as definições de perpesctivas do RAD 7.5
c:\workspaces\examples\.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml

Instalei o WebSphere Portlet Factory 6.1.5 no RAD 7.5 e o RAD começou a dar problemas como, por exemplo, "Clean" dos Projetos e iniciar os Servidores de WAS e Portal que já estavam configurados.

Então, desinstalei o WPF. Entretanto, ficou a perspectiva "WebSphere Portlet Factory" no RAD.
Para retirar o botão de perspectiva do WPF, foi editado o arquivo workbench.xml

terça-feira, 27 de julho de 2010

Avianca, Programa inimigo

Estou extremamente insatisfeito com a Avianca.
Um tal de programa inimigo.
Vc vai fazer a sua primeira viagem e te informam que há programa de relacionamento com o cliente (milhagem) e que vc pode cadastrar a pontuação mesmo após ter feito a viagem.
Até aqui tudo ok.

Ae, quando vc vai no site, faz o cadastro e liga para o atendimento 4004-4040, advinha!!!
"Sinto muito senhor, mas não podemos cadastrar a sua viagem no seu programa amigo, porque vc já fez a viagem e tinha que ter feito o cadastro antes da viagem"

Depois de ficar longos minutos no telefone descobri que vc tem que efetuar o cadastro da milhagem até 7 dias após sua viagem.
Que merda! Niguém te fala nada e já era.

Estou viajando pela Avianca durante todo o mês de Julho (8 viagens) e guardei todos os bilhetes para cadastrá-los de uma só vez... pronto! Dancei... porque já se passarem 7 dias desde minha primeira viagem.
E olha só... nem trocou de mês.., todas as viagens estão sendo feitas no mês de Julho.

Minha sincera insatisfação para a Avianca.
Já começou com o pé esquerdo no Brasil.

Abri o protocolo de reclamação 46696 com a atendente Danielle.

terça-feira, 22 de junho de 2010

iPhone iOS4 - Organização por Pastas

A organização por Pastas no novo iOS4 do iPhone ficou fantástica.
Clique no aplicativo desejado e segure até aparecer a edição dos aplicativos.
Depois, clique no aplicativo e arraste para cima de outro aplicativo do mesmo gênero.
Pronto! Uma nova pasta é criada.

Tivizen iOS4 - não funciona

O Tivizen não funciona com o iOS4.
Atualizei ontem o iPhone e, agora, o Tivizen trava!

Encaminhei email para a Valups e eles foram muito atenciosos.
A previsão da nova versão disponível para download é de 3 semanas.

No momento, o único modo é retornar a versão do iOS para que o Tivizen funcione.

Agradecimentos a Sunny Kim, da Valups.

segunda-feira, 17 de maio de 2010

Habilitar / Desabilitar espaços em branco no Eclipse / CVS

Para habilitar ou desabilitar comparação de espaços em branco no Eclipse / CVS, basta ir em "Window --> Preferences --> General --> Compare/Patch", propriedade "Ignore white space"

sexta-feira, 30 de abril de 2010

Resituição Imposto Renda - SMS

Aos que não conhecem...
A receita pode encaminhar um SMS gratuíto para o seu celular quando houver a restituição do imposto de renda...
Vc não precisa ficar consultando...

Segue: http://www.receita.fazenda.gov.br/PessoaFisica/SMSRestituicao/Default.asp

segunda-feira, 26 de abril de 2010

JBoss-5.0.1 Cluster - Farm Service

No post anterior reportei um erro ao configurar o JBoss-5.1.0 em Cluster.
Decidi, então, utilizar o JBoss-5.0.1

Após iniciar os trabalhos com Cluster, descobri que o "farm service" não é disponível nessa versão.
Ver em "http://www.jboss.org/file-access/default/members/jbossclustering/freezone/docs/cluster_guide/5.1/html/deployment.chapt.html":
"The farming service was not available in JBoss AS 5.0.0 and 5.0.1. This section is only relevant to releases 5.1.0 and later"

Utilizo o JBoss a bastante tempo e estou indignado.
Que saco! Nada funciona nas versões novas.

Terei que ficar na versão 4!

sexta-feira, 23 de abril de 2010

JBoss 5-1.0 Cluster - GMS Flush Error

Estou utilizando o JBoss-5.1.0 (release date 2009-05-23) e ao configurá-lo em Cluster, obtive o seguinte erro no primeiro nó:
GMS Flush by coordinator at 127.0.0.1:1115 failed

No segundo nó aparece a seguinte mensagem:
[GMS] join(127.0.0.1:1128) sent to 127.0.0.1:115 timed out

Procurei por alguns artigos na "net" e consegui encontrar a página "https://jira.jboss.org/jira/browse/JBAS-6792", dizendo que está resolvido no release "JBossAS-5.1.0.CR1", mas acho que esqueceram de liberar no release final. Vejam só as datas:
  • 5.1.0 [2009-05-23]
  • 5.1.0.CR1 [2009-04-29]


Abaixo, segue print do ocorrido.


Encaminhei email para o JBoss Group e estou aguardando retorno.

sexta-feira, 9 de abril de 2010

WebSphere Documentation



WebSphere Portlet Factory product documentation
http://www.ibm.com/developerworks/websphere/zones/portal/portletfactory/proddoc.html

quarta-feira, 31 de março de 2010

Cannot access virtual machine console!

Não consigo abrir o console do vmware e aparece a seguinte mensagem:
Cannot access virtual machine console. The request timed out.
The attempt to acquire a valid session ticket for "[servidor]" took longer than expected. If this problem persists, contact your system administrator.

A vm inicia normalmente, mas sempre aparece a mensagem acima ao tentar acesso ao console tanto pelo Internet Explorer (IE) quanto pelo Firefox.

Após algumas tentativas de reinstalar os plugins do browser, colocar nome da máquina no "hosts" e reinicar o computador... só consegui do seguinte modo: criando um atalho de acesso a Virtual Machine, que pode ser realizado de 2 modos:

1. Entrar na VMWare Infrastructure Web Access --> clicar na Virtual Machine --> Selecionar a aba "Summary" --> "Generate Virtual Machine Shortcut" --> opção "Install Desktop Shortcut to "[servidor]"
No meu caso essa opção não estava funcionando. Então fiz do segundo modo (próximo item)

2. Criar um novo atalho com o seguinte destino:
J:\Users\Juliano Claiton\AppData\Roaming\Mozilla\Firefox\Profiles\wnt3hxsl.default\extensions\VMwareVMRC@vmware.com\plugins\vmware-vmrc.exe" -h [servidor_vm]:8333 -M 80

O segredo do atalho é o último parâmetro (80). Ele indica o código referente a vmware, caso vc tenha várias vms. Para vc ver descobrir esse número, faça o seguinte: entre em VMWare Infrastructure Web Access --> clicar na Virtual Machine --> Selecionar a aba "Summary" --> clicar na opção "Generate Virtual Machine Shortcut".

Será exibido um link (Web Shortcut) parecido com "https://[servidor_vm]:8333/ui/?wsUrl=http://localhost:8222/sdk&mo=VirtualMachine|80&inventory=none&tabs=hide_". Veja que logo após o parÂmetro "VirtualMachine" tem o número da sua vm


Basta abrir o atalho e vc conseguirá acesso ao console de sua vm
That's it.


Estou utilizando VMWare Server Console 2.0.1, Firefox 3.6.2 e Internet Explorer 7
Para acessar a VMWare Infrastructure Web Access, utilize a seguinte url: http://[servidor_vm]:8308/ui

sexta-feira, 5 de março de 2010

Could not synchronize database state with session

Quem trabalha com hibernate com certeza já passou pelo seguinte erro:

2010/01/11-12:37:24,538 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.HibernateException: Unexpected row count: 0 expected: 1
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:32)

O primeiro pensamento é: fiz algo errado em código e não estou persistindo meus objetos corretamente. Foi assim que pensei quando tive esse problema recentemente.
Após verificar o meu código várias... várias vezes, me certifiquei que não tinha nada incorreto. E agora, o que está causando esse erro? Claro que só acontece em um Cliente específico e no seu ambiente de Produção.

O Banco de Dados é SQL Server 2000 com o WASCE (WebSphere Application Server Community Edition 1.1.0.1.

Após um bom tempo de código... código... código, fui atrás de bugs relacionados ao WASCE com Hibernate e nada novamente.

Então tive o insigth de avaliar o SQL Server. Para isso utilizei o Profiler (ferramenta que exibe trace de tudo o que acontece dentro do SQL Server).

Pronto! Encontrei o problema.
Na nossa funcionalidade trabalhamos com anexos e o SQL Server não estava conseguindo alocar memória para gravá-los. Utilizamos o tipo "java.sql.Blob" do hibernate com o tipo "image" do SQL Server.
Erro: Failed do reserve contiguous memory of Size



Solução: alterar os parâmetros de memória do SQL Server, pois ele estava com limite de memória. E conscientização dos usuários para que coloque anexos muitos grandes (façam tratamento, por exemplo, das imagens a serem anexadas)

quinta-feira, 4 de março de 2010

Aprenda a utilizar o iPhone

Para aprender a utilizar o iPhone, acesse o site http://www.apple.com/pt/iphone/how-to/index.html

sexta-feira, 26 de fevereiro de 2010

Como configurar Lotus Notes Traveler no Iphone

O Lotus Notes Traveler é utilizado para conexão da sua Caixa de Correio com o Lotus Notes.

Vc conseguirá, por exemplo, autocompletar o nome de todos os seus contatos no Iphone igual ao Lotus Notes, digitando somente o início no nome da pessoa.
Vc também conseguirá visualizar todas as pastas criadas no Lotus Notes dentro do Iphone.

O primeiro passo é baixar o
Traveler na AppStore: ibm lotus notes traveler companion

Passo 2: configurar o Traveler
Ao abrir o Traveler, vc terá as seguintes configurações:
- Server: endereço do seu servidor.
Exemplo: www.minhaempresa.com.br/servlet/traveler

- Username: seu nome de usuário.
Não é o email. Somente o nome do usuário

- Password: sua senha

- Require SSL: verifique com o seu Administrador se está habilitado o SSL.
Normalmente não está. Então deixe desabilitada essa opção

Salve e valide suas configurações.

Passo3: criar sua conta de email
Vá em Ajustes --> Mails, Contatos, Calendários --> Adicionar Conta --> Microsoft Exchange
Configure a sua conta:
- E-mail: usuario@minhaempresa.com.br
- Servidor: www.minhaempresa.com.br/servlet/traveler
- Domínio: em branco
- Nome do usuário: seu nome do usuário
- Senha: sua senha
- Descrição: uma descrição qualquer para a sua conta
- Usar SSL: deixe igual ao que vc configurou no Traveler

Por padrão, a sinconização é realizada somente dos últimos 3 dias.
Altere o parâmetro "Dias do Mail para Sinc." caso deseje modificar a sincronização.

Pronto!

Como habilitar Caps Lock no Iphone

Como habilitar Caps Lock no Iphone.
O Caps Lock vem desabilitado por padrão no Iphone.
Para habilitar, faça o seguinte:
- Vá em Ajustes --> Geral --> Teclado e ative o recurso "Ativar Fixar Maiúsc."

Para usar o Caps Lock, basta dar um duplo toque na tecla Shift. o Shift ficará azul.
Para voltar ao normal, basta dar um toque simples.

Vc pode testar usando, por exemplo, o programa de "Notas" do Iphone.

Pronto!