0% found this document useful (0 votes)
82 views30 pages

Comandos DBA Útiles

This document provides instructions for stopping and starting Data Guard replication on an Oracle database. It includes the SQL commands to cancel replication on the standby database, disable and enable archive logging on both the primary and standby databases, and recover the standby database after replication has been stopped.

Uploaded by

hedsal2013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
82 views30 pages

Comandos DBA Útiles

This document provides instructions for stopping and starting Data Guard replication on an Oracle database. It includes the SQL commands to cancel replication on the standby database, disable and enable archive logging on both the primary and standby databases, and recover the standby database after replication has been stopped.

Uploaded by

hedsal2013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 30

parar e iniciar replicaci�n data guard (SAC)

PARA DETENER LA REPLICACION:


En la Standby en cualquiera de los nodos:

i) SQL>alter database recover managed standby database cancel;


ii) SQL> alter system set log_archive_dest_state_2='DEFER' sid='*';

En cualquiera de los nodos de la Primaria:

i) SQL> alter system set log_archive_dest_state_2='DEFER' sid='*';

PARA REACTIVAR LA REPLICACION:


En cualquiera de los nodos de la Primaria:

i) SQL> alter system set log_archive_dest_state_2='ENABLE' sid='*';

En la Standby en cualquiera de los nodos:


i) SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
ii) SQL> alter system set log_archive_dest_state_2='ENABLE' sid='*';

***********************************************************************************
*******************************************************

Conectarse al cat�logo de RMAN

rman target / catalog rc/rc@rman

restore controlfile from '/tmp/gkp9mh5q_1_1CART';

Restauraci�n Standby

alter database mount standby database;

catalog start with '/export/home/oracle/bck_cart';

ALTER DATABASE CREATE STANDBY CONTROLFILE AS


'/export/home/oracle/bck_cont/control_fsby_cont.ctl';

INSERT INTO USERS VALUES('co1019005760', 'NILTON SANCHEZ VILLARREAL',


MD5('1234ABCD.'),3)

/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

select owner, object_type, count(1) as Cantidad from dba_objects where owner in


('LPORTAL', 'ADMINISTRACION', 'DOCUMENTOS', 'PLAN') group by owner, object_type
order by 1;

Ingresar al sql plus cuando las variables de entorno no est�n configuradas

cd
. ./.profile_BD
export ORACLE_HOME=SID de la instancia
***********************************************************************************
**************************
Export e import de una base de datos

exp file=E:\BACKUPXE\export_XE.dmp full=yes log=E:\BACKUPXE\export_xe.log


buffer=1000000

`date '+-%d-%m-%y'`

expdp sys/Siete+1=8@nom FULL=Y directory=BACKUP_EXP dumpfile=nomfull.dmp


logfile=expdpnomfull.log

expdp FULL=Y directory=BACKUP_EXP dumpfile=nomfull.dmp logfile=expdpnomfull.log


content=metadata_only
/
***********************************************************************************
************************/
expdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp
logfile=expdpEMP_DEPT.log

impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp


logfile=impdpEMP_DEPT.log

expdp \"/ as sysdba\" DIRECTORY=DATAPUMP_DIR DUMPFILE=exp_full_BDMETALO_`date +%d-


%m-%y`.dmp LOGFILE=exp_full_BDMETALO_`date +%d-%m-%y`.log FULL=Y PARALLEL=2

"/
***********************************************************************************
**************************/

impdp sys/metsys@siust FULL=Y directory=SICOM_BCK


dumpfile=EXPDP_SICOMPRU_10_12_2012_8PM.dmp logfile=sicompru.log CONTENT=DATA_ONLY
PARALLEL=3 JOB_NAME=imp_par REMAP_SCHEMA=sh:scott

impdp \"/ as sysdba\" directory=BK_BIMENSUAL dumpfile=TBLCOMPEN_31052013_17118_


%U.dmp logfile=COMPEN.log CONTENT=DATA_ONLY PARALLEL=4 JOB_NAME=IMP_COMPEN
REMAP_SCHEMA=COMPEN:BIMENSUAL
"
create directory SICOM_BCK as 'E:\SICOM BCK';

impdp sys/oracle FULL=Y directory=SICOM_BCK


dumpfile=EXPDP_SICOMPROD_10_24_2012_6PM.dmp logfile=sicomprod.log

dumpfile=archivof_%U.dmp

impdp \'/ as sysdba\' schemas=KACTUS directory=BACKUP_EXP1


dumpfile=KACTUS_22032013_11011_%U.dmp TABLE_EXISTS_ACTION=APPEND
logfile=expdpKACTUS.log
'
create directory SICOM_BCK as 'E:\SICOM BCK';

create or replace directory ETICA_BCK as '/bk_etica/backups/export';

select * from dba_directories;

expdp sys/s1n4pas1s@apprt schemas=APP_PAC directory=BACKUP_EXP1


dumpfile=APP_PAC.dmp logfile=expdpAPP_PAC.log

impdp sys/welcome1@prubfami schemas=APP_PAC directory=BACKUP_EXP1


dumpfile=APP_PAC.dmp logfile=expdpAPP_PAC.log

expdp schemas=APP_TUTELAS directory=BACKUP_EXP1 dumpfile=APP_TUTELAS.dmp


logfile=expdpAPP_TUTELAS.log

expdp \'/ as sysdba\' schemas=APP_TUTELAS directory=BACKUP_EXP1


dumpfile=APP_TUTELAS.dmp logfile=expdpAPP_TUTELAS.log
***********************************************************************************
**************************************************
ALTER SYSTEM SWITCH LOGFILE and ALTER SYSTEM ARCHIVELOG CURRENT

'**********************************************************************************
***************************************************
FLASHBACK TABLE

SELECT * FROM employee AS OF TIMESTAMP


TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS');

INSERT INTO employee


(SELECT * FROM employee AS OF TIMESTAMP
TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
WHERE name = 'JOHN');

***********************************************************************************
***************************************************
Ver el n�mero de sesi�n de un proceso

SELECT DISTINCT SESSION_ID, SESSION_SERIAL#, MACHINE,PROGRAM, MODULE, U.USERNAME


FROM v$active_session_history S, DBA_USERS U WHERE
SQL_ID IN (select SQL_ID from v$sqlarea where upper(sql_text) like '%ACTDATOS%')
AND U.USER_ID=S.USER_ID

PARA BUSCAR EL SID, SERIAL# Y LOS DATOS DE QUIEN EJECUTO UN PROCEDIMIENTO O LO


QUERAMOS BUSCAR EN EL sql:text

***********************************************************************************
*************************************************
Formateo de la fecha y hora de la sesi�n

ALTER SESSION SET NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss';


***********************************************************************************
*************************************************
Ubicaci�n de los traces

/alertlogs/admin/famisana/udump
/
***********************************************************************************
****************************************************/
Generar awr

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

***********************************************************************************
*************************************************
Validaci�n de Listeners

ps -fea | grep inh

lsnrctl status [Nombre Listener]


***********************************************************************************
*************************************************

Subir y bajar bases de datos en RAC

srvctl stop database -d sac

***********************************************************************************
*************************************************
N�mero de sesiones

select sum(case when status='ACTIVE' then 1 else 0 end) CONEXIONES_ACTIVAS,


sum(case when status='INACTIVE' then 1 else 0 end) CONEXIONES_INACTIVAS,
sum(case when status='SNIPPED' then 1 else 0 end) CONEXIONES_SNIPED,
sum(case when status='KILLED' then 1 else 0 end) CONEXIONES_KILLED
from v$session
group by 1,2,3,4;

***********************************************************************************
***********************************
Sesiones bloqueantes

SELECT
decode(L.TYPE,'TM','TABLE','TX','Record(s)') TYPE_LOCK,
decode(L.REQUEST,0,'NO','YES') WAIT,
S.OSUSER OSUSER_LOCKER,
S.PROCESS PROCESS_LOCKER,
S.USERNAME DBUSER_LOCKER,
O.OBJECT_NAME OBJECT_NAME,
O.OBJECT_TYPE OBJECT_TYPE,
concat(' ',s.PROGRAM) PROGRAM,
O.OWNER OWNER,
s.sid,
p.spid
FROM v$lock l,dba_objects o,v$session s, v$process p
WHERE l.ID1 = o.OBJECT_ID
AND s.SID =l.SID
and s.paddr = p.addr
AND l.TYPE in ('TM','TX');

***********************************************************************************
*************************************************

Matar sesiones con alto consumo en un query espec�fico


set head off
SELECT 'kill -9 ' || p.spid AS "--kill"
FROM v$session s, v$process p
WHERE s.paddr = p.addr
and s.sql_id IN ('3ckfdkz30yz90');

ALTER SYSTEM KILL SESSION 'sid,serial#';

Cambiar periodo de retenci�n para AWR

EXEC dbms_workload_repository.modify_snapshot_settings(interval=>minutos);

ej:EXEC dbms_workload_repository.modify_snapshot_settings(interval=>30);

**************************************************************************
Informaci�n de sesiones

SELECT
s.sid,s.process,spid,s.serial#,s.sql_id,s.username,s.machine,s.terminal,s.osuser,s.
program,
s.module,s.logon_time,w.EVENT,w.SECONDS_IN_WAIT
FROM v$session s, v$process p, v$session_wait w
WHERE p.addr = s.paddr AND s.sid = w.sid;

***************************************************************************

Renombrar sin�nimo

DROP PUBLIC SYNONYM FNC_RET_AUTORIZACIONEGRESO;

CREATE PUBLIC SYNONYM FNC_RET_AUTORIZACIONEGRESO1 FOR


"PUBLIC".FNC_RET_AUTORIZACIONEGRESO@"LK_PRUBFAMI.NUEVAEPS.COM.CO";

Filesystems de mayor tama�o

du -hs *

copiar archivos por ftp entre servidores

bash-3.00$ ftp 192.168.88.145


Connected to 192.168.88.145.
220 bdbog003 FTP server ready.
Name (192.168.88.145:ownappor):
331 Password required for ownappor.
Password:
230 User ownappor logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/export/home/ownappor" is current directory.
ftp> cd /backupdp/
250 CWD command successful.
ftp> pwd
257 "/backupdp" is current directory.
ftp> put APP_PAC.dmp
200 PORT command successful.
150 Opening BINARY mode data connection for APP_PAC.dmp.
226 Transfer complete.
local: APP_PAC.dmp remote: APP_PAC.dmp
1568768 bytes sent in 0.063 seconds (24504.24 Kbytes/s)
ftp> bye
221-You have transferred 1568768 bytes in 1 files.
221-Total traffic for this session was 1569302 bytes in 1 transfers.
221-Thank you for using the FTP service on bdbog003.
221 Goodbye.
bash-3.00$
********************************************************************************
Aumentar PGA
ALTER SYSTEM SET pga_aggregate_target=14G SCOPE=SPFILE

********************************************************************************
paralelismo de sesion

alter session force parallel query parallel 4;

uname -a ---> Versi�n de Unix

run
{
backup archivelog all delete input format 'E:\Backup\sicomprod\Archive\arch_%d_%u_
%s';
}
*******************************************************************************
ubicaci�n ALERT LOG

select value from v$parameter where name = 'background_dump_dest';

show parameter BACKGROUND_DUMP_DEST


*******************************************************************************

Permisos de lectura de todas las tablas de un usuario a otro

SELECT 'GRANT SELECT ON APOTRT.'||OBJECT_NAME||' TO APOTEOSYS;' FROM DBA_OBJECTS


WHERE OWNER='APOTRT' AND OBJECT_TYPE='TABLE';

********************************************************************************
Cambiar SID de ORACLE

1. startup database in mount mode


shutdown immediate
startup mount
2. run nid to change database name:
nid target=sys/s1n4ps1s@pruapprt dbname=pruappneps setname=YES
3. shutdown and start database in mount mode:
shutdown immediate
startup mount
4. change db_name in spfile (or in pfile editing the file):
alter system set db_name=newname scope=spfile;
5. recreate password file:
orapwd file=orapwnewname password=syspassword
6. startup the database
startup
7. post rename steps:
change SID in listener.ora
correct tnsnames.ora
remove old trace directories
change /etc/oratab (UNIX) or rename windows service using oradim

***********************************************************************************
*
select name, log_mode from v$database;

alter database archivelog;

SQL> SELECT NAME FROM V$DATAFILE; ? Ruta de datafiles


SQL> SELECT NAME FROM V$CONTROLFILE; ? Ruta controlfile
SQL> SELECT MEMBER FROM V$LOGFILE; ? Ruta redologs
ALTER USER username ACCOUNT LOCK;
ALTER USER username ACCOUNT UNLOCK;

set ORACLE_SID=xyz

Compilar base de datos


en ORACLE_HOME, rdbms/admin/utlrp.sql

#sqlplus /nolog
SQL>conn / as sysdba
SQL>alter user USUARIO identified by CONTRASE�A;

ALTER DATABASE DEFAULT TABLESPACE users;

COLUMN property_name FORMAT A30


COLUMN property_value FORMAT A30
COLUMN description FORMAT A50
SET LINESIZE 200

SELECT *
FROM database_properties
WHERE property_name like '%TABLESPACE';

https://localhost:1158/em

select * from v$version


where banner like 'Oracle%';

SELECT sid,
username,
sql_id,
module
FROM v$session
WHERE sql_id IN ('4t8gnxz6ymhjx')
order by sid;

DECLARE
MYSQL VARCHAR2(250) := 'alter table emp add (mobile varchar2(15))';
IN_USE_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(IN_USE_EXCEPTION, -54);
BEGIN
WHILE TRUE LOOP
BEGIN
EXECUTE IMMEDIATE MYSQL;
EXIT;
EXCEPTION
WHEN IN_USE_EXCEPTION THEN
NULL;
END;
DBMS_LOCK.SLEEP(1);
END LOOP;
END;

*********************************************************************************
SWITCH
*
*********************************************************************************
Alter system switch logfile;
*

*
Alter system checkpoint;
*

*
Alter system flush shared_pool;
*
*********************************************************************************

Compilar Base de datos completa


$ORACLE_HOME/rbdms/admin/utlrp.sql

Compilar objetos inv�lidos


@$ORACLE_HOME/rdbms/admin/utlrp.sql;

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS = 'INVALID'

SELECT OWNER, COUNT(*) FROM ALL_OBJECTS WHERE STATUS='INVALID' GROUP BY OWNER ORDER
BY 2 DESC;

SELECT E.OWNER, E.NAME, E.TYPE, E.SEQUENCE, E.LINE, E.POSITION, E.TEXT, S.TEXT LINE

FROM DBA_ERRORS E, DBA_SOURCE S


WHERE (E.OWNER, E.NAME) IN (SELECT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS
= 'INVALID')
AND E.OWNER = S.OWNER
AND E.NAME = S.NAME
AND E.LINE = S.LINE
ORDER BY 2,3,4

SELECT OWNER, COUNT(OBJECT_NAME) AS CANTIDAD FROM DBA_OBJECTS WHERE


OBJECT_TYPE='TABLE' GROUP BY OWNER;

SELECT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE OWNER IN


('APPQOSSYS','TSMSYS','FLOWS_FILES','UIX') AND OBJECT_TYPE='TABLE'

SELECT NUM,'|', NAME,'|' , ISDEFAULT,'|' , VALUE FROM V$PARAMETER ORDER BY NUM;

SELECT NUM, NAME, ISDEFAULT, VALUE FROM V$PARAMETER ORDER BY NUM;

SELECT PARAMETER, '|', VALUE FROM NLS_DATABASE_PARAMETERS;

***********************************************************************************
**********************
TRABAJO CON TABLESPACES
*
***********************************************************************************
**********************
TABLESPACES

ALTER TABLESPACE DOCLOB


ADD DATAFILE '/data/oracle/sigp/doclob08.dbf'
SIZE 5120M
AUTOEXTEND ON
NEXT 100M
MAXSIZE UNLIMITED;
ALTER DATABASE
DATAFILE '/data/oracle/sigp/doclob03.dbf'
RESIZE 8192M;
ALTER DATABASE
DATAFILE '/data/oracle/sigp/doclob08.dbf'
AUTOEXTEND OFF;

SELECT * FROM DBA_TABLESPACES ORDER BY TABLESPACE_NAME;

TAMA�O DE TABLESPACES Y PORCENTAJE DE USO

select ddf.TABLESPACE_NAME,
round(ddf.BYTES/1024/1024,2) SIZE_MB,
round(dfs.BYTES/1024/1024,2) FREE_MB,
round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) PERCENT_USED
from (select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_data_files
group by TABLESPACE_NAME) ddf,
(select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_free_space
group by TABLESPACE_NAME) dfs
where ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME
--and dfs.TABLESPACE_NAME in ('DATA_REGISTRO')
order by ddf.TABLESPACE_NAME asc;

DATAFILES DE CADA TABLESPACE

SELECT TABLESPACE_NAME, FILE_NAME,


ROUND( BYTES/1024/1024,2) "MB",
ROUND( MAXBYTES/1024/1024,2) "MB MAX"
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME='DATA_ONLINE'
ORDER BY TABLESPACE_NAME, FILE_NAME;

CAMBIO DE TAMA�O DE UN TABLESPACE

ALTER DATABASE
DATAFILE '/u01/app/oracle/product/10.2.0/oradata/cesaora/indacademico.dbf'
RESIZE 185M;

Manejando Datafiles en Oracle


Para ver todos los datafiles de una base de datos:

SQL> desc dba_data_files


Name Null? Type
----------------------------------- -------- ------------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)

Seteamos la pantalla de SQLPLUS

SQL> col file_name format a60


SQL> set linesize 120

SQL> select file_name, file_id, relative_fno from dba_data_files;

FILE_NAME FILE_ID
RELATIVE_FNO
------------------------------------------ ---------- ------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSTEM01.DBF 1
1
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\UNDOTBS01.DBF 2
2
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSAUX01.DBF 3
3
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\USERS01.DBF 4
4
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\TSEJEMPLOS1 5
5
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA1.DBF 6
6
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\BIG.DBF 7
1024
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\DF16K.DBF 8
8
8 rows selected.

Todos los datafile de tipo Big tendran como nro relativo 1024
------------------------------------------------------------------
Saber el nro maximo de datafile que puede tener su base de datos
Parametro: DB_FILES
SQL> show parameter db_files

NAME TYPE VALUE


------------------------------ ----------- ----------------------
db_files integer 200

Para modificar este parametro debemos parar la instancia, modificarlo y volver a


arrancar la instancia.
En el Control File tambien hay un parametro que es el MAX DataFILE que tambien
influye en la cantidad de datafiles que puede tener la bd

Ubicar los datafiles

Tipos de Datafile
Datafile de Alta disponibilidad
Datafiles de Baja disponibilidad
Datafiles de Solo Lectura
Datafile del Sistema
Redo Log Files

Crear y Modificar Datafiles


Cuando creamos un tablespaces normal o temporal debemos especificar aunque sea un
datafile, se puede crear mas de 1 datafile:
Create tablespace....
Create temporary tablespace....

Cuando deseamos a�adir un datafile a un tablespaces regular y temporal usamos �sta


sentencia:
Se usa cuando queremos ampliar el espacio de un tablespace y no podemos hacer
crecer mas los datafiles existentes

Alter tablespace ... add datafile...


Alter tablespace .... add tempfile...

Cuando creamos la base de datos, se crean los datafiles iniciales, sin el datafile
del sistema no hay base de datos:

Create Database....

Con esta sentencia se suelen crear datafiles que ya existian pero se perdieron y no
hay copias, se recrea el datafile pero est� vacio:

Alter Database .... create datafile....

Para crear un datafile hay que ver varias cosas:


Parametro: DB_CREATE_FILE_DEST
Si este parametro est� vacio, siempre que creemos un datafiles tendremos que
colocar la ruta completa de destino.
Lo mejor es siempre especificar su ruta y nombre al datafile
Tema tama�o del datafile, es decir su capacidad de crecimiento
Cuando lo creamos usamos el parametro size que dir� cual es el tama�o incial de ese
datafile y se reservar� en el disco ese tama�o. Cuando se llene el datafile,
debemos especificar si queremos que crezca �l solo o que no admita mas cambios.

Esto se consigue con la clausula AUTEXTEND ON NEXT, cuando un datafile est� lleno y
quiera agregar una extension mas, se extender� tanto como le pusimos
en AUTEXTEND ON NEXT para que pueda ser agregada la extension al datafile.
Tambien tenemos el MAXSIZE que sirve para dar limite al tama�o del datafile, por
mas que le demos que crezca solo siempre puede tener un limite,
podemos poner un valor y sino inlimited que indica que puede crecer hasta que le de
espacio el disco, osea su limite ser� la capacidad de disco

A�ADIR UN DATAFILES A UN TABLESPACES EXISTENTE:


PRIMERO:
Para ver qu� datafiles tenemos y en qu� tablespaces est�n:

SQL> col tablespace_name format a20


SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
--------------------------------------------------------- ---------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSTEM01.DBF SYSTEM
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\UNDOTBS01.DBF UNDOTBS1
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSAUX01.DBF SYSAUX
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\USERS01.DBF USERS
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\TSEJEMPLOS1 TSEJEMPLOS
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA1.DBF TBPRUEBA
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\BIG.DBF TBBIG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\DF16K.DBF TB16KB
8 rows selected.

* Crear un datafile en el tablespace tbprueba


SQL> alter tablespace tbprueba
2 add datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
3 size 5m
4 autoextend on next 1m
5 maxsize 100m;

-----------------------------------------------------------------
* Una pregunta se plantea, como hacemos crecer manualmente un datafile?

SQL> alter database datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'


resize 10m;
Database altered.
------------------------------------------------------------------

* Modificar la disponibilidad de los datafiles.


Todo va a depender si nuestra base de datos esta trabajando en Archive log o no.
Si esta en modo ArchiveLog, no habra drama se puede poner offline:

SQL> alter database datafile ............. offline / online

Si esta en modo NoArchivelog no se puede poner offline a menos que sea para
eliminarlo, porque una vez puesto offline no se podra poner online:

SQL> alter database datafile ............. offline for drop

Ejemplo:
Como nuestra base esta en modo archivelog:

SQL> alter database datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'


2 offline;
Database altered.

SQL> alter database datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'


2 online;
alter database datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA2.DBF'

Como no esta sincronizado el datafile con el resto de los datafile da error y pide
que se haga recovery
Para sincronizar un datafile que se quedo offline se hace el recover.

SQL> recover datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf';


Media recovery complete.
Volvemos a poner el datafile online:
SQL> alter database datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
2 online;
Database altered.

Para tareas admin es recomendable poner TODO el tablespace offline y no solo por
datafiles
-------------------------------------------------------------------
RENOMBRAR Y REUBICAR DATAFILES
PASOS:
1) PONER EL TABLESPACE OFFLINE
Si quiero mover un datafile, tengo que saber a que tablespace pertenece

Por ejemplo el datafile 'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'


pertenece al Tablespace tbprueba

SQL> alter tablespace tbprueba offline;


Tablespace altered.

2) RENOMBRAR O REUBICAR EL ARCHIVO EN EL S.O.


Por ej: muevo desde el explorador el archivo y lo coloco dentro de la carpeta
OtroDisco

3) alter tablespace .... rename datafile .... to .....


SQl> alter tablespace tbprueba rename datafile 'C:\Oracle\product\10.2.0\oradata\
db00pro\prueba2.dbf' to 'C:\Oracle\product\10.2.0\oradata\db00pro\OtroDisco\
prueba2.dbf';
Tablespace altered.
Con esto informo al controlfile que este datafile esta en la sig ubicacion

4) Poner el tablespace online y hacer un backup de la base de datos


SQL> alter tablespace tbprueba online;
Tablespace altered.
NO OLVIDAR DE HACER UNA COPIA DEL CONTROLFILE!!!!!!!!!!!!!

--------------------------------------------------------------

ELIMINAR DATAFILE
alter tablespace .... drop datafile -----> borra los archivos del SO
Alter tablespace ......... datafile .... drop including datafiles -----> sino
coloco including no borra lo del SO
Requisitos para borrar:
El datafile tiene que estar abierto, tiene que estar online
Si no est� vac�o, no se puede borrar, si tiene extensiones no se puede borrar
No puede ser el unico datafile de un tablespace
No puede pertenecer a un tablespace en Read Only
no puede pertenecer al tablespace System ni Sysaux
********************************************************************
Ubicaci�n de la zona de archives

show parameters DB_RECOVERY_FILE_DEST

Modificar Tama�o de area de archives

alter system set db_recovery_file_dest_size=3G scope=both;

********************************************************************

select ddf.TABLESPACE_NAME,
round(ddf.BYTES/1024/1024,2) SIZE_MB,
round(dfs.BYTES/1024/1024,2) FREE_MB,
round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) PERCENT_USED
from (select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_data_files
group by TABLESPACE_NAME) ddf,
(select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_free_space
group by TABLESPACE_NAME) dfs
where ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME
order by ddf.TABLESPACE_NAME asc;

Usuarios perfiles y roles

select (select value from v$system_parameter where name = 'db_name') as Aplicativo,


(select utl_inaddr.get_host_address IP from dual) as Servidor,
(select utl_inaddr.get_host_name IP from dual) as Hostname,
a.username as usuario,
A.PROFILE as Perfil,
a.account_status as Estado,
b.granted_role as Role
from dba_users a
left join user_role_privs b on A.USERNAME=B.USERNAME
order by 1,2,3;

Usuarios administradores

select (select value from v$system_parameter where name = 'db_name') as Aplicativo,


(select utl_inaddr.get_host_address IP from dual) as Servidor,
(select utl_inaddr.get_host_name IP from dual) as Hostname,
a.username as usuario,
A.PROFILE as Perfil,
a.account_status as Estado,
b.granted_role as Role
from dba_users a
left join dba_role_privs b on A.USERNAME=B.GRANTEE
where b.granted_role in ('ADMINISTRADOR', 'ADMINISTRATOR', 'DBA',
'AQ_ADMINISTRATOR_ROLE' )
order by 1,2,3;

--INFORME MENSUAL DE USUARIOS

select DISTINCT (select value from v$system_parameter where name = 'db_name') as


Aplicativo,
--(select utl_inaddr.get_host_address IP from dual) as Servidor,
(select UPPER(utl_inaddr.get_host_name) from dual) as SERVIDOR,
a.username as usuario,
A.PROFILE as Perfil,
a.PASSWORD,
a.account_status as Estado,
--b.granted_role as Role,
(case when a.username in
('ANONYMOUS','CTXSYS','DBSNMP','DIP','DMSYS','ERPWADM','EXFSYS','MDDATA','MDSYS','M
GMT_VIEW','OLAPSYS','ORACLE_OCM','ORDPLUGINS','ORDSYS','OUTLN','SCOTT','SI_INFORMTN
_SCHEMA','SYS','SYSMAN','SYSTEM','TSMSYS','WMSYS','XDB') then 'BASES DE DATOS'
when a.username in ('BMCUSER','PATROL') then 'MONITOREO'
WHEN substr(a.username,1,2)='CO' and decode(REGEXP_INSTR
(substr(a.username,3,20), '[^[:digit:]]'),0,'NUMBER','NOT_NUMBER')='NUMBER' THEN
'SYNAPSIS' ELSE 'ENTIDAD' END) AS Grupo
from dba_users a
left join dba_role_privs b on A.USERNAME=B.GRANTEE
where a.account_status like 'OPEN' or a.account_status like 'EXPIRED%'
order by 1,2,3;

SELECT * FROM DBA_USERS;

SELECT * FROM DBA_ROLES;

SELECT * FROM DBA_SYS_PRIVS;

SELECT * FROM DBA_TAB_PRIVS;

SELECT * FROM DBA_ROLE_PRIVS;

SELECT * FROM ALL_DEF_AUDIT_OPTS;

SELECT * FROM DBA_STMT_AUDIT_OPTS;

SELECT * FROM DBA_PRIV_AUDIT_OPTS;

SELECT * FROM DBA_OBJ_AUDIT_OPTS;

SELECT * FROM DBA_JOBS;

SELECT * FROM DBA_SEQUENCES WHERE SEQUENCE_OWNER NOT IN


('SYS','SYSTEM','WMSYS','PUBLIC');

SELECT * FROM DBA_OBJECTS WHERE OWNER NOT IN ('SYS','SYSTEM','WMSYS','PUBLIC');

SELECT * FROM DBA_VIEWS WHERE OWNER NOT IN ('SYS','SYSTEM','WMSYS');

SELECT * FROM DBA_DB_LINKS;

********************************
USUARIOS CON ALTO CONSUMO DE CPU*
********************************

set linesize 200;


SELECT s.sid, s.serial#, p.spid as "OS PID",s.username, s.module, st.value/100 as
"CPU sec"
FROM v$sesstat st, v$statname sn, v$session s, v$process p
WHERE sn.name = 'CPU used by this session' -- CPU
AND st.statistic# = sn.statistic#
AND st.sid = s.sid
AND s.paddr = p.addr
AND s.last_call_et < 1800 -- active within last 1/2 hour
AND s.logon_time > (SYSDATE - 240/1440) -- sessions logged on within 4 hours
ORDER BY st.value desc;

***********************************************************************************
*********************************

Una constraint desactivada (disabled, not validated) no realiza la comprobaci�n


para la que fue creada.

alter table nombre_tabla


disable constraint nombre_constraint;
Una constraint activada (enabled, validated) podremos activarla si la
informaci�n existente cumple la restricci�n. Una vez activada, toda la informaci�n
debe cumplir la restricci�n.

alter table nombre_tabla


enable constraint nombre_constraint;

Una constraint enforce o tambien conocida como obligatoria (enabled, not


validated) la podemos activar aunque los datos existentes no cumplan la
restricci�n. Pero los nuevos datos o modificaciones deben cumplir con la
restricci�n.

alter table nombre_tabla


enforce constraint nombre_constraint;

alter database backup controlfile to trace;


alter database backup controlfile to trace as '/some/arbitrary/path';
alter database backup controlfile to trace as '/some/arbitrary/path' reuse;

SELECT value FROM v$parameter WHERE name = 'background_dump_dest';

Consultas SQL �tiles para obtener informaci�n sobre Oracle Database

Vista que muestra el estado de la base de datos:

select * from v$instance

Consulta que muestra si la base de datos est� abierta:

select status from v$instance

Vista que muestra los par�metros generales de Oracle:

select * from v$system_parameter

Versi�n de Oracle:

select value
from v$system_parameter
where name = 'compatible'

Ubicaci�n y nombre del fichero spfile:

select value
from v$system_parameter
where name = 'spfile'

Ubicaci�n y n�mero de ficheros de control:

select value
from v$system_parameter
where name = 'control_files'

Nombre de la base de datos

select value
from v$system_parameter
where name = 'db_name'

Vista que muestra las conexiones actuales a Oracle:

select osuser, username, machine, program


from v$session
order by osuser

Vista 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

Vista 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

Propietarios de objetos y n�mero de objetos por propietario

select owner, count(owner) Numero


from dba_objects
group by owner
order by Numero desc

Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos):

select * from dictionary

select table_name from dictionary

Muestra los datos de una tabla especificada (en este caso todas las tablas que
lleven la cadena "EMPLO"):

select *
from ALL_ALL_TABLES
where upper(table_name) like '%EMPLO%'

Muestra los disparadores (triggers) de la base de datos Oracle Database:

select *
from ALL_TRIGGERS

Tablas propiedad del usuario actual:

select * from user_tables

Todos los objetos propiedad del usuario conectado a Oracle:

select * from user_catalog


Consulta SQL para el DBA de Oracle que muestra los tablespaces, el espacio
utilizado, el espacio libre y los ficheros de datos de los mismos:

Select t.tablespace_name "Tablespace", t.status "Estado",


ROUND(MAX(d.bytes)/1024/1024,2) "MB Tama�o",
ROUND((MAX(d.bytes)/1024/1024) -
(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",
ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres",
t.pct_increase "% incremento",
SUBSTR(d.file_name,1,80) "Fichero de datos"
FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t
WHERE t.tablespace_name = d.tablespace_name AND
f.tablespace_name(+) = d.tablespace_name
AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,
d.file_name, t.pct_increase, t.status ORDER BY 1,3 DESC

ALTER DATABASE DATAFILE 'C:\ORCL\FACTURACION01.DBF' RESIZE 1000M

Productos Oracle instalados y la versi�n:

select * from product_component_version

Roles y privilegios por roles:

select * from role_sys_privs

Reglas de integridad y columna a la que afectan:

select constraint_name, column_name


from sys.all_cons_columns

Tablas de las que es propietario un usuario, en este caso "HR":

SELECT table_owner, table_name


from sys.all_synonyms
where table_owner like 'HR'

Otra forma m�s efectiva (tablas de las que es propietario un usuario):

SELECT DISTINCT TABLE_NAME


FROM ALL_ALL_TABLES
WHERE OWNER LIKE 'HR'

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

Usuarios de Oracle y todos sus datos (fecha de creaci�n, estado, id, nombre,
tablespace temporal,...):
Select * FROM dba_users

Tablespaces y propietarios de los mismos:

select owner, decode(partition_name, null, segment_name,


segment_name || ':' || partition_name) name,
segment_type, tablespace_name,bytes,initial_extent,
next_extent, PCT_INCREASE, extents, max_extents
from dba_segments
Where 1=1 And extents > 1 order by 9 desc, 3

�ltimas consultas SQL ejecutadas en Oracle y usuario que las ejecut�:

select distinct vs.sql_text, vs.sharable_mem,


vs.persistent_mem, vs.runtime_mem, vs.sorts,
vs.executions, vs.parse_calls, vs.module,
vs.buffer_gets, vs.disk_reads, vs.version_count,
vs.users_opening, vs.loads,
to_char(to_date(vs.first_load_time,
'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value ,
rows_processed , vs.command_type, vs.parsing_user_id ,
OPTIMIZER_MODE , au.USERNAME parseuser
from v$sqlarea vs , all_users au
where (parsing_user_id != 0) AND
(au.user_id(+)=vs.parsing_user_id)
and (executions >= 1) order by buffer_gets/executions desc

Todos los ficheros de datos y su ubicaci�n:

select * from V$DATAFILE

Ficheros temporales:

select * from V$TEMPFILE

Tablespaces:

select * from V$TABLESPACE

Otras vistas muy interesantes:

select * from V$BACKUP

select * from V$ARCHIVE

select * from V$LOG

select * from V$LOGFILE

select * from V$LOGHIST

select * from V$ARCHIVED_LOG

select * from V$DATABASE

Memoria Share_Pool libre y usada:

select name,to_number(value) bytes


from v$parameter where name ='shared_pool_size'
union all
select name,bytes
from v$sgastat where pool = 'shared pool' and name = 'free memory'

Cursores abiertos por usuario:

select b.sid, a.username, b.value Cursores_Abiertos


from v$session a,
v$sesstat b,
v$statname c
where c.name in ('opened cursors current')
and b.statistic# = c.statistic#
and a.sid = b.sid
and a.username is not null
and b.value >0
order by 3

Aciertos de la cach� (no debe superar el 1 por ciento):

select sum(pins) Ejecuciones, sum(reloads) Fallos_cache,


trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos
from v$librarycache
where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');

Sentencias SQL completas ejecutadas con un texto determinado en el SQL:

SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text


FROM v$session c, v$sqltext d
WHERE c.sql_hash_value = d.hash_value
and upper(d.sql_text) like '%WHERE CAMPO LIKE%'
ORDER BY c.sid, d.piece

Una sentencia SQL concreta (filtrado por sid):

SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text


FROM v$session c, v$sqltext d
WHERE c.sql_hash_value = d.hash_value and sid = 105
ORDER BY c.sid, d.piece

Tama�o ocupado por la base de datos

select (a.data_size+b.temp_size+c.redo_size)/1024/1024/1024 "total_size GB"


from ( select sum(bytes) data_size
from v$datafile ) a,
( select nvl(sum(bytes),0) temp_size
from v$tempfile ) b,
( select sum(bytes) redo_size
from v$log ) c;

select sum(BYTES)/1024/1024 MB from DBA_EXTENTS

Tama�o de los ficheros de datos de la base de datos:

select sum(bytes)/1024/1024 MB
from dba_data_files

Tama�o ocupado por una tabla concreta sin incluir los �ndices de la misma
select sum(bytes)/1024/1024 MB
from user_segments
where segment_type='TABLE' and segment_name='NOMBRETABLA'

Tama�o ocupado por una tabla concreta incluyendo los �ndices de la misma

select sum(bytes)/1024/1024 Table_Allocation_MB


from user_segments
where segment_type in ('TABLE','INDEX') and
(segment_name='NOMBRETABLA' or segment_name in
(select index_name
from user_indexes
where table_name='NOMBRETABLA'))

Tama�o ocupado por una columna de una tabla:

select sum(vsize('NOMBRECOLUMNA'))/1024/1024 MB
from NOMBRETABLA

Espacio ocupado por usuario:

SELECT owner, SUM(BYTES)/1024/1024


FROM DBA_EXTENTS MB
GROUP BY owner

Espacio ocupado por los diferentes segmentos (tablas, �ndices, undo, rollback,
cluster, ...):

SELECT SEGMENT_TYPE, SUM(BYTES)/1024/1024


FROM DBA_EXTENTS MB
GROUP BY SEGMENT_TYPE

Espacio ocupado por todos los objetos de la base de datos, muestra los objetos
que m�s ocupan primero:

SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024


FROM DBA_EXTENTS MB
GROUP BY SEGMENT_NAME
ORDER BY 2 DESC

Obtener todas las funciones de Oracle: NVL, ABS, LTRIM, ...:

SELECT distinct object_name


FROM all_arguments
WHERE package_name = 'STANDARD'
order by object_name

Obtener los roles existentes en Oracle Database:

select * from DBA_ROLES

Obtener los privilegios otorgados a un rol de Oracle:

select privilege
from dba_sys_privs
where grantee = 'NOMBRE_ROL'

Obtener la IP del servidor de la base de datos Oracle Database:


select utl_inaddr.get_host_address IP
from dual

Mostrar datos de auditor�a de la base de datos Oracle (inicio y desconexi�n de


sesiones):

select username, action_name, priv_used, returncode


from dba_audit_trail

Comprobar si la auditor�a de la base de datos Oracle est� activada:

select name, value


from v$parameter
where name like 'audit_trail'

Lanzar trace sobre una sesi�n

Ubicar datos de sesiones

SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION( sid, serial#, TRUE/FALSE );

select sid, serial# from sys.v_$session;

SELECT USERNAME, SID, SERIAL#, MACHINE, TERMINAL, PROGRAM


FROM SYS.V_$SESSION
WHERE USERNAME = 'usuario';

select username, sid, serial# from v$session where username='APOTRT';

Lanzar Trace
execute dbms_system.set_sql_trace_in_session(sid, serial#, true);
execute dbms_system.set_sql_trace_in_session(366, 11440, true);

Formatear trace
tkprof input.trc output.txt

Ubicar los trace lanzados para cada sesi�n

column username format a10


column trace_file format a70

select b.username, b.SID, c.value || '/' || lower(d.value) || '_ora_' ||


to_char(a.spid, 'fm00000') || '.trc' "TRACE_FILE"
from v$process a, v$session b, v$parameter c, v$parameter d
where a.addr = b.paddr
and c.name = 'user_dump_dest'
and d.name = 'db_name'
and b.username is not null
and b.SID=;

APOTRT 972 /alertlogs/admin/appneps/udump/appneps_ora_24319.trc

select * from v$instance;


select * from v$database;
select FILE#, creation_time, sTATUS, ENABLED, BYTES, BLOCKS, NAME from
v$datafile;
select * from v$controlfile;
select * from v$logfile;
Select TABLESPACE_NAME, STATUS, CONTENTS, LOGGING, FORCE_LOGGING from
dba_tablespaces;

select
SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,
to_char(END_TIME,'mm/dd/yy hh24:mi') end_time,
elapsed_seconds/3600 hrs
from V$RMAN_BACKUP_JOB_DETAILS
WHERE TRUNC(START_TIME)>TRUNC(SYSDATE-5)
order by session_key;

/******************************************************/

Validaci�n del estado de backups

SET LINESIZE 145


SET PAGESIZE 9999

COLUMN sid HEADING 'Oracle|SID'


COLUMN serial_num HEADING 'Serial|#'
COLUMN opname FORMAT a30 HEADING 'RMAN|Operation'
COLUMN start_time FORMAT a18 HEADING 'Start|Time'
COLUMN totalwork HEADING 'Total|Work'
COLUMN sofar HEADING 'So|Far'
COLUMN pct_done HEADING 'Percent|Done'
COLUMN elapsed_seconds HEADING 'Elapsed|Seconds'
COLUMN time_remaining HEADING 'Seconds|Remaining'
COLUMN done_at FORMAT a18 HEADING 'Done|At'

SELECT
sid sid
, serial# serial_num
, b.opname opname
, TO_CHAR(b.start_time, 'mm/dd/yy HH24:MI:SS') start_time
, b.totalwork totalwork
, b.sofar sofar
, ROUND( (b.sofar/DECODE( b.totalwork
, 0
, 0.001
, b.totalwork)*100),2) pct_done
, b.elapsed_seconds elapsed_seconds
, b.time_remaining time_remaining
, DECODE( b.time_remaining
, 0
, TO_CHAR((b.start_time + b.elapsed_seconds/3600/24), 'mm/dd/yy
HH24:MI:SS')
, TO_CHAR((SYSDATE + b.time_remaining/3600/24), 'mm/dd/yy HH24:MI:SS')
) done_at
FROM
v$session a
JOIN v$session_longops b USING (sid,serial#)
WHERE
a.program LIKE 'rman%'
AND b.opname LIKE 'RMAN%'
AND b.opname NOT LIKE '%aggregate%'
AND b.totalwork > 0
ORDER BY
b.start_time
/
//**************************************************/

Usuarios y roles con privilegios

select a.username,
a.account_status,
b.granted_role,
(CASE WHEN granted_role in ('AQ_ADMINISTRATOR_ROLE', 'DBA',
'DELETE_CATALOG_ROLE', 'HS_ADMIN_ROLE','IMP_FULL_DATABASE', 'SCHEDULER_ADMIN',
'XDBADMIN' ) THEN 'X' ELSE '' END) Admin_priv
from dba_users a
left join user_role_privs b on A.USERNAME=B.USERNAME
where account_status='OPEN' and
granted_role is not null
order by 1,2,3;

/******************************************************/

Tiempos de respuesta de la Base de datos

set lines 1000 pages 1000


col METRIC_UNIT format a30
col METRIC_name format a30

SELECT NAME "base de datos",


metric_name,
ROUND (AVG (average * 10), 2) "PROMEDIO",
ROUND (AVG (minval * 10), 2) "MINIMO",
ROUND (AVG (maxval * 10), 2) "MAXIMO",
REPLACE (metric_unit, 'CentiSeconds', 'milisec') metric_unit
FROM dba_hist_sysmetric_summary, V$DATABASE
WHERE LOWER (metric_unit) LIKE '%sec%'
AND LOWER (metric_name) LIKE '%response%'
GROUP BY name, metric_name, metric_unit
order by metric_name;

SELECT sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text


FROM v$session sess, v$sql sql
WHERE sql.sql_id(+) = sess.sql_id AND sess.type = 'SYS';
********************************************************************************
Ver los jobs y su ejecuci�n
column owner format a10
column last_run_duration format a15
set pages 100
set line 200
select JOB_NAME,
OWNER,
substr(TO_CHAR(LAST_START_DATE,'DAY DD-MON-YY'),1,19) LAST_START_DATE,
extract(hour from LAST_RUN_DURATION) || ':' || extract(minute from
LAST_RUN_DURATION)|| ':' || extract(second from LAST_RUN_DURATION)
LAST_RUN_DURATION,
substr(TO_CHAR(NEXT_RUN_DATE,'DAY DD-MON-YY'),1,19) NEXT_RUN_DATE,
RUN_COUNT,
FAILURE_COUNT
from DBA_SCHEDULER_JOBS
where owner='US_SICOM';
column job format 99999
column schema format a15
column fail format 999
set pages 100
set line 200
select job, substr(SCHEMA_USER,1,12) schema,
substr(TO_CHAR(NEXT_DATE,'DAY DD-MON-YY'),1,19) Next_Day,
NEXT_SEC, BROKEN b,
FAILURES fail, substr(what,1,50) what,
decode(SUBSTR(INTERVAL,30,30),null,SUBSTR(INTERVAL,1,30),
SUBSTR(INTERVAL,30,30)) INTERVAL
from dba_jobs
ORDER BY NEXT_DATE, NEXT_SEC
/

select JOB,LOG_USER,PRIV_USER,SCHEMA_USER,NEXT_DATE,NEXT_SEC,WHAT from dba_jobs;

Eliminar Job

EXEC SYS.dbms_ijob.remove(322);
*******************************************************************
Reinstalar o reparar Datapump

Reinstalar las vistas y tipos del Data Pump:

SQL>@E:\oracle\product\10.2.0\db_2\rdbms\admin\catdph.sql

Reinstalar el paquete de librer�as TDE:

SQL >@$ORACLE_HOME\rdbms\admin\prvtdtde.plb

Reinstalar los paquetes del Data Pump:

SQL >@E:\oracle\product\10.2.0\db_2\rdbms\admin\catdpb.sql

Reinstalar los objetos en DBMS Data Pump:

SQL >@$ORACLE_HOME\rdbms\admin\dbmspump.sql

Recompilar los objetos invalidos:

SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);

SQL >@$ORACLE_HOME\rdbms\admin\utlrp.sql

**************************************

Reducir uso de memoria SQL SERVER

sp_configure 'show advanced options', 1;


GO
RECONFIGURE WITH OVERRIDE
GO
CHECKPOINT
GO

/*Seteamos el uso maximo de SQL Server a un valor bajo (en este ejemplo, 200MB)*/
sp_configure 'max server memory', 2048;
GO
RECONFIGURE WITH OVERRIDE
GO
CHECKPOINT
GO

/*Seteamos el uso maximo de SQL Server al valor que deseamos, (en este ejemplo,
6144MB). Como la liberacion de memoria, el SQL Server no la hace inmediatamente,
hacemos un delay de 1 minuto.*/
WAITFOR DELAY '00:01:00'
GO
sp_configure 'max server memory', 9216;
GO
RECONFIGURE WITH OVERRIDE
GO
CHECKPOINT
GO

EXEC sp_configure 'show advanced options', 0;


GO
RECONFIGURE WITH OVERRIDE
GO
CHECKPOINT
GO

Ver procesos con alto consumo de CPU

SELECT
substring(text,qs.statement_start_offset/2
,(CASE
WHEN qs.statement_end_offset = -1 THEN len(convert(nvarchar(max),
text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)
,qs.plan_generation_num as recompiles
,qs.execution_count as execution_count
,qs.total_elapsed_time - qs.total_worker_time as total_wait_time
,qs.total_worker_time as cpu_time
,qs.total_logical_reads as reads
,qs.total_logical_writes as writes
FROM sys.dm_exec_query_stats qs
CROSS JOIN sys.dm_exec_sql_text(qs.sql_handle) st
LEFT JOIN sys.dm_exec_requests r
ON qs.sql_handle = r.sql_handle
ORDER BY 3 DESC

Actividad del servidor

SELECT es.session_id
,es.program_name
,es.login_name
,es.nt_user_name
,es.login_time
,es.host_name
,es.cpu_time
,es.total_scheduled_time
,es.total_elapsed_time
,es.memory_usage
,es.logical_reads
,es.reads
,es.writes
,st.text
FROM sys.dm_exec_sessions es
LEFT JOIN sys.dm_exec_connections ec
ON es.session_id = ec.session_id
LEFT JOIN sys.dm_exec_requests er
ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) st
WHERE es.session_id > 50 -- < 50 system sessions
ORDER BY es.cpu_time DESC

MYSQL

grant all on *.* to [email protected] identified by '1234abcd.';


grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';
grant all on *.* to [email protected] identified by '1234abcd.';

A.4.1. C�mo reiniciar la contrase�a de root

Si nunca ha establecido una contrase�a para el usuario root de MySQL, el servidor


no requiere ninguna contrase�a para conectar como root. De todas formas, se
recomienda establecer una contrase�a para cada cuenta. Consulte Secci�n 5.5.1,
�Gu�a de seguridad general�.

Si usted hab�a establecido previamente una contrase�a para el usuario root, pero ha
olvidado cual era, puede establecer una nueva contrase�a. El siguiente
procedimiento es para sistemas Windows. El procedimiento para sistemas Unix est�
descrito m�s adelante en esta secci�n.

El proceso bajo Windows: The procedure under Windows:

Entre en su sistema como Administrador.

Pare el servidor MySQL si se est� ejecutando. Para servidores que se est�n


ejecutando como servicio de Windows, vaya al Gestor de Servicios:

Men� Inicio -> Panel de Control -> Herramientas administrativas -> Servicios

Despu�s encuentre en la lista el servicio MySQL, y parelo.

Si su servidor no est� ejecut�ndose como servicio, podr�a necesitar utilizar el


Gestor de tareas para forzarlo a parar.

Cree un archivo de texto e introduzca el siguiente comando en �l, en una �nica


l�nea:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MiNuevaContrase�a');

Guarde el archivo con cualquier nombre. Para este ejemplo, el nombre del
archivo ser� C:\mysql-init.txt.
Abra una ventana de comandos para obtener una consola de comandos DOS:

Men� Inicio -> Ejecutar -> cmd

Asumiremos que usted tiene instalado MySQL en C:\mysql. Si lo intal� en alg�n


otro lugar, ajuste los siguientes comandos de manera adecuada.

En la l�nea de comandos DOS, ejecute esta orden:

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

Los contenidos del archivo nombrado por la opci�n --init-file son ejecutados en
el inicio del servidor, cambiando la contrase�a de root. Cuando el servidor se haya
iniciado correctamente, deber�a borrar el archivo C:\mysql-init.txt.

Los usuarios de MySQL 4.1 y superiores que instalen MySQL utilizando el


instalador de mySQL, pueden necesitar especificar una opci�n --defaults-file:

C:\> C:\Archivos de Programa\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe


--defaults-file="C:\Archivos de Programa\MySQL\MySQL Server 5.0\
my.ini"
--init-file=C:\mysql-init.txt

La configuraci�n apropiada de --defaults-file puede encontrarse utilizando el


Gestor de Servicios:

Men� Inicio -> Panel de Control -> Herramientas Administrativas -> Servicios

Encuentre el servicio MySQL en la lista, pulse con el bot�n derecho del rat�n,
y escoja la opci�n Propiedades. El campo Ruta al Ejecutable contiene la
configuraci�n de --defaults-file.

Pare el servidor MySQL, y rein�cielo en modo normal de nuevo. Si ejecuta el


servidor como servicio, in�cielo desde la ventana de servicios de Windows. Si
ejecuta el servidor manualmente, utilice el comando que normalmente use.

Deber�a poder conectar utilizando la nueva contrase�a.

En un entorno Unix, el procedimiento para restablecer la contrase�a root es el


siguiente:

Entre en sus sitema como usuario Unix root o bien como el mismo usuario que
ejecuta el servidor mysqld.

Localice el archivo .pid que contiene el ID de proceso del servidor. La


localizaci�n exacta y el nombre de este archivo depende de su distribuci�n, nombre
de m�quina, y configuraci�n. Lugares comunes son /var/lib/mysql/, /var/run/mysqld/,
y /usr/local/mysql/data/. Generalmente, el archivo tiene una extensi�n .pid y
comienza con mysqld o el nombre de su m�quina.

Puede parar el servidor MySQL enviando un comando kill (no kill -9) a el
proceso mysqld utilizando la ruta del archivo .pid en el siguiente comando:

shell> kill `cat /mysql-data-directory/host_name.pid`

N�tese el uso de acentos abiertos en vez de comillas simples con el comando


cat; estos causan que la salida de cat sea sustituida en el comando kill.

Cree un archivo de texto e introduzca el siguiente comando en una �nica l�nea:


SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MiNuevaContrase�a');

Guarde el archivo con cualquier nombre. Para este ejemplo, el archivo tendr� el
nombre ~/mysql-init.

Reinicie el servidor MySQL con la opci�n especial --init-file=~/mysql-init:

shell> mysqld_safe --init-file=~/mysql-init &

Los contenidos del archivo son ejecutados al inicio del servidor, cambiando la
contrase�a de root. Despu�s de que el servidor se haya iniciado con �xito, deber�a
borrar ~/mysql-init.

Deber�a poder conectar utilizando la nueva contrase�a.

Una alternativa, en cualquier plataforma, es establecer la nueva contrase�a desde


el cliente mysql (pero esta manera es menos segura):

Pare mysqld y rein�cielo con la opci�n --skip-grant-tables --user=root (Los


usuarios de Windows deben omitir la parte de --user=root).

Conecte al servidor mysqld con este comando:

shell> mysql -u root

Ejecute las siguientes sentencias en el cliente mysql:

mysql> UPDATE mysql.user SET Password=PASSWORD('nuevacontrase�a') WHERE


User='root';
mysql> FLUSH PRIVILEGES;

Reemplace �nuevacontrase�a� con la contrase�a de root real que quiere utilizar.

Deber�a poder conectar utilizando la nueva contrase�a.

Using the mysqldump Command

The mysqldump command creates a text version of the database. Specifically, it


creates a list of SQL statements which can be used to restore/recreate the original
database.

The syntax is:


$ mysqldump -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] Your database username
[pass] The password for your database
[dbname] The name of your database
[backupfile.sql] The filename for your database backup

You can dump a table, a database, or all databases.

To dump all MySQL databases on the system, use the --all-databases shortcut:
$ mysqldump -u root -p --all-databases > [backupfile.sql]
Restoring a MySQL Database

Use this method to rebuild a database from scratch:


$ mysql -u [username] -p [password] [database_to_restore] < [backupfile]
Use this method to import into an existing database (i.e. to restore a database
that already exists):
$ mysqlimport [options] database textfile1

To restore your previously created custback.sql dump back to your 'Customers' MySQL
database, you'd use:
$ mysqlimport -u sadmin -p pass21 Customers custback.sql;
'

mysqldump -u root -p aadb_sicom > aadb_sicom_bck.sql

mysqlimport -u root -p aadb_sicom_interna aadb_sicom_bck.sql;

Postgres

update public.users
set password=md5('1019005760')
WHERE user_id='co1019005760';

You might also like