You are on page 1of 23

Cmo crear un nuevo esquema en

Oracle paso a paso


Submitted by cfb on 22 October, 2006 - 21:44
Bases de datos
Oracle
Administracin
Bases de datos
Oracle
create
DBA
esquema
tablespace
usuario
Vamos a ver en tres sencillos pasos cmo crear un esquema de Oracle. Para
poder crear un nuevo esquema de Oracle siguiendo estos pasos es necesario
iniciar la sesin en la base de datos con un usuario con permisos de
administracin. Lo ms sencillo es utilizar directamente el usuario SYSTEM:
Creacin de un tablespace para datos y otro para ndices. Estos
tablespaces son la ubicacin donde se almacenarn los objetos del
esquema de Oracle que vamos a crear.
Tablespace para datos, con tamao 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 tamao 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
La creacin de estos tablespaces no es obligatoria, pero s recomendable,
as cada usuario de la BD tendr su propio espacio de datos.
Creacin 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;
Si no se especifica un tablespace, la BD le asignar el tablespace USERS,
que es el tablespace que se utiliza por defecto para los nuevos usuarios.
Se puede apreciar tambin que no hay ninguna referencia al tablespace de
ndices APPIDX que hemos creado. Si queremos mantener datos e ndices
separados habr que acordarse de especificar este tablespace en las
sentencias de creacin de ndices de este usuario, si no se hace stos se
crearn en APPDAT:
CREATE INDEX mi_indice ON mi_tabla(mi_campo)
TABLESPACE APPIDX;
Slo falta asignarle los permisos necesarios para trabajar. Si se le asignan
los roles 'Connect' y 'Resource' ya tiene los permisos mnimos, podr
conectarse a la base de datos y realizar las operaciones ms habituales de
consulta, modificacin y creacin de objetos en su propio esquema.
GRANT "CONNECT" TO "APP";
GRANT "RESOURCE" TO "APP";
Completamos la asignacin de permisos con privilegios especficos sobre
objetos del esquema Oracle 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 a la base de datos y comenzar a trabajar
sobre su nuevo esquema Oracle.
Creacin de tablas
En Oracle cada estructura de informacin se denomina TABLA, las cuales junto a los
ndices y al diccionario de datos del sistema, componen la base de datos. Por lo tanto, la
creacin de las tablas en el proceso de programacin en Oracle juegan un papel muy
importante. En el momento de crear las tablas se definen caractersticas a dos niveles: Tabla
y Columna, como se muestra a continuacin:
A nivel de tabla
Nombre: Nombre de la tabla puede ser de 1 a 30 caracteres.
Propietario: La tabla tiene como propietario al usuario que las crea.
Cantidad de columnas: Una tabla puede tener un mximo de 254 columnas.

A nivel de columna
Nombre: Puede tener de 1 a 30 caracteres.
Tipo de dato y su
ancho

CHAR Mximo de 255 caracteres
NUMBER Mximo de 105 dgitos
INTEGER N sin decimal
DATE hasta 31/12/4712
LONG Tipo carcter con tamao variable hasta 65535 bytes
RAW Dato en binario puro (imgenes y sonido)
LONGRAW Igual que long pero para almacenar datos en binario puro

Restricciones: Su funcin es definir reglas de validacin de la columna.
Para facilitar la continuidad del anlisis, usaremos las tablas definidas como : Clientes y
Ventas.
La definicin de restricciones al crear las tablas permite establecer de validacin de
datos, as como los controles necesarios para mantener la integridad referencial entre
tablas a travs de las columnas claves. Las restricciones que se pueden definir son:
Valor obligatorio:
En oracle existe el concepto de valor nulo (NULL) como un valor
indefinido o ausencia del valor, y la inversa no nulo (NOT NULL) que es
obligatorio de introducir.
Rango de
valores:
Sirven para chequear que el valor sea mayor a un valor determinado o
para que se encuentre entre dos valores.
Clave primaria:
Columnas que identifican de forma nica al registro, es un valor nico
y no nulo.
Clave externa:
Columna de la tabla que hace referencia a un valor que tiene que estar
registrado en otra tabla
Destacadas estas cuestiones veamos, entonces cmo se procede para crear las tablas
Clientes y Ventas:
Tabla Clientes
Objetivo:
Ficha con datos para identificar al cliente. Consta del cdigo del cliente
(n secuencial), fecha de alta al sistema, nombre, telfono, direccin y
alguna anotacin.
Requisitos
Se debe identificar a cada cliente con un cdigo nico (clave primaria),
registrando su nombre telfono y fecha de registro (estos datos son
obligatorios). La direccin y anotaciones son campos opcionales.
Creacin de la tabla:
CREATE TABLE clientes( codigo integer NOT NULL PRIMARY KEY,
fecha date NOT NULL,
nombre char(30) NOT NULL,
telefono char(20) NOT NULL,
direccion char(100),
anotacin long
);
Tabla Ventas
Objetivo:
Registrar las ventas con la siguiente informacin: Cdigo del cliente,
fecha de la venta artculo y valor de la venta.
Requisitos
El nmero del cliente es una clave externa que hace referencia a la
columna cdigo en la tabla clientes. En este caso todos los datos son
obligatorios. Se controla que la columna valor sea mayor a cero.

Creacin de la tabla:
CREATE TABLE ventas( codigo integer NOT NULL REFERENCES
clientes(codigo),
fecha date NOT NULL,
articulo char(20) NOT NULL,
valor number(10,2) NOT NULL check (valor>0)
);
<>Las restricciones de las claves primarias y clave externa se definieron a nivel de columna, pero
se pueden definir a nivel de tabla, al final de la misma, como se muestra a continuacin:
CREATE TABLE clientes( codigo integer NOT NULL ,
fecha date NOT NULL,
nombre char(30) NOT NULL,
telefono char(20) NOT NULL,
direccion char(100),
anotacin long,
PRIMARY KEY(codigo)
);
CREATE TABLE ventas( codigo integer NOT NULL ,
fecha date NOT NULL,
articulo char(20),
valor number(6,2) NOT NULL check (valor>0),
FOREIGN KEY (codigo) REFERENCES clientes(codigo)
);
La definicin a nivel de tabla es necesaria cuando la misma est formada por ms de un
columna.
Unicidad de la clave con ndices
Para garantizar la unicidad de los valores de la clave primaria de la tabla Clientes (en la
versin 6 donde esta restriccin solo y no est activa), se debe crear un ndice que garantice
la unicidad de la clave principal. Un requisito importante para la unicidad de la clave
principal es que las columnas de la clave se definen como NOT NULL.
A continuacin mostraremos como crear un ndice cliente_codigo para garantizar la
unicidad de la clave primaria:
CREATE UNIQUE INDEX cliente_codigo ON clientes(codigo);
Secuencias: codificacin numrica
La codificacin numrica del cliente se puede realizar con una secuencia que
automticamente genera los nmeros enteros en orden ascendente , no siendo necesario
recordar cual fue el ltimo nmero asignado, con el uso del siguiente comando:
CREATE SEQUENCE codigo_cliente INCREMENT BY 1 START WITH 1;
Para registrar un nuevo cdigo con la secuencia definida anteriormente se usa el pseudo-
columna codigo_cliente.NEXTVAL, la cual nos dar el siguiente valor que le corresponde
a la secuencia, la forma en que esto se realiza se explica ms adelante cuando analicemos el
ingreso de datos.
Para conocer el valor actual de la secuencia, es decir, el ltimo cdigo asignado, se usa la
pseudo-columna codigo_cliente.CURRVAL, desde la tabla DUAL del sistema , cuyo fin es
poder consultar pseudo-columnas (como se muestra a continuacin):
SELECT user, sysdate,codigo_cliente.currval FROM DUAL;
donde:
1.- user es el nombre del usuario 2.- sysdate es la fecha del sistema 3.-
codigo_cliente.currval es el ltimo valor asignado a la secuencia
Scripts de creacin de Base de Datos Oracle 9i y 10g

Compartir este post:











En ciertas circunstancias un DBA debe ser capaz de crear una base de datos Oracle sin
ayuda de los utilitarios grficos disponibles en Oracle (DBCA).
Es bueno experimentar con la creacin manual de bases de datos Oracle, ya que entrega una
experiencia que permite entender y decantar muchos conceptos en relacin al
funcionamiento del motor Oracle.
Este artculo describe las tareas que el DBA debe realizar para crear una base de datos en
ambiente (Linux-Unix) haciendo uso solo de la clsica consola de administracin sqlplus.
Pasos para crear una base de datos Oracle:
1. Decidir nombre nico para la instancia, nombre de base de datos, tamao del bloque
Oracle, set de caracteres, nmero mximo de archivos de datos, y nmero mximo de
archivos de redolog.
2. Decidir la estructura de almacenamiento fsico de la base de datos (ASM, File System, Raw
Devices) . En el ejemplo se usa almacenamiento por file system, y se han definido y creado
los puntos de montaje de acuerdo al modelo OFA de Oracle.
3. Copiar y editar el archivo de parmetros (init.ora) que permite inicializar la instancia
Oracle.
4. Configurar las variables apropiadas del sistema operativo (ORACLE_SID), otras variables
tales como ORACLE_HOME, ORACLE_BASE deberian estar previamente definidas.
5. Crear archivo de password (segn el valor que se haya definido para el parmetro
REMOTE_LOGIN_PASSWORDFILE)
6. Invocar el SQLPLUS y conectarse a la base como sysdba.
7. Iniciar la instancia en estado NOMOUNT. En este estado se crea una base de datos nueva.
8. Crear la base de datos (ejecutar script de creacin de la base de datos)
Ejemplo de archivo de parmetro inittest.ora
*.audit_file_dest=/u01/app/oracle/admin/test/adump
*.background_dump_dest=/u01/app/oracle/admin/test/bdump*.compatible=10.2.0.1.0
*.control_files=/u02/oradata/test/control01.ctl,
/u02/oradata/test/control02.ctl,'/u02/oradata/test/control03.ctl
*.core_dump_dest=/u01/app/oracle/admin/test/cdump
*.db_block_size=8192
*.db_domain=midominio.cl
*.db_file_multiblock_read_count=16
*.db_name=test
*.db_recovery_file_dest=/u01/app/oracle/flash_recovery_area
*.db_recovery_file_dest_size=2147483648
*.dispatchers=(PROTOCOL=TCP) (SERVICE=testXDB)
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=92274688
*.processes=150
*.remote_login_passwordfile=EXCLUSIVE
*.sga_target=277872640
*.undo_management=AUTO
*.undo_tablespace=TS_UNDO
*.user_dump_dest=/u01/app/oracle/admin/test/udump
Ver archivo inittest.ora inittest
Ejemplo de Creacin Manual de Base de Datos Oracle 9i
En los ejemplos que vienen a continuacin se ha preparado un archivo llamado inittest.ora
que contiene los parmetros de la instancia llamada test.
u01/app/oracle/database/oracle9iR2/dbs >sqlplus / as sysdba
SQL*Plus: Release 9.2.0.2.0 Production on Wed Apr 05 14:08:37 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=?/dbs/inittest.ora
ORACLE instance started.
Total System Global Area 160925320 bytes
Fixed Size 730760 bytes
Variable Size 109051904 bytes
Database Buffers 50331648 bytes
Redo Buffers 811008 bytes
SQL> CREATE DATABASE test
LOGFILE group 1 (/u01/oradata/test/redolog1a.dbf,
/u02/oradata/test/redolog1b.dbf ) SIZE 10M,
group 2 (/u01/oradata/test/redolog2a.dbf,
/u02/oradata/test/redolog2b.dbf ) SIZE 10M,
group 3 (/u01/oradata/test/redolog3a.dbf,
/u02/oradata /test/redolog3b.dbf ) SIZE 10M
DATAFILE /u02/oradata/test/system01.dbf SIZE 200M
CHARACTER SET WE8ISO8859P1
national character set utf8
EXTENT MANAGEMENT LOCAL
undo tablespace ts_undo
datafile /u02/oradata/test/undo01.dbf
size 50M
default temporary tablespace ts_temp
tempfile /u02/oradata/test/temp01.dbf
size 50M autoextend on next 50M maxsize 300M;
Si se genera un error ORA-01031: insufficient privileges, eso significa que lo ms
probable, es que el usuario actual no est en el grupo dba (en unix), o en el grupo
ORA_DBA (Windows).
Si el archivo init.ora no est en su ubicacin por defecto o no se ha encontrado con el
atributo pfile, se genera un error ORA-01078: failure in processing system parameters y se
emite un error LRM-00109: could not open parameter file
/u01/app/oracle/product/database/9.2.0/db_1/dbs/inittest.ora
Ejemplo de Creacin Manual de Base de Datos Oracle 10g
/u01/app/oracle/product/database/10.2.0/db_1/dbs >sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 Production on Wed Apr 05 14:08:37 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=?/dbs/inittest.ora
ORACLE instance started.
Total System Global Area 160925320 bytes
Fixed Size 730760 bytes
Variable Size 109051904 bytes
Database Buffers 50331648 bytes
Redo Buffers 811008 bytes
SQL>CREATE DATABASE test
LOGFILE group 1 (/u01/oradata/test/redolog1a.dbf,
/u02/oradata/test/redolog1b.dbf ) SIZE 10M,
group 2 (/u01/oradata/test/redolog2a.dbf,
/u02/oradata/test/redolog2b.dbf ) SIZE 10M,
group 3 (/u01/oradata/test/redolog3a.dbf,
/u02/oradata/test/redolog3b.dbf ) SIZE 10M
DATAFILE /u02/oradata/test/system01.dbf SIZE 400M autoextend on next 16M maxsize
unlimited
CHARACTER SET WE8ISO8859P1
national character set utf8
EXTENT MANAGEMENT LOCAL
sysaux datafile /u02/oradata/test/sysaux01.dbf size 300M autoextend on next 16M
maxsize unlimited
undo tablespace ts_undo
datafile /u02/oradata/test/undo01.dbf size 50M autoextend on next 16M maxsize
unlimited
default temporary tablespace ts_temp
tempfile /u02/oradata/test/temp01.dbf size 50M autoextend on next 50M maxsize 300M
/
El comando anterior lo puede obtener haciendo clicl crea_db
El comando create database tambin ejecuta un archivo cuyo nombre es determinado por el
parmetro de inicio (oculto) _init_sql_file. Despus de la creacin de la base de datos, sta
puede ser montada y abierta para su uso.
Una vez creada la base de datos cruda, se deben completar algunas tareas adicionales:
Tareas de post creacin de la base de datos
Una vez que se ha creado la base datos con el comando create database, sta debe ser
complementada con la ejecucin de algunos scripts para crear el catlogo y la opcin
procedural que permite ejecutar programas PL/SQL.
Ejecute como SYS
?/rdbms/admin/catalog.sql
?/rdbms/admin/catproc.sql y
Donde ? representa un shortcut para el valor de la variable de ambiente $ORACLE_HOME
(solo en sqlplus)
catalog.sql llama, por ejemplo, a catexp.sql que es un requisito para el utilitario exp que
permite crear respaldos lgicos o dbmsstdx.sql que es un requisito para crear triggers.
El usuario system tambin puede ejecutar ?/sqlplus/admin/pupbld.sql. pupbld.sql crea una
tabla que permite bloquear a alguien ms el uso de sqlplus.


