jeudi 21 février 2013

VIRTUALBOX sous LINUX : démarrage automatique des VMs

VirtualBox démarrage automatique VM Centos Fedora RedHat

Le principe est de faire démarrer de façon automatique au démarrage de l'OS les VM enregistrées dans VirtualBOX.
Créer un fichier de configuration pour le script du service vboxcontrol
# mkdir /etc/virtualbox # touch /etc/virtualbox/machines_enabled

Dans le fichier "machines_enabled" situé dans "/ etc / virtualbox" nous allons indiquer le nom des VMs que nous voulons contrôler.

Pour obtenir la liste des noms actuels de vos machine virtuelle, exécutez la commande suivante et notez le nom est dans " ":




$ VBoxManage list vms "Centos_HDLES_x86_1" {5087b02a-5816-4c76-b302-c13175623023} "Centos_HDLES_x86_3" {bcae660a-f627-46d6-8c95-9da97363eeea} "Centos_HDLES_LAMP" {3907173c-cc15-4820-a930-f0bb3c13cb7e}

Ajouter les VMs à la liste "machines_enabled» avec le nom de VM par ligne


# vi /etc/virtualbox/machines_enabled Centos_HDLES_x86_1 Centos_HDLES_x86_3 Centos_HDLES_LAMP

Ajouter le script service VM VirtualBOX
Créer un nouveau fichier init.d script de service et de donner les droits d'exécution

# touch /etc/init.d/vboxcontrol
# chmod 755 /etc/init.d/vboxcontrol


Editer le fichier de service vboxcontrol:

#vim /etc/init.d/vboxcontrol


Et copiez le code suivant dans le fichier "/ etc / init.d / vboxcontrol"




#! /bin/sh
# vboxcontrol   Startup script for VirtualBox Virtual Machines
#
# chkconfig: 345 98 02
# description: Manages VirtualBox VMs
# processname: vboxcontrol
#
# pidfile: /var/run/vboxcontrol/vboxcontrol.pid
#
### BEGIN INIT INFO
#
### END INIT INFO
#
# Version 20090301 by Kevin Swanson <kswan.info> based on:
# Version 2008051100 by Jochem Kossen <jochem.kossen@gmail.com>
# http://farfewertoes.com
#
# Released in the public domain
#
# This file came with a README file containing the instructions on how
# to use this script.
#

# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 1
fi

################################################################################
# INITIAL CONFIGURATION
VBOXDIR="/etc/virtualbox"
VM_USER="root"
USE_NAT="no"

export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin"

if [ -f $VBOXDIR/config ]; then
. $VBOXDIR/config
fi

SU="su $VM_USER -c"
VBOXMANAGE="VBoxManage -nologo"

################################################################################
# FUNCTIONS

# Determine if USE_NAT is set to "yes"
use_nat() {
if [ "$USE_NAT" = "yes" ]; then
return `true`
else
return `false`
fi
}

log_failure_msg() {
echo $1
}

log_action_msg() {
echo $1
}

# Check for running machines every few seconds; return when all machines are
# down
wait_for_closing_machines() {
RUNNING_MACHINES=`$SU "$VBOXMANAGE list runningvms" | wc -l`
if [ $RUNNING_MACHINES != 0 ]; then
sleep 5
wait_for_closing_machines
fi
}

################################################################################
# RUN
case "$1" in
start)
if [ -f /etc/virtualbox/machines_enabled ]; then

cat /etc/virtualbox/machines_enabled | while read VM; do
log_action_msg "Starting VM: $VM ..."
$SU "$VBOXMANAGE startvm "$VM" -type vrdp"
RETVAL=$?
done
touch /var/lock/subsys/vboxcontrol
fi
;;
stop)
# NOTE: this stops all running VM's. Not just the ones listed in the
# config
$SU "$VBOXMANAGE list runningvms" | while read VM; do
log_action_msg "Shutting down VM: $VM ..."
$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton"
done
rm -f /var/lock/subsys/vboxcontrol
wait_for_closing_machines

