lunes, 22 de diciembre de 2014

Como Configurar Heterogeneous Services

El objetivo es poder consultar desde una base de datos Oracle 10gR2 en HP-UX  a una tabla que esta en  SQL SERVER 2008 en Windows.
En el SQL SERVER ya se creo un usuario para conexión usrsql. Este usuario tiene que tener permisos de lectura a las tablas que se necesitan acceder en forma remota desde Oracle. En este ejemplo la tabla clientes.
Datos de este Ejemplo :
Servidor Windows : srvwin1
Servidor HP-UX : srvhpux
Usuario SQLSERVER: usrsql
Tabla: clientes

ODBC Data Source Name : TEST
Usuario Oracle :usrapp

1 - Ingresar al Servidor Windows con “Conexión a Escritorio Remoto”
2 - Configurar DATA SOURCE ODBC
     2.1 -Crear un DATA SOURCE NAME, en este ejemplo se crea con el nombre TEST

2      2.2 - En la solapa SYSTEM DSN se configura el usuario de conexión,  que puede autenticar con el login de Windows o con un usuario definido en la base, en este ejemplo se usa “sa”  
  
2.3 - Probar la conexión ODBC al servidor SQL SERVER

- 3- En el servidor hp-ux srvhpux conectarse a la base Oracle y verificar que el parámetro GLOBLA_NAMES este en FALSE

  $> sqlplus / as sysdba


SQL> select name, display_value from v$parameter where name='global_names';

NAME                                         DISPLAY_VALUE
------------------------------------------------------------------------
global_names                                  FALSE

Si esta en TRUE hay que modificar a FALSE.

-          4- En el Servidor Windows : Instalar Oracle Database Server con la opción Software Only en el servidor Windows

-       5 -En el Servidor Windows : Copiar el archivo $ORACLE_HOME/hs/admin/initdg4odbc.ora con el nombre  initDataSourceName.ora en este ejemplo initTEST.ora y modificar los parámetros
"HS_FDS_TRACE_LEVEL = ".Cambiarlo a  OFF
"HS_FDS_CONNECT_INFO = ". Cambiar por el Data Source Name
Ejemplo:
initTEST.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = TEST
HS_FDS_TRACE_LEVEL = OFF

#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>


6 - En el servidor Windows en $ORACLE_HOME\network\admin :
Copiar $ORACLE_HOME\network\admin\samples\listener.ora en $ORACLE_HOME\network\admin y configurar de la siguiente forma:
listener.ora
# This is a sample listener.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

LISTENER =
 (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
 )

SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=TEST)
         (ORACLE_HOME=C:\oracle\product\11.2.0\dbhome_1)
         (PROGRAM=dg4odbc)
      )
  )

#CONNECT_TIMEOUT_LISTENER = 0

7 - Ejecutar desde una ventana de comandos : cmd
lsnrctl start si no estaba activo y si estaba activo lsnrctl reload


8 - En el servidor HP-UX  agregar en $ORACLE_HOME/network/admin/tnsnames.ora

# This is a sample tnsnames.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

TEST  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=srvwin1)(PORT=1521))
    (CONNECT_DATA=(SID=TEST))
    (HS=OK)
  )

9 - Probar que quedo bien configurado desde Servidor HP-UX 
$>tnsping TEST

TNS Ping Utility for HPUX: Version 10.2.0.5.0 - Production on 09-OCT-2013 12:27:31

Copyright (c) 1997,  2010, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/10.2/Db_1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=srvwin1)(PORT=1521)) (CONNECT_DATA=(SID=TEST)) (HS=OK))
OK (20 msec)



10 - Crear en el la base de datos Oracle el database link wincnx  privado del usuario usrapp
sqlplus / as sysdba
SQL> connect usrapp/usrapp
SQL> create database link wincnx
  2  connect to usrsql identified by xxxxx
  3  using ‘TEST’;

11- Probar conexion
select * from clientes@wincnx;














lunes, 20 de octubre de 2014

Como deshabilitar Case Sensitive

A partir de la versión de base de datos Oracle 11 viene habilitado por default la verificación case sensitive en la password de los usuarios. O sea si la password es "PRUEBA" no se conecta con "prueba" en minúscula. Hay que respetar las mayúsculas y minúsculas y escribirlo tal cual se genero.
Para deshabilitar el case sensitve existe un parámetro de la instancia SEC_CASE_SENSITIVE_LOGON viene por default seteado en TRUE y se puede cambiar a FALSE. Es un parámetro dinámico, se puede cambiar en cualquier momento, no es necesario reiniciar la base de datos para que tome el cambio.


  • Ejemplo 1. Como deshabilitar CASE SENSITIVE

Nos logueamos como sysdba
$sqlplus / as sysdba

Verificamos el valor del parámetro 
SQL> show parameters sec_case
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     TRUE


Lo deshabilitamos
SQL> alter system set sec_case_sensitive_logon=FALSE;
System altered.

  • Ejemplo 2.  Como funciona con el parámetro en TRUE y en FALSE
Nos logueamos como sysdba
$sqlplus / as sysdba

Verificamos el valor del parámetro:
SQL> show parameters sec_case
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     TRUE

Creamos un usuario de prueba con permiso de create session :
SQL> create user prueba identified by Abeja;
User created.
SQL> grant create session to prueba;
Grant succeeded.

Probamos ingresar con minuscula
SQL>  conn prueba/abeja
ERROR:
ORA-01017: invalid username/password; logon denied

Probamos ingresar respetando mayusculas y minusculas
SQL> conn prueba/Abeja
Connected.


Como esta por default activo el CASE SENSITIVE solo nos podemos conectar cuando escribimos la password respetando mayúsculas y minúsculas.

Probamos deshabilitando CASE SENSITIVE

Nos logueamos como sysdba
$sqlplus / as sysdba

Lo deshabilitamos
SQL> alter system set sec_case_sensitive_logon=FALSE;
System altered.

SQL>  conn prueba/abeja
Connected.

Como deshabilitamos el CASE SENSITIVE nos podemos conectar con la password escrita  en mayúsculas o minúsculas que es indistinto.


lunes, 5 de mayo de 2014

Como habilitar ARCHIVELOG Mode

Verificar que la base de datos no tiene habilitado el modo ARCHIVELOG

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/11.2.0/Db_1/dbs/arch
Oldest online log sequence     416
Current log sequence           418


Tambien se puede verificar con el siguiente query
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG


Antes de habilitarlo tenemos dos opciones para dejar los archivelogs :
1 - Usar  FRA (Fast Recovery Area) 
2 - Usar un path especifico 

Opción 1 -
Usando FRA. Es una alternativa a partir de Oracle 10g
1 - Verificar si esta configurada en los parametros db_recovery_file_dest y db_recovery_file_dest_size sino configurarla.
SQL> show parameters recovery
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------
db_recovery_file_dest                string      
db_recovery_file_dest_size           big integer 0
recovery_parallelism                 integer     0


Configurar el FRA. Darle un tamaño y el path.
SQL> alter system set db_recovery_file_dest_size=10G;
System altered.

SQL> alter system set db_recovery_file_dest='/FRA';
System altered.

Para habilitar Archivelog Mode hay que bajar la base, montarla, modificar y abrir la base.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 8985837568 bytes
Fixed Size                  2177168 bytes
Variable Size            6140462960 bytes
Database Buffers         2818572288 bytes
Redo Buffers               24625152 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.

SQL> alter database open;
Database altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     416
Next log sequence to archive   418
Current log sequence           418


Opción 2 - 
Asignar una ubicación, en este ejemplo /archives
SQL> alter system set log_archive_dest_1='LOCATION=/archives';
System altered.

Ver default formato de archives
SQL> show parameters log_archive_format

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------
log_archive_format                   string      %t_%s_%r.dbf

