top of page
Search
ciaquanfipuzo

Como Borrar Todas Las Tablas De Un Usuario En Oracle Y Optimizar El Rendimiento



Durante la fase de diseño o en los comienzos de la fase de desarrollo se produce asiduamente la creación y eliminación de las BD debido a numerosos cambios en el diseño del dominio que finalmente va a ser utilizado. Por ello habría que buscar algo parecido a drop all tables, el cual permitiera la eliminación de todas las tablas del esquema.


Una alternativa a las soluciones anteriormente propuestas es la ejecución de una sentencia SELECT que nos proporcione las sentencias que hemos de ejecutar para la eliminación de las tablas relativas al usuario actual.




Como Borrar Todas Las Tablas De Un Usuario En Oracle



Para borrar todas las tablas de una base de datos (MySQL, SQL Server, Postgres) utilizaremos sentencias SQL (Structured Query Languaje). La forma más completa para borrar todas las tablas es borrar la base de datos entera y volverla a crear.


La siguiente consulta fue tomada de una respuesta en stack overflow. Lo que hace es eliminar todas las tablas sin importar cuántas sean, esto lo hace consultando las tablas existentes y luego concatenándolas. Para ejemplificar, una consulta que elimina todas las tablas de la base de datos ventas es la siguiente:


Recuerda tener seleccionada una base de datos antes de ejecutar esa consulta. De esta manera se pueden eliminar todas las tablas, sin importar el número de las mismas (bueno, mientras al concatenarlas no sumen más de 32768 caracteres, pero eso es otra historia).


PostgreSQL es uno de los sistemas de bases de datos relacionales de código abierto más populares. Con más de 30 años de trabajo de desarrollo, PostgreSQL ha demostrado ser una base de datos altamente fiable y robusta que puede manejar un gran número de cargas de trabajo de datos complejas. PostgreSQL se considera la principal opción de base de datos de código abierto al migrar desde bases de datos comerciales como Oracle. Amazon Web Services (AWS) proporciona dos opciones de PostgreSQL administradas: Amazon Relational Database Service (Amazon RDS) para PostgreSQL y Amazon Aurora PostgreSQL. En esta publicación, hablo de algunas de las prácticas recomendadas para administrar usuarios y roles en PostgreSQL.


PostgreSQL le permite conceder permisos directamente a los usuarios de la base de datos. Sin embargo, como práctica recomendada, se recomienda crear varios roles con conjuntos específicos de permisos basados en los requisitos de aplicación y acceso. Paso seguido, asigne el rol apropiado a cada usuario. Los roles deben utilizarse para aplicar un modelo de privilegios mínimos para acceder a objetos de base de datos. El usuario maestro que se crea durante la creación de instancias de Amazon RDS y Aurora PostgreSQL solo debe utilizarse para tareas de administración de bases de datos, como la creación de otros usuarios, roles y bases de datos. El usuario maestro nunca debe ser utilizado por la aplicación.


En otros sistemas de administración de bases de datos relacionales (RDBMS) como Oracle, los usuarios y las funciones son dos entidades diferentes. En Oracle, no se puede utilizar un rol para iniciar sesión en la base de datos. Los roles se utilizan solo para agrupar grants y otros roles. Este rol se puede asignar a uno o más usuarios para otorgarles todos los permisos. Para obtener más información sobre cómo migrar usuarios, roles y grants de Oracle a PostgreSQL, consulte la publicación del blog de AWS Usando SQL para asignar usuarios, roles y grants de Oracle a PostgreSQL.


La instrucción SQL anterior otorga acceso SELECT al rol de solo lectura en todas las tablas y vistas existentes en el esquema llamado myschema. Tenga en cuenta que el usuario readonly no podrá acceder a las tablas nuevas que se añadan en el futuro. Para garantizar que también se pueda acceder a nuevas tablas y vistas, ejecute la siguiente instrucción para conceder permisos automáticamente:


El siguiente paso es conceder acceso a las tablas. Como se mencionó en la sección anterior, la concesión puede realizarse en tablas individuales o en todas las tablas del esquema. Para tablas individuales, utilice el siguiente SQL:


Después de crear un usuario, debe proporcionar estas credenciales a la aplicación para que pueda acceder a la base de datos. Es esencial asegurarse de que estas credenciales no estén codificadas (hard-coded) en el código fuente ni se coloquen en archivos de configuración compartidos como texto plano sin encriptar. AWS proporciona una solución para ello con AWS Secrets Manager. Con Secrets Manager, puede almacenar las credenciales y, a continuación, utilizar AWS Identity and Access Management (IAM) para permitir que solo ciertos usuarios y roles de IAM lean las credenciales. Para conocer los pasos que implica esto, consulte Creación y administración de secretos con AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.


Este método solo se ocupa de la parte de autenticación. La concesión de permisos a varios objetos de base de datos se realiza dentro de la base de datos, tal como se explica en esta publicación. Por ejemplo, para conceder acceso de lectura y escritura (readwrite) a este usuario, ejecute la siguiente instrucción SQL:


Puede supervisar la actividad del usuario configurando los parámetros del log de PostgreSQL disponibles en los grupos de parámetros de RDS. Por ejemplo, puede configurar los parámetros log_connections y log_disconnections para capturar todas las conexiones y desconexiones nuevas. Después de configurar estos parámetros en el grupo de parámetros, verá los siguientes mensajes en los archivos de log:


Para implementar este escenario, debe conectarse a la base de datos mydatabase mediante el usuario maestro y, a continuación, ejecutar las siguientes sentencias SQL utilizando cualquiera de los clientes de PostgreSQL como psql o pgAdmin:


La idea es que desde aplicacionadmin se pueda realizar tareas de mantenimiento sobre todas las tablas de aplicacion1 y aplicacion2 asi como poder importar y exportar el esquema de cada uno de ellos teniendo su contenido en un tablespace en comun (TB_APLICACION)


2- el usuario2 solo puede consultar las tablas y vistas del esquema esq_usuario3 tanto las actuales como las que se vayan creando, pero el usuario2 no puede actualizar, borrar, alterar ni crear tablas o vistas en esq_usuario3


Sobre el punto 1, en principio, con Oracle no puedes dar a un usuario permisos de creación sobre un esquema del que no es propietario, o crea tablas en su propio esquema, o le das permisos para crear tablas en todos los esquemas.


Lo que te podría servir es utilizar el sistema de autenticación proxy que permite a un usuario autenticarse, pero obteniendo los permisos de otro usuario. Es decir, podrías dar al usuario1 permisos para autenticarse con los permisos del propietario de esq_usuario3 con una sentencia como esta:


Sobre el punto 2, ya sea con permisos directos o creando roles, que yo sepa no puedes definir en una sola sentencia que un usuario tenga sólo permisos de SELECT sobre todas las tablas y vistas de otro esquema, tienes que asignar los permisos específicamente para cada tabla o vista. No es complicado, pero te obliga a actualizar los permisos cada vez que se crea un objeto nuevo en el esquema, que es lo que entiendo que querías evitar.


Aqui comentábamos ya este tema, pero igualmente te copio un script para creación de un rol con permisos para los objetos de un usuario concreto que también te puede ser útil para la asignación de permisos. Recuerda revisarlo y adaptar los permisos para tus necesidades, como por ejemplo dejar sólo permisos de consulta para las tablas:


buenas tardes yo voy hacer una base de datos en un solo computador q sentencia utilizo para q el resto de las computadoras tengan acceso a ella y poder ver todas las tablas como tambien agregar,eliminar y modificar registro?


Buenos Dias.Soy nuevo en oracle y estube creando algunos roles especificamente para la creacion de objetos tales como tablas vista, secuencias entre otros mas y no consigo cual es el privilegio para crear los COMMENT en las tablas. agradeseria su maximo apoyo en esto.


Si el usuario que utilizas es el propietario de las tablas no necesita ningún privilegio especial para crear comentarios en ellas.Si, por ejemplo, el usuario miusuario ha creado la tabla mitabla podrás ejecutar sin problemas la sentencia:


Tengo un usuario que pidió copiar unas tablas de una BD de Producción a una de Desarrollo (prueba) , luego de esto indica que no puede acceder a una tabla, es la unica persona que no puede. Como puedo revisar si ese usuario tiene permiso?


Hola a todos, tengo el siguiente problema, al iniciar la implementacion de un aplicativo sobre oracle 11g ,se le dio permisos de dba a un usuario, ahora la auditoria solicita quitar estos permios de dba, los quite pero empezaron a salir mensajes en el aplicativo al ejecutar algo como "no existen privilegios en tablespace USERS",revisé y hay muchas tablas creadas en el tablespace "users" por este usuario, pero el usuario tiene un tablespace asignado llamado PALMA. Q instruccion debo ejecutar para darle privilegios sobre este tablespace especificamente a esas tablas Y Puedo cambiar estas tablas al tablespaces Palma?


Sobre los permisos, los usuarios tienen un tablespace definido por defecto, pero los permisos se definen más bien sobre las tablas, no sobre los tablespaces. Puede que el problema sea que al quitarle los privilegios de DBA necesites asignar algún permiso genérico. Te enlazo un artículo en el que se comenta cómo crear un nuevo esquema de usuario desarrollador de Oracle para que puedas revisar si tu usuario tiene los permisos básicos para trabajar.


Buenas tardes solicito su ayuda mi problema es el siguiente:Desde el usuario system@xe; connect Normal, trato de compilar un pck que tiene en uno de sus cursores la vista v$process, pero obtengo como error: La tabla o vista no existe, pensé que era por permisos de administrador, pero me sigue saliendo el mismo error. Necesito compilar el pck pero con conexión Normal, porque en SYSDBA no me aparece este error, pero las tablas que se encuentran en el pck y otros prc, los tengo creados en modo de conexión normal, y al pasar a conexión SYSDBA las tablas creadas aparecen que no existen. 2ff7e9595c


0 views0 comments

Recent Posts

See All

Download de deep house music

Deep House Music: um guia para iniciantes Se você é fã de dance music eletrônica, já deve ter ouvido falar em deep house. Mas o que...

Commentaires


bottom of page