Consultas útiles Oracle parte 1 de 2

Veremos en esta primera entrega algunas “recetas ” , es decir consultas típicas muy útiles para lanzar contra una BBDD Oracle


¿Quién no tiene su chuleta de consultas útiles que se suelen utilizar en el día a día, y en nuestras aventuras y desventuras con un BBDD  Oracle?

En este pequeño  post vamos  a ver un resumen de consultas SQL de Oracle,  basadas  la mayoría sobre las vistas del diccionario de Oracle,  y animo a todo el que quiera añadir otras que considere de utilidad a responder el post publicando las suyas, a ver si entre todos creamos un repositorio que podamos consultar desde cualquier lugar para facilitarnos la vida, o sacarnos de algún que otro apuro.

 

 

Consulta Oracle SQL sobre la vista que muestra el estado de la base de datos

En primer lugar veamos  uan simple consulta muy general para    ver como esta la BBDD  en el momento de la consulta  .

 

La  consulta es bastante sencilla:

select * from v$instance




Con esta interesante consulta podemos  ver el numero de la instancia y su sombre , la version de BBDD, el tiempo desde el que esta arrancada la BBDD y es  estado en general  de la BBDD

Esa vista es tan interesante que de hecho se usa otra consulta Oracle SQL que muestra si la base de datos está abierta  :

select status from v$instance






Consulta Oracle SQL sobre la vista que muestra los parámetros generales de Oracle

Si queremos leer unos  258 parámetros generales de una BBDD  Oracle v 9   , en efecto  podemos recuperar  sus valores directamente con la siguiente consulta:

select * from v$system_parameter






De esta  consulta podemos obtener valores muy  interesantes ,como podemos ver en la pantalla anterior. De hecho basada en esa vista , podemos recuperar  algunos  de los mas importantes   simplemente filtrando  por el campo “name“.   A continuación   aquí algunas de las mas destacadas: 

  • Si solo queremos  conocer la Versión de Oracle   lanzaremos esta consulta

select value from v$system_parameter where name = ‘compatible’

  • Si solo queremos  conocer  la Ubicación y nombre del fichero spfile

select value from v$system_parameter where name = ‘spfile’

  • Esta Consulta Oracle SQL es  para conocer la Ubicación y número de ficheros de control

select value from v$system_parameter where name = ‘control_files

 
  • Y por ultimo una consulta Oracle SQL para conocer el Nombre de la base de datos

select value from v$system_parameter where name = ‘db_name’

 

 

Una vista muy parecida  a v$system  es la vista  v$parameter  ,la cual nos permite ver parámetros de Oracle, valor actual y su descripción

 

SELECT v.name, v.value value, decode(ISSYS_MODIFIABLE, 'DEFERRED',

'TRUE', 'FALSE') ISSYS_MODIFIABLE, decode(v.isDefault, 'TRUE', 'YES',

'FALSE', 'NO') "DEFAULT", DECODE(ISSES_MODIFIABLE, 'IMMEDIATE',

'YES','FALSE', 'NO', 'DEFERRED', 'NO', 'YES') SES_MODIFIABLE,

DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES', 'FALSE', 'NO',

'DEFERRED', 'YES','YES') SYS_MODIFIABLE , v.description

FROM V$PARAMETER v

WHERE name not like 'nls%' ORDER BY 1


 




Consulta Oracle SQL sobre la vista que muestra las conexiones actuales a Oracle


Ahora  vamos   a ver la vista v$session . La vista V$SESSION es la base de toda la información relacionada con el estado actual del sistema:

  • ¿Cuántas sesiones hay actualmente corriendo en la base de datos?
  • ¿Qué consulta se está ejecutando?
  • ¿Cuánto tardan en ejecutarse estas consultas?
 V$SESSION es el primer lugar cuando DBA comienza a buscar información relacionada con el rendimiento  e información de la ejecución de las consultas, un DBA puede llegar a consultar un centenar de veces al día esta vista, así que puede ser interesante inspeccionar su contenido


 Como casi todas las consultas que vamos a ver ,para visualizar  el resultado de esta consulta  es necesario entrar con privilegios de administrador


Veamos una consulta general para obtener los usuarios conectados a la BBDD;

select osuser, username, machine, program from v$session order by osuser




También sobre esa misma vista podemos lanzar una consulta  que muestra el número de conexiones actuales a Oracle    agrupado por aplicación que realiza la  conexión:

 

select program Aplicacion, count(program) Numero_Sesiones

from v$session

group by program

order by Numero_Sesiones desc



Otra consulta interesante  basada en la vista v$session ,  es la siguiente que  muestra los usuarios de Oracle conectados y el número de sesiones por usuario:

select username Usuario_Oracle, count(username) Numero_Sesiones

from v$session

group by username

order by Numero_Sesiones desc






Cada vez que se conecta a los datos se crea una sesión en la base de datos para realizar sus operaciones. Un DBA puede ver fácilmente esto consultando la vista de sistema V$SESSION.

Para ello  podemos lanzar  la siguiente consulta (en el caso del entorno RAC, DBA debe utilizar GV$SESSION en lugar de V$SESSION).

selectcount(*),type fromv$sessiongroup by type;

 

 

Puede utilizar la consulta siguiente para identificar qué usuario está creando un número alto de sesiones.

select SID,USERNAME,COMMAND,PROCESS,TERMINAL,PROGRAM from v$session where type=’USER’;

 

 

 

  • SID es la ID de la sesión, USERNAME es el nombre del usuario de la base de datos.
  • Process es el número de proceso. 
  • Terminal es el nombre del sistema que esta ejecutando la consulta. 
  • Program muestra el nombre del programa que esta usando la consulta.



Consultas  sobre el Diccionario de datos

Esta es una de las consultas mas potentes pues incluye todas las vistas y tablas de la Base de Datos. segun la version de la BBDD Oracle  puede llegar la consulta  a lanzar el resultados de unss 500 tablas.

Simplemente    para obtenerla podemos lanzar la siguiente consulta:

select * from dictionary

 

Este es resultado obtenido  lanzado  contra una BBDD Oracle 9:

 

TABLE_NAME COMMENTS
ALL_ALL_TABLES Description of all object and relational tables accessible to the user
ALL_APPLY Details about each apply process that dequeues from the queue visible to the current user
ALL_APPLY_CONFLICT_COLUMNS Details about conflict resolution on tables visible to the current user
ALL_APPLY_DML_HANDLERS Details about the dml handler on tables visible to the current user
ALL_APPLY_ERROR Error transactions that were generated after dequeuing from the queue visible to the current user
ALL_APPLY_KEY_COLUMNS Alternative key columns for a STREAMS table visible to the current user
ALL_APPLY_PARAMETERS Details about parameters of each apply process that dequeues from the queue visible to the current user
ALL_APPLY_PROGRESS Information about the progress made by the apply process that dequeues from the queue visible to the current user
ALL_ARGUMENTS Arguments in object accessible to the user
ALL_ASSOCIATIONS All associations available to the user
ALL_AUDIT_POLICIES All fine grained auditing policies in the database
ALL_BASE_TABLE_MVIEWS All materialized views with log(s) in the database that the user can see
ALL_CAPTURE Details about each capture process that stores the captured changes in a queue visible to the current user
ALL_CAPTURE_PARAMETERS Details about parameters for each capture process that stores the captured changes in a queue visible to the current user
ALL_CAPTURE_PREPARED_DATABASE Is the local database prepared for instantiation?
ALL_CAPTURE_PREPARED_SCHEMAS All user schemas at the local database that are prepared for instantiation
ALL_CAPTURE_PREPARED_TABLES All tables visible to the current user that are prepared for instantiation
ALL_CATALOG All tables, views, synonyms, sequences accessible to the user
ALL_CLUSTERS Description of clusters accessible to the user
ALL_CLUSTER_HASH_EXPRESSIONS Hash functions for all accessible clusters
ALL_COLL_TYPES Description of named collection types accessible to the user
ALL_COL_COMMENTS Comments on columns of accessible tables and views
ALL_COL_PRIVS Grants on columns for which the user is the grantor, grantee, owner,
 or an enabled role or PUBLIC is the grantee
ALL_COL_PRIVS_MADE Grants on columns for which the user is owner or grantor
ALL_COL_PRIVS_RECD Grants on columns for which the user, PUBLIC or enabled role is the grantee
ALL_CONSTRAINTS Constraint definitions on accessible tables
ALL_CONS_COLUMNS Information about accessible columns in constraint definitions
ALL_CONS_OBJ_COLUMNS List of types an object column or attribute is constrained to in the tables accessible to the user
ALL_CONTEXT Description of all active context namespaces under the current session
ALL_DB_LINKS Database links accessible to the user
ALL_DEF_AUDIT_OPTS Auditing options for newly created objects
ALL_DEPENDENCIES Dependencies to and from objects accessible to the user
ALL_DIMENSIONS Description of the dimension objects accessible to the DBA
ALL_DIM_ATTRIBUTES Representation of the relationship between a dimension level and
 a functionally dependent column
ALL_DIM_CHILD_OF Representaion of a 1:n hierarchical relationship between a pair of levels in
 a dimension
ALL_DIM_HIERARCHIES Representation of a dimension hierarchy
ALL_DIM_JOIN_KEY Representation of a join between two dimension tables. 
ALL_DIM_LEVELS Description of dimension levels visible to DBA
ALL_DIM_LEVEL_KEY Representations of columns of a dimension level
ALL_DIRECTORIES Description of all directories accessible to the user
ALL_ERRORS Current errors on stored objects that user is allowed to create
ALL_EVALUATION_CONTEXTS rule evaluation contexts seen by user
ALL_EVALUATION_CONTEXT_TABLES tables in all rule evaluation contexts seen by the user
ALL_EVALUATION_CONTEXT_VARS variables in all rule evaluation contexts seen by the user
ALL_EXTERNAL_LOCATIONS Description of the external tables locations accessible to the user
ALL_EXTERNAL_TABLES Description of the external tables accessible to the user
ALL_INDEXES Descriptions of indexes on tables accessible to the user
ALL_INDEXTYPES All indextypes available to the user
ALL_INDEXTYPE_COMMENTS Comments for user-defined indextypes
ALL_INDEXTYPE_OPERATORS All operators available to the user
ALL_IND_COLUMNS COLUMNs comprising INDEXes on accessible TABLES
ALL_IND_EXPRESSIONS FUNCTIONAL INDEX EXPRESSIONs on accessible TABLES
ALL_IND_PARTITIONS
ALL_IND_SUBPARTITIONS
ALL_INTERNAL_TRIGGERS Description of the internal triggers on the tables accessible to the user
ALL_JOIN_IND_COLUMNS Join Index columns comprising the join conditions
ALL_LIBRARIES Description of libraries accessible to the user
ALL_LOBS Description of LOBs contained in tables accessible to the user
ALL_LOB_PARTITIONS
ALL_LOB_SUBPARTITIONS
ALL_LOB_TEMPLATES
ALL_LOG_GROUPS Log group definitions on accessible tables
ALL_LOG_GROUP_COLUMNS Information about columns in log group definitions
ALL_METHOD_PARAMS Description of method parameters of types accessible
to the user
ALL_METHOD_RESULTS Description of method results of types accessible
to the user
ALL_MVIEWS All materialized views in the database
ALL_MVIEW_AGGREGATES Description of the materialized view aggregates accessible to the user
ALL_MVIEW_ANALYSIS Description of the materialized views accessible to the user
ALL_MVIEW_DETAIL_RELATIONS Description of the materialized view detail tables accessible to the user
ALL_MVIEW_JOINS Description of a join between two columns in the
WHERE clause of a materialized view accessible to the user
ALL_MVIEW_KEYS Description of the columns that appear in the GROUP BY
list of a materialized view accessible to the user
ALL_MVIEW_LOGS All materialized view logs in the database that the user can see
ALL_MVIEW_REFRESH_TIMES Materialized views and their last refresh times  for each master table that the user can look at
ALL_NESTED_TABLES Description of nested tables in tables accessible to the user
ALL_OBJECTS Objects accessible to the user
ALL_OBJECT_TABLES Description of all object tables accessible to the user
ALL_OBJ_COLATTRS Description of object columns and attributes contained in the tables accessible to the user
ALL_OPANCILLARY All ancillary operators available to the user
ALL_OPARGUMENTS All arguments of the operators available to the user
ALL_OPBINDINGS All binding functions for operators available to the user
ALL_OPERATORS All operators available to the user
ALL_OPERATOR_COMMENTS Comments for user-defined operators
ALL_PARTIAL_DROP_TABS All tables with patially dropped columns accessible to the user
ALL_PART_COL_STATISTICS
ALL_PART_HISTOGRAMS
ALL_PART_INDEXES
ALL_PART_KEY_COLUMNS
ALL_PART_LOBS
ALL_PART_TABLES
ALL_PENDING_CONV_TABLES All tables accessible to the user which are not upgraded to the latest type version
ALL_POLICIES All policies for objects if the user has system privileges or owns the objects
ALL_POLICY_CONTEXTS All policy driving context defined for all synonyms, tables, or views accessable to the user
ALL_POLICY_GROUPS All policy groups defined for any synonym, table or view accessable to the user
ALL_PROBE_OBJECTS
ALL_PROCEDURES Description of all procedures available to the user
ALL_PROPAGATION Streams propagation seen by the user
ALL_PUBLISHED_COLUMNS
ALL_QUEUES All queues accessible to the user
ALL_QUEUE_PUBLISHERS
ALL_QUEUE_TABLES All queue tables accessible to the user
ALL_REFRESH All the refresh groups that the user can touch
ALL_REFRESH_CHILDREN All the objects in refresh groups, where the user can touch the group
ALL_REFRESH_DEPENDENCIES Description of the detail tables that materialized views depend on for
refresh
ALL_REFS Description of REF columns contained in tables accessible to the user
ALL_REGISTERED_MVIEWS Remote materialized views of local tables that the user can see
ALL_REGISTERED_SNAPSHOTS Remote snapshots of local tables that the user can see
ALL_REGISTRY_BANNERS
ALL_REPAUDIT_ATTRIBUTE Information about attributes automatically maintained for replication
ALL_REPAUDIT_COLUMN Information about columns in all shadow tables for replicated tables which are accessible to the user
ALL_REPCAT
ALL_REPCATLOG Information about asynchronous administration requests
ALL_REPCOLUMN Replicated top-level columns (table) sorted alphabetically in ascending order
ALL_REPCOLUMN_GROUP All column groups of replicated tables which are accessible to the user
ALL_REPCONFLICT All conflicts with available resolutions for user’s replicated tables
ALL_REPDDL Arguments that do not fit in a single repcat log record
ALL_REPFLAVORS Flavors defined for replicated object groups
ALL_REPFLAVOR_COLUMNS Replicated columns in flavors
ALL_REPFLAVOR_OBJECTS Replicated objects in flavors
ALL_REPGENERATED Objects generated to support replication
ALL_REPGENOBJECTS Objects generated to support replication
ALL_REPGROUP Information about replicated object groups
ALL_REPGROUPED_COLUMN Columns in the all column groups of replicated tables which are accessible to the user
ALL_REPGROUP_PRIVILEGES Information about users who are registered for object group privileges
ALL_REPKEY_COLUMNS Primary columns for a table using column-level replication
ALL_REPOBJECT Information about replicated objects
ALL_REPPARAMETER_COLUMN All columns used for resolving conflicts in replicated tables which are accessible to the user
ALL_REPPRIORITY Values and their corresponding priorities in all priority groups which are accessible to the user
ALL_REPPRIORITY_GROUP Information about all priority groups which are accessible to the user
ALL_REPPROP Propagation information about replicated objects
ALL_REPRESOLUTION Description of all conflict resolutions for replicated tables which are accessible to the user
ALL_REPRESOLUTION_METHOD All conflict resolution methods accessible to the user
ALL_REPRESOLUTION_STATISTICS Statistics for conflict resolutions for replicated tables which are accessible to the user
ALL_REPRESOL_STATS_CONTROL Information about statistics collection for conflict resolutions for replicated tables which are accessible to the user
ALL_REPSCHEMA N-way replication information
ALL_REPSITES N-way replication information
ALL_RULES Rules seen by the user
ALL_RULESETS Rulesets seen by the user: maintained for backward compatibility
ALL_RULE_SETS Rule sets seen by the user
ALL_RULE_SET_RULES Rules in all rule sets seen by the user
ALL_SECONDARY_OBJECTS All secondary objects for domain indexes
ALL_SEQUENCES Description of SEQUENCEs accessible to the user
ALL_SNAPSHOTS Snapshots the user can access
ALL_SNAPSHOT_LOGS All snapshot logs in the database that the user can see
ALL_SOURCE Current source on stored objects that user is allowed to create
ALL_SOURCE_TABLES
ALL_SOURCE_TAB_COLUMNS
ALL_SQLJ_TYPES Description of types accessible to the user
ALL_SQLJ_TYPE_ATTRS Description of attributes of types accessible to the user
ALL_SQLJ_TYPE_METHODS Description of methods of types accessible to the user
ALL_STORED_SETTINGS Parameter settings for objects accessible to the user
ALL_STREAMS_GLOBAL_RULES Global rules created on the streams capture/apply/propagation process that interact with the queue visible to the current user
ALL_STREAMS_SCHEMA_RULES Rules created by streams administrative APIs on all user schemas
ALL_STREAMS_TABLE_RULES Rules created by streams administrative APIs on tables visible to the current user
ALL_SUBPARTITION_TEMPLATES
ALL_SUBPART_COL_STATISTICS
ALL_SUBPART_HISTOGRAMS
ALL_SUBPART_KEY_COLUMNS
ALL_SUBSCRIBED_COLUMNS
ALL_SUBSCRIBED_TABLES
ALL_SUBSCRIPTIONS
ALL_SUMDELTA Direct path load entries accessible to the user
ALL_SUMMARIES Description of the summaries accessible to the user
ALL_SYNONYMS All synonyms accessible to the user
ALL_TABLES Description of relational tables accessible to the user
ALL_TAB_COLS Columns of user’s tables, views and clusters
ALL_TAB_COLUMNS Columns of user’s tables, views and clusters
ALL_TAB_COL_STATISTICS Columns of user’s tables, views and clusters
ALL_TAB_COMMENTS Comments on tables and views accessible to the user
ALL_TAB_HISTOGRAMS Histograms on columns of all tables visible to user
ALL_TAB_MODIFICATIONS Information regarding modifications to tables
ALL_TAB_PARTITIONS
ALL_TAB_PRIVS Grants on objects for which the user is the grantor, grantee, owner,
 or an enabled role or PUBLIC is the grantee
ALL_TAB_PRIVS_MADE User’s grants and grants on user’s objects
ALL_TAB_PRIVS_RECD Grants on objects for which the user, PUBLIC or enabled role is the grantee
ALL_TAB_SUBPARTITIONS
ALL_TRIGGERS Triggers accessible to the current user
ALL_TRIGGER_COLS Column usage in user’s triggers or in triggers on user’s tables
ALL_TYPES Description of types accessible to the user
ALL_TYPE_ATTRS Description of attributes of types accessible to the user
ALL_TYPE_METHODS Description of methods of types accessible to the user
ALL_TYPE_VERSIONS Description of each type version accessible to the user
ALL_UNUSED_COL_TABS All tables with unused columns accessible to the user
ALL_UPDATABLE_COLUMNS Description of all updatable columns
ALL_USERS Information about all users of the database
ALL_USTATS All statistics
ALL_VARRAYS Description of varrays in tables accessible to the user
ALL_VIEWS Description of views accessible to the user
USER_ALL_TABLES Description of all object and relational tables owned by the user’s
USER_AQ_AGENT_PRIVS
USER_ARGUMENTS Arguments in object accessible to the user
USER_ASSOCIATIONS All assocations defined by the user
USER_ATTRIBUTE_TRANSFORMATIONS
USER_AUDIT_OBJECT Audit trail records for statements concerning objects, specifically: table, cluster, view, index, sequence,  [public] database link, [public] synonym, procedure, trigger, rollback segment, tablespace, role, user
USER_AUDIT_POLICIES All fine grained auditing policies for objects in user schema
USER_AUDIT_SESSION All audit trail records concerning CONNECT and DISCONNECT
USER_AUDIT_STATEMENT Audit trail records concerning  grant, revoke, audit, noaudit and alter system
USER_AUDIT_TRAIL Audit trail entries relevant to the user
USER_AWS Analytic Workspaces owned by the user
USER_AW_PS Pagespaces in Analytic Workspaces owned by the user
USER_BASE_TABLE_MVIEWS All materialized views with log(s) owned by the user in the database
USER_CATALOG Tables, Views, Synonyms and Sequences owned by the user
USER_CLUSTERS Descriptions of user’s own clusters
USER_CLUSTER_HASH_EXPRESSIONS Hash functions for the user’s hash clusters
USER_CLU_COLUMNS Mapping of table columns to cluster columns
USER_COLL_TYPES Description of the user’s own named collection types
USER_COL_COMMENTS Comments on columns of user’s tables and views
USER_COL_PRIVS Grants on columns for which the user is the owner, grantor or grantee
USER_COL_PRIVS_MADE All grants on columns of objects owned by the user
USER_COL_PRIVS_RECD Grants on columns for which the user is the grantee
USER_CONSTRAINTS Constraint definitions on user’s own tables
USER_CONS_COLUMNS Information about accessible columns in constraint definitions
USER_CONS_OBJ_COLUMNS List of types an object column or attribute is constrained to in the tables owned by the user
USER_DB_LINKS Database links owned by the user
USER_DEPENDENCIES Dependencies to and from a users objects
USER_DIMENSIONS Description of the dimension objects accessible to the DBA
USER_DIM_ATTRIBUTES Representation of the relationship between a dimension level and
 a functionally dependent column
USER_DIM_CHILD_OF Representaion of a 1:n hierarchical relationship between a pair of levels in
 a dimension