Cambiar el formato en el spfile, no se puede cambiar dinamicamente. Va a tomarlo la próxima vez que reiniciemos la instancia.
SQL> alter system set log_archive_format='ORCL_%t_%s_%r.arc' scope=spfile;
System altered.


Para habilitar Archivelog Mode hay que bajar la base, montarla, modificar el modo de ARCHIVELOG y luego abrir la base.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 8985837568 bytes
Fixed Size                  2177168 bytes
Variable Size            6140462960 bytes
Database Buffers         2818572288 bytes
Redo Buffers               24625152 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;
Database altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /archives
Oldest online log sequence     416
Next log sequence to archive   418
Current log sequence           418


miércoles, 30 de abril de 2014

RMAN : ORA-19625: error identifying file


Si aparece este error al ejecutar el backup de archivelogs:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 04/30/2014 00:38:54
RMAN-06059: expected archived log not found, lost of archived log compromises recoverability
ORA-19625: error identifying file /u01/archive/orcl/orcl_1_450_114159731.arc
ORA-27037: unable to obtain file status
HPUX-ia64 Error: 2: No such file or directory

Additional information: 3



Es porque no encuentra el archive. Generalmente pasa cuando lo movemos hacia otro file system o lo depuramos manualmente por problemas de espacio.

Si tenemos el archive solicitado, lo tenemos que mover nuevamente a la ubicación donde lo trata de encontrar y ejecutar nuevamente el backup.

Si no lo tenemos al archive, tenemos que eliminarlo del catalogo:

$rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Wed Apr 30 11:10:49 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=114159731)


Ejecutamos un crosscheck que compara lo que hay en el catalogo con lo que esta en disco. Lo que no encuentra lo marca como expired (expirado).

RMAN> crosscheck archivelog all;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=493 devtype=DISK
validation failed for archived log
archive log filename=/u01/archive/orcl/orcl_1_450_114159731.arc recid=45347 stamp=846242043
validation succeeded for archived log
archive log filename=/u01/archive/orcl/orcl_1_451_114159731.arc recid=45348 stamp=846242180
Crosschecked 2 objects


Eliminamos del catalogo los archivelogs expirados.

RMAN>  delete expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=493 devtype=DISK

List of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
45347   1    450   X 30-APR-14 /u01/archive/orcl/orcl_1_450_114159731.arc

Do you really want to delete the above objects (enter YES or NO)? YES
deleted archive log
archive log filename=/u01/archive/orcl/orcl_1_450_114159731.arc recid=45347 stamp=846242043
Deleted 1 EXPIRED objects


Se puede ejecutar con la clausula noprompt para que elimine sin preguntar :
RMAN> delete noprompt expired archivelog all;


De esta forma nos queda consisente el catalogo y no vuelve a fallar el backup.



martes, 15 de abril de 2014

Que es ser DBA Oracle ?


La sigla DBA viene de DataBase Administrator que significa Administrador de Base de Datos. Es una especialidad de Tecnología de la Información, en ingles  IT (Information Technology).
El DBA es el responsable de la gestión, mantenimiento y operación de la Base de Datos Oracle.
Esto involucra :
■ Instalar el software de Oracle
■ Crear las bases de datos Oracle
■ Ejecutar actualizaciones de la base de datos y del software 
■ Administrar la Instacia: Subir/Bajar la Instancia de base de datos
■ Administrar las estructuras de almacenamiento de la base de datos.
■ Administrar los usuarios y la seguridad
■ Realizar el backup de la base y ejecutar las operaciones de recuperación si fuera necesario
■ Monitorear el estado de la base de datos y tomar acciones preventivas o de correción de acciones según se requiera para mantener la base operativa
■ Monitorear y realizar los ajustes (tuning)  de performance de la base 
■ Diagnosticar y reportar errores críticos al Soporte de Oracle 

