Uma discussão que sempre tive com vários colegas meus era a questão do uso de banco de dados. Com o avanço cada vez maior das arquiteturas, poder das linguagens e da orientação objeto, em muitos projetos as quais dou consultoria, ou participo, o banco de dados tem um papel secundário de apenas guardar os dados. Muitos pessoas conhecidas diriam que isso é um absurdo: “Ter um sistema como o Oracle e só usá-lo como repositório de dados é insano”, comentário um amigo DBA. Aí que fica um pouco da minha dúvida e reflexão… será que realmente precisamos, dado todo o contexto de tecnologia, etc, de bancos de dados tão “poderosos” e caros como um Oracle por exemplo ?
Seguindo a linha do raciocínio acima, se analisarmos a grande maioria dos sistemas atuais, poucos são aqueles que fazem uso de algum recurso do SGBD… em alguns casos, os arquitetos nem consideram usar procedures, visões, trigger, etc, mesmo isso sendo algo comum a todos os banco de dados existentes, pois no entendimento deles -“Tudo deve ser resolvido no negócio”. O consenso geral é que devemos usar de artificios, recursos, entre outros, para que nossas aplicações sejam independentes, como por exemplo: usar hibernate, padrões como o DAO, etc. Alguns desenvolvedores vão além; ignoram o fato de existirem engines de BD que suportam acessos simultaneos, alta disponibilidade, e outros recursos, e literalmente solucionam isso por na arquitetura usando caches (primarios, secundarios, etc), controlando o acesso aos dados por meio de flags no codigo, e por ai vão.
Por mais que não ache que essas pessoas estejam erradas ou que estejam cometendo exageros ou absurdos, prefiro sempre o caminho do meio : quero o melhor de todos os mundos. Se o meu cliente me disponibiliza um banco de dados oracle, não especifica que o sistema deva ser capaz de executar em qualque SGBD, eu com certeza irei aproveitar tudo que estiver ao meu alcance. Por que não usar uma trigger para gerar log de insert, ou qualquer outra alteração de dados; por que não escrever uma procedure para tarefas de gerar dados de tabelas para relatório, etc…
Nessa mesma linha podemos considerar que no caso de sua aplicação não precisar de essa sorte de recursos não existe a necessidade de gastar milhões com licenças de um sgbd que será utilizado apenas 1% de sua capacidade disponível. Nesses casos um engine simples, até mesmo gratuito pode ser a melhor opção. A questão é que devemos ter sempre bom senso e sabermos avaliar bem as nossas reais necessidades. Banco de dados são peças importantes ao ponto de não podermos ignorá-las e por isso devemos escolhe-las com muito carinho considerando oque desejamos delas em capacidade e recurso.
Archive for the ‘rdb’ Category
Usando Banco de dados
junho 2nd, 2009Erro ao conectar RDB via odbc (VMS )
março 17th, 2009Esse post é para eu lembrar como se faz para resolver um problema. Quando tenta-se conectar a um RDB que está num alpha via ODBC (tem que ter o driver para isso) e aparece o erro [ORACLE][ODBC][RDB]RDB-F-BAD_DB_HANDLE ….
As configurações do obdc, em meu caso pelo menos, são: Service : Generic e String : attache ‘filename file$db’;
Googleando a internet achei que a solução seria (funcionou no meu caso)
1 – Log no seu aplha
2 – Vá para o diretório sys$manager
3 – Veja o log do banco ( faça um dir por dir *SQLSRV_DIS*.LOG
4- Entre no arquivo… nas últimas linhas deve aparecer algo parecido com :
1 | ---EVENT BEG: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.340 2008— %SQLSRV-I-EVENT_LOG, event logged at line 2814 in file CMD.C;1 %SQLSRV-I-CONNECTNAME, Connect : CONNECT_0000028 %SQLSRV-I-CONNECTSTATE, Connect state: 4 %SQLSRV-I-USERNAME, User name: FIELD %SQLSRV-I-NODENAME, Node : 192.168.1.1 %SQLSRV-I-APPLNAME, Application : odbcad32 %SQLSRV-I-SERVICENAME, Service : GENERIC ---EVENT END: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.360 2008— ---EVENT BEG: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.670 2008— %SQLSRV-I-EVENT_LOG, event logged at line 4455 in file COM_DIALOG.C;1 %SQLSRV-E-READERR, Error on read %SYSTEM-F-LINKDISCON, network partner disconnected logical link ---EVENT END: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.680 2008— ---EVENT BEG: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.700 2008— %SQLSRV-I-EVENT_LOG, event logged at line 286 in file DISP.C;1 %SQLSRV-W-EXCEPTION_RAISE, Exception raised: DBS_SYSERVICEFAILED %SQLSRV-I-CONNECTNAME, Connect : CONNECT_0000028 %SQLSRV-I-CONNECTSTATE, Connect state: 2 %SQLSRV-I-USERNAME, User name: FIELD %SQLSRV-I-NODENAME, Node : 192.168.1.1 %SQLSRV-I-APPLNAME, Application : odbcad32 %SQLSRV-I-SERVICENAME, Service : GENERIC ---EVENT END: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.710 2008— ---EVENT BEG: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.940 2008— %SQLSRV-I-EVENT_LOG, event logged at line 2814 in file CMD.C;1 %SQLSRV-I-CONNECTNAME, Connect : CONNECT_0000029 %SQLSRV-I-CONNECTSTATE, Connect state: 4 %SQLSRV-I-USERNAME, User name: FIELD %SQLSRV-I-NODENAME, Node : 192.168.1.1 %SQLSRV-I-APPLNAME, Application : odbcad32 %SQLSRV-I-SERVICENAME, Service : GENERIC ---EVENT END: EVENT_LOG ------------------------ Tue Mar 11 12:02:41.960 2008— |
A origem deste problema vem da questão da versão do SQL que está sendo executado (Versão 7) sendo assim é necessário mudar a versão do serviço generic para a 7.1 , para isso tem que ser feito os passos
1- Va para o sys$system
2- execute run sqlsrv_manager71
3 – Vai aparecer o prompt SQLSRV
4 – Digite o comando : show service generic full;
1 2 3 4 | Service GENERIC State: RUNNING Owner: SQLSRV$DEFLT Owner Password: Protocol: SQL/Services Default Connect Username: Default Connect Password: SQL version: STANDARD Autostart: on Process init: Attach: Schema: Reuse: SESSION Database Authorization: CONNECT USERNAME dbsrc file: SQL init file: Appl Transaction Usage: SERIAL Idle User Timeout: Idle Exec Timeout: 1800 seconds Min Executors: 2 Max Executors: 10 Running Executors: 2 Clients Per Executor: 1 Active Clients: 1 Access to service GENERIC Granted to users: PUBLIC PRIVILEGED_USER 'SQLSRV$DEFLT' SQLSRV> |
5 – Execute a sequencia
1 2 3 4 5 | SQLSRV> shutdown service generic; SQLSRV> alter service generic sql version 7.1; SQLSRV> show service generic full; SQLSRV> start service generic; SQLSRV> exit |
http://blogblogs.com.br/