;;
start-vm)
log_action_msg "Starting VM: $2 ..."
$SU "$VBOXMANAGE startvm "$2" -type vrdp"
;;
stop-vm)
log_action_msg "Stopping VM: $2 ..."
$SU "$VBOXMANAGE controlvm "$2" acpipowerbutton"
;;
poweroff-vm)
log_action_msg "Powering off VM: $2 ..."
$SU "$VBOXMANAGE controlvm "$2" poweroff"
;;
status)
echo "The following virtual machines are currently running:"
$SU "$VBOXMANAGE list runningvms" | while read VM; do
echo -n "$VM ("
echo -n `$SU "VBoxManage showvminfo ${VM%% *}|grep Name:|sed -e 's/^Name:s*//g'"`
echo ')'
done
;;
*)
echo "Usage: $0 {start|stop|status|start-vm <VM
name>|stop-vm <VM name>|poweroff-vm <VM name>}"
exit 3
esac

exit 0

Ajouter le service vboxcontrol au registre avec chkconfig:


# chkconfig --add vboxcontrol


Créer des liens symboliques pour les niveaux d'exécution et d'activer le service vboxcontrol

# chkconfig vboxcontrol on


Comment utiliser vboxcontrol pour le contrôler via le terminal en tant que service:
Demarrer toutes les machines viruelles listées dans le fichier "machines_enabled":

# service vboxcontrol start
Si on obtient ce message à l'exécution de cette commande:
# service vboxcontrol start
Starting VM: VM1 ...
Waiting for VM "VM1" to power on...
VBoxManage: error: This VM was configured to use 3D acceleration. However, the 3D support of the host is not working properly and the VM cannot be started. To fix this problem, either fix the host 3D support (update the host graphics driver?) or disable 3D acceleration in the VM settings (VERR_NOT_AVAILABLE)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component Console, interface IConsole

 il faut désactiver l'option d'affichage 3D dans le logiciel VirtualBOX pour la/les VMs:



Arrêter toutes les machines virtuelles en cours d'exécution:

# service vboxcontrol stop


Voir le status des machines virtuelles:

# service vboxcontrol status


Démarrer une machine virtuelle en particulier:

# service vboxcontrol start-vm <VM NAME>


Arrêter une machine virtuelle en particulier;

# service vboxcontrol stop-vm <VM-NAME>


Envoyer un signal d'arrêt sur une machine virtuelle (mise hors tension immédiate)

# service vboxcontrol poweroff-vm <VM-NAME>


PS: si on veut supprimer la demande de mot de passe au démarrage de la VM pour que le démarrage en mode graphique se fasse sans intervention:

Il faut modifier le fichier suivant:

#vim /etc/gdm/custom.conf


ajouter les lignes suivantes dedant:
[daemon]
 AutomaticLoginEnable=true
 AutomaticLogin=username
<--le user qui va être configuré pour démarrer en auto biensur !!




jeudi 14 février 2013

ORACLE - Commandes SQL utiles - Common SQL scripts


Liste des connexions actives :
Active Connections list

select userid, max(nvl(logoff$time, sysdate)) last_logoff from sys.aud$ group by userid; 



Liste des sessions actives :
Active Sessions list


select
       substr(a.spid,1,9) pid,
       substr(b.sid,1,5) sid,
       substr(b.serial#,1,5) ser#,
       substr(b.machine,1,20) box,
       substr(b.username,1,10) username,
--       b.server,
       substr(b.osuser,1,8) os_user,
       substr(b.program,1,30) program
from v$session b, v$process a
where
b.paddr = a.addr
and type='USER'
order by spid; 


Liste des users créés sur une instance
Instance users list

select USERNAME,CREATED
from DBA_USERS
where ACCOUNT_STATUS = 'OPEN'
and USERNAME NOT IN ('SYS','SYSTEM','SYSMAN','DBSNMP','MGMT_VIEW')
order by USERNAME;


Information concernant l'instance :
Instance infos

SELECT NAME,PLATFORM_NAME,DB_UNIQUE_NAME  FROM V$DATABASE


Version d'ORACLE :
Oracle Version

select * from v$version;


Création d'un répertoire de base de données
Database folder creation

Ceci peut être utile par exemple pour créer un autre répertoire que celui par défaut du DATA_PUMP_DIR


SQL> CREATE DIRECTORY dmpdir AS '/opt/oracle';

Directory created.

SQL> GRANT read, write ON DIRECTORY dmpdir TO scott;

Grant succeeded.


Lister les répertoires 

select * from dba_directories;

Taille d'un schéma (User) en Mo
Mo Used for a schema (User)

select  a.owner username, round(sum(a.bytes)/1024/1024,2) "Taille (Mo)" from dba_segments a, (select tablespace_name, sum(bytes) total_space from dba_data_files group by tablespace_name) b where a.tablespace_name not in ('SYSAUX', 'SYSTEM', 'UNDOTBS1', 'UNDOTBS2') and a.tablespace_name = b.tablespace_name and a.owner='Mon_User' group by a.tablespace_name, a.owner, b.total_space/1024/1024



Ajouter un champ à une table :
Add a Table Column

ALTER TABLE [ schema. ]table ADD { ( column [ datatype ] ) } ;


exemple :
ALTER TABLE MATABLE ADD (MONCHAMP NUMBER(15,2));


Connaitre le nom du champ et de la table sur lesquels une contrainte est définie
Constraint : Table and column name referent


select * from ALL_CONS_COLUMNS where CONSTRAINT_NAME like '......%'


Connaitre le Paramétrage du Character Set de l'Instance :

SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' ;

Bonnes pratiques pour créer les TABLESPACES :

CREATE DIRECTORY DUMPS_MOI AS 'I:\DUMPS_MOI';
GRANT read, write ON DIRECTORY DUMPS_MOI TO system;


CREATE TABLESPACE V9_DATA DATAFILE 
  'I:\oracle\PERF11R2\V9_DATA1.DBF' SIZE 33554416K AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED,
  'I:\oracle\PERF11R2\V9_DATA2.DBF' SIZE 33554416K AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED,
  'I:\oracle\PERF11R2\V9_DATA3.DBF' SIZE 10240M AUTOEXTEND OFF
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

CREATE TEMPORARY TABLESPACE V9_TEMPORAIRE TEMPFILE 
  'I:\oracle\PERF11R2\V9_TEMPORAIRE' SIZE 228M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
TABLESPACE GROUP ''
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

CREATE UNDO TABLESPACE V9_ROLLBACK DATAFILE 
  'I:\oracle\PERF11R2\V9_ROLLBACK' SIZE 360M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K

FLASHBACK ON;









lundi 11 février 2013

Monter un Disque NTFS USB sur RedHat 5.x et 6.x en mode graphique.


-Installer le repository EPEL sur le serveur:
  >Ouvrir une console Terminal
$ cd /tmp
# rpm -ivh epel-release-6-8.noarch.rpm
-Installer le process NTFS:
  >Se logger en root
# yum install ntfs-3g

Une fois l'installation terminée, votre lecteur externe USB doit être disponible.
Si besoin, redémarrer le serveur.

mardi 5 février 2013

MIGRATION DHCP D'un Windows Server 2008 vers 2012

Sur le serveur Windows Server 2012

Installer la fonctionnalité : Outils de migration de Windows Server

Lancer l'application : Outils de migration de Windows Server

Taper :
cd .\ServerMigrationTools

SmigDeploy.exe /package /architecture amd64 /os WS08R2 /path c:\Migration

Copier le répertoire \Migration sur le Windows Server 2008 R2

Sur le serveur Windows Server 2008

Lancer le SmigDeploy.exe qui se trouve dans le répertoire \Migration

Taper :

Stop-Service DHCP
Bien s'assurer que le service DHCP est stoppé

Export-SmigServerSetting -FeatureId DHCP -Path c:\EXPDHCP -verbose

Sur le serveur Windows Server 2012

Copier le répertoire C:\EXPHDCP depuis le serveur 2008 R2

Installer le rôle serveur DHCP si ce n'est pas déjà fait

Lancer l'outil de migration de Windows Server

taper :

Import-SmigServerSetting -FeatureID DHCP -path c:\EXPDHCP -force -verbose

Démarrer le service DHCP avec la console MMC

Vérifier ou modifier les options d'étendue, notamment les serveurs DNS

Lorsque les vérifications sont faites, dans la console MMC DHCP, sélectionnez le serveur, puis dans le menu 'Action' 'Autoriser'

Faites démarrer les services DHCP

Vérifier sur un poste que le DHCP fonctionne 

- ipconfig /release
- ipconfig /renew
- ipconfig /all (vérifier que les DNS correspondent aux modifications que vous avez effectué)

Supprimer via powershell les entrées de l'ancien serveur DHCP

netsh DHCP delete server [Nom_du_Serveur.nom_du_Domaine] [Adresse_IP_du_Serveur]