Mi lista de blogs

lunes, 21 de septiembre de 2015

Seguridad - Políticas de Auditoria

Políticas de seguridad:

Es sumamente importante tener en nuestra base de datos las políticas de seguridad, donde podamos encontrar entre otras cosas, las funciones/procesos/usuarios, que acceden a nuestra base. Como así también tener un control sobre la misma.
Aquí veremos algunas sentencias donde podemos registrar donde guardar esta información que es de gran importancia.

Hay varias opciones, nosotros consultaremos una. Cada negocio lo puede guarda en otra tabla o crear vistas para que estas vayan acumulando y registrando la información.

Políticas de auditoria:

 select OBJECT_SCHEMA,
                                      OBJECT_NAME,
                                      POLICY_NAME,
                                      POLICY_TEXT,
                                      POLICY_COLUMN,
                                      PF_SCHEMA,
                                      PF_PACKAGE,
                                      PF_FUNCTION,
                                      ENABLED
                                 from sys.all_audit_policies
                                order by 1,2,3


  select OBJECT_SCHEMA,
                                      OBJECT_NAME,
                                      POLICY_NAME,
                                      POLICY_TEXT,
                                      POLICY_COLUMN,
                                      PF_SCHEMA,
                                      PF_PACKAGE,
                                      PF_FUNCTION,
                                      ENABLED,
                                      SEL,
                                      INS,
                                      UPD,
                                      DEL,
                                      AUDIT_TRAIL,
                                      POLICY_COLUMN_OPTIONS
                                 from sys.all_audit_policies
                                order by 1,2,3  

Políticas:

select object_owner   "Object_Owner",
                                      object_name    "Object_Name",
                                      policy_group   "Policy_Group",
                                      policy_name    "Policy_Name",
                                      pf_owner       "Policy_Function_Owner",
                                      package        "Package",
                                      function       "Policy_Function",
                                      sel            "Sel",
                                      ins            "Ins",
                                      upd            "Upd",
                                      del            "Del",
                                      chk_option     "Chk_Option",
                                      enable         "Enable",
                                      static_policy  "Static_Policy"
                                 from sys.all_policies    
                                where object_owner = user
                                   or pf_owner = user
                                order by object_owner, object_name, policy_group  

                      select object_owner   "Object_Owner",
                                      object_name    "Object_Name",
                                      policy_group   "Policy_Group",
                                      policy_name    "Policy_Name",
                                      pf_owner       "Policy_Function_Owner",
                                      package        "Package",
                                      function       "Policy_Function",
                                      sel            "Sel",
                                      ins            "Ins",
                                      upd            "Upd",
                                      del            "Del",
                                      idx            "Idx",
                                      chk_option     "Chk_Option",
                                      enable         "Enable",
                                      static_policy  "Static_Policy",
                                      policy_type    "Policy_Type"
                                 from sys.all_policies    
                                where object_owner = user
                                   or pf_owner = user

                                order by object_owner, object_name, policy_group

martes, 15 de septiembre de 2015

Informa AWR - AWR en Oracle Database 10g

El informe AWR nos permite extraer informes del estado de nuestra base de datos para poder relizar tareas de Tuning:





declare
dbid number;
instance_id number;
start_id number;
end_id number;
begin
dbms_output.enable(1000000);
select max(snap_id)-1,max(snap_id) into start_id,end_id from dba_hist_snapshot;
select dbid into dbid from v$database;
select instance_number into instance_id from v$instance;

dbms_output.put_line('<PRE>');
for rc in ( select output from
   table(dbms_workload_repository.awr_report_text(dbid,instance_id,start_id,end_id))
           ) loop
  -- dbms_output.put_line('<BR>');
   dbms_output.put_line(rc.output);
end loop;
dbms_output.put_line('</PRE>');
end;

viernes, 11 de septiembre de 2015

VERIFICAR BLOQUEOS POR USUARIO

Verificar bloqueos por usuario en la base de datos ORACLE.

Esto nos va a servir para poder identificar los bloqueos que cada usuario esta produciendo en el online de la base operativa.


select /*+ ORDERED */
   blocker.sid blocker_sid
,  waiting.sid waiting_sid
,  TRUNC(waiting.ctime/60) min_waiting
,  waiting.request
from (select *
      from v$lock
      where block != 0
      and type = 'TX') blocker
,    v$lock            waiting
where waiting.type='TX'
and waiting.block = 0
and waiting.id1 = blocker.id1

COMO VERIFICAR LAS ESTADISTICAS !!!!


Con este select podremos visualizar las estadísticas de nuestra base de datos.

                         select owner         "Owner",
                                         table_name    "Table_Name",
                                         last_analyzed "Last_Analyzed",
                                         num_rows      "Rows",
                                         avg_row_len   "Average_Row_Length",
                                         decode(iot_type,'YES','IOT','HEAP')||
                                                decode(temporary,'N',null,'-Temporary')||
                                                decode(trim(cache),'N',null,'-Cached')||
                                                decode(partitioned,'NO',null,'-Partitioned')||
                                                decode(compression,'DISABLED',null,'-Compressed') "Table_Type",
                                         owner       sdev_link_owner,
                                         table_name  sdev_link_name,
                                         'TABLE'     sdev_link_type
                                    from sys.dba_tables
                                   where (:OWNER is null or instr(owner,upper(:OWNER)) > 0)
                                     and substr(table_name,1,4) != 'BIN$'
                                     and substr(table_name,1,3) != 'DR$'
                                     and (:TABLE_NAME is null or
                                          instr(upper(table_name),upper(:TABLE_NAME))>0)
                                   order by owner, table_name

INDICES NO UTILIZADOS

                       
Verificar los indices no utilizados, es muy importante a la hora de preocuparnos por la performance de nuestra base de datos. No obstante, es necesario tener periódicamente una reconstrucción de nuestros indices y cálculos de estadisticas. Para optimizar todo tipo de demora de nuestra base es importante contar con varios de estos querys que iremos colocando en el blog.


select owner      "Owner",
                                         index_name "Index Name",
                                         index_type "Index Type",
                                         table_name "Table Name",
                                         owner       sdev_link_owner,
                                         index_name  sdev_link_name,
                                         'INDEX'     sdev_link_type
                                    from sys.dba_indexes
                                   where status = 'UNUSABLE'
                                   order by index_name

INDICES POR TIPO

INDICES POR TIPO:

Es sumamente importante contar con esta información, para poder verificar que tipos de indices tenemos.

select index_type "Index Type",
                                         count(*)   "Index Count"
                                    from sys.dba_indexes
                                   group by index_type
                                   order by index_type

INDICES POR ESTADO

Saber el estado de los indices, es fundamental para poder tener en nuestra estructura los rebuild o recreación que tenemos que tener en cuenta para el manteniemiento de nuestra base de datos.

   select status   "Status",
                                         count(*) "Index Count"
                                    from sys.dba_indexes
                                   group by status
                                   order by status