Erro en cursor de Oracle (missing right parenthesis)

Nalgunhas ocasións ao ter que actualizar un feixe de filas dunha táboa (ou varias) é necesario facer uso dun cursor para poder facer os cálculos pertinentes e poder acadar o resultado desexado

Levo anos usándoos e nunca tivera este problema (sí moitos outros), o caso é que ao executar o PL/SQL dame un erro ORA-00907 missing right parenthesis na definición do cursor.



Revisando o cursor vexo que a consulta está ben e se executa sen problemas fora do cursor, a consulta é a seguinte



Se lle quito a parte do order by o cursor se executa correctamente, pero necesito ese order by, buscando por internet cheguei a esta páxina onde comentan que os parénteses non son necesario, efectivamente quitando os parénteses xa funciona, pero nunca antes me tivera pasado e sempre os usaba por unha cuestión de claridade e lexibilidade do código

En fin por se vos serve de axuda

Cambiar o contrasinal de tareas programadas

No meu traballo teño que programar tarefas nun servidor Windows co meu usuario. Nas políticas de seguridade da empresa establéces que cada tres meses caduquen os contrasinais, o efecto é que cada tres meses teño que cambiar o contrasinal das tarefas programadas deste servidor

Se foran unha ou dúas non habería problemas, pero chegado o punto de ter algo máis de 30 tarefas programadas faise engorroso este traballo, co que me propuxen automatizalo todo o que puidese

Buscando por aí vin que hai unha evolución para o comando at que é schtasks, dende este comando podo cambiar os parámetros dunha tarefa, en concreto co parámetro /RP, e tamén podo listar as tarefas que hai, co que agora xa só queda poder facer un bucle que execute o comando para cada unha destas tarefas

Como no vrao me propuxen aprender python velaquí tedes o meu script para cambiar o contrasinal dunhas tarefas nun equipo remoto dun xeito sinxelo, hai outro xeito de cambiar as tarefas programadas pero pareceume máis complexo


Agardo que vos sexa de utilidade ;-)

Se lo que estás pensando (Libro)

4 sobre 5




Se lo que estás pensando é o primeiro libro de John Verdon sobor o detective retirado David Gurney.
Un amigo (máis ben un coñecido da universidade) do detective pídelle que lle axude con algo raro que lle está a pasar, mandáronlle unha nota na que lle dicían que o coñecían tan ben que serían quen de adiviñar un número que pensase entre o 1 e o 1000. E sí que o adiviñou.
A partir de ahí a trama vaise complicando ata ter un caso moi complicado que só David Gurney é quen de resolver

O libro é moi doado de ler, e parte dun misterio aparentemente moi complicado de resolver. O xeito en como vai desleando o misterio, a relación coa súa muller, coa axente artística e os outros policías envoltos no caso están moi ben resoltos e danlle moita axilidade ao libro

Gustoume moito, non é unha novela con moitas pretensións pero se che gusta o xénero de detectives e intriga hache gustar.

Non me extrañaría que nun futuro veramos a David Gurney nos cinemas de medio mundo

Se queredes podedes ler un capítulo da novela dende a súa web (tamén das novelas posteriores)


Lista de desexos

Levo tempo querendo levar unha lista das cousas que vexo e que me gustan para algún día mercar / facer (pode ser algo coma montar un entorno para análise de malware :D), pero non atopei nada que me axudara a levar esa lista, ata que pensei que podería deixalo nun post e así telo sempre a man

Vou empezar polos cacharros que me chaman a atención e que me gostaría ter (algúns son mutuamente excluintes)
  • Xtreamer SideWinder: un reproductor multimedia moi potente que ten moi boa pinta (tamén me vale calqueira dos de gama superior)
  • Rasberry Pi: un mini ordenador pensado con fins educativos, pero que polo prezo (25$-35$) fíxose moi popular e pode servir como reproductor multimedia ou o outra cousa
  • Minipwner: un cacharro que permite conectarse a unha rede e snifar o tráfico ou facer un portal cautivo e máis cousas :D
  • Reproductores multimedia (importante a opción de subtítulos): en dealxtreme teño varios aos que lle botei(con TDT incluso) o ollo, tamén en Carrefour hai algún interesante
Seguimos con libros, teño o e-book de Sony sen Wifi, co que unha actualización ao novo e-book de Sony ou incluso ao Kindle (por prezo) non estaría mal, inda que iso xa é vicio :P


Agora películas/series que quero ver (entre outras moitas pero non quero ter listas moi grandes)

Tiña pensado por un apartado de música, pero realmente non quero posuír a música, senon poder escoitar música, e hoxe en día coas opcións dispoñibles para min é suficiente :D

Algunhas cousas que quero facer relacionadas coa miña formación


Proxectos persoais

  • Montar un laboratorio no trasteiro ... hai que levar internet ata alí e logo instalar os equipos :D
  • Montar unha centraliña ip na casa (supoño que algún asterisk)
A ver se pouco a pouco vou tachando cosas e engadindo novas (sería o ideal inda que o dubido :D )

Movendo obxectos dun tablespace a outro

Recentemente tiven que mover os obxectos dun tablespace a outro xa que quería eliminar ese tablespace, non é algo difícil, pero se vas un a un poder ser un pouco incómodo e podes esquecer algún obxecto, polo que aqui tendes os pasos que seguín para acadalo


  1. Identificar os tipos de obxectos que queres mover
    No meu caso táboas e índices (TABLE e INDEX)
  2. Identificar a sentencia a executar para mover un só dos obxectos

    No caso das táboas
  3. ALTER TABLE owner.name MOVE TABLESPACE nuevoTbs 
  4. No caso dos índices
    ALTER INDEX owner.name REBUILD TABLESPACE nuevoTbs
  5. Obter todas as sentencias de xeito fácil e reproducible, usamos a vista DBA_SEGMENTS para ver qué obxectos hai no tablespace que queremos eliminar, usamos a función decode para escoller o resultado que desexamos

    select decode(obj.segment_type,
    'TABLE','ALTER TABLE '||obj.owner||'.'||obj.segment_name ||' MOVE TABLESPACE nuevoTbs;',
    'INDEX','ALTER INDEX '||
    obj.owner||'.'||obj.segment_name ||' REBUILD TABLESPACE nuevoTbs;',
    '--objeto ' || obj.segment_type ||'-'||
    obj.owner||'.'||obj.segment_name||' no especificado')
    from dba_segments obj
    where obj.tablespace_name = 'antigoTbs'
    and obj.segment_type IN ('TABLE','INDEX')
  6. Podemos usar calquer ferramenta gráfica e exportar os resultados ou simplemente un spool para levalos a un ficheiro de texto, logo só nos quedaría executalo con sqlplus ou a ferramente que desexemos, sería bo tamén facer un spool a un ficheiro para ter constanza do resultado da execución
Así mesmo poderiamos usar este mesmo método para mover os obxectos dun usuario, ou que cumplan unha determinada condición ou o que queramos, o que se pode facer só depende do que nos imaxinemos que podemos facer :D

Agardo que vos sexa de axuda

Entrada truncada a X caracteres en Oracle


Se algunha vez ao lanzar un proceso pl/sql dende sqlplus te atopas con algún erro similar o que deberías facer é buscar algún espacio ao comenzo da liña, algúns editores manteñen o último identado que fas co que se che pode escapar, por exemplo
DECLARE
declaración variables ...
BEGIN
código do pl/sql
 END; -- aquí temos un espacio antes do END
  / -- aquí outro espacio antes do fin do ficheiro

Neste caso, na versión 8i este código podería non executarse correctamente e dar un erro similar ao do título do post. O caso é que na versión 10g non parece funcionar igual xa que o mesmo ficheiro executado co sqlplus 8i e o 10g no primeiro non funciona e no segundo sí

Agardo que vos sexa de axuda