1. Utilizar LIKE con underscore "_"
Para ello hay que definir el caracer de "escape" que en el primer ejemplo es "\" y en el segundo "!"
--1. Aquí "_" es un comodin y actua parecido que "%" SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%_OT' ORDER BY COLUMN_NAME; --2. En estos 2 casos le decimos el carcter de escape y va bien SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%\_OT' ESCAPE '\' ORDER BY COLUMN_NAME; SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%!_OT' ESCAPE '!' ORDER BY COLUMN_NAME;
2. Crear una tabla que contenga el nombre de la tabla y el números de registro para descartar tablas vacias
--1. Aquí "_" es un comodin y actua parecido que "%" SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%_OT' ORDER BY COLUMN_NAME; --2. En estos 2 casos le decimos el carcter de escape y va bien SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%\_OT' ESCAPE '\' ORDER BY COLUMN_NAME; SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%!_OT' ESCAPE '!' ORDER BY COLUMN_NAME;
3. TABLESPACES y DATAFILES
--01. Eliminar un tablespace
DROP TABLESPACE UN_TABLESPACE;
--02. Eliminar un tablespace en cascada
DROP TABLESPACE LOBDTS INCLUDING CONTENTS CASCADE CONSTRAINTS;
--03. Renombrar un tablespace
ALTER TABLESPACE UN_TABLESPACE RENAME TO DOS_TABLESPACE;
--04. No se puede borrar un DATAFILE, pero si poner fuera de línea.
-- Una vez fuera de línea, se puede borrar por sistema operativo.
-- Pero no se puede crear otro DATAFILE con la misma ruta, pues parece ser que se la guarda internamente!!!
ALTER DATABASE DATAFILE '/opt/oracle/oradata/ORCLCDB/lobdts1.dbf' OFFLINE DROP;
--05. Listar los TABLESPACES
SELECT * FROM USER_TABLESPACES ORDER BY TABLESPACE_NAME;
--06. Listar los TABLESPACES
SELECT * FROM DBA_DATA_FILES ORDER BY TABLESPACE_NAME
5. Procesos bloqueantes
A veces no hay manera de borrar una tabla pues hay un proceso trabando en ella. Para listar y matar procesos se hace:
--07. view processes that block tables. Get SID and SERIAL#
SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S,
V$PROCESS P, V$SQL SQ
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR
AND S.SQL_ADDRESS = SQ.ADDRESS;
--08. kill processes that block tables passing SID and SERIAL# as parameters
alter system kill session '12,32060'; --SID=12--> and SERIAL#=32060
4. Funciones analiticas
Es un poco rollo, y lo abandono de momento.
Syntaxis general:
Function(arg1,..., argn) OVER ( [PARTITION BY <...>] [ORDER BY <....>] [<window_clause>] )
<window_clause> is like "ROW <?>" or "RANK <?>"
No hay comentarios :
Publicar un comentario