USER_DIM_HIERARCHIES Representation of a dimension hierarchy
USER_DIM_JOIN_KEY Representation of a join between two dimension tables. 
USER_DIM_LEVELS Description of dimension levels visible to DBA
USER_DIM_LEVEL_KEY Representations of columns of a dimension level
USER_ERRORS Current errors on stored objects owned by the user
USER_EVALUATION_CONTEXTS rule evaluation contexts owned by user
USER_EVALUATION_CONTEXT_TABLES tables in user rule evaluation contexts
USER_EVALUATION_CONTEXT_VARS variables in user rule evaluation contexts
USER_EXTENTS Extents comprising segments owned by the user
USER_EXTERNAL_LOCATIONS Description of the user’s external tables locations
USER_EXTERNAL_TABLES Description of the user’s own external tables
USER_FREE_SPACE Free extents in tablespaces accessible to the user
USER_INDEXES Description of the user’s own indexes
USER_INDEXTYPES All user indextypes
USER_INDEXTYPE_COMMENTS Comments for user-defined indextypes
USER_INDEXTYPE_OPERATORS All user indextype operators
USER_IND_COLUMNS COLUMNs comprising user’s INDEXes and INDEXes on user’s TABLES
USER_IND_EXPRESSIONS Functional index expressions in user’s indexes and indexes on user’s tables
USER_IND_PARTITIONS
USER_IND_SUBPARTITIONS
USER_INTERNAL_TRIGGERS Description of the internal triggers on the user’s own tables
USER_JOBS All jobs owned by this user
USER_JOIN_IND_COLUMNS Join Index columns comprising the join conditions
USER_LIBRARIES Description of the user’s own libraries
USER_LOBS Description of the user’s own LOBs contained in the user’s own tables
USER_LOB_PARTITIONS
USER_LOB_SUBPARTITIONS
USER_LOB_TEMPLATES
USER_LOG_GROUPS Log group definitions on user’s own tables
USER_LOG_GROUP_COLUMNS Information about columns in log group definitions
USER_METHOD_PARAMS Description of method parameters of the user’s own types
USER_METHOD_RESULTS Description of method results of the user’s own types
USER_MVIEWS All materialized views in the database
USER_MVIEW_AGGREGATES Description of the materialized view aggregates created by the user
USER_MVIEW_ANALYSIS Description of the materialized views created by the user
USER_MVIEW_DETAIL_RELATIONS Description of the materialized view detail tables of the materialized
views created by the user
USER_MVIEW_JOINS Description of a join between two columns in the
WHERE clause of a materialized view created by the user
USER_MVIEW_KEYS Description of the columns that appear in the GROUP BY
list of a materialized view  created by the user
USER_MVIEW_LOGS All materialized view logs owned by the user
USER_MVIEW_REFRESH_TIMES Materialized views and their last refresh times for each master table that the user can look at
USER_NESTED_TABLES Description of nested tables contained in the user’s own tables
USER_OBJECTS Objects owned by the user
USER_OBJECT_SIZE Sizes, in bytes, of various pl/sql objects
USER_OBJECT_TABLES Description of the user’s own object tables
USER_OBJ_AUDIT_OPTS Auditing options for user’s own tables and views
USER_OBJ_COLATTRS Description of object columns and attributes contained in tables owned by the user
USER_OPANCILLARY All ancillary opertors defined by user
USER_OPARGUMENTS All operator arguments of operators defined by user
USER_OPBINDINGS All binding functions or methods on operators defined by the user
USER_OPERATORS All user operators
USER_OPERATOR_COMMENTS Comments for user-defined operators
USER_OUTLINES Stored outlines owned by the user
USER_OUTLINE_HINTS Hints stored in outlines owned by the user
USER_PARTIAL_DROP_TABS User tables with unused columns
USER_PART_COL_STATISTICS
USER_PART_HISTOGRAMS
USER_PART_INDEXES
USER_PART_KEY_COLUMNS
USER_PART_LOBS
USER_PART_TABLES
USER_PASSWORD_LIMITS Display password limits of the user
USER_PENDING_CONV_TABLES All user’s tables which are not upgraded to the latest type version
USER_POLICIES All row level security policies for synonyms, tables, or views owned by the user
USER_POLICY_CONTEXTS All policy driving context defined for synonyms, tables, or views in current schema
USER_POLICY_GROUPS All policy groups defined for any synonym, table, or view
USER_PROCEDURES Description of the users own procedures
USER_PROXIES Description of connections the user is allowed to proxy
USER_PUBLISHED_COLUMNS
USER_QUEUES All queues owned by the user
USER_QUEUE_PUBLISHERS
USER_QUEUE_SCHEDULES
USER_QUEUE_TABLES All queue tables created by the user
USER_REFRESH All the refresh groups
USER_REFRESH_CHILDREN All the objects in refresh groups, where the user owns the refresh group
USER_REFS Description of the user’s own REF columns contained in the user’s own tables
USER_REGISTERED_MVIEWS Remote materialized views of local tables currently using logs owned by the user
USER_REGISTERED_SNAPSHOTS Remote snapshots of local tables currently using logs owned by the user
USER_REGISTRY
USER_REPAUDIT_ATTRIBUTE Information about attributes automatically maintained for replication
USER_REPAUDIT_COLUMN Information about columns in all shadow tables for user’s replicated tables
USER_REPCAT
USER_REPCATLOG Information about the current user’s asynchronous administration requests
USER_REPCOLUMN Replicated columns for the current user’s table in ascending order
USER_REPCOLUMN_GROUP All column groups of user’s replicated tables
USER_REPCONFLICT
USER_REPDDL Arguments that do not fit in a single repcat log record
USER_REPFLAVORS Flavors current user created for replicated object groups
USER_REPFLAVOR_COLUMNS Replicated columns from current user’s tables in flavors
USER_REPFLAVOR_OBJECTS Replicated user objects in flavors
USER_REPGENERATED Objects generated for the current user to support replication
USER_REPGENOBJECTS Objects generated for the current user to support replication
USER_REPGROUP Replication information about the current user
USER_REPGROUPED_COLUMN Columns in the all column groups of user’s replicated tables
USER_REPGROUP_PRIVILEGES Information about users who are registered for object group privileges
USER_REPKEY_COLUMNS Primary columns for a table using column-level replication
USER_REPOBJECT Replication information about the current user’s objects
USER_REPPARAMETER_COLUMN All columns used for resolving conflicts in user’s replicated tables
USER_REPPRIORITY Values and their corresponding priorities in user’s priority groups
USER_REPPRIORITY_GROUP Information about user’s priority groups
USER_REPPROP Propagation information about the current user’s objects
USER_REPRESOLUTION Description of all conflict resolutions for user’s replicated tables
USER_REPRESOLUTION_METHOD All conflict resolution methods accessible to the user
USER_REPRESOLUTION_STATISTICS Statistics for conflict resolutions for user’s replicated tables
USER_REPRESOL_STATS_CONTROL Information about statistics collection for conflict resolutions for user’s replicated tables
USER_REPSCHEMA N-way replication information about the current user
USER_REPSITES N-way replication information about the current user
USER_RESOURCE_LIMITS Display resource limit of the user
USER_RESUMABLE Resumable session information for current user
USER_ROLE_PRIVS Roles granted to current user
USER_RSRC_CONSUMER_GROUP_PRIVS Switch privileges for consumer groups for the user
USER_RSRC_MANAGER_SYSTEM_PRIVS system privileges for the resource manager for the user
USER_RULES Rules owned by the user
USER_RULESETS Rulesets owned by the user: maintained for backward compatibility
USER_RULE_SETS Rule sets owned by the user
USER_RULE_SET_RULES Rules in user rule sets
USER_SECONDARY_OBJECTS All secondary objects for domain indexes
USER_SEGMENTS Storage allocated for all database segments
USER_SEQUENCES Description of the user’s own SEQUENCEs
USER_SNAPSHOTS Snapshots the user can look at
USER_SNAPSHOT_LOGS All snapshot logs owned by the user
USER_SOURCE Source of stored objects accessible to the user
USER_SOURCE_TABLES
USER_SOURCE_TAB_COLUMNS
USER_SQLJ_TYPES Description of the user’s own types
USER_SQLJ_TYPE_ATTRS Description of attributes of the user’s own types
USER_SQLJ_TYPE_METHODS Description of methods of the user’s own types
USER_STORED_SETTINGS Parameter settings for objects owned by the user
USER_SUBPARTITION_TEMPLATES
USER_SUBPART_COL_STATISTICS
USER_SUBPART_HISTOGRAMS
USER_SUBPART_KEY_COLUMNS
USER_SUBSCRIBED_COLUMNS
USER_SUBSCRIBED_TABLES
USER_SUBSCRIPTIONS
USER_SUMMARIES Description of the summaries created by the user
USER_SYNONYMS The user’s private synonyms
USER_SYS_PRIVS System privileges granted to current user
USER_TABLES Description of the user’s own relational tables
USER_TABLESPACES Description of accessible tablespaces
USER_TAB_COLS Columns of user’s tables, views and clusters
USER_TAB_COLUMNS Columns of user’s tables, views and clusters
USER_TAB_COL_STATISTICS Columns of user’s tables, views and clusters
USER_TAB_COMMENTS Comments on the tables and views owned by the user
USER_TAB_HISTOGRAMS Histograms on columns of user’s tables
USER_TAB_MODIFICATIONS Information regarding modifications to tables
USER_TAB_PARTITIONS
USER_TAB_PRIVS Grants on objects for which the user is the owner, grantor or grantee
USER_TAB_PRIVS_MADE All grants on objects owned by the user
USER_TAB_PRIVS_RECD Grants on objects for which the user is the grantee
USER_TAB_SUBPARTITIONS
USER_TRANSFORMATIONS
USER_TRIGGERS Triggers owned by the user
USER_TRIGGER_COLS Column usage in user’s triggers
USER_TS_QUOTAS Tablespace quotas for the user
USER_TYPES Description of the user’s own types
USER_TYPE_ATTRS Description of attributes of the user’s own types
USER_TYPE_METHODS Description of methods of the user’s own types
USER_TYPE_VERSIONS Description of each version of the user’s types
USER_UNUSED_COL_TABS User tables with unused columns
USER_UPDATABLE_COLUMNS Description of updatable columns
USER_USERS Information about the current user
USER_USTATS All statistics on tables or indexes owned by the user
USER_VARRAYS Description of varrays contained in the user’s own tables
USER_VIEWS Description of the user’s own views
AUDIT_ACTIONS Description table for audit trail action type codes.  Maps action type numbers to action type names
COLUMN_PRIVILEGES Grants on columns for which the user is the grantor, grantee, owner, or
 an enabled role or PUBLIC is the grantee
DATABASE_COMPATIBLE_LEVEL Database compatible parameter set via init.ora
DBMS_ALERT_INFO
DBMS_LOCK_ALLOCATED
DICTIONARY Description of data dictionary tables and views
DICT_COLUMNS Description of columns in data dictionary tables and views
DUAL  
GLOBAL_NAME global database name
INDEX_HISTOGRAM statistics on keys with repeat count
INDEX_STATS statistics on the b-tree
NLS_DATABASE_PARAMETERS Permanent NLS parameters of the database
NLS_INSTANCE_PARAMETERS NLS parameters of the instance
NLS_SESSION_PARAMETERS NLS parameters of the user session
RESOURCE_COST Cost for each resource
ROLE_ROLE_PRIVS Roles which are granted to roles
ROLE_SYS_PRIVS System privileges granted to roles
ROLE_TAB_PRIVS Table privileges granted to roles
SESSION_PRIVS Privileges which the user currently has set
SESSION_ROLES Roles which the user currently has enabled.
TABLE_PRIVILEGES Grants on objects for which the user is the grantor, grantee, owner,
 or an enabled role or PUBLIC is the grantee
ALL_HISTOGRAMS Synonym for ALL_TAB_HISTOGRAMS
ALL_JOBS Synonym for USER_JOBS
ALL_OUTLINES Synonym for USER_OUTLINES
ALL_OUTLINE_HINTS Synonym for USER_OUTLINE_HINTS
ALL_SNAPSHOT_REFRESH_TIMES Synonym for ALL_MVIEW_REFRESH_TIMES
CAT Synonym for USER_CATALOG
CLU Synonym for USER_CLUSTERS
COLS Synonym for USER_TAB_COLUMNS
DICT Synonym for DICTIONARY
GV$ACTIVE_INSTANCES Synonym for GV_$ACTIVE_INSTANCES
GV$ACTIVE_SESS_POOL_MTH Synonym for GV_$ACTIVE_SESS_POOL_MTH
GV$AW_CALC Synonym for GV_$AW_CALC
GV$AW_OLAP Synonym for GV_$AW_OLAP
GV$AW_SESSION_INFO Synonym for GV_$AW_SESSION_INFO
GV$BH Synonym for GV_$BH
GV$LOADISTAT Synonym for GV_$LOADISTAT
GV$LOADPSTAT Synonym for GV_$LOADPSTAT
GV$LOCK_ACTIVITY Synonym for GV_$LOCK_ACTIVITY
GV$MAX_ACTIVE_SESS_TARGET_MTH Synonym for GV_$MAX_ACTIVE_SESS_TARGET_MTH
GV$MLS_PARAMETERS Synonym for GV_$MLS_PARAMETERS
GV$NLS_PARAMETERS Synonym for GV_$NLS_PARAMETERS
GV$NLS_VALID_VALUES Synonym for GV_$NLS_VALID_VALUES
GV$OPTION Synonym for GV_$OPTION
GV$PARALLEL_DEGREE_LIMIT_MTH Synonym for GV_$PARALLEL_DEGREE_LIMIT_MTH
GV$PQ_SESSTAT Synonym for GV_$PQ_SESSTAT
GV$PQ_TQSTAT Synonym for GV_$PQ_TQSTAT
GV$QUEUEING_MTH Synonym for GV_$QUEUEING_MTH
GV$RSRC_CONSUMER_GROUP Synonym for GV_$RSRC_CONSUMER_GROUP
GV$RSRC_CONSUMER_GROUP_CPU_MTH Synonym for GV_$RSRC_CONSUME_GROUP_CPU_MTH
GV$RSRC_PLAN Synonym for GV_$RSRC_PLAN
GV$RSRC_PLAN_CPU_MTH Synonym for GV_$RSRC_PLAN_CPU_MTH
GV$SESSION_LONGOPS Synonym for GV_$SESSION_LONGOPS
GV$TEMPORARY_LOBS Synonym for GV_$TEMPORARY_LOBS
GV$TIMEZONE_NAMES Synonym for GV_$TIMEZONE_NAMES
GV$VERSION Synonym for GV_$VERSION
IND Synonym for USER_INDEXES
OBJ Synonym for USER_OBJECTS
SEQ Synonym for USER_SEQUENCES
SM$VERSION Synonym for SM_$VERSION
SYN Synonym for USER_SYNONYMS
TABS Synonym for USER_TABLES
USER_HISTOGRAMS Synonym for USER_TAB_HISTOGRAMS
USER_SNAPSHOT_REFRESH_TIMES Synonym for USER_MVIEW_REFRESH_TIMES
V$ACTIVE_INSTANCES Synonym for V_$ACTIVE_INSTANCES
V$ACTIVE_SESS_POOL_MTH Synonym for V_$ACTIVE_SESS_POOL_MTH
V$AW_CALC Synonym for V_$AW_CALC
V$AW_OLAP Synonym for V_$AW_OLAP
V$AW_SESSION_INFO Synonym for V_$AW_SESSION_INFO
V$BH Synonym for V_$BH
V$INSTANCE Synonym for V_$INSTANCE
V$LOADISTAT Synonym for V_$LOADISTAT
V$LOADPSTAT Synonym for V_$LOADPSTAT
V$LOCK_ACTIVITY Synonym for V_$LOCK_ACTIVITY
V$MAX_ACTIVE_SESS_TARGET_MTH Synonym for V_$MAX_ACTIVE_SESS_TARGET_MTH
V$MLS_PARAMETERS Synonym for V_$MLS_PARAMETERS
V$NLS_PARAMETERS Synonym for V_$NLS_PARAMETERS
V$NLS_VALID_VALUES Synonym for V_$NLS_VALID_VALUES
V$OPTION Synonym for V_$OPTION
V$PARALLEL_DEGREE_LIMIT_MTH Synonym for V_$PARALLEL_DEGREE_LIMIT_MTH
V$PARAMETER Synonym for V_$PARAMETER
V$PQ_SESSTAT Synonym for V_$PQ_SESSTAT
V$PQ_TQSTAT Synonym for V_$PQ_TQSTAT
V$QUEUEING_MTH Synonym for V_$QUEUEING_MTH
V$RSRC_CONSUMER_GROUP Synonym for V_$RSRC_CONSUMER_GROUP
V$RSRC_CONSUMER_GROUP_CPU_MTH Synonym for V_$RSRC_CONSUMER_GROUP_CPU_MTH
V$RSRC_PLAN Synonym for V_$RSRC_PLAN
V$RSRC_PLAN_CPU_MTH Synonym for V_$RSRC_PLAN_CPU_MTH
V$SESSION Synonym for V_$SESSION
V$SESSION_CONNECT_INFO Synonym for V_$SESSION_CONNECT_INFO
V$SESSION_LONGOPS Synonym for V_$SESSION_LONGOPS
V$SQLAREA Synonym for V_$SQLAREA
V$SQLTEXT Synonym for V_$SQLTEXT
V$SYSTEM_PARAMETER Synonym for V_$SYSTEM_PARAMETER
V$TEMPORARY_LOBS Synonym for V_$TEMPORARY_LOBS
V$TIMEZONE_NAMES Synonym for V_$TIMEZONE_NAMES
V$VERSION Synonym for V_$VERSION


Basándonos en el resultado  anterior  vamos a  ver algunas consultas sencillas ,por ejemplo:

  • Podemos lanzar  una consulta  que muestra los datos de una tabla especificada.En este caso filtramos  por todas las tablas que lleven la cadena “XXX”:  select * from ALL_ALL_TABLES where upper(table_name) like ‘%XXX%’
  • Consulta  que muestra las descripciones de los campos de una tabla especificada, peor en este caso con todas las tablas que lleven la cadena “XXX”: select * from ALL_COL_COMMENTS where upper(table_name) like ‘%XXX%’
  • Consulta para conocer las tablas propiedad del usuario actual: select * from user_tables
  • Consulta  para conocer todos los objetos propiedad del usuario conectado a Oracle  select * from user_catalog

 

 

Extracion de documentos en Oracle text

Vamos a ver como desde diferentes lenguajes podemos extraer información almacenada en una BBDD Oracle por medio de CLOB’s


Oracle incorpora un tipo de datos llamado BLOB que permite almacenar documentos de cualquier tipo (imágenes, excel, word, access, comprimidos, vídeos, música, etc). En principio admite cualquier tipo de documento y de cualquier tamaño aunque aún sigue manteniendo el tipo de datos LONG RAW que está obsoleto, sustituido por BLOB. Las instrucciones que os mostramos a continuación admiten ambos tipos de datos: BLOB y LOB RAW.

 

