Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 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