Oracle log como SYSDBA sin ser del grupo dba

Para poder hacer este logeo, primero abrimos una sesión con sqlplus con la opción /nolog para que no escriba en el log del dba sin tener permisos. Luego logeamos como "as sysdba".

$sqlplus /nolog
SQL> connect sys/password as sysdba
Connected
SQL>

Oracle formatear fecha incio sesión

CREATE OR REPLACE
TRIGGER set_formato_fecha
AFTER LOGON ON SCHEMA
BEGIN
  dbms_session.set_nls('nls_language','SPANISH');
  dbms_session.set_nls('nls_territory','SPAIN');
  dbms_session.set_nls('nls_date_format','''dd/mm/yyyy''');
END set_formato_fecha;

Mucho cuidado con el sqldeveloper: Formatea las fechas por su cuenta pasando de los nls.

Recordar que siempre podemos forzar con

select to_char(sysdate,'"día" dd "de" month "de" yyyy','nls_date_language=spanish')
from dual;

Oracle crear rol y asignárselo a usuario

-- http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9013.htm#i2077938
$sqlplus "/as sysdba"
create role programador;
GRANT CONNECT TO programador;
GRANT create session, alter session TO programador;
GRANT create procedure to programador;
GRANT execute any procedure to programador;
GRANT create table TO programador;
GRANT create sequence TO programador;
Grant create trigger to programador;
Grant create type to programador;
grant create view to programador;
grant create any index, create indextype to programador;
grant debug connect session to programador;
grant debug any procedure to programador;


-- CREATE USER username IDENTIFIED BY apassword;
-- GRANT role_name TO user_name;

-- en 11g la tablespace users ya viene hecha, si queremos podemos crear otra tablespace con
CREATE SMALLFILE TABLESPACE USERS DATAFILE 'u01/app/oracle/oradata/ORCL/espacio.dbf' SIZE 50g;

-- el size puede ser unlimited


ALTER DATABASE DEFAULT TABLESPACE USERS;
ALTER USER user_name QUOTA UNLIMITED ON USERS;


ORA-12528: TNS:listener: all approriate instances are blocking new connection

En un máquina con Windows XP SP3, me salia este error al intentar arrancar OracleXE 11g. Después de googlear un rato, realicé las siguientes acciones:

cd \oraclexe\app\oracle\product\11.2.0\server\bin
>lsnrctl
status
-- mirar si alguno de los servicios está BLOCKED
-- p.e. Instance "xe", status BLOCKED...
-- parar e iniciar el listener
stop
start
-- volver a comprobar el estado

Ahora, entrar como SYSDBA y hacer un startup

set ORACLE_SID=XE
sqlplus "/as sysdba"
-- opcional por si se había quedado con sesiones restringidas
alter system disable restricted session;
-- startup
startup

Volver a probar la conexión. Si el listener ya no está BLOCKED ya está todo bien.

Peeero..... En mi caso, lo que realmente estaba ocurriendo es que el registro de eventos de windows estaba lleno y por eso el listener no arrancaba. No he encontrado este error en Internet documentado de esta manera. Supongo que puede presentarse en multitud de escenarios, por ello conviene cercionarse de vez en cuando de cómo está el registro de eventos y vaciarlo.

El error en concreto lo vi cuando entraba en el sqlplus: