Tagged: Almacenamiento RSS

  • Juanjinio 23:51 on 14/10/2008 Permalink | Reply
    Tags: Almacenamiento,   

    Crear DATABASE LINK o DBLINK 

    Muchas veces en las aplicaciones de negocio es necesario obtener datos que no necesariamente están en las mismas bases de datos o en los mismos servidores. Para poder suplir esta necesidad Oracle tiene un objeto llamado “DATABASE LINK” o “DBLINK”. Mediante a este objeto es posible realizar una conección entre dos bases de datos, las cuales NO necesariamente pueden ser Oracle – Oracle, sin que pueden ser desde Oracle a diferentes motores de bases de datos.-

    Ahora bien, hay que tener una serie de consideraciones al momento de crear un DBLINK:

    • Tener claro si el DBLINK a generar será Publico o sólo podrá ser usado bajo un esquema determinado
    • Utilizar una cuenta con los privilegios que sólo necesita el DBLINK y NO el user y pass del esquema, ya que no tenemos control de quien estará utilizando el DBLINK en la otra base de datos

    La siguiente figura es un template que en lo personal utilzo para crear DBLINK, ya que ahi uno incluye toda la información del DBLINK que se va a crear

    Template creacion DBLINK

    Mediante el template anterior es posible definir:

    • Nombre del DBLINK
    • Nombre del servidor (ORIGEN y DESTINO)
    • IP del Servidor (ORIGEN y DESTINO)
    • Nombre de Base de Datos (ORIGEN y DESTINO)
    • Esquema de Base de Datos (ORIGEN y DESTINO)
    • Observacion (indica si es PUBLICO o Privado [Sólo a un esquema])
    • Usuario y Password que se utiliza
    • Objetos que requieren ser accesados
    • Permisos sobre estos objetos
    • Script de creación del DBLINK
    • Script de creación del usuario

    Una vez ya se tiene toda la información establecida, se procede a crear el DATABASE LINK

    1.- Creación de la cuenta de usuario del DBLINK, Esto se debe realizar desde la instancia DESTINO

    CREATE USER USER_DBLINK IDENTIFIED BY PASS_DBLINK
    DEFAULT TABLESPACE USER_DBLINK
    TEMPORARY TABLESPACE TEMPORAL
    QUOTA UNLIMITED ON USER_DBLINK
    PROFILE DEFAULT
    ACCOUNT UNLOCK
    /
    GRANT "CONNECT" TO USER_DBLINK
    /
    ALTER USER USER_DBLINK DEFAULT ROLE "CONNECT"
    /

    NOTA IMPORTANTE 1: La cuenta de usuario sólo debe tener el rol de CONNECT para establecer la conección a través del DBLINK, NO es recomendable otorgar otro rol.-

    2.- Una vez creado el usuario se deben otorgar los privilegios que tendrá el DBLINK. Importante el DBLINK por si sólo no tiene privilegios sobre los objetos de la base DESTINO, sino que es la cuenta de base de datos que posee estos permisos.-

    GRANT SELECT ESQUEMA.OBJETOS TO USER_DBLINK
    /
    GRANT INSERT ESQUEMA.OBJETOS TO USER_DBLINK
    /
    GRANT DELETE ESQUEMA.OBJETOS TO USER_DBLINK
    /
    GRANT UPDATE ESQUEMA.OBJETOS TO USER_DBLINK
    /

    3.- Ahora es necesario crear el DBLINK. La creación del script del DBLINK debe ser realizada desde la base ORIGEN.-

    CREATE PUBLIC DATABASE NOMBRE:DBLINK
    CONNECT TO USER_DBLINK
    IDENTIFIED BY PASS_DBLINK
    USING 'NOMBRE_TNSNAMES'

    NOTA IMPORTANTE 2: Al comienzo del script se define si este es PUBLICO o PRIVADO, en caso de ser privado la opcion PUBLIC no se incluye en el script y el DBLINK sólo será utilizado por el esquema con el cual el DBLINK se creó.-

    NOTA IMPORTANTE 3: En la linea USING ‘NOMBRE_TNSNAMES’ se debe verificar el string de conección desde el servidor ORIGEN al servidor DESTINO, se deben validar los accesos, y realizar una prueba de conección

    Este post aún NO está terminado

     
  • Juanjinio 19:30 on 09/09/2008 Permalink | Reply
    Tags: Almacenamiento, ,   

    Determinar Tablespaces fragmentados 

    Este script permite ver que Tablespaces están fragmentados y el tipo de fragmentación que tiene.

    SELECT dfsc.tablespace_name tablespace_name,
    DECODE (
    dfsc.percent_extents_coalesced,
    100,
    (DECODE (
    GREATEST ((SELECT COUNT (1)
    FROM dba_free_space dfs
    WHERE dfs.tablespace_name = dfsc.tablespace_name), 1),
    1,
    'No Frag',
    'Bubble Frag'
    )
    ),
    'Possible Honey Comb Frag'
    )
    fragmentation_status
    FROM dba_free_space_coalesced dfsc
    ORDER BY dfsc.tablespace_name;

     
  • Juanjinio 15:12 on 05/09/2008 Permalink | Reply
    Tags: Almacenamiento, ,   

    Tamaño libre Tablespaces 

    Aca dejo un script que te permite saber cual es el tamaño y porcentaje libre de los tablespaces de una instancia Oracle.-

    SET SERVEROUTPUT ON
    SET PAGESIZE 1000
    SET LINESIZE 255
    SET FEEDBACK OFF
    PROMPT
    PROMPT Tablespaces nearing 0% free
    PROMPT ***************************
    SELECT a.tablespace_name,
    b.size_kb/1024 SIZE_MB,
    a.free_kb/1024 FREE_MB,
    Trunc((a.free_kb/b.size_kb) * 100) "FREE_%"
    FROM (SELECT tablespace_name,
    Trunc(Sum(bytes)/1024) free_kb
    FROM dba_free_space
    GROUP BY tablespace_name) a,
    (SELECT tablespace_name,
    Trunc(Sum(bytes)/1024) size_kb
    FROM dba_data_files
    GROUP BY tablespace_name) b
    WHERE a.tablespace_name = b.tablespace_name
    ORDER BY 4 desc
    /
    PROMPT
    SET FEEDBACK ON
    SET PAGESIZE 18

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel