¿Tienes una cuenta? identificate: Usuario Contraseña o puedes obtener una gratis.

Depuracion de Filesystem

,
08/dic/2008::08:41

En Oracle cuando tenemos una BD en modo archive, genera muchos archivos con la extension .arc el cual nos va a saturar en algunas ocasiones problemas de espacio, por lo que aqui esta la solucion a ese problema:

Exportar Variables de ambiente 

$rman

RMAN> connect target;

RMAN> crosscheck archivelog all;

RMAN> delete achivelog all;

confirmar que yes!

RMAN>exit;

 

y listo !

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Creacion de oracle DB mediante Script

,
05/dic/2008::14:12

Bueno siguiendo con mi pequeño manual de autoayuda y que espero le sirva a algun dba principiante ahora les va la manera de generar una BD de manera automatica via script:

Primero debemos generar el script de la creacion de BD (este ejemplo es para 9g):

 

CREATE DATABASE CATPRCSC

USER SYS IDENTIFIED BY password

USER SYSTEM IDENTIFIED BY password

LOGFILE GROUP 1 ('/catprcsc_sist000/oradata/CATPRCSC/redo01.rdo') SIZE 100M,

GROUP 2 ('/catprcsc_sist000/oradata/CATPRCSC/redo02.rdo') SIZE 100M,

GROUP 3 ('/catprcsc_sist000/oradata/CATPRCSC/redo03.rdo') SIZE 100M

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXLOGHISTORY 1

MAXDATAFILES 200

MAXINSTANCES 1

CHARACTER SET WE8ISO8859P1

NATIONAL CHARACTER SET AL16UTF16

DATAFILE '/catprcsc_sist000/oradata/CATPRCSC/system01.dbf' SIZE 500M

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE TEMP

TEMPFILE '/catprcsc_temp/oradata/CATPRCSC/temp01.dbf'

SIZE 500M

UNDO TABLESPACE undotbs

DATAFILE '/catprcsc_undo/oradata/CATPRCSC/undotbs01.dbf'

SIZE 400M  AUTOEXTEND OFF

SYSAUX DATAFILE '/catprcsc_sist000/oradata/CATPRCSC/sysaux01.dbf' SIZE 500M autoextend off;

Este archivo debera tener extension sql, este archivo lo ejecutaremos desde SQL*PLUS

Una vez creado esto, debemos de generar un archivo de parametros el cual debemos de guardar dentro del ORACLE_HOME (no es el home de oracle)

el cual debera contener los siguientes datos y se lo pueden nombrar como initCATPRCSC.ora
el contenido de este archivo sera el siguiente:
db_name=CATPRCSC
db_files = 400                                                         # SMALL
db_file_multiblock_read_count = 16                                  # MEDIUM
db_cache_size=500m
shared_pool_size = 300M                                            # SMALL
db_block_size=8192
log_checkpoint_interval = 10000
processes = 200                                                        # SMALL
parallel_max_servers = 5                                              # SMALL
log_buffer = 1048576                                                    # SMALL
max_dump_file_size = 10240      # limit trace file size to 5 Meg each
global_names = TRUE
control_files = ('/catprcsc_sist000/oradata/CATPRCSC/control01.ora',
                 '/catprcsc_sist000/oradata/CATPRCSC/control02.ora',
                 '/catprcsc_sist000/oradata/CATPRCSC/control03.ora')

undo_management=auto
undo_tablespace=UNDOTBS
sga_max_size=850M
compatible=9.2.0.0.0
background_dump_dest=/oracle10/db10/admin/CATPRCSC/bdump
user_dump_dest=/oracle10/db10/admin/CATPRCSC/udump
core_dump_dest=/oracle10/db10/admin/CATPRCSC/cdump

una vez creados estos archivos y ya con nuestras variables de ambiente creadas, nos conectamos con SQL*PLUs como sys e iniciamos nuestra BD en modo no mount

startup nomount

y ejecutamos nuestro script con @/home/oracle/CreaCATPRCSC.sql y esperamos el prompt.

Cuanto se termina el proceso se ejecutan los siguientes scripts desde SQL*PLUS:

Run catalog and catproc
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/catdbsyn
@?/rdbms/admin/catexp
--- Como SYSTEM

cd /oracle/product/10.2/sqlplus/admin
./pupbld
<<--- la ruta esta en $ORACLE_HOME/sqlplus/admin 

y una vez hecho esto la BD ya esta lista!! 
FELICIDADES!!


 

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Variables de ambiente en 1,2 x 3

,
05/dic/2008::13:42

Bueno cuando tenemos varias BD o de plano nos conectamos a varios servidores y por alguna razon no estan nuestras variables de ambiente bien definidas en Unix(nos falta indicar ubicacion de archivos de oracle y ejectuabes entre otros etc)