8.2. CONCEDER Y REVOCAR PRIVILEGIOS

CONCEDER Y REVOCAR PRIVILEGIOS
Por default, nadie puede hacer nada en una Base de Datos Oracle. Como usuario no
puede incluso conectarse sin el otorgamiento de un privilegio. Y una vez hecho esto,
todava no puede hacer nada til (o peligroso) sin haber dado ms privilegios. Los
privilegios son asignados a las cuentas de usuarios con el comando GRANT y retirados
con un REVOKE. Sintaxis adicional puede dar a usuario capacidad para conceder
privilegios a otros usuarios. Por defecto sol el DBA (SYS y SYSTEM) tiene el derecho
para conceder
Los privilegios vienen en dos grupos: Privilegios de sistemas que (generalmente
hablando) permite a a los usuarios desarrollar acciones que afecten el diccionario de
datos y privilegios de objeto que permiten a los usuarios desarrollar acciones que
afectan los datos.

PRIVILEGIOS DE SISTEMA.
Hay cerca de dos cientos privilegios de sistema. La mayora aplica para acciones que
afectan el diccionario de datos, tales como creacin de tablas o usuarios. Otros afectan
la Base de Datos o la Instancia, tales como creacin de Tablespaces, modificar valores
de los parmetros de instancia, o el establecimiento de una sesin. Algunos de los ms
comnmente utilizados son:

