SelectEtoile : Base de connaissance SGBD

Posts Tagged 'connection'

The jodbc.jar build does not match the shared object build

Impossible de se connecter à la base:

L'erreur suivante signifie qu'il y a un problème de version entre les librairies java:

Could not connect to the database.
The jodbc.jar build does not match the shared object build
SQLCODE=0, ODBC 3 State="(none)"

Il y a plusieurs causes possibles:

- Des variables qui pointent sur d'anciens répertoires; vérifiez les variables:
LD_LIBRARY_PATH, SYBASE_JRE6_64, LIB_SYBASE, LD_LIBRARY_PATH_64, PATH, INCLUDE, IQLIB,...

- Les fichiers dbisql_64.rep, dbisql.rep, ou dbisql.ini sont mal configurés.
Il faut vérifier si les paths renseignés sont valides. Une mauvaise configuration de ces fichiers peut entrainer aussi le comportement suivant: dbisql se ferme sans aucun message d'erreur.

- Une mauvaise installation d'un patch IQ. Par exemple de bondir de l'EBF 1.5 au 2.9 sans upgrader en ESD 2. Dans ce cas, il faut downgrader en 1.5 updrader en 2 et 2.9 (c'est pas si dur que ça.)

 

 

Mise en place d'un Replication MSA

Pour commencer, il faut avoir installer un Replication Server (Lire l'article suivant : Mise en place d'un Replication Server SYBASE 15)

 

Nous allons mettre une réplication entre DBSource (ASE SYBServerSource sur la machine HostSource) et DBCible (ASE SYBServerCible sur la machine HostCible)

 

Sourcer le fichier SYBASE.sh sur le RSServer. Ajouter dans le fichier interfaces les entrées des serveurs primaire et secondaire (SYBServerSource et SYBServerCible)

 

Créer un login DB_repl_maint sur SYBServerSource et SYBServerCible (login spécifique à la repli).

 

Mise en place d'une connexion logique (surtout utile pour du WarmStandBy) sur RSServer :

create logical connection to LDS_DBSource.LDB_DBSource

go

 

Mise en place de l'agent sur le Primaire (SYBServerSource) :

use DBSource

go

sp_configure '"enable rep agent thread"', 1

go

sp_config_rep_agent "DBSource", '"scan batch size"','"20000"'

go

sp_config_rep_agent "DBSource" , '"schema cache growth factor"','"2"'

go

sp_adduser DB_repl_maint

go

 

Préinstallation de la repli via l'utilitaire rs_init

sybinit.release_directory: "$SYBASE"
sybinit.product: rs
rs.rs_operation: rs_setup_db
rs.rs_name: RSServer
rs.rs_rs_sa_user: sa
rs.rs_rs_sa_pass: "SaPasswdRsServer"
rs.rs_ds_name: "SYBServerSource"
rs.rs_ds_sa_user: sa
rs.rs_ds_sa_password: "SaPasswdSYBServerSource"
rs.rs_db_name: "DBSource"
rs.rs_requires_ltm: yes
rs.rs_db_maint_user: USE_DEFAULT
rs.rs_db_maint_password: USE_DEFAULT
rs.rs_db_dbo_user: sa
rs.rs_db_dbo_password: "SaPasswdSYBServerSourcer"
rs.ltm_name: "SYBServerSource"
rs.rs_ltm_rs_user: USE_DEFAULT
rs.rs_ltm_rs_pass: USE_DEFAULT
rs.rs_ltm_admin_user: USE_DEFAULT
rs.rs_ltm_admin_pass: USE_DEFAULT
rs.rs_ltm_errorlog: USE_DEFAULT
rs.rs_ltm_cfg_file: USE_DEFAULT
rs.rs_charset: USE_DEFAULT
rs.rs_language: USE_DEFAULT
rs.rs_sortorder: USE_DEFAULT
rs.rs_db_physical_for_logical: yes
rs.rs_db_active_or_standby: active
rs.rs_db_logical_ds_name: "LDS_DBSource"
rs.rs_db_logical_db_name: "LDB_DBSource"
rs.rs_init_by_dump: no
rs.do_add_replication_server: no
rs.do_add_ltm: no

 

Activation de la replication sur le Primaire (SYBServerSource) :

use DBSource

go

sp_reptostandby "DBSource","ALL"

go

 

Lancer la connection sur le RSServer :

resume connection to SYBServerSource.DBSource

 

Mise en place de la replication vers le secondaire (connection, Replication Definition, Souscription)

Se connecter au RSServer

create connection to SYBServerCible.DBCible
set error       class rs_sqlserver_error_class
set function string class rs_sqlserver_function_class
set username DB_repl_maint
set password DB_repl_maint_pwd
go
!!sleep 5
go
create   database replication definition  RD_DBSource
with primary at LDS_DBSource.LDB_DBSource
not replicate system procedures
not replicate ddl
go
!!sleep 5
go
define subscription SU for database replication definition RD_DBSource
with primary at LDS_DBSource.LDB_DBSource
with replicate at SYBServerCible.DBCible
subscribe to truncate table
use dump marker
go

 

Rafraichissement de la base secondaire DBCible :

dump de la base primaire DBSource et load de ce dump sur la base secondaire DBCible

 

Démarrage de la réplication :

Lancer un 'resume connection to SYBServerCible.DBCible' sur le RSServer

 

Vérification du bon fonctionnement :

Sur le RSServer : lancer un 'admin who_is_down'. Si pas de ligne, tout fonctionne

Sur le SYBServerCible, dans la base DBCible : lancer 'select origin_time,dest_commit_time from rs_lastcommit'. Cela permet de visualiser le temps de réplication.

 

 

 

 

 

 

 

 

 

 

 

 

 

Petit guide des commandes SYBASE RSE

Guide pratique des commandes système pour Replication Server SYBASE

Sur RSSD Server :

rs_helppartition : état des partitions

rs_helpuser : listing utilisateurs


Sur Replication Server :

admin disk_space : état des espace disque

add partition rrwdev01 on /dev/rwdev01’ with size 512 : ajout partition

alter connection to ‘FP_SV_TTTT’ set parallel dsi to ‘on’ : active le parallelisme

alter connection to ‘FP_SV_TTTT’ set dsi_serialization_method ‘isolation_level_3’ :

suspend connection to ‘FP_SV_TTTT’ with nowait : desactive la connexion

resume connection to ‘FP_SV_TTTT’ : active la connexion

 sysadmin dump_queue,135,0,-1,-1,-1,client : affiche le dernier block de l'outbound queue n°135

 

Sauvegarde toute la inbound queue 103 dans le fichier queue_103.log
sysadmin dump_file, queue_103.log
sysadmin dump_queue, 103, 1, -1, 1, -2
sysadmin dump_file

 

 

 

 

 

Connection à SYBASE via PowerShell

Comment se connecter à sybase avec powershell ?

Pré-requis

  • Powershell version 2
  • Net framework version 2 minimum

 

Installation

  • Copier en local ADONET64 provenant du client sybase 15.5
  • Rajouter dans le path le répertoire ADONET64/dll
  • Aller dans le répertoire ADONET64/dll et taper la commande suivante qui installera le driver sybase ADO.NET :

AseGacUtility.exe -i Sybase.AdoNet2.AseClient.dll policy.1.15.Sybase.AdoNet2.AseClient.dll policy.2.155.Sybase.AdoNet2.AseClient.dll

 

Exemple de script

# Import the Sybase dll

Add-Type -AssemblyName "Sybase.AdoNet2.AseClient, Version=2.155.1015.0, Culture=neutral, PublicKeyToken=xxxxxxxxxx"

 

# Open a connection to MySybServer,6100

$SybaseConn = New-Object Sybase.Data.AseClient.AseConnection

$SybaseConn.ConnectionString = "Data Source='machine';Port=9999;Database='master';UID='luc_riou';PWD=’*******’;"

$SybaseConn.Open()

 

# Create SybaseCommand object, define command text, and set the connection

$cmd = New-Object Sybase.Data.AseClient.AseCommand

$cmd.CommandText = $query

 

# Create SybaseDataAdapter object and set the command

$da = New-Object Sybase.Data.AseClient.AseDataAdapter

$da.SelectCommand = "SELECT * from sysobjects"

$da.SelectCommand.Connection = $SybaseConn

 

# Create and fill DataTable object

$dt = New-Object System.Data.DataTable

$da.Fill($dt) | Out-Null

 

# Close the Sybase connection

$SybaseConn.Close()

 

# Use the datatable

foreach ($dr in $dt.Rows)

{

Write-Host $dr["name"]

}

 

Pour vérifier que l'assembly SYBASE s'est bien installée, il suffit de lister les assemblies du répertoire C:\Windows\assembly

 

 

SSIS : Connect to SSIS Service on machine failed

J'essayai de lancer en remote à SSIS (SQL Server Integration Services) et j'ai le message d'erreur suivant :

 

 

Pour corriger ce problème ,voici la démarche à suivre :


  1. Dans le menu Démarrer, puis Settings , lancer Control Panel, double-click Administrative Tools, puis double-click Component Services.

  2. Ouvrir le noeud Component Services sur le menu de gauche.Ouvrir le noeud Computers, ouvrir My Computer, et cliquer sur DCOM Config.

  3. Selectionner le noeud DCOM Config.

  4. Clique droit sur MsDtsServer et choisir Properties.

  5. Choisir l'onglet Security.

  6. Dans Launch and Activation Permissions, choisir Customize, cliquer sur Edit pour ouvrir la boite de dialogue Launch Permission.

  7. Dans la boite de dialogue Launch Permission, choisir ou ajouter l'utilisateur ou le groupe approprié, lui donner les droits Remote Activation (Ceci permet à l'utilisateur de lancer SSIS à distance.

  8. Cliquer sur OK.

  9. Redémarrer le service Integration Services.

  10. Si cela ne marche toujours pas, il faut faire un clique droit sur My Computer, cliquer sur Properties.
  11. Cliquer sur l'onglet COM Security, puis cliquer sur Edit Limits...
  12. Ajouter un utilisateur ou un groupe sur lequel il faut les droits ou vérifier qu'il existe dans un groupe déjà défini.
  13. Ajouter les droits Remote Activation au groupe ou à l'utilisateur.


Si ca ne marche toujours pas, je suis désolé mais je ne sais que vous dire


 

Charge CPU importante / Console en blocking mode / SYBASE ASE

Nous avons observer un problème sur une application qui faisait des dizaines de milliers de connexions / déconnexions sur notre serveur SYBASE ASE.

Cette utilisation engendrait un consommation massive de la CPU (user) du serveur SYBASE.

 

Le problème venait du fait que le serveur était démarré en mode blocking console. Chaque déconnexion écrivant une ligne dans l'errorlog (Pb de mauvaise gestion de la déconnexion), cela générait de la contention sur les connexions et donc une charge CPU très importante.

 

Nous avons passé le traceflag 4084 (Lien du solved case)  au niveau du RUNFILE (Attention à la version de SYBASE).

Celui-ci permet de forcer le serveur SYBASE à démarrer en mode console non bloquante.

 

Le problème est maintenant résolu