Esta es la mejor opcion:

crear un archivo en vi, con extension .env

En este caso yo le pongo el nombre del SID de la BD ejm CATPRCSC.env

OJO: UNIX si es muy quisquilloso con los nombres de arhivos podemos tener el mismo nombre de archivo con solo cambiar una letra por minuscula y lo reconocera como un archivo completamente diferente por ejemplo: CATPRCSC.env, Catprcsc.env, CaTpRcSc.env etc asi que no mas fijense bien.

 

en el vi podemos indicar nuestras variables de ambiente del modo siguiente:

export ORACLE_BASE=/oracle10/db10 <-- la ruta de instalacion del oracle o donde estan los archivos de instalacion de oracle

export ORACLE_HOME=/oracle10/db10 <- la ruta donde esta una version en especifico de oracle

export PATH=$ORACLE_HOME/bin:$PATH <-- Donde se ecuentran los binarios de oracle

export LD_LIBRARY_PATH=/oracle10/db10/lib

export ORACLE_SID=CATPRCSC <--Definimos la BD que queremos configurar.

 

Una vez definidos estas variables las podemos ejecutar del siguiente modo:

$ . ./Archivo.env

y asi podremos conectarnos a nuestra BD sin problemas.

 

OJO!!! si tienes mas de una BD es importante que ejecutes estos archivos antes de cualquier operacion o actividad a realizar, debido a que puedes conectarte a una BD por error y provocar perdida de informacion o inconsistencia de datos


 

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Depuracion del recyclebin en Oracle

,
03/dic/2008::17:22

Si alguna vez se presenta demasiada lentitud en alguna BD, ya sea para abrir las propiedades de algun tablespace mediante el OEM. El uso de esta sentencia ayuda a mejorar el performance de la BD.

para realizar esto en SQL*PLUS conectarse como sys.

 

Primero se verifican cuantos objetos existen.

select * from dba_recyclebin;

y despues realizamos la depuracion o purgado del mismo:

purge dba_recyclebin;

 

Se debe tener paciencia por que dependiendo de la cantidad de objetos es lo que tardara en realizarse esta actividad en promedio de 30 a 60 mins.

 

Saludos

 

 

