{"id":4277,"date":"2026-01-10T16:30:03","date_gmt":"2026-01-10T16:30:03","guid":{"rendered":"https:\/\/oracleconraul.com\/?p=4277"},"modified":"2026-02-22T22:45:10","modified_gmt":"2026-02-22T22:45:10","slug":"oracle-tables-evitar-drop-y-deletes-blockchain-tables","status":"publish","type":"post","link":"https:\/\/oracleconraul.com\/index.php\/2026\/01\/10\/oracle-tables-evitar-drop-y-deletes-blockchain-tables\/","title":{"rendered":"Oracle tables &#8211; Evitar drop y deletes (Blockchain Tables)"},"content":{"rendered":"\n<p>En la versi\u00f3n 19c Oracle introdujo una caracter\u00edstica muy interesante, dotando al administrador de la posibilidad de crear tablas donde s\u00f3lo se permiten las operaciones de inserci\u00f3n, donde la eliminaci\u00f3n de filas est\u00e1 prohibida o puede ser restringida por un tiempo establecido, as\u00ed como tambi\u00e9n es posible restringir el borrado de una tabla.<br><br>Es importante a\u00f1adir que para poder disfrutar de esta caracter\u00edstica es necesario que la base de datos est\u00e9 en versi\u00f3n 19.10, el parche 32431413 aplicado y el par\u00e1metro COMPATIBLE de la base de datos est\u00e9 establecido en versi\u00f3n 19.10.0 o superior. A partir de la versi\u00f3n 19.11 el parche no es necesario, si el cambio en el par\u00e1metro COMPATIBLE.<\/p>\n\n\n\n<p>Si est\u00e1s realizando pruebas sobre esta nueva caracter\u00edstica, tenga cuidado en no establecer un periodo de tiempo de retenci\u00f3n muy largos, ya que no ser\u00e1 posible eliminar las pruebas que est\u00e9 realizando hasta que el periodo establecido finalice.<\/p>\n\n\n\n<p>Existen una serie de cl\u00e1usulas que pueden ser a\u00f1adidas al comando y que determinan el estado final de nuestras tablas \u00abBlockchain\u00bb. <\/p>\n\n\n\n<p>Cl\u00e1usulas CREATE BLOCKCHAIN TABLE:<br>* NO DROP determina el tiempo est\u00e1 protegida contra la sentencia de borrado \u00abdrop\u00bb nuestra tabla.<\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-ast-global-color-4-background-color has-text-color has-background has-small-font-size\"><strong>NO DROP [ UNTIL number DAYS IDLE ]<\/strong><code> <\/code>          <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\"><em><code>NO DROP<\/code>\u00a0: La tabla no puede ser borrada.<\/em><\/li>\n\n\n\n<li class=\"has-small-font-size\"><em><code>NO DROP UNTIL number DAYS IDLE<\/code>\u00a0: No se puede eliminar la tabla hasta que se hayan insertado nuevas filas durante el n\u00famero de d\u00edas espec<\/em>ificados.<\/li>\n<\/ul>\n\n\n\n<p>* NO DELETE determina el periodo de tiempo en que las filas no pueden ser borradas.<\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-ast-global-color-4-background-color has-text-color has-background has-small-font-size\"><strong>NO DELETE { [ LOCKED ] | (UNTIL number DAYS AFTER INSERT [ LOCKED ]) }<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\"><em><code>NO DELETE<\/code>\u00a0 O DELETE LOCKED: Las filas no pueden ser borradas.<\/em><\/li>\n\n\n\n<li class=\"has-small-font-size\"><em><code>NO DELETE UNTIL number DAYS AFTER INSERT<\/code><\/em>: Las filas no pueden ser borradas hasta X n\u00famero de d\u00edas en las que las filas fueron insertadas, es posible cambiar la retenci\u00f3n con el comando ALTER TABLE<\/li>\n\n\n\n<li class=\"has-small-font-size\"><em>NO DELETE UNTIL x DAYS AFTER INSERT LOCKED:  Las filas no pueden ser borradas hasta X n\u00famero de d\u00edas en las que las filas fueron insertadas, y <strong>no <\/strong>es posible cambiar la retenci\u00f3n con el comando ALTER TABLE. El n\u00famero de d\u00edas m\u00ednimo son 16, en caso contrario recibir\u00e1s un error al ejecutar el comando.<\/em><br><\/li>\n<\/ul>\n\n\n\n<p>*HASHING USING sha2_512 VERSION v1<\/p>\n\n\n\n<p>Cl\u00e1usula de formato algoritmo hash.<\/p>\n\n\n\n<p>Ejemplo:<br>Creamos una tabla de prueba seg\u00fan las especificaciones explicadas anteriormente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"731\" height=\"107\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image.png\" alt=\"\" class=\"wp-image-4307\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image.png 731w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-300x44.png 300w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/figure>\n\n\n\n<p>En nuestro caso hemos creado la tabla \u00aboracleconraul\u00bb, la hemos dejado para que pueda ser borrada ya que se trata de un entorno de pruebas y le hemos indicado que tienen que pasar 16 d\u00edas para podamos borrar datos de la tabla, el m\u00ednimo valor posible.<br><br>Insertamos valores de prueba.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-1-1024x188.png\" alt=\"\" class=\"wp-image-4310\" style=\"width:1019px;height:187px\" width=\"1019\" height=\"187\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-1-1024x188.png 1024w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-1-300x55.png 300w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-1-768x141.png 768w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-1.png 1082w\" sizes=\"(max-width: 1019px) 100vw, 1019px\" \/><\/figure>\n\n\n\n<p>Comprobamos que los registros se han insertado correctamente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"689\" height=\"297\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-2.png\" alt=\"\" class=\"wp-image-4312\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-2.png 689w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-2-300x129.png 300w\" sizes=\"(max-width: 689px) 100vw, 689px\" \/><\/figure>\n\n\n\n<p>Al intentar realizar el borrado de datos, recibimos el mensaje que indica que en nuestra tabla no es posible borrar datos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"104\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-3.png\" alt=\"\" class=\"wp-image-4314\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-3.png 655w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-3-300x48.png 300w\" sizes=\"(max-width: 655px) 100vw, 655px\" \/><\/figure>\n\n\n\n<p><br><br><strong>ALTER sobre una tabla BLOCKCHAIN<\/strong><\/p>\n\n\n\n<p>En nuestro ejemplo, podr\u00edamos realizar eldrop sobre la tabla que hemos creado como veremos a continuaci\u00f3n, ya que la tabla fue creada con la cl\u00e1usula \u00abNO DROP UNTIL 0 DAYS IDLE\u00bb, que para un entorno de prueba podr\u00eda ser lo m\u00e1s sensato.<br><br>Ejecuci\u00f3n del comando sobre nuestra tabla con los valores actuales:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"67\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-4.png\" alt=\"\" class=\"wp-image-4316\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-4.png 388w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-4-300x52.png 300w\" sizes=\"(max-width: 388px) 100vw, 388px\" \/><\/figure>\n\n\n\n<p><br>En nuestro caso para evitar el borrado de la tabla ejecutamos el siguiente comando:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"63\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-5.png\" alt=\"\" class=\"wp-image-4318\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-5.png 646w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-5-300x29.png 300w\" sizes=\"(max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<p>Realizamos las comprobaciones para verificar que todo funciona seg\u00fan lo establecido. Vamos a intentar borrar registros que no deber\u00eda de estar permitido, vamos a insertar nuevos datos en la tabla, que no deber\u00edamos de tener ning\u00fan problema e intentaremos como comprobaci\u00f3n final intentar borrar la tabla que despu\u00e9s del alter, no deber\u00eda de ser posible.<\/p>\n\n\n\n<p>Ejecuciones:<\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-ast-global-color-4-background-color has-text-color has-background has-small-font-size\"><strong> insert<\/strong> into raul.oracleconraul values(200,&#8217;RAUL&#8217;);<br>1 row created.<br>commit;<\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-ast-global-color-4-background-color has-text-color has-background has-small-font-size\"><br>SQL> <strong>delete<\/strong> raul.oracleconraul where test_id=200;<br>delete raul.oracleconraul where test_id=200<br>*<br>ERROR at line 1:<br>ORA-05715: operation not allowed on the blockchain or immutable table<br><\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-ast-global-color-4-background-color has-text-color has-background has-small-font-size\">SQL><strong> drop table<\/strong> raul.oracleconraul;<br>drop table raul.oracleconraul<br>*<br>ERROR at line 1:<br>ORA-05723: drop blockchain or immutable table ORACLECONRAUL not allowed<\/p>\n\n\n\n<p>Para comprobar que todo es correcto, podemos lanzar la siguiente consulta:<br>En ella podemos identificar qu\u00e9 tablas tenemos creadas c\u00f3mo \u00abblockchain\u00bb tables y sus caracter\u00edsticas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"173\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-6-1024x173.png\" alt=\"\" class=\"wp-image-4321\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-6-1024x173.png 1024w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-6-300x51.png 300w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-6-768x129.png 768w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2023\/10\/image-6.png 1169w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><br>En definitiva, Oracle ofrece a partir de la versi\u00f3n 19.10 una nueva funcionalidad que permite implementar aplicaciones blockchain, o permiten al administrador disponer de una herramienta de seguridad adicional para evitar problemas de borrados o distorsi\u00f3n de auditor\u00edas sobre alguna de las tablas \u00abcores\u00bb que no pueden ser alteradas en Base de datos. Es muy importante antes de aplicar esta funcionalidad, pensar en su correcta aplicaci\u00f3n, ya que tal y como se indic\u00f3 es posible que la tabla que inicialmente fue concebida para no ser borrada\/alterada, por evoluci\u00f3n de aplicativo, recursos, etc tenga que serlo posteriormente y sea imposible realizar la acci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la versi\u00f3n 19c Oracle introdujo una caracter\u00edstica muy interesante, dotando al administrador de la posibilidad de crear tablas donde s\u00f3lo se permiten las operaciones de inserci\u00f3n, donde la eliminaci\u00f3n de filas est\u00e1 prohibida o puede ser restringida por un tiempo establecido, as\u00ed como tambi\u00e9n es posible restringir el borrado de una tabla. Es importante<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"https:\/\/oracleconraul.com\/index.php\/2026\/01\/10\/oracle-tables-evitar-drop-y-deletes-blockchain-tables\/\" class=\"link-btn theme-btn\"><span>Read More <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpupg_custom_link":[],"wpupg_custom_link_behaviour":[],"wpupg_custom_link_nofollow":[],"wpupg_custom_image":[],"wpupg_custom_image_id":[],"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[14],"tags":[32],"class_list":["post-4277","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-seguridad-security"],"_links":{"self":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/comments?post=4277"}],"version-history":[{"count":55,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4277\/revisions"}],"predecessor-version":[{"id":4715,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/4277\/revisions\/4715"}],"wp:attachment":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/media?parent=4277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/categories?post=4277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/tags?post=4277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}