Insertar o extraer documentos  desde Visual Basic

Para poder insertar documentos en un campo BLOB de Oracle con Visual Basic necesitaremos una librería (dll) llamada SAFileMgr Module (SAFileMgr.dll), esta librería está disponible de forma gratuita en la web http://www.softartisans.com. Tras descargar este fichero, deberemos copiarlo a la carpeta del sistema (normalmente C:/Windows/System32) y registrarlo con el comando:  regsvr32 C:/Windows/System32/SAFileMgr.dll .  Tras copiar y registrar el fichero SAFileMgr.dll, también necesitaremos disponer de una base de datos Oracle activa

Tras tener la tabla creada con el campo BLOB, procederemos a abrir Visual Basic y a crear un nuevo proyecto para insertar y extraer documentos en Oracle. En la ventana de “Nuevo proyecto” seleccionaremos “EXE estándar” y pulsaremos “Abrir”:Para que la aplicación funcione correctamente deberemos agregar las referencias necesarias. Para ello pulsaremos en el menú “Proyecto ” – “Referencias” de Visual Basic:Seleccionaremos la referencia FileMgr 1.1:Si no aparece en la lista, pulsaremos en Examinar y seleccionaremos el fichero .dll copiado y registrado anteriormente:C:/Windows/System32/SAFileMgr.dll y seleccionaremos también Microsoft ActiveX Data Objects 2.6 Library: Si no aparece en la lista, pulsaremos en Examinar y seleccionaremos el fichero ubicado en: C:/Archivos de programa/Archivos comunes/system/ado/msado26.tlb

 

Ahora veamos el código de cada uno de los tres  botones de un  formulario tipo para lanzar una consulta de inserción o extracción de un documento :

  • Para el botón “Insertar documento“:

Private Sub btInsertarDocumento_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

Dim FileMgr As New FileManager

Dim SQL As String

On Error GoTo cError

‘ Conexión mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text, _

txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos una consulta SQL sobre la tabla  para activar el recordset

SQL = “Select * from ” + txtTabla.Text + ” where 1=2″

Rs.Open SQL, Conn, 2, 3

‘ Añadimos un nuevo registro con los datos indicados

Rs.AddNew

Rs(txtCampoTitulo.Text).Value = txtDocumentoTitulo.Text

Rs(txtCampoRutaDocumento.Text).Value = txtDocumento.Text

‘ Insertamos el documento en el campo BLOB/RAW

FileMgr.ExportToBlob txtDocumento.Text, Rs(txtCampoBLOB.Text)

Rs.Update

Rs.Close

Conn.Close

Set Conn = Nothing

MsgBox “Documento insertado correctamente en ” + “la base de datos: ” + vbCrLf + vbCrLf + txtDocumento.Text, vbOKOnly + vbInformation

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

  • Para el botón “Ejecutar“:

Private Sub btEjecutar_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

On Error GoTo cError

‘ Conexión a Oracle mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text,  txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos consulta SQL introducida por el usuario

Rs.Open txtSQL.Text, Conn, 0, 1

txtExtraerTitulo.Text = Rs(txtCampoTitulo.Text)

txtDestino.Text = Rs(txtCampoRutaDocumento.Text)

Rs.Close

Conn.Close

Set Conn = Nothing

MsgBox “Consulta SQL ejecutada correctamente.”,  vbOKOnly + vbInformation

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

  • Para el botón “Ejecutar“:

Private Sub btExtraer_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

Dim FileMgr As New FileManager

Dim continuar As Boolean

On Error GoTo cError

‘ Conexión a Oracle mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text, _

txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos consulta SQL introducida por el usuario 

Rs.Open txtSQL.Text, Conn, 0, 1

‘ Comprobamos si existe ya un fichero destino

‘ con el mismo nombre

continuar = False

If Dir(txtDestino.Text) <> “” Then

continuar = MsgBox(“Ya existe un documento ” + “con este nombre ¿desea reemplazarlo?”, vbYesNo + vbQuestion) = vbYes

Else

continuar = True

End If

‘ Extraemos el documento del primer   registro de la consulta SQL  en el destino especificado por el usuario

If continuar Then

FileMgr.ImportFromBlob Rs(txtCampoBLOB.Text), txtDestino.Text

MsgBox “Fichero extraído correctamente en: ” + vbCrLf + vbCrLf +  txtDestino.Text, vbOKOnly + vbInformation

End If

Rs.Close

Conn.Close

Set Conn = Nothing

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

 

Extracción desde java

 

Ahora  veamos  usando el lenguaje   Java un ejemplo de como podemos extraer  documentos almacenados en  CLOB’s   en una base de Datos Oracle Text 9 en Java

Necesitaremos tener instalado el cliente Oracle instalado en la maquina, las credenciales de acceso  ,    asi como referenciar en el proyecto desde el Eclipse las siguientes librerías

 

 

 

Y ahora veamos  un ejemplo de una clase de extracción de campos clob’s

La clase principal es Main , la cual debería seleccionarse al exportar el proyecto desde Eclipse

Se puede ejecutar en local  o crear un pequeño script para invocar el java

En este ejemplo es  obligatorio usar tres argumentos y en este orden  para llamar al programa:

  • nodo= número del nodo a exportar
  • tope = numero de orden donde se quedo la última exportación empezando por cero
  • topefinal= umbral donde termina

 

En el proyecto se han referenciado dos versiones de la MV Java porque puede ocurrir que la MV usada en local ( 1.6 ) sea diferente a la del host  donde se ejecute ( por ejemplo  la 1.4.2_08, razon por la habria que copiar tambien esa version 1.4.2.08  dedseel host  a una ruta local

También se hace referencia al driver de oracle classes12.jar , ruta que también existe en la maquina

 

 

Este proyecto debería exportarse situándose en la raiz del proyecto como un jar sin incluir tanto los ficheros .classspath como el de .project

Antes de compilar debe eliminar manualmente el war existente desde el propio eclipse asi como el log de ejecución (manualmente habría que ubicarse en c:\ users\xxx\workspace\application)

Asimismo por ultimo , al   compilarlo  no debemos incluir el classpath

 

Veamos el código completo;

 

/*
Main.java
*
* Created on 20 de Marzo de 20174, 11:43
*

*/

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import oracle.jdbc.driver.OracleDriver;

/**
* @author CRN
*
* EXTRACTOR DOCUMENTOS
*/

public class Main {

private static int nodo;

private static int tope;

private static int topefinal;

public static void main(final String[] args) {

System.out.println(“Inicializando programa …”);

Connection conn = null;

GestorDeConexiones gc = null;

try{

gc = new GestorDeConexiones(“xxxx”, “yyyyyy”); // credenciales de  acceso a la BBDD con el user y pwd de acceso 

conn = gc.getConnection();

// Comprueba si hay argumentos en la linea de comandos

final int nnodo=1;

if(args.length != 0)
//CON ARGUMENTOS

{
for(int counter = 0; counter < args.length; counter++)
{
System.out.println(“Argument index ” + counter + “: ” + args[counter]);
}

System.out.println(” fin argumentos”);

nodo = Integer.parseInt(args[0]); // primer argumento ( el nodo)

tope = Integer.parseInt(args[1]); //segundo argumento (inicio

topefinal = Integer.parseInt(args[2]); //tercer argumento ( tope)

System.out.println(“Argumento nodo= ” + nodo);
System.out.println(“Argumento conteo incial= ” + tope);
System.out.println(“Argumento numero de documentos= ” + topefinal);

}

else

//SIN ARGUMENTOS

{
System.out.println (“No se ha incluido ningún argumento”);
System.exit(0);
}

System.out.println(“NODO” + nodo);
System.out.println(“Valor inicial= ” + tope);
System.out.println(“Valor final= ” + topefinal);

final String path1 =”d:\”;

final String nfichero= path1+”previa_carga_jd_”+nodo+”tope“+tope+”topefinal_”+ topefinal;

//generacion del fichero de salida

File theDir = new File(nfichero);

if (!theDir.exists())
{
System.out.println(“..creando directorio: ” + theDir.getName()); // SI EL DIRECTORIO NO EXISTE ,. SE CREA
boolean result = false;
try{
theDir.mkdir();

result = true;
}
catch(SecurityException se){   //handle it
}
if(result) {
System.out.println(“Directorio creado”);
}
}

//Intentamos cambiar los permisos al directorio creado
System.out.println(“Cambiamos permisos 777 a “+nfichero);
Process theProcess = null;
try
{
theProcess = Runtime.getRuntime().exec(“chmod 777 “+ nfichero);
}
catch(IOException e)
{
System.out.println(“Error en el método exec()”);
}

//creacion fichero de log

final String log1=path1;

final String nfichero1= log1+”directorio_”+nodo+”tope“+tope+”topefinal_”+ topefinal+”.log”;

System.out.println(“Fichero Log de proceso :[” +nfichero1+”]”);
System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);

//generación del fichero de salida

File fichero = new File(nfichero1);

 

if (!fichero.exists())
{

// SI NO EXISTE , SE CREA
System.out.println(“..creando fichero de log: ” + fichero.getName());
boolean result = false;
try{
fichero.createNewFile();

result = true;
}
catch(SecurityException se){ //handle it
}
if(result) {
System.out.println(“Fichero creado”);
}
}

//abre fichero de log
File TextFile = new File(nfichero1);
FileWriter TextOut = new FileWriter(TextFile, true);
TextOut.write(“********************************************************************\r\n”);
TextOut.write(“INICIANDO PROCESO DE EXTRACCIÓN DE DOCUMENTOS r\n”);
TextOut.write(“Fichero Log de proceso :[” +nfichero1+”]\r\n”);
TextOut.close();

String path=nfichero +”/”;

System.out.println (“RUTA DESTINO FINAL”+ path);

//extraemos los objetos de texto
RecuperadorBD2.RecuperarBD2(conn,path, tope,topefinal,nodo,nfichero1);

}
catch (final SQLException sqle) {
System.out.println
(“Error de acceso a BD:” + sqle.getMessage());
sqle.printStackTrace();
}
catch (final IOException ioe){
System.out.println
(“Error de acceso a disco:” + ioe.getMessage());
ioe.printStackTrace();
}

try{
if (gc != null && conn != null)
gc.closeConnection();
}

catch (final SQLException sqle)
{
System.out.println
(“Error de acceso a BD:” + sqle.getMessage());
sqle.printStackTrace();
conn = null;
gc = null;
}
System.out.println(” **** Fin extraccion ****”);
}
}

class RecuperadorBD2
{
public static void RecuperarBD2 (final Connection cn, final String path , final int topec, final int topex, final int nodo ,final String path1)
throws SQLException, IOException
{

 

String topex1= String.valueOf(topex);

String topec1= String.valueOf(topec);

String nnodo= String.valueOf(nodo);

int contador=0;
FileOutputStream fos = null;

Statement st = null;
ResultSet rs = null;

 

final String sql=” SELECT “+
“FROM(SELECT to_number (rownum) cuenta,”+
” p.
“+
” FROM “+
” ( “+
“SELECT c.nodo_co_nodo, “+
” c.infi_nu_infi, “+
” c.docu_co_documento, “+
” d.docu_no_documento, “+
” d.docu_no_extension ,”+
” d.docu_nu_version, “+
” d.DOCU_FX_MODIFICACION fecha,”+
” e.doct_do_documento doc “+
” FROM tablametadatos c, “+
tablaauxiliar d, “+
tabladocumentos e “+
” WHERE c.nodo_co_nodo = ” + nnodo +
” AND c.docu_co_documento =d.docu_co_documento “+
” AND d.docu_co_documento =e.docu_co_documento “+
” AND e.docu_nu_version =d.docu_nu_version “+
” AND c.docu_nu_version =e.docu_nu_version “+
” ) “+
” where (cuenta >”+topec1 + ” and cuenta <” +topex1 +” )”;

 

//abre fichero de log
File TextFile = new File(path1);
FileWriter TextOut = new FileWriter(TextFile, true);

System.out.println(“”);
System.out.println(“********************************************************************”);
System.out.println(“COMENZANDO PROCESO INICIAL”) ;
System.out.println(“sql general=”+sql);
System.out.println(“”);

TextOut.write(“********************************************************************\r\n”);
TextOut.write(“COMENZANDO PROCESO INICIAL\r\n”);
TextOut.write(“sql general=”+sql+”\r\n”);

try
{

st = cn.createStatement();
rs = st.executeQuery(sql);

while (rs.next())
{
++contador;
//para blobs
final String verdocu= rs.getString(“docu_no_documento”) ;
System.out.println(“Ndocu =” + verdocu );

final String verinfi =rs.getString(“infi_nu_infi”);
System.out.println(“Infi =” + verinfi );

final String verloc = rs.getString(“docu_co_documento”);
System.out.println(“Cdocc =” + verloc );

final String vernombre= verinfi+”“+verloc + ““+ verdocu;

System.out.println(“Nombre =” + vernombre );

System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);
System.out.println(“Numero fichero a extraer =” + contador );

TextOut.write(“Numero fichero a extraer =” + contador+”\r\n”);

final String nfichero =vernombre; //LE PASAMOS COMO ARGUMENTO EL NOMBRE YA MONTADO:INFI_DOCU+LOC

System.out.println(” Fichero a extraer: ” +nfichero);
TextOut.write(“Fichero a extraer =” + nfichero+”\r\n”);

final String pathname= path + nfichero ;
System.out.println(” Extrayendo fichero multimedia : “+pathname);
TextOut.write(“Extrayendo fichero multimedia =” + pathname +”\r\n”);

//deberíamos comprobar si existe ese fichero
final File file = new File(pathname);

fos = new FileOutputStream(file);
final Blob bin = rs.getBlob(“doc”);
System.out.println(“…Extrayendo BLOB”);
TextOut.write(“Extrayendo BLOB \r\n”);

final InputStream inStream = bin.getBinaryStream();
final int size = (int)bin.length();
System.out.println(“Tamaño: “+size);
TextOut.write(“Tamaño =” + size+”\r\n”);

final byte[] buffer = new byte[size];
int length = -1;

while ((length = inStream.read(buffer)) != -1)
{
fos.write(buffer, 0, length);
}

if (fos != null)

{

//Intentamos cambiar los permisos al directorio creado
TextOut.write(“Fichero extraido ok \r\n”);

permisos777(pathname);
fos.close();
System.out.println(” Fichero extraido ok.”);
System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);
TextOut.write(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n”);

}
}
}
catch (final IOException ioe)
{
throw new IOException(ioe.getMessage());

}
finally
{
if (fos !=null)
{
fos.close();
TextOut.write(“FIN DEL PROCESO \r\n”);
TextOut.close();

}
if (rs !=null)
{
rs.close();

TextOut.close();
}
rs=null;
st=null;

 

 

System.out.println(“Fin RecuperaBD2”);

System.out.println(“FIN PROCESO”) ;

TextOut.close();

}
}

 

//funcion para añadir permisos 777 a los ficheros extraidos 
public static void permisos777 (final String pathname)
{

Process theProcess = null;

//intentamos cambiar los permisos del fichero recién creeado
System.out.println(“Cambiamos permisos 777 a “+pathname);
try
{
theProcess = Runtime.getRuntime().exec(“chmod 777 “+ pathname);
}
catch(IOException e)
{
System.out.println(“Error en el método exec()”);
}
//fin de cambio de permisos

}

}

//clase para gestionar las conexiones con la BBDD

class GestorDeConexiones
{
private final String user;
private final String password;
private Connection conn = null;
private boolean conectado = false;

public GestorDeConexiones(final String usr, final String pwd){
user = usr;
password = pwd;
}

public void closeConnection() throws SQLException{
if (conectado)
conn.close();
}

private void conectar() throws SQLException {

String url;
DriverManager.registerDriver(new OracleDriver());

url = “jdbc:oracle:thin:@x.x.x.x:yyy:cadena”; ///ojo PROD

 

conn = DriverManager.getConnection(url,user, password);
System.out.println(“Conexion correcta”);
conectado = true;

}

public Connection getConnection() throws SQLException
{
if (!conectado)
conectar();
return conn;
}
}

 

 

 

 

Concurso Azure Sphere

Vea todas las oportunidades para aprender, construir y competir por grandes premios con su nuevo kit de Azure Sphere


En la era de IoT, nuestra vida está cada vez más integrada con la tecnología  gracias a la capacidad de los dispositivos de consumo cotidiano, las máquinas industriales, los vehículos y los electrodomésticos para interactuar entre sí mediante la conectividad de Internet integrada ha hecho la vida más fácil y eficiente.

Microsoft ha desarrollado Azure Sphere para el desarrollo de dispositivos de microcontroladores (MCU) altamente seguros compatibles con implementaciones de IoT  , intentando  asegurarse de que los dispositivos innovadores puedan continuar alterando el status quo y mejorando nuestras vidas sin sacrificar el importante aspecto de  nuestra seguridad, aspecto  de los mas  crucial para  que el IoT pueda  seguir evolucionando. 

En este senctido  Microsoft  ha hecho una llamada a todos los ingenieros y desarrolladores de todo el mundo para crear proyectos altamente seguros, impulsados ​​por MCU utilizando Azure Sphere, diseñando formas creativas para asegurar lo que más lo necesita: ¡todo! 

Asegurar sus datos es importante en una gran cantidad de industrias. Aquí hay algunas ideas para comenzar:

  • Integrar Azure Sphere en dispositivos perimetrales de IoT nuevos o existentes
  • Asegurar sus proyectos de electrónica de consumo .
  • Innovaciones en torno al comercio seguro e inteligente
  • Construccion de soluciones robustas y seguras para edificios y domótica.
  • Diseñar soluciones seguras de fábrica.
  • Crear soluciones de energías renovables

La idea  pues es crear un nuevo proyecto en torno al concepto de seguridad o simplemente mejore la seguridad de sus proyectos existentes con su nuevo kit de Azure Sphere  contandoles detalles urante la experiencia. ¿La mejor parte? ¡Avnet está regalando hasta 20,000 Kits de Esfera Azure gratis para que podamos comenzar!

shutterstock_674647300.jpg

 

¿Qué es Microsoft Azure Sphere?

Azure Sphere consta de tres capas de seguridad: en el sistema operativo, en la nube y en la MCU.

  • Seguridad en el sistema operativo:Un SO creado a propósito reepecto a aspectos como  la seguridad y agilidad para crear una plataforma confiable para nuevas experiencias de IoT. Un sistema operativo seguro construye innovaciones de seguridad pioneras en Windows en un HLOS lo suficientemente pequeño para los MCU.

  • Seguridad en la MCU:Asegurado desde y hasta  el silicio  Esta nueva clase cruzada de MCU ahora combina procesadores de aplicaciones y en tiempo real con tecnología de seguridad y conectividad de Microsoft incorporadas.

  • Seguridad en la nube: Protege los dispositivos con una nube construida para la seguridad de IoT. El servicio de seguridad de Azure Sphere renueva la seguridad del dispositivo, identifica las amenazas emergentes y la confianza de los intermediarios entre el dispositivo, la nube y otros puntos finales.

 El hardware

Especificaciones del Carrier Board

  • Dos zócalos de expansión MikroE Click board
  • Conector de expansión Grove (I2C)
  • Sensores a bordo: acelerómetro de 3 ejes, giroscopio de 3 ejes, temperatura, presión / barométrica, luz ambiental
  • Interfaz para pantalla OLED 128×64 opcional
  • Interfaz USB
  • Soporta depuración, servicio y recuperación
  • UARTs, y JTAG
  • Interruptores pulsadores de usuario y LEDs.
  • Regulación de potencia de 5V a 3.3V
  • Entrada de alimentación de CC: USB 5V desde la computadora central y huellas de terminales para suministros externos de 5V DC y VBAT

Módulo Azure Sphere MT3620

  • MediaTek MT3620AN SoC
  • 3 interfaces ISU configuradas para UART, SPI, I2C
  • ADC / GPIO: 3x entradas de ADC de 12 bits (o 3 GPIOs)
  • PWM / GPIO: 9x salidas PWM (o hasta 24 GPIOs)
  • RTC (requiere suministro VBAT)
  • Wi-Fi de banda dual 2.4 / 5GHz 802.11 a / b / g / n
  • Antena chip de doble banda 2.4 / 5GHz

 El software

Tenga en cuenta los escenarios del mundo real: su solución segura deberá tener una transmisión de comunicación diaria con la Nube de Azure para garantizar una conexión protegida continua. Use su kit de desarrollo de Azure Sphere para aprovechar los servicios en la nube de Microsoft..

 

 

Concurso

 

Puede  regístrese para obtener su kit gratuito , eso si deberemos pagar los costes de envío y los impuestos o aranceles aduaneros de su país. !Incluso aún puede participar si su país no es elegible para los kits gratuitos pues si su país no está en la lista, consulte con frecuencia a medida que amplian el  alcance!.(vea todos los países elegibles. )

main-view.jpg

La seguridad es sumamente importante, pero la consistencia en entornos seguros es lo que nos mantiene en línea  por ello buscan que se pueda mostrar el kit de Azure Sphere como puede permanecer en línea durante 30 días consecutivos y de esta modo  será elegible para ganar los  mejores premios.

Una vez que tenga su kit en la mano, conéctelo y regístrelo descargando la pequeña aplicación de Windows para la sincronización diaria con el servidor de concursos.( Por favor revise las instrucciones de registro ) .Más detalles se pueden encontrar en las reglas oficiales.

 SoftWeb Solutions han construido un increíble “mapa de calor” para ver dónde se han conectado nuestros 20,000 kits de Azure Sphere en todo el mundo. Estaremos representado cada vez que realizemos la sincronización diaria y se convierta en parte de la presencia global de Azure Sphere. Échele un vistazo en el Mapa de Calor de Azure Sphere .

Captura de pantalla 2019-07-23 a las 9.40.08 AM.png

 

Este concurso es parte de una campaña más grande de comunidades de Avnet. Vea el desafío Sensing the World de element14, seminarios web, talleres virtuales y más recursos en secureeverything.avnet.com .

e14-01_vv8GvW475C.png

Premios

¡Estan regalando miles de dólares en premios a los 510 mejores proyectos! Un premio por persona: ninguna persona puede ganar el premio total de $ 35,000. Los  jueces elegirán los mejores proyectos calificados según los criterios de evaluación descritos en la sección de reglas. Los premios de Nivel 3 se entregan únicamente en función de los requisitos de elegibilidad.

Tier 1

Para los proyectos que se separan claramente del resto y demostraron creatividad y uso ejemplar de Azure Sphere. Para ser considerado para los premios de Nivel 1, debe hacer ping a la Nube de Azure una vez al día durante 30 días consecutivos.

3 ganadores de Microsoft Hololens  valorasas en $ 3,500

El mejor proyecto de su clase y el diseño de referencia definitivo para Microsoft Azure Sphere.

El nivel 2

Para los proyectos que se separan claramente del resto y demostraron creatividad y uso ejemplar de Azure Sphere. Para ser considerado para los premios de Nivel 2, debe hacer ping a la Nube de Azure una vez al día durante 15 días consecutivos.

7 ganadores de Surface Laptop  valoradas en  $ 1,000

Nivel 3

Para ser elegible para el premio Tier 3, su proyecto debe usar el kit de desarrollo de Azure Sphere. ¡Los proyectos ganarán automáticamente una nueva Raspberry Pi 4! Eche un vistazo a nuestros requisitos de calificación en la pestaña de reglas.

500 ganadores de Raspberry Pi 4 valoradas en  $ 35

Premio Hackster Impact

Únase a Hackster mientras nos unimos a los Objetivos de Desarrollo Sostenible (ODS) delas Naciones Unidas para hacer del mundo de hoy un lugar más inteligente y saludable. El equipo de Hackster seleccionará el proyecto que mejor contribuya a cualquiera de los ODS.Consulte los criterios de evaluación específicos para esta categoría de premios .

5 ganadoresTarjeta de regalo de $ 250 + tarjeta de regalo Adafruit de $ 100 + entrevista en video + másValor de $ 530

El ganador recibirá lo siguiente: 
– una tarjeta de regalo de $ 250; 
– una tarjeta de regalo Adafruit de $ 100 (premio especial para el concurso Secure Everything); 
– una suscripción de 12 meses a Patchr Premium (valor de $ 180); 
– Por último, pero no menos importante, se presentarán en una entrevista en video con el único y único Alex Glow de Hackster.

Por favor, visite la página del Premio Hackster Impact para más información.

Recursos

 

 

Mas info en hackester.io