CREATE SESSION este permite a los usuarios conectarse, sin este, no puede incluso
loguearse en la Base de Datos.
RESTRICTED SESSION si la Base de Datos es iniciada con STARTUP RESTRICT, o
modificada con ALTER SYSTEM ENABLE RESTRICTED SESSION, solo los usuarios con
este privilegio sern capaz de conectarse.
ALTER DATABASE da acceso a muchos comandos necesarios para modificar
estructuras fsicas.
ALTER SYSTEM Da control total sobre parmetros de instancia y estructuras de
memoria.
CREATE TABLESPACE con los privilegios ALTER TABLESPACE y DROP TABLESPACE,
este permitir a los usuarios gestionar Tablespaces.
CREATE TABLE permite al concesionario crear tablas en su propio esquema; incluso
la capacidad para alterar y eliminarlos, para ejecutar SELECT y comandos DML sobre
ellos, y para crear, alterar o eliminar ndices sobre ellos.
GRANT ANY OBJECT PRIVILEGE permite al concesionario conceder permisos de
objetos sobre objetos que l no posee a otros pero no para si misma.
CREATE ANY TACLE el concecionario puede crear tablas que pertenecen a otros
usuarios.
DROP ANY TABLE. El concesionario puede eliminar tablas pertenecientes a otros
usuarios.
INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE el concesionario puede
ejecutar estos commandos DML contra tablas propiedad de todos los demas usuarios.
SELECT ANY TABLE el concesionarios puede SELECT cualquier tabla en la Base de
Datos.

La sintaxis para otorgar privilegios de sistema es:


GRANT privilege [, privilege...] TO username ;

Despues de crear una cuenta de usuario, un comando tal como este otorgar los
privilegios de sistema comnmente asignado a usuario que estarn involucrados en el
desarrollo de aplicaciones:


grant create session, alter session,
create table, create view, create synonym, create cluster,
create database link, create sequence,
create trigger, create type, create procedure, create operator
to username ;

Estos privilegios le permiten al usuario conectarse y configurar su sesin, y entonces
crear objetos para almacenar datos y objetos PL/SQL. Estos objetos solo pueden existir
en su propio esquema; no tendr privilegios contra cualquier otro esquema. La
creacin de objetos tambin se ver limitada por la cuota puede haber sido asignado
en varios Tablespaces.
Una variacin en la sintaxis le permite pasar sus privilegios a otros terceros. Por
ejemplo:


connect system/oracle;
grant create table to scott with admin option;
connect scott/tiger;
grant create table to jon;

Este da a SCOTT la capacidad para crear tablas en su propio esquema, y tambin para
emitir el mismo el comando GRANT. En este ejemplo. Se le permite a JON crear tablas
tambin. Pero JON solo ser capaz para crear en su propio esquema. La figura 8-5
muestra el resultado de los otorgamientos segn lo presentado por el Database
Control. La misma informacin puede ser recogida por una consulta a la vista
DBA_SYS_PRIVS.

EXAMEN
La revocacin de unos privilegios de sistema no es en cascada (a diferencia de una
revocacin de privilegio de objeto)

Si un privilegio es revocado de un usuario, cualquier accin realizada que se realiza
con ese privilegio (tales como crear tablas) permanecer intacta. Tambin, si ha sido
otorgado y haba utilizado el ADMIN OPTION, cualquier usuario a quien le paso el
privilegio lo retendr. Hay registro guardado del otorgante de un privilegio de sistema,
por lo que no es posible un REVOKE en cascada.
La figura 8-6 ilustra esto. El privilegio ANY da permiso contra todos los objetos
relevantes en la Base de Datos.
Por lo tanto,


grant select any table to scott;





Permitir a SCOTT consultar cualquier tabla en cualquier esquema en la Base de Datos.
Es a menudo considerado mala prctica otorgar el privilegio ANY a cualquier otro
usuario que el administrador de sistemas.

EN EL TRABAJO
En realidad, no es tan peligroso ahora como con versiones anteriores. Ya no se
incluyen tablas en el esquema SYS, por lo que el diccionario de datos esta todava
protegido. Pero ANY debe ser utilizado con extrema precaucin, ya que elimina toda la
proteccin de las tablas de usuarios.

PRIVILEGIOS DE OBJETOS
Los privilegios de objeto dan la capacidad para realizar los comandos SELECT, INSERT,
UPDATE y DELETE contra tabla y objetos relacionados, y para ejecutar objetos PL/SQL.
Estos privilegios no existen para los objetos propios en el esquema del usuario.
Si un usuario tiene el privilegio de sistema CRETA TABLE, puede realizar operaciones
SELECT y DML contra las tablas que el crea sin la necesidad de adicionar permisos.

EXAMEN
El privilegio ANY, que concede permisos contra objetos en cualquier cuenta de usuario
en la Base de Datos, no es privilegio de objeto, son privilegios de sistemas.

Los privilegios de objetos aplicados a los diferentes tipos de objetos




La sintaxis es.
GRANT privilege ON schema.object TO username [WITH GRANT OPTION] ;


Por ejemplo:
grant select on hr.regions to scott;

Las variaciones incluyen el uso de ALL, que aplicar todos los permisos relevantes al
tipo de objeto, y nombramiento de columnas particulares de vistas y tablas.


grant select on hr.employees to scott;
grant update (salary) on hr.employees to scott;
grant all on hr.regions to scott;

Este cdigo permitir a SCOTT consultar todas las columnas de la tabla HR EMPLOYEES
pero solo escribir a una columna nominada, SALARY. Luego SCOTT da tolos los
privilegios (SELECT y DML) de objeto sobre la tabla HR REGIONS. La figura 8-7
muestra el resultado de esto, como vista en el Database Control.


EN EL TRABAJO
Otorgar privilegios a nivel de columna es a menudo ser una mala prctica debido a la
carga de trabajo masivo que involucra. Si es necesario restringir el acceso a algunas
personas a ciertas columnas, creando una vista que muestra solo las columnas a
menudo ser buena alternativa.

Utilizando WITH GRANT OPTION (o con el Database Control, seleccionado el Check Box
GRANT OPTION como se muestra en la figura 8-7) permite a un usuario pasar sus
privilegios de objeto sobre un tercer usuario. Oracle mantiene un registro de quien
otorgo privilegios de objeto a quien. Esto permite un REVOKE sobre un objeto en
cascada para todos estos en la cadena. Considere esta secuencia de comandos:




connect hr/hr;
grant select on employees to scott with grant option;
connect scott/tiger;
grant select on hr.employees to jon with grant option;
conn jon/jon;
grant select on hr.employees to sue;
connect hr/hr;
revoke select on employees from scott;

En la conclusin de este comando, ni SCOTT ni JON ni SUE tiene el privilegio SELECT
contra HR.EMPLOYEES.


EXAMEN
La revocacin de un privilegio de objeto es en cascada (a diferencia de un privilegio de
sistema)


EJERCICIO 8-2.
OTORGANDO PRIVILEGIOS DIRECTOS.
En este ejercicio, usted otorgar algunos privilegios a los usuarios creados en el
ejercicio 8-1 y probar que funcionan.


1. Conctese a su Base de Datos como usuario SYSTEM con SQL*PLUS.


2. Otorgue CREATE SESSION al usuario ALOIS:
grant create sessions to alois;


3. Abrir otra sesin SQL*PLUS, y conctese como ALOIS. Esta vez, el Login tendr
xito.
connect alois/oracle


4. Como ALOIS, intente crear una Tabla:
create table t1 (c1 date);
Esta fallara con el mensaje ORA-01031: insufficient privileges


5. En la sesin SYSTEM, otorgue a ALOIS el privilegio CREATE TABLE:
grant create table to alois;


6. En la sesin ALOIS, intente nuevamente:
create table t1 (c1 date);
Este fallar con el mensaje ORA-01950: no privileges on Tablespace EXAMPLE.


7. En la sesin de SYSTEM, dar a ALOIS una quota en el Tablespace EXAMPLE:
alter user alois quota 1m on example;


8. En la session ALOIS, intente nuevamente, esta vez, la creacin tendr xito.


9. Como ALOIS, conceda privilegios de objeto sobre la nueva Tabla:
grant all on t1 to afra;
grant select on t1 to anja;


10. Conectese al Database Control como SYSTEM.

11. Confirme que los privilegios de objeto han sido otorgados.

La ruta de navegacin desde la pgina principal del Database Control es: sobre la ficha
Schema dar clic al link Table en la seccin Database Objects. Ingrese ALOIS cono el
esquema y T1 como la tabla y dar clic en el botn Go. En la lista de Accions, seleccione
Objects Privileges. Como lo muestra la siguiente ilustracin, ANJA solo tiene SELECT,
pero AFRA tiene todo. Tenga en cuenta que la ventana tambin muestra por quien los
privilegios fueron concedidos, y que ninguno de ellos fue concedido con WITH GRANT
OPTION



12. Con el Database Control, confirme que privilegios tiene otorgado ALOIS. La ruta de
navegacin desde la pagina principal de la Base de Datos es: sobre la ficha Server dar
clic al link Users en la sesin de Seguridad, seleccione el Radio Button para ALOIS, dar
clic al View Botn. Usted vera que tiene dos privilegios de sistema (CREATE SESSION y
CREATE TABLE)sin la opcin ADMIN OPTION, un 1MB de quota en EXAMPLE y nada
ms.

13. Recupere la misma informacin mostrada en los pasos 11 y 12 con SQL*PLUS.
Como SYSTEM ejecute esta consulta:

select grantee,privilege,grantor,grantable from dba_tab_privs
where owner='ALOIS' and table_name='T1';
select * from dba_sys_privs where grantee='ALOIS';
14. Revoque los privilegios concedidos a AFRA y ANJA:
revoke all on alois.t1 from afra;
revoke all on alois.t1 from anja;

Manual de Oracle
Conexin TNS
Es el nombre por el que se conocen las instancias de una base de datos Oracle en una red. El
nombre de servicio TNS se asigna al configurar la conectividad a la base de datos de Oracle. La
replicacin utiliza el nombre de servicio TNS para identificar al suscriptor y establecer las
conexiones.
Una vez finalizada la instalacin con Oracle Universal Installer, utilice Net Configuration Assistant
para configurar la conectividad de red. Debe proporcionar cuatro grupos de informacin para
configurar la conectividad de red. El administrador de base de datos de Oracle configura la red al
instalar la base de datos y la escucha, y debera poder proporcionar esta informacin si el usuario
no la tiene. Debe realizar las siguientes acciones:
Accin Descripcin
Identificar la base de datos Existen dos mtodos para identificar la base de datos. El primer
mtodo utiliza el Identificador de sistema (SID) de Oracle y est disponible en cada versin de
Oracle. El segundo mtodo utiliza el Nombre de servicio, que est disponible a partir de Oracle
versin 8.0. Los dos mtodos utilizan un valor que se configura al crear la base de datos y es
importante que la configuracin de red de cliente use el mismo mtodo de nomenclatura que
utiliz el administrador al configurar la escucha para la base de datos.
Identificar un alias de red para la base de datos Se debe especificar un alias de red, que se utilizar
para tener acceso a la base de datos de Oracle. El alias de red es bsicamente un puntero al SID o
al Nombre de servicio remoto que se configur al crear la base de datos; tiene nombres distintos
en las diferentes versiones y productos de Oracle, incluidos Net Service Name y TNS Alias.
SQL*Plus solicita este alias como el parmetro "Host String" (Cadena de host) cuando se inicia la
sesin.
Seleccionar el protocolo de red Seleccione los protocolos que desee admitir. La mayora de
aplicaciones utilizan TCP.
Especificar la informacin de host para identificar las escuchas de base de datos El host es el
nombre o el alias de DNS del equipo donde se est ejecutando la escucha de Oracle, que
normalmente es el mismo equipo donde reside la base de datos. En algunos protocolos, se debe
proporcionar informacin adicional. Por ejemplo, si se selecciona TCP, se debe proporcionar el
puerto donde se escuchan las solicitudes de conexin a la base de datos de destino. La
configuracin predeterminada de TCP utiliza el puerto 1521.

Configurar permisos de directorio
La cuenta que se ejecuta el servicio SQL Server en el distribuidor deben concederse permisos de
lectura y ejecucin para el directorio (y todos los subdirectorios) en el que est instalado el
software de red de cliente de Oracle.
Comprobar la conectividad entre el distribuidor de SQL Server y el publicador de Oracle
Casi al final del asistente para configuracin de redes puede que aparezca una opcin para
comprobar la conexin al publicador de Oracle. Antes de comprobar la conexin, asegrese de
que la instancia de la base de datos de Oracle est en lnea y que la Escucha de Oracle est
ejecutndose. Si la comprobacin no es correcta, pngase en contacto con el administrador de
bases de datos de Oracle responsable de la base de datos a la intenta conectarse.
Despus de realizar una conexin correcta al publicador de Oracle, intente iniciar la sesin en la
base de datos con la cuenta y la contrasea configurados para el Agente de distribucin de la
suscripcin.
Haga clic en Inicio y, a continuacin, en Ejecutar.
Escriba cmd y haga clic en Aceptar.
En el smbolo del sistema, escriba:
sqlplus /@
Por ejemplo: sqlplus replication/$tr0ngPasswerd@Oracle90Server
Si la configuracin de red es correcta, se iniciar la sesin.



Manual de Oracle
Datafiles
Es la representacin fsica de un Tablespace. Son los "ficheros de datos" donde se almacena la
informacin fsicamente, puede tener cualquier nombre y extensin (siempre dentro de las
limitaciones del sistema operativo), y puede estar localizado en cualquier directorio del disco duro.
Un Datafiles tiene un tamao predefinido en su creacin (por ejemplo 100Mb) y este puede ser
alterado en cualquier momento. Cuando creemos un Datafiles, este ocupar tanto espacio en
disco como hayamos indicado en su creacin, aunque internamente est vaco.
Oracle hace esto para reservar espacio continuo en disco y evitar as la fragmentacin. Conforme
se vayan creando objetos en ese Tablespace, se ir ocupando el espacio que cre inicialmente.
Caractersticas:
Archivo fsico donde se almacenan los datos.
Es el espacio de memoria concedido al usuario para que interactu con el SGA.
Un Datafiles esta asociado a un solo Tablespace.
Se pueden extender automticamente cuando la BD necesita espacio.
Usuarios.- Objetos con informacin propia del usuario al que estamos conectado.
Caractersticas:
Accesible desde todos los usuarios.
Proporcionan menos informacin que los objetos DBA
Los datos son almacenados en la tabla: DBA.USER

You might also like