En pequeñas o medianas instalaciones el rol del DBA lo puede cumplir una sola persona. En grandes instalaciones con gran cantidad de bases de datos y/o de gran volumen estas tareas suelen dividirse entre varios DBA's e inclusive algunos están especializados por ejemplo en tuning, seguridad o backups.


lunes, 3 de febrero de 2014

Como reducir el UNDO Tablespace

1 – Verificar el UNDO Tablespace
SQL> show parameters undo_tablespace
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1

2 – Crear un UNDO tablespace temporal
SQL> create undo tablespace UNDOTBS2  datafile '/u02/oradata/ORCL/undotbs2.dbf' size 100M;
Tablespace created.

3) Cambiar al nuevo Undo tablespace
SQL> alter system set undo_tablespace='UNDOTBS2' scope=both;
System altered.

NOTA: Si se esta usando pfile en vez de spfile, se debe cambiar en el init.ora, luego bajar y subir la base.

4- Verificar
SQL> show parameters undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS2

5- Eliminar UNDO TABLESPACE original
SQL>drop  tablespace UNDOTBS1 including contents and datafiles;
Tablespace dropped.

6 – Crear el UNDO Tablespace
SQL>  create undo tablespace UNDOTBS1 datafile '/u02/oradata/ORCL/undotbs.dbf' size 100M autoextend on maxsize 4G;
Tablespace created.

7 – Cambiar por el definitivo
SQL> alter system set undo_tablespace='UNDOTBS1';
System altered.

8- Verificar
SQL> show parameters undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1

9 - Eliminar Undo temporal
  SQL> drop tablespace UNDOTBS2 including contents and datafiles;
Tablespace dropped.




TROUBLESHOOTING
ERROR ORA-30013: undo tablespace 'UNDOTBS2' is currently in use

Al ejecutar el drop puede dar este mensaje de error debido a que tiene transacciones activas.

  SQL> drop tablespace UNDOTBS2 including contents and datafiles
*
ERROR at line 1:
ORA-30013: undo tablespace 'UNDOTBS2' is currently in use


Tenemos varias opciones:
1 - Esperar a que finalicen y volver a ejecutar el DROP
2 - Eliminar las transacciones activas
3 - Bajar y subir la base de datos

OPCION 1 -Esperar a que finalicen y volver a ejecutar el DROP. 
Podemos ir controlando cuando lo libera en el alert.log.

En el alert.log cuando ejecutamos el DROP quedo el mensaje :
Wed Jan 29 12:24:34 ARST 2014
Successfully onlined Undo Tablespace 1.
Undo Tablespace 5 moved to Pending Switch-Out state.
*** active transactions found in undo tablespace 5 during switch-out.

Finalmente cuando no tiene mas transacciones activas aparece :
Wed Jan 29 12:29:32 ARST 2014
Undo Tablespace 5 successfully switched out.

 Volver a ejecutar: 
SQL> drop tablespace UNDOTBS2 including contents and datafiles;


OPCION 2 - Consultar las transacciones activas
SQL> SELECT 
a.usn,
a.name,
b.status,
c.tablespace_name,
d.addr,
e.sid, 
e.serial#,
e.username,
e.program,
e.machine, 
e.osuser
FROM 
v$rollname a, 
v$rollstat b, 
dba_rollback_segs c, 
v$transaction d, 
v$session e 
WHERE 
a.usn=b.usn AND 
a.name=c.segment_name AND
a.usn=d.xidusn AND
d.addr=e.taddr AND
b.status='PENDING OFFLINE';



Se puede en este punto decidir matar las sesiones activas si no es posible avisar al usuario que cierre la sesion o esperar.


Luego volver a ejecutar: 
SQL> drop tablespace UNDOTBS2 including contents and datafiles;

OPCION 3 - Bajar y subir la base. 

SQL>Shutdown immediate
SQL>startup

Luego volver a ejecutar: 
SQL> drop tablespace UNDOTBS2 including contents and datafiles;


domingo, 26 de enero de 2014

Como Renombrar un Tablespace

A partir de Oracle 10g podemos renombrar un Tablespace con una sola sentencia:

ALTER TABLESPACE tablespace_name RENAME TO tablespace_new_name;


El parámetro COMPATIBLE debe estar seteado en 10.0.0 o superior. El tablespace a renombrar y todos sus datafiles deben estar online. Se pueden renombrar tablespaces permanentes o temporales. No se pueden renombrar los tablespaces SYSTEM y SYSAUX.

Casos de estudio

1-  Renombramos el tablespace Users como Users_Data

-> Verificamos que existe el tablespace USERS
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
TBSJMW
INVENTORY

8 rows selected.

-> Vemos que varios usuarios tienen el tablespace USERS como Default Tablespace
SQL> select username, default_tablespace from dba_users where default_tablespace='USERS';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
PM                             USERS
BI                             USERS
XS$NULL                        USERS
SPATIAL_WFS_ADMIN_USR          USERS
ORACLE_OCM                     USERS
SPATIAL_CSW_ADMIN_USR          USERS
SCOTT                          USERS
APEX_PUBLIC_USER               USERS
OE                             USERS
DIP                            USERS
SH                             USERS

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
IX                             USERS
MDDATA                         USERS
HR                             USERS
DHAMBY                         USERS
RPANDYA                        USERS

16 rows selected.

-> Renombramos Users como Users_Data 
SQL> alter tablespace users rename to users_data;

Tablespace altered.

-> Verificamos que ya no existe USERS en cambio existe USERS_DATA
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS_DATA
EXAMPLE
TBSJMW
INVENTORY

8 rows selected.

->Verificamos que no quedaron usuarios con default tablespace USERS
SQL> select username, default_tablespace from dba_users where default_tablespace='USERS';

no rows selected

->Verificamos que automáticamente actualizó el Default Tablespace de los usuarios que tenían USERS a USERS_DATA

SQL> select username, default_tablespace from dba_users where default_tablespace='USERS_DATA';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
PM                             USERS_DATA
BI                             USERS_DATA
XS$NULL                        USERS_DATA
SPATIAL_WFS_ADMIN_USR          USERS_DATA
ORACLE_OCM                     USERS_DATA
SPATIAL_CSW_ADMIN_USR          USERS_DATA
SCOTT                          USERS_DATA
APEX_PUBLIC_USER               USERS_DATA
OE                             USERS_DATA
DIP                            USERS_DATA
SH                             USERS_DATA

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
IX                             USERS_DATA
MDDATA                         USERS_DATA
HR                             USERS_DATA
DHAMBY                         USERS_DATA
RPANDYA                        USERS_DATA

16 rows selected.

Conclusión : Excepto SYSTEM Y SYSAUX que no se puede renombrar, al renombrar cualquier tablespace que los usuarios tienen definido como Default Tablespace, automáticamente queda actualizado también el Default Tablespace de dichos usuarios.

2 - Renombramos el UNDO tablespace, UNDOTBS1 por UNDOTBS2

-> Verificamos que usamos SPFILE
SQL> show parameters pfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
                                                 /dbhome_1/dbs/spfileorcl.ora

-> Verificamos que esta definido UNDOTBS1
SQL> show parameters UNDO

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     172800
undo_tablespace                      string      UNDOTBS1

-> Renombramos UNDOTBS1 a UNDOTBS2
SQL> alter tablespace undotbs1 rename to undotbs2;

Tablespace altered.

-> Comprobamos que NO quedo actualizado 
SQL> show parameters UNDO

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     172800
undo_tablespace                      string      UNDOTBS1

-> Verificamos que lo cambio en el spfile
SQL> select value from v$spparameter where name='undo_tablespace';
VALUE
--------------------------------------------------------------------------------
UNDOTBS2

-> Ejecutamos un Restart de la base
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  418484224 bytes
Fixed Size                  1336932 bytes
Variable Size             297798044 bytes
Database Buffers          113246208 bytes
Redo Buffers                6103040 bytes
Database mounted.
Database opened.

-> Verificamos el cambio
SQL> show parameter UNDO

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     172800
undo_tablespace                      string      UNDOTBS2

Conclusión : Renombrar el Undo tablespace solo toma efecto después de reiniciar la base. Si no usamos spfile, antes de levantar la base tenemos que cambiar manualmente el parámetro en el pfile. 


3 - Renombramos el Tablespace Temporal

->Para ver el Default Temporary Tablespace consultamos la tabla DATABASE_PROPERTIES

SQL> column property_name format a25
SQL> column property_value format a15
SQL> select property_name, property_value from DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME             PROPERTY_VALUE
------------------------- ---------------
DEFAULT_TEMP_TABLESPACE   TEMP


-> Vemos que todos los usuarios usan TEMP de Tablespace Temporal
SQL> select username, temporary_tablespace from dba_users where temporary_tablespace='TEMP';

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
DBSNMP                         TEMP
DBA1                           TEMP
BI                             TEMP
.............................................................
40 rows selected.

-> Renombramos TEMP como TEMP1 
SQL> alter tablespace TEMP rename to TEMP1;
Tablespace altered.

->Verificamos que no quedaron usuarios con temporary tablespace TEMP
SQL> select username, temporary_tablespace from dba_users where temporary_tablespace='TEMP';
no rows selected

->Verificamos que automáticamente actualizó el Temporary Tablespace de los usuarios que tenían TEMP a TEMP1
SQL> select username, temporary_tablespace from dba_users where temporary_tablespace='TEMP1';

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
DBSNMP                         TEMP1
DBA1                           TEMP1
BI                             TEMP1
.............................................................
40 rows selected.

->Verificamos que automáticamente actualizó tabla DATABASE_PROPERTIES
SQL> select property_name, property_value from DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME             PROPERTY_VALUE
------------------------- ---------------
DEFAULT_TEMP_TABLESPACE   TEMP1


Conclusión : Al renombrar un Tablespace Temporal que los usuarios lo tienen definido como Temporary Tablespace, automáticamente queda actualizado el Temporary Tablespace de dichos usuarios. Si este Tablespace Temporal es el Default Temporary Tablespace también lo actualiza en la tabla Database_Properties.

4-  Renombramos un Tablespace Read Only

-> Verificamos que el tablespace READONLY_TBS esta definido como READ ONLY
SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TBSJMW                         ONLINE
INVENTORY                      ONLINE
READONLY_TBS                   READ ONLY

9 rows selected.

-> Renombramos READONLY_TBS como APP_READONLY
SQL> alter tablespace readonly_tbs rename to app_readonly;

-> Verificamos que ya no existe READONLY_TBS, en cambio existe APP_READONLY
SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TBSJMW                         ONLINE
INVENTORY                      ONLINE
APP_READONLY                   READ ONLY

9 rows selected.

-> Revisamos el alert.log
[oracle@host01]$ tail alert_orcl.log
Completed: create tablespace ReadOnly_TBS datafile '+DATA' size 100M
Sun Jan 26 09:30:34 2014
alter tablespace ReadOnly_TBS read only
 Converting block 0 to version 10 format
Completed: alter tablespace ReadOnly_TBS read only
Sun Jan 26 09:35:51 2014
alter tablespace readonly_tbs rename to app_readonly
Tablespace 'READONLY_TBS' is renamed to 'APP_READONLY'.
Tablespace name change is not propagated to file headersbecause the tablespace is read only.
Completed: alter tablespace readonly_tbs rename to app_readonly

Conclusión : Si el tablespace es Read Only, los headers de los datafiles no son actualizados. Esto no significa que quede corrupto. En el alert.log va a escribir un mensaje que los headers de los datafiles no fueron renombrados pero en el diccionario de datos y en los control file quedó actualizado.