[ Enlace | Un miserable comentario :( ] del.icio.us del.icio.us Estrella este post *****

Monitoreo de procesos

,
03/dic/2008::15:55

Esta sentencia sirve para ejecutarse desde SQL*PLUS:

select a.sid,a.serial#,a.process, b.pid as orapid, b.spid as os_pid from v$session a, v$process b where a.paddr = b.addr and a.osuser = 'wtuinfor' order by process

Nos regresara de sesiones que esta ejecutando dado el usuario de sistema operativo.

defragmentado de tablas en SQL*Server

,
01/dic/2008::16:17

Con el siguiente script podran realizar un defragmentado de las tablas que se encuentran en una BD en especifico en SQL*Server.

--Re-indexes the specified database

 

CREATE PROCEDURE usp_DefragDatabase

-- We don't use sysname because it might not be long enough.  

-- sysname is 128 chars, so we use double that. 

dbname nvarchar(256)

AS 

BEGIN   

    -- Quote the database name with brackets

    DECLARE quoteddbname nvarchar(256)

    set quoteddbname = quotename( dbname )


    -- The outer EXEC is so we can do USE, not allowed in stored procs

    -- The inner EXEC does the actual reindex on each table in the

    -- specified database

    

    EXEC('

    USE '+ quoteddbname +'

    DECLARE sTableName sysname

    DECLARE PKMS_Tables CURSOR LOCAL FOR 

        select table_name from information_schema.tables 

        where table_type = ''base table'' order by 1 

    OPEN PKMS_Tables 

    FETCH NEXT FROM PKMS_Tables INTO sTableName 


    WHILE @ FETCH_STATUS = 0 

    BEGIN 

    select sTablename = quotename( sTablename, ''[]'')

        EXEC('' DBCC DBREINDEX ( ''+ sTableName+'') WITH NO_INFOMSGS'')

        FETCH NEXT FROM PKMS_Tables INTO sTableName 

    END 

    CLOSE PKMS_Tables')

END

GO

Despues de la creacion del procedimiento se procede a su ejecucion:

EXEC dbo.usp_DefragDatabase[DATABASENAME];

 

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Deteccion de principales consumidores de memoria.

,
01/dic/2008::16:10

En UNIX 

Para identificar a los principales consumidores de momoria, ordenado por consumo:

UNIX95= ps -e -o ruser,vsz,pid,args,time | sort -rnk2 | more

Despliega: Nombre del usuario, tamaño de momoria usada en Kb, PID, comando ejecutado, tiempo de ejecución.

 

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Uso de espacio en Kilobytes del tablespace de TEMP

,
01/dic/2008::16:05

En Oracle detectamos que cuando asignamos datafiles al tablespace de TEMP, al momento de checar espacio en Unix (bdf) o en Linux (df - k) el espacio asignado a dicho tablespace no se ve reflejado en el filesystem.

En otras palabras si tenemos un filesystem de 100M y le asignamos un datafile al tablespace de TEMP 80M,si ejecutamos bdf en unix, el sistema mostrara un espacio libre de 100M esto debido a un bug el cual no detecta el uso de este espacio a no ser que este siendo empleado por algun proceso o usuario.

Para saber cuanto espacio se esta ocupando y saber si se requiere o no asignar mas espacio a este tablespace se puede ejecutar la siguiente sentencia, la cua mostrara el usuario y el espacio en Kilobytes empleando en el Tablespace de TEMP:

 

col tablespace for a10

col machine for a20

col username for a10

col osuser for a15

col terminal for a10

col sid for 9999

col spid for 9999

 


select a.tablespace,a.contents,a.extents,a.blocks,b.username,b.osuser,

b.MACHINE, b.terminal, c.spid, b.sid, sysdate

from v$sort_usage a, v$session b, v$process c

where a.session_addr = b.saddr

and c.addr = b.paddr

order by extents desc

/

 

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Deteccion de Bloqueos en ORACLE

,
01/dic/2008::15:59

Bueno por ahi alguien andaba posteando el uso de Import/Export de una BD, el cual tambien abrio el espacio para recomendar el datapump de Oracle.

A continuacion existe este script que le permitira detectar el usuario de oracle que esta bloqueando asi como el objeto que esta bloqueando en la BD:

 

 

Select oracle_username, os_user_name, locked_mode, object_name, object_type

from v$locked_object a, dba_objects b

where a.object_id = b.object_id

 

 

Saludos cordiales

[ Enlace | Sin comentarios :'( ] del.icio.us del.icio.us Estrella este post *****

Monitoreando SQL

,
08/oct/2008::17:00

Cuando se requiere saber que carambas esta ejecutando un proceso en SQL server existen 2 opciones:

Una es a traves de Query analyzer ejecutar lo siguiente:

DBCC InputBuffer(SPID)

y obtendremos la sentencia que se ejecuta en ese momento, limitado unicamente a los primeros 255 caracteres.

Si desean obtener la sentencia completa pueden ejecutar:

DECLARE handle binary(20)

 

SELECT handle = sql_handle

    FROM master..sysprocesses

    WHERE spid = @ SPID

 

SELECT [text]

    FROM ::fn_get_sql( handle)

 

 

Solo recuerden modificar las opciones del query analyzer para que muestre mas de 256 caracteres por columna en el resultado.

 

Saludos

[ Enlace | Tres comentarios ] del.icio.us del.icio.us Estrella este post *****

SQL Version via TSQL

,
07/oct/2008::16:16

Si lo que requieren es obtener la version del manejador, el nombre del servidor y que tipo de edicion tienen en su servidor, con este script:

create table #versioninfo

 [Index] varchar(5),
 [Name] varchar(20),
 Internal_Value varchar(10),
 Character_Value varchar(120)
)   
insert into #versioninfo exec ('xp_msver')
declare sqlver varchar(10),
  winver varchar(10),
  cpuspeedcount varchar(3),
  Memory varchar(4),
  currentEditonstart varchar(3),
  Editionlength varchar(3),
  installdatestart varchar(10)
 select   Character_Value as ProductVersion, left(@ servername, 25) as 'SQL_server_name'  from #versioninfo where Name in( 'ProductVersion')

--   (select Character_Value from #versioninfo where Name = 'WindowsVersion')
--   (select Internal_Value from #versioninfo where Name = 'ProcessorCount')
--  (select Internal_Value from #versioninfo where Name = 'PhysicalMemory')

create table #searchstring (location varchar(3))
insert into #searchstring values (charindex('Standard', @ version))
insert into #searchstring values (charindex('Enterprise', @ version))
insert into #searchstring values (charindex('Developer', @ version))
insert into #searchstring values (charindex('Personal', @ version))
insert into #searchstring values (charindex('desktop', @ version))


set currentEditonstart = (select * from #searchstring where location > 0)
set Editionlength = charindex('Edition', @ version) - currentEditonstart + 7
 set sqlver = (select Character_Value from #versioninfo where Name = 'ProductVersion')
SELECT left(@ servername, 25) as 'SQL_server_name' , @ VERSION,
left(substring(@ version, cast( currentEditonstart as int), cast( Editionlength  as int)), 20) + ')' AS 'SQL_server_Edition',
substring ( sqlver, 6, 4) + ')' as 'SQL_SP (Bld.)'

Saludos

[ Enlace | Un miserable comentario :( ] del.icio.us del.icio.us Estrella este post *****