xaquinvp

Consultas útiles admin BBDD Oracle

Jul 13th, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 11.08 KB | None | 0 0
  1. -- Obtenido de http://www.ots.ac.cr/tech/node/318
  2.  
  3. •• Consulta Oracle SQL sobre la vista que muestra el estado de la base de datos:
  4. SELECT * FROM v$instance
  5.  
  6. •• Consulta Oracle SQL que muestra si la base de datos está abierta
  7. SELECT STATUS FROM v$instance
  8.  
  9. •• Consulta Oracle SQL sobre la vista que muestra los parámetros generales de Oracle
  10. SELECT * FROM v$system_parameter
  11.  
  12. •• Consulta Oracle SQL para conocer la Versión de Oracle
  13. SELECT VALUE FROM v$system_parameter WHERE name = 'compatible'
  14.  
  15. •• Consulta Oracle SQL para conocer la Ubicación y nombre del fichero spfile
  16. SELECT VALUE FROM v$system_parameter WHERE name = 'spfile'
  17.  
  18. •• Consulta Oracle SQL para conocer la Ubicación y número de ficheros de control
  19. SELECT VALUE FROM v$system_parameter WHERE name = 'control_files'
  20.  
  21. •• Consulta Oracle SQL para conocer el Nombre de la base de datos
  22. SELECT VALUE FROM v$system_parameter WHERE name = 'db_name'
  23.  
  24. •• Consulta Oracle SQL sobre la vista que muestra las conexiones actuales a Oracle Para visualizarla es necesario entrar con privilegios de administrador
  25. SELECT osuser, username, machine, program
  26. FROM v$session
  27. ORDER BY osuser
  28.  
  29. •• Consulta Oracle SQL que muestra el número de conexiones actuales a Oracle agrupado por aplicación que realiza la conexión
  30. SELECT program Aplicacion, COUNT(program) Numero_Sesiones
  31. FROM v$session
  32. GROUP BY program
  33. ORDER BY Numero_Sesiones DESC
  34.  
  35. •• Consulta Oracle SQL que muestra los usuarios de Oracle conectados y el número de sesiones por usuario
  36. SELECT username Usuario_Oracle, COUNT(username) Numero_Sesiones
  37. FROM v$session
  38. GROUP BY username
  39. ORDER BY Numero_Sesiones DESC
  40. Propietarios de objetos y número de objetos por propietario
  41. SELECT owner, COUNT(owner) Numero
  42. FROM dba_objects
  43. GROUP BY owner
  44. ORDER BY Numero DESC
  45.  
  46. •• Consulta Oracle SQL sobre el Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos)
  47. SELECT * FROM dictionary
  48.  
  49. •• Consulta Oracle SQL que muestra los datos de una tabla especificada (en este caso todas las tablas que lleven la cadena "XXX"
  50. SELECT * FROM ALL_ALL_TABLES WHERE UPPER(TABLE_NAME) LIKE '%XXX%'
  51.  
  52. •• Consulta Oracle SQL para conocer las tablas propiedad del usuario actual
  53. SELECT * FROM user_tables
  54.  
  55. •• Consulta Oracle SQL para conocer todos los objetos propiedad del usuario conectado a Oracle
  56. SELECT * FROM user_catalog
  57.  
  58. •• Consulta Oracle SQL para el DBA de Oracle que muestra los tablespaces, el espacio utilizado, el espacio libre y los ficheros de datos de los mismos:
  59. SELECT t.tablespace_name "Tablespace", t.STATUS "Estado",
  60. ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño",
  61. ROUND((MAX(d.bytes)/1024/1024) -
  62. (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",
  63. ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres",
  64. t.pct_increase "% incremento",
  65. SUBSTR(d.file_name,1,80) "Fichero de datos"
  66. FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t
  67. WHERE t.tablespace_name = d.tablespace_name AND
  68. f.tablespace_name(+) = d.tablespace_name
  69. AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,
  70. d.file_name, t.pct_increase, t.STATUS ORDER BY 1,3 DESC
  71.  
  72. •• Consulta Oracle SQL para conocer los productos Oracle instalados y la versión:
  73. SELECT * FROM product_component_version
  74.  
  75. •• Consulta Oracle SQL para conocer los roles y privilegios por roles:
  76. SELECT * FROM role_sys_privs
  77.  
  78. •• Consulta Oracle SQL para conocer las reglas de integridad y columna a la que afectan:
  79. SELECT constraint_name, column_name FROM sys.all_cons_columns
  80.  
  81. •• Consulta Oracle SQL para conocer las tablas de las que es propietario un usuario, en este caso "xxx":
  82. SELECT table_owner, TABLE_NAME FROM sys.all_synonyms WHERE table_owner LIKE 'xxx'
  83.  
  84. •• Consulta Oracle SQL como la anterior, pero de otra forma más efectiva (tablas de las que es propietario un usuario):
  85. SELECT DISTINCT TABLE_NAME
  86. FROM ALL_ALL_TABLES
  87. WHERE OWNER LIKE 'HR'
  88. Parámetros de Oracle, valor actual y su descripción:
  89. SELECT v.name, v.VALUE VALUE, decode(ISSYS_MODIFIABLE, 'DEFERRED',
  90. 'TRUE', 'FALSE') ISSYS_MODIFIABLE, decode(v.isDefault, 'TRUE', 'YES',
  91. 'FALSE', 'NO') "DEFAULT", DECODE(ISSES_MODIFIABLE, 'IMMEDIATE',
  92. 'YES','FALSE', 'NO', 'DEFERRED', 'NO', 'YES') SES_MODIFIABLE,
  93. DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES', 'FALSE', 'NO',
  94. 'DEFERRED', 'YES','YES') SYS_MODIFIABLE , v.description
  95. FROM V$PARAMETER v
  96. WHERE name NOT LIKE 'nls%' ORDER BY 1
  97.  
  98. •• Consulta Oracle SQL que muestra los usuarios de Oracle y datos suyos (fecha de creación, estado, id, nombre, tablespace temporal,...):
  99. SELECT * FROM dba_users
  100.  
  101. •• Consulta Oracle SQL para conocer tablespaces y propietarios de los mismos:
  102. SELECT owner, decode(partition_name, NULL, segment_name,
  103. segment_name || ':' || partition_name) name,
  104. segment_type, tablespace_name,bytes,initial_extent,
  105. next_extent, PCT_INCREASE, extents, max_extents
  106. FROM dba_segments
  107. WHERE 1=1 AND extents > 1 ORDER BY 9 DESC, 3
  108. Últimas consultas SQL ejecutadas en Oracle y usuario que las ejecutó:
  109. SELECT DISTINCT vs.sql_text, vs.sharable_mem,
  110. vs.persistent_mem, vs.runtime_mem, vs.sorts,
  111. vs.executions, vs.parse_calls, vs.module,
  112. vs.buffer_gets, vs.disk_reads, vs.version_count,
  113. vs.users_opening, vs.loads,
  114. to_char(to_date(vs.first_load_time,
  115. 'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
  116. rawtohex(vs.address) address, vs.hash_value hash_value ,
  117. rows_processed , vs.command_type, vs.parsing_user_id ,
  118. OPTIMIZER_MODE , au.USERNAME parseuser
  119. FROM v$sqlarea vs , all_users au
  120. WHERE (parsing_user_id != 0) AND
  121. (au.user_id(+)=vs.parsing_user_id)
  122. AND (executions >= 1) ORDER BY buffer_gets/executions DESC
  123.  
  124. •• Consulta Oracle SQL para conocer todos los tablespaces:
  125. SELECT * FROM V$TABLESPACE
  126.  
  127. •• Consulta Oracle SQL para conocer la memoria Share_Pool libre y usada
  128. SELECT name,to_number(VALUE) bytes
  129. FROM v$parameter WHERE name ='shared_pool_size'
  130. UNION ALL
  131. SELECT name,bytes
  132. FROM v$sgastat WHERE pool = 'shared pool' AND name = 'free memory'
  133. Cursores abiertos por usuario
  134. SELECT b.sid, a.username, b.VALUE Cursores_Abiertos
  135. FROM v$session a,
  136. v$sesstat b,
  137. v$statname c
  138. WHERE c.name IN ('opened cursors current')
  139. AND b.statistic# = c.statistic#
  140. AND a.sid = b.sid
  141. AND a.username IS NOT NULL
  142. AND b.VALUE >0
  143. ORDER BY 3
  144.  
  145. •• Consulta Oracle SQL para conocer los aciertos de la caché (no debería superar el 1 por ciento)
  146. SELECT SUM(pins) Ejecuciones, SUM(reloads) Fallos_cache,
  147. trunc(SUM(reloads)/SUM(pins)*100,2) Porcentaje_aciertos
  148. FROM v$librarycache
  149. WHERE namespace IN ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');
  150. Sentencias SQL completas ejecutadas con un texto determinado en el SQL
  151. SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text
  152. FROM v$session c, v$sqltext d
  153. WHERE c.sql_hash_value = d.hash_value
  154. AND UPPER(d.sql_text) LIKE '%WHERE CAMPO LIKE%'
  155. ORDER BY c.sid, d.piece
  156. Una sentencia SQL concreta (filtrado por sid)
  157. SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text
  158. FROM v$session c, v$sqltext d
  159. WHERE c.sql_hash_value = d.hash_value
  160. AND sid = 105
  161. ORDER BY c.sid, d.piece
  162.  
  163. •• Consulta Oracle SQL para conocer el tamaño ocupado por la base de datos
  164. SELECT SUM(BYTES)/1024/1024 MB FROM DBA_EXTENTS
  165.  
  166. •• Consulta Oracle SQL para conocer el tamaño de los ficheros de datos de la base de datos
  167. SELECT SUM(bytes)/1024/1024 MB FROM dba_data_files
  168.  
  169. •• Consulta Oracle SQL para conocer el tamaño ocupado por una tabla concreta sin incluir los índices de la misma
  170. SELECT SUM(bytes)/1024/1024 MB FROM user_segments
  171. WHERE segment_type='TABLE' AND segment_name='NOMBRETABLA'
  172.  
  173. •• Consulta Oracle SQL para conocer el tamaño ocupado por una tabla concreta incluyendo los índices de la misma
  174. SELECT SUM(bytes)/1024/1024 Table_Allocation_MB FROM user_segments
  175. WHERE segment_type IN ('TABLE','INDEX') AND
  176. (segment_name='NOMBRETABLA' OR segment_name IN
  177. (SELECT index_name FROM user_indexes WHERE TABLE_NAME='NOMBRETABLA'))
  178.  
  179. •• Consulta Oracle SQL para conocer el tamaño ocupado por una columna de una tabla
  180. SELECT SUM(vsize('NOMBRECOLUMNA'))/1024/1024 MB FROM NOMBRETABLA
  181.  
  182. •• Consulta Oracle SQL para conocer el espacio ocupado por usuario
  183. SELECT owner, SUM(BYTES)/1024/1024 MB FROM DBA_EXTENTS
  184. GROUP BY owner
  185.  
  186. •• Consulta Oracle SQL para conocer el espacio ocupado por los diferentes segmentos (tablas, índices, undo, ROLLBACK, cluster, ...)
  187. SELECT SEGMENT_TYPE, SUM(BYTES)/1024/1024 MB FROM DBA_EXTENTS
  188. GROUP BY SEGMENT_TYPE
  189.  
  190. •• Consulta Oracle SQL para obtener todas las funciones de Oracle: NVL, ABS, LTRIM, ...
  191. SELECT DISTINCT object_name
  192. FROM all_arguments
  193. WHERE package_name = 'STANDARD'
  194. ORDER BY object_name
  195.  
  196. •• Consulta Oracle SQL para conocer el espacio ocupado por todos los objetos de la base de datos, muestra los objetos que más ocupan primero
  197. SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024 MB FROM DBA_EXTENTS
  198. GROUP BY SEGMENT_NAME
  199. ORDER BY 2 DESC
  200.  
  201. •• Para comparar dentro de un DECODE con parte de un texto del contenido de un campo, es decir, para poder utilizar un LIKE u otras funciones en lugar de la igualdad que toma por defecto el DECODE se puede hacer lo siguiente:
  202.  
  203. SELECT
  204. decode(CAMPO, (SELECT CAMPO FROM dual WHERE CAMPO LIKE 'A%'), 'Campo comienza por A',
  205. (SELECT name FROM dual WHERE name LIKE 'B%'), 'Campo comienza por B',
  206. 'Campo no comienza ni por A ni por B')
  207. FROM TABLA;
  208.  
  209. •• Cuando un tablespace se queda sin espacio se puede ampliar creando un nuevo fichero de datos, o ampliando uno de los existentes.
  210.  
  211. Para consultar el espacio ocupado por cada datafile se puede utilizar la consulta de la lista anterior:
  212.  
  213. Consulta Oracle SQL para el DBA de Oracle que muestra los tablespaces, el espacio utilizado, el espacio libre y los ficheros de datos de los mismos:
  214. SELECT t.tablespace_name "Tablespace", t.STATUS "Estado",
  215. ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño",
  216. ROUND((MAX(d.bytes)/1024/1024) -
  217. (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",
  218. ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres",
  219. t.pct_increase "% incremento",
  220. SUBSTR(d.file_name,1,80) "Fichero de datos"
  221. FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t
  222. WHERE t.tablespace_name = d.tablespace_name AND
  223. f.tablespace_name(+) = d.tablespace_name
  224. AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,
  225. d.file_name, t.pct_increase, t.STATUS ORDER BY 1,3 DESC
  226.  
  227. Una vez que localizamos el datafile que podríamos ampliar ejecutaremos la siguiente sentencia para hacerlo:
  228.  
  229. ALTER DATABASE
  230. DATAFILE '/db/oradata/datafiles/datafile_n.dbf' AUTOEXTEND
  231. ON NEXT 1M MAXSIZE 4000M
  232.  
  233. Con esta sentencia, el datafile continuaría ampliándose hasta llegar a un máximo de 4Gb.
  234.  
  235. Si preferimos crear un nuevo datafile porque los que tenemos ya son demasido grandes, una sentencia que podríamos utilizar es la siguiente:
  236.  
  237. ALTER TABLESPACE "MiTablespace"
  238. ADD
  239. DATAFILE '/db/oradata/datafiles/datafile_m.dbf' SIZE
  240. 100M AUTOEXTEND
  241. ON NEXT 1M MAXSIZE 1000M
  242.  
  243. Crearíamos un nuevo fichero de datos de 100 Mb, y en modo autoextensible hasta 1000 Mb. Por supuesto, el path especificado debe ser el específico de cada base de datos, y se debe utilizar para todo el proceso un usuario con privilegios de DBA.
Advertisement
Add Comment
Please, Sign In to add comment