Lundi 9 octobre 2006
Un truc sympa que j'ai appris il n'y a pas très longtemps : 'watch' sous Linux !
Exemple : j'arrête un serveur d'applications, c'est long, je veux suivre en temps réel le nombre de process du user 'tomcat' encore en exécution.
Sous Unix, depuis des lustres, je fais un truc du style :

$ while true ; do 'ps -fu tomcat | wc -l' ; sleep 2 ; done


Maintenant je fais la même chose comme çà :

$ watch 'ps -fu oracle | wc -l'

Pas mal ...
par Ora-Linux publié dans : Linux/Unix
ajouter un commentaire commentaires (0)    recommander
Lundi 9 octobre 2006
On considère que l'on a une base de Production, avec plein de données dedans (...), et une base de développement, quasiment vide; ce qu'on souhaite, c'est faire en sorte que les plans d'exécutions de nos requêtes soient identiques. Comme on utilise l'optimiseur statistique (ben oui, on est en 10g, hé!), on va pouvoir gruger les traitements de la base de développements en leur faisant croire qu'il y a tout plein de données.

Exemple ici pour une table MATABLE, identique sur les 2 bases. On peut bien-sûr faire la même chose au niveau d'un schéma (dbms_stats.export_schema_stats).


Sur la base de données source
- calcul des stats
> analyze table matable compute statistics;

- création de la table de statistiques
> exec dbms_stats.create_stat_table('MONUSER','MATABLEDESTATS','USERS_TBS');

- sauvegarde des stats dans la table MATABLEDESTATS
> exec dbms_stats.EXPORT_TABLE_STATS(ownname=>'MONUSER',tabname=>'MATABLE',stattab=>'MATABLEDESTATS');

- export de la table de sauvegarde des statistiques
$ exp protect/protect file=exp_matabledestats log=exp_matabledestats  tables=matabledestats


Sur la base de données cible
- import de la table de sauvegarde des statistiques
$ imp protect/protect file=exp_matabledestats log=exp_matabledestats tables=matabledestats

- restauration des statistiques
> exec dbms_stats.import_table_stats(ownname=>'MONUSER',tabname=>'MATABLE',stattab=>'MATABLEDESTATS');


Trucs & astuces
- suppression d'une table de statistiques
> exec dbms_stats.drop_stat_table('MONUSER','MATABLEDESTATS);

- suppression du contenu d'une table de statistiques
> exec dbms_stats.delete_table_stats(ownname=>'MONUSER',tabname=>'MATABLE',stattab=>'MATABLEDESTATS');
par Ora-Linux publié dans : Oracle DB 9i-10g
ajouter un commentaire commentaires (0)    recommander
Lundi 9 octobre 2006
2 méthodes : base arrêtée ou base démarrée, au choix ! On parle de déplacement de fichiers de données, mais les même procédures s'appliquent dans le cadre d'un renommage ...

1- Base arrêtée
- la base étant arrêtée, copier les datafiles avec la commande correspondant à l'OS
$ cp /u02/oradata/orcltst/users01.dbf /u03/oradata/orcltst/user01.dbf

- se connecter à la base en 'sys'
$sqlplus '/ as sysdba'

- démarrer la base sans l'ouvrir :
> startup mount;

- faire connaitre à la base le déplacement de fichier
> alter database rename file '/u02/oradata/orcltst/users01.dbf' to '/u03/oradata/orcltst/user01.dbf';

- ouvrir la base
> alter database open;

- vérifier la prise en compte des changements
> select name from dba_data_files;

- supprimer les fichiers avec la commande OS appropriée
$ rm -f /u02/oradata/orcltst/users01.dbf

2- Base ouverte
Afin de réaliser le déplacement de datafile 'base ouverte', le tablespace doit doit être passé en 'READ-ONLY', ce qui implique que les l'accès aux données de ce tablespace ne sera plus possible q'en 'SELECT' exclusivement. D'autre part, le temps de passage en mode 'READ-ONLY' peut être assez long, en fonction du volume, et éventuellement des transactions en cours.

- mettre le tablespace en READ-ONLY
> alter tablespace USERS read only;

- s'assurer que le tablespace est bien en READ-ONLY (!)
> select tablespace_name, status from dba_tablespaces where tablespace_name='USERS';

- copier les datafiles avec la commande correspondant à l'OS
$ cp /u02/oradata/orcltst/users01.dbf /u03/oradata/orcltst/user01.dbf

- mettre le tablespace offline
> alter tablespace users offline;
- faire connaitre à la base le déplacement de fichier
> alter database rename file '/u02/oradata/orcltst/users01.dbf' to '/u03/oradata/orcltst/user01.dbf';

- mettre le tablespace online
> alter tablespace users online;

- mettre le tablespace en mode READ-WRITE
> alter tablespace users read write;

- vérifier que tout est ok, en récupérant la trace dans $ORACLE_BASE/admin/bdump/XXXX.trc
> alter database backup controlfile to trace;

- supprimer les fichiers avec la commande OS appropriée
$ rm -f /u02/oradata/orcltst/users01.dbf
par Ora-Linux publié dans : Oracle DB 9i-10g
ajouter un commentaire commentaires (0)    recommander
Blog : Sport sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus