Cómo crear un nuevo esquema en Oracle paso a paso

Para poder realizar todos los pasos es necesario iniciar la sesión en la base de datos con un usuario con permisos de administración, lo más sencillo es utilizar directamente el usuario SYSTEM Creación de un tablespace para datos, y otro para índices. Estos tablespaces son la ubicación donde se almacenarán los objetos del esquema que vamos a crear.

Tablespace para datos, con tamaño inicial de 1024 Mb, y auto extensible

CREATE TABLESPACE "APPDAT" LOGGING DATAFILE '/export/home/oracle/oradata/datafiles/APPDAT.dbf' SIZE 1024M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

Tablespace para índices, con tamaño inicial de 512 Mb, y auto extensible

CREATE TABLESPACE "APPIDX" LOGGING DATAFILE '/export/home/oracle/oradata/datafiles/APPIDX.dbf' SIZE 512M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

Creación del usuario que va a trabajar sobre estos tablespaces, y que será el propietario de los objetos que se se creen en ellos

CREATE USER "APP" PROFILE "DEFAULT" IDENTIFIED BY "APPPWD"

DEFAULT TABLESPACE "APPDAT" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

Sólo falta asignarle los permisos necesarios para trabajar. Si se le asignan los roles 'Connect' y 'Resource' ya tiene los permisos mínimos

GRANT "CONNECT" TO "APP";

GRANT "RESOURCE" TO "APP";

Completamos la asignación de permisos con privilegios específicos sobre objetos para asegurarnos de que el usuario pueda realizar todas las operaciones que creamos necesarias

GRANT ALTER ANY INDEX TO "APP";

GRANT ALTER ANY SEQUENCE TO "APP";

GRANT ALTER ANY TABLE TO "APP";

GRANT ALTER ANY TRIGGER TO "APP";

GRANT CREATE ANY INDEX TO "APP";

GRANT CREATE ANY SEQUENCE TO "APP";

GRANT CREATE ANY SYNONYM TO "APP";

GRANT CREATE ANY TABLE TO "APP";

GRANT CREATE ANY TRIGGER TO "APP";

GRANT CREATE ANY VIEW TO "APP";

GRANT CREATE PROCEDURE TO "APP";

GRANT CREATE PUBLIC SYNONYM TO "APP";

GRANT CREATE TRIGGER TO "APP";

GRANT CREATE VIEW TO "APP";

GRANT DELETE ANY TABLE TO "APP";

GRANT DROP ANY INDEX TO "APP";

GRANT DROP ANY SEQUENCE TO "APP";

GRANT DROP ANY TABLE TO "APP";

GRANT DROP ANY TRIGGER TO "APP";

GRANT DROP ANY VIEW TO "APP";

GRANT INSERT ANY TABLE TO "APP";

GRANT QUERY REWRITE TO "APP";

GRANT SELECT ANY TABLE TO "APP";

GRANT UNLIMITED TABLESPACE TO "APP";

Ahora el usuario ya puede conectarse y comenzar a trabajar sobre su esquema

 

 

 

 

OWNER or User

Un esquema es un owner o un user ???

El Schéma es un user...

El Schéma es un user...

Entonces puedo entender que

Entonces puedo entender que la conexion seria  la siguiente.

Usuario: APP

Password: APPPWD

Base de Datos: APPDAT

Estos seran mis parametros desde mi toad o pl/sqldev no es asi? o me equivoco?

 

Saludos.

Henry

El tablespace y la instancia

Los datos del usuario y el password serían correctos, pero APPDAT es el tablespace, que no tiene nada que ver con el nombre de la base de datos.

El tablespace es el lugar donde se crean los objetos de uno o varios usuarios, y una base de datos tiene varios tablespaces. En este caso, al crear el usuario, le dices que todos los objetos (tablas, índices, procedures, etc.) que cree este user lo haga por defecto sobre el tablespace APPDAT.

El nombre de la base de datos lo puedes encontrer en el fichero tnsnames.ora, que estará en el directorio donde se haya instalado esta base de datos.

Es recomendable crear un tablespace para cada usuario que vaya a crear objetos, pero si te lo quieres ahorrar, si no especificas nada la base de datos utiliza el tablespace USERS como tablespace por defecto para cada nuevo usuario que se crea.

Esquema

El esquema lo componen todos los objetos propiedad de un usuario, en el ejemplo el User APP será el Owner de todas las tablas, índices, secuencias, etc que cree, y todos estos objetos formarán su esquema.

Carlos Fernández

Analista de sistemas

Select any table

Tengo una Instancia en Oracle 10g, con varios esquemas, y necesito que uno de ellos pueda ver y consultar todas las tablas de todos los otros usuarios o esquemas.

¿como puedo hacer esto?

Permisos de consulta sobre tablas de diferentes esquemas

Para conceder permisos de consulta a este usuario sobre todas las tablas de los demás esquemas lo mejor es que utilices el diccionario de datos para crear los permisos. Entra con un usuario de sistema (SYS o SYSTEM) que 'vea' todas las tablas y ejecuta una sentencia como esta:

select 'Grant select on '|| t.owner||'.'||t.table_name ||' to usuario;'
from all_tables t
where owner not like '%SYS%';

Si quieres, en el artículo Construcción de scripts con ayuda del diccionario puedes consultar cómo crear un script con estas sentencias y lanzarlo desde la linea de comandos.

Otra opción sería asignar al usuario el rol SELECT_CATALOG_ROLE, o darle permisos de SELECT ANY DICTIONARY, pero con la que te propongo puedes restringir los permisos a lo que quieras en la misma select si, por ejemplo, no te interesa que el usuario tenga acceso a las tablas de sistema.

Carlos Fernández

Analista de sistemas

Find with Google engine

Google