este dia me toco hacer una lista de los directorios que se encuentran bajo mi instalación, yo recuerdo que un amigo (Ing. Luis Eduardo Solorzano) me mostró el uso del comando sed, pero no me acordaba como usarlo así que entre a la ayuda (man sed) para ver los parámetros y usarlo correctamente, el resultado fue este comando de linea:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
lo divertido del caso es que ya existe mucha información al respecto en la red, jajajaja, lo mejor de todo es que he recordado cosas del PODEROSO UNIX...
miércoles, 23 de abril de 2014
lunes, 7 de abril de 2014
El usuario no Ejecuta el proceso dinamico???
este dia me tope con un problema a un usuario se le creo un proceso para que de forma dinamica asigne permisos a roles o roles a usuarios pero NO FUNCIONO cuando lo ejecuta el usuario final????
por que sera????
el mensaje de error era :
ORA-01031: insufficient privileges while issuing an EXECUTE IMMEDIATE
pos en una literatura encontré lo siguiente:
Un Procedure o Package se ejecuta con los permisos del que lo ejecuta o con los permisos del esquema ONDE (donde) esta almacenado.
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/create_package.htm#i2065285
Esta clausula puede ser omitida y por defecto tomara el valor de AUTHID DEFINER pero para mi criterio es mejor colocarlo, un par de letras mas no dañan a nadie
AUTHID DEFINER (default)
Esta opcion es por defecto si no se especifica nada. En este caso el procedimiento o paquete se va a ejecutar con el dueño del esquema en que fue creado el procedimiento o paquete.
AUTHID CURRENT_USER
En este caso el procedure se ejecuta con el usuario que realiza la ejecucion y dentro de su esquema independientemente de quien sea el dueño del procedimiento o paquete.
Nota: en ambos casos se le debe dar grant de execute al usuario/esquema o rol que quiera utilizar el procedimiento o paquete
les debo el ejemplo :D :D :D
por que sera????
el mensaje de error era :
ORA-01031: insufficient privileges while issuing an EXECUTE IMMEDIATE
pos en una literatura encontré lo siguiente:
Un Procedure o Package se ejecuta con los permisos del que lo ejecuta o con los permisos del esquema ONDE (donde) esta almacenado.
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/create_package.htm#i2065285
Specify
CURRENT_USER
to indicate that the package executes with the privileges of CURRENT_USER
. This clause creates an invoker's rights package.
This clause also specifies that external names in queries, DML operations, and dynamic SQL statements resolve in the schema of
CURRENT_USER
. External names in all other statements resolve in the schema in which the package resides.
Specify
DEFINER
to indicate that the package executes with the privileges of the owner of the schema in which the package resides and that external names resolve in the schema where the package resides. This is the default and creates a definer's rights package.Esta clausula puede ser omitida y por defecto tomara el valor de AUTHID DEFINER pero para mi criterio es mejor colocarlo, un par de letras mas no dañan a nadie
AUTHID DEFINER (default)
Esta opcion es por defecto si no se especifica nada. En este caso el procedimiento o paquete se va a ejecutar con el dueño del esquema en que fue creado el procedimiento o paquete.
AUTHID CURRENT_USER
En este caso el procedure se ejecuta con el usuario que realiza la ejecucion y dentro de su esquema independientemente de quien sea el dueño del procedimiento o paquete.
Nota: en ambos casos se le debe dar grant de execute al usuario/esquema o rol que quiera utilizar el procedimiento o paquete
les debo el ejemplo :D :D :D
Script para Compilar los Trigger, Funciones, Proc., Paquetes...
MIÉRCOLES, 19 DE MARZO DE 2014
hola,
este dia he tenido que realizar una actividad para verificar y compilar todos los trigger de una base de datos oracle 12c, para lo cual cree un script basado en el contenido de la tabla sys.dba_objects, pero me surgio una duda??......
como puedo compilar las vistas, trigger, definicion de paquetes, cuerpos de paquetes, procedimientos de una sola vez..
para este caso he creado el siguiente script que espero les sea de utilidad, no olvides dejar tus comentarios
set serveroutput on size 9999
begin
for c1 in (select CASE
WHEN object_type='TRIGGER' THEN 'ALTER TRIGGER '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PROCEDURE' THEN 'ALTER PROCEDURE '||owner||'.'||object_name||' COMPILE'
WHEN object_type='FUNCTION' THEN 'ALTER FUNCTION '||owner||'.'||object_name||' COMPILE'
WHEN object_type='VIEW' THEN 'ALTER VIEW '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PACKAGE' THEN 'ALTER PACKAGE '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PACKAGE BODY' THEN 'ALTER PACKAGE '||owner||'.'||object_name||' COMPILE BODY'
END sqltext,
object_type,
object_name,
owner
from dba_objects
where object_type IN ( 'TRIGGER' , 'PROCEDURE', 'FUNCTION', 'VIEW','PACKAGE','PACKAGE BODY' )
and status = 'INVALID'
and owner in ('ESQUEMA1', 'ESQUEMA2', 'ESQUEMA3', etc, etc.....)
ORDER BY object_type
) loop
begin
execute immediate c1.sqltext;
dbms_output.put_line('COMPILADO '||c1.owner||'.'||c1.object_name);
exception
when others then
dbms_output.put_line('--- ERROR DE COMPILACION VERIFICAR EN : '||
C1.object_type|| ' ESQUEMA '||C1.owner||'.'||
c1.object_name);
end;
end loop;
end;
hola,
este dia he tenido que realizar una actividad para verificar y compilar todos los trigger de una base de datos oracle 12c, para lo cual cree un script basado en el contenido de la tabla sys.dba_objects, pero me surgio una duda??......
como puedo compilar las vistas, trigger, definicion de paquetes, cuerpos de paquetes, procedimientos de una sola vez..
para este caso he creado el siguiente script que espero les sea de utilidad, no olvides dejar tus comentarios
set serveroutput on size 9999
begin
for c1 in (select CASE
WHEN object_type='TRIGGER' THEN 'ALTER TRIGGER '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PROCEDURE' THEN 'ALTER PROCEDURE '||owner||'.'||object_name||' COMPILE'
WHEN object_type='FUNCTION' THEN 'ALTER FUNCTION '||owner||'.'||object_name||' COMPILE'
WHEN object_type='VIEW' THEN 'ALTER VIEW '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PACKAGE' THEN 'ALTER PACKAGE '||owner||'.'||object_name||' COMPILE'
WHEN object_type='PACKAGE BODY' THEN 'ALTER PACKAGE '||owner||'.'||object_name||' COMPILE BODY'
END sqltext,
object_type,
object_name,
owner
from dba_objects
where object_type IN ( 'TRIGGER' , 'PROCEDURE', 'FUNCTION', 'VIEW','PACKAGE','PACKAGE BODY' )
and status = 'INVALID'
and owner in ('ESQUEMA1', 'ESQUEMA2', 'ESQUEMA3', etc, etc.....)
ORDER BY object_type
) loop
begin
execute immediate c1.sqltext;
dbms_output.put_line('COMPILADO '||c1.owner||'.'||c1.object_name);
exception
when others then
dbms_output.put_line('--- ERROR DE COMPILACION VERIFICAR EN : '||
C1.object_type|| ' ESQUEMA '||C1.owner||'.'||
c1.object_name);
end;
end loop;
end;
Exporta DDL Oracle 12c Dedicado a Extraer la metadata por esquema o de toda la base de datos; Las pruebas han sido realizadas en Oracle 12c/UNIX
Primera entrega,
publicado el MIÉRCOLES, 2 DE ABRIL DE 2014
COMO EXPORTAR EL DDL de mi base de datos ORACLE??
lo primero que debemos tener claro es:
DDL es := Lenguaje de definición de datos
con este lenguaje se puede:
Crear, Eliminar y Modificar Objetos de uno o varios esquemas.
Otorgar y revocar privilegios y roles
Analizar la información en una tabla, un índice o un clúster
Establecer las opciones de auditoría (proximamente algo interesante)
Añadir comentarios al diccionario de datos
al final todo se resume en un script sumamente facil para la version 12c,
eso si yo ejecute este script en unix/sqlplus
hey no olvides dejar tus comentarios!!!!!
Bendiciones
publicado el MIÉRCOLES, 2 DE ABRIL DE 2014
COMO EXPORTAR EL DDL de mi base de datos ORACLE??
lo primero que debemos tener claro es:
DDL es := Lenguaje de definición de datos
con este lenguaje se puede:
Crear, Eliminar y Modificar Objetos de uno o varios esquemas.
Otorgar y revocar privilegios y roles
Analizar la información en una tabla, un índice o un clúster
Establecer las opciones de auditoría (proximamente algo interesante)
Añadir comentarios al diccionario de datos
al final todo se resume en un script sumamente facil para la version 12c,
eso si yo ejecute este script en unix/sqlplus
clear screen
accept ESKEMA prompt
'Digite el nombre del ESKEMA : '
accept ARCHIVO prompt
' Digite el nombre del directorio/ archivo : '
spool &&ARCHIVO..gen
SET
LONG 2000000 PAGESIZE 0 head
off
verify
off
feedback
off
linesize 132
SELECT
dbms_metadata.get_ddl(
'USER'
,
'&&ESKEMA'
)
FROM
dual;
SELECT
DBMS_METADATA.GET_GRANTED_DDL(
'SYSTEM_GRANT'
,
'&&ESKEMA'
)
from
dual;
SELECT
DBMS_METADATA.GET_GRANTED_DDL(
'ROLE_GRANT'
,
'&&ESKEMA'
)
from
dual;
SELECT
DBMS_METADATA.GET_GRANTED_DDL(
'OBJECT_GRANT'
,
'&&ESKEMA'
)
from
dual;
spool
off
hey no olvides dejar tus comentarios!!!!!
Bendiciones
Creacion de Sinonimos publicos de forma masiva....
este dia (MIÉRCOLES, 2 DE ABRIL DE 2014) me fue asignado crear los sinonimos publicos a todos los esquemas de trabajo, para lo cual cree un codigo pl,
espero que a tod@s les sea de utilidad, no olviden dejar sus comentarios
DECLARE
CURSOR CREAR_SINONIMO IS
SELECT CASE WHEN OBJECT_TYPE IN (' FUNCTION','PACKAGE','PROCEDURE','SEQUENCE','TABLE','VIEW')
THEN 'CREATE OR REPLACE PUBLIC SYNONYM '|| OBJECT_NAME||' FOR '||OWNER||'.'||OBJECT_NAME
ELSE ''
END AS PERMISO
FROM DBA_OBJECTS
WHERE OWNER IN ('ESKEMA1','ESKEMA2','ESKEMA3')
AND OBJECT_TYPE IN (' FUNCTION','PACKAGE','PROCEDURE','SEQUENCE','TABLE','VIEW') ;
BEGIN
FOR EJECUTA_PERMISO IN CREAR_SINONIMO
LOOP
BEGIN
EXECUTE IMMEDIATE EJECUTA_PERMISO.PERMISO;
DBMS_OUTPUT.PUT_LINE('SINONIMO CON EXITO '||EJECUTA_PERMISO.PERMISO);
EXCEPTION WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('ERROR '||EJECUTA_PERMISO.PERMISO);
END;
END LOOP;
END;
espero que a tod@s les sea de utilidad, no olviden dejar sus comentarios
DECLARE
CURSOR CREAR_SINONIMO IS
SELECT CASE WHEN OBJECT_TYPE IN (' FUNCTION','PACKAGE','PROCEDURE','SEQUENCE','TABLE','VIEW')
THEN 'CREATE OR REPLACE PUBLIC SYNONYM '|| OBJECT_NAME||' FOR '||OWNER||'.'||OBJECT_NAME
ELSE ''
END AS PERMISO
FROM DBA_OBJECTS
WHERE OWNER IN ('ESKEMA1','ESKEMA2','ESKEMA3')
AND OBJECT_TYPE IN (' FUNCTION','PACKAGE','PROCEDURE','SEQUENCE','TABLE','VIEW') ;
BEGIN
FOR EJECUTA_PERMISO IN CREAR_SINONIMO
LOOP
BEGIN
EXECUTE IMMEDIATE EJECUTA_PERMISO.PERMISO;
DBMS_OUTPUT.PUT_LINE('SINONIMO CON EXITO '||EJECUTA_PERMISO.PERMISO);
EXCEPTION WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('ERROR '||EJECUTA_PERMISO.PERMISO);
END;
END LOOP;
END;
Suscribirse a:
Entradas (Atom)