Vous êtes sur la page 1sur 74

Curso FundamentosdeOracle,SQLyPLSQL

Creadopor: JosAlexanderRodrguezVargas 1.FundamentosdeOracle QuesOracle? Oracle es un sistema de gestin de base de datos relacional (oRDBMS por el acrnimo en inglsdeRelationalDataBaseManagementSystem),desarrolladoporOracleCorporation. Se considera a Oracle como uno de los sistemas de bases de datos ms completos, destacando: soportedetransacciones estabilidad escalabilidad Soportemultiplataforma.

Su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de laoferta de otros RDBMS con licencia libre como PostgreSQL,MySqloFirebird.Lasltimasversiones de OraclehansidocertificadasparapodertrabajarbajoGNU/Linux. LicenciasdeOracle Oracleapartirdelaversin10gRelease2,cuentacon6ediciones: OracleDatabaseEnterpriseEdition(EE). La versin empresarial es la ms alta del rango en las versiones deBases de Datos oracle para servidor, cuenta con opciones tales com RAC, Particionamiento, Spatial, etc, y estas opciones pueden manejarse de manera separada para mejorar la funcionabilidad de la base de datos. Esta licencia se usageneralmente en servidores quetienenmsde4CPUs.ynotienelimitesdememoria. OracleDatabaseStandardEdition(SE).

Laversionstandardesdiseadaparaempresasmedianasypequeas.Ofrecevarias caractersticasyfuncionalidadesimplementadasenlaversionEnterprise. Opcionesde BasedeDatoscomoDataGuard,Particionamiento,Spatial,etcnovienenincluidas conestaversion.Estaversionestandaraplicaaservidoresde1a4CPUs,sise excedenloscuatroCPUsdeberentoncesadquirirunalicenciadeEnterpriseEdition, la versindeStandardEditionnotienelimitesdememoriaypuedeusarseenclustering conOracleRACsincargoadicionalapartirdelaversin10g.

OracleDatabaseStandardEditionOne(SE1) LaversionStandareditiononeesdemenorcostoymenosnivelquelaStandarEdition. SeintrodujoconOracle10g,tienealgunasrestriccionesensusfuncionalidades, puedeserlicenciadasoloparapequeosservidoresconunacapacidadmaximade2 procesadores.

OracleDatabaseExpressEdition(XE). Introducidaen2.005,ofreceunaversinOracle10glibreparadistribuirsesobre plataformasWindowsyLinux,tienerestriccionesdesolounCPU,4Gigasdedatosy usamximo1GBdeRAM,elsoportedeestaversinseencuentraenforosynoa travsdeOracleCorporation. LanicaedicingratuitaeslaExpressEdition,queescompatibleconlasdems edicionesdeOracleDatabase10gR2yOracleDatabase11g. Estaversionpuedeembeberseconotrasaplicaionesdetercerosysepuededistribuir gratuitamente.

OracleDatabasePersonalEdition(PE). Lapersonaleditionesunaversindebasededatossingularparausuario.Escasi igualalaversionEnterpriseEdition,peronosoportaopcionesavanzadascomoRAC, Streams,XMLDB,etc.

OracleDatabaseLiteEdition(LE). Destinadoparafuncionarendispositivosmvilestalescomocelulares,PDAs,etc. Incrustaunabasededatosmvilsituadaeneldispositivoysepuedesincronizarcon unainstalacinbasadaenservidor.

VersionesdeOracle Oracle5 Oracle6 Oracle7:7.0.167.3.4 Oracle8Database:8.0.38.0.6 Oracle8iDatabaseRelease1:8.1.5.08.1.5.1 Oracle8iDatabaseRelease2:8.1.6.08.1.6.3 Oracle8iDatabaseRelease3:8.1.7.08.1.7.4 Oracle9iDatabaseRelease1:9.0.1.09.0.1.5(patchsetasofDecember2003) Oracle9iDatabaseRelease2:9.2.0.19.2.0.8(patchsetasofApril2007) OracleDatabase10gRelease1:10.1.0.210.1.0.5(patchsetasofFebruary2006) OracleDatabase10gRelease2:10.2.0.110.2.0.5(patchsetasofApril2010) OracleDatabase11gRelease1:11.1.0.611.1.0.7(patchsetasofSeptember2008) OracleDatabase11gRelease2:11.2.0.1(released20090901)

SistemasOperativosyArquitecturasSoportadasenOracle10gR2 OracleDatabase10gRelease2(10.2.0.4)forMACOSXonIntelx8664

Oracle Database 10g Release 2 (10.2.0.4) for Microsoft Windows Vista x64, Microsoft WindowsServer2008R2x64,Windows7x64 Oracle Database 10g Release 2 (10.2.0.3/10.2.0.4) for Microsoft Windows Vista, WindowsServer2008,Windows7 OracleDatabase10gRelease2(10.2.0.1.0)forMicrosoftWindows OracleDatabase10gRelease2(10.2.0.1.0)forMicrosoftWindows(x64) OracleDatabase10gRelease2(10.2.0.1.0)forMicrosoftWindows(64bitItanium) OracleDatabase10gRelease2(10.2.0.1.0)forLinuxx86 OracleDatabase10gRelease2(10.2.0.1.0)forLinuxx8664 OracleDatabase10gRelease2(10.2.0.1.0)forLinuxItanium OracleDatabase10gRelease2(10.2.0.1.0)forLinuxonPower OracleDatabase10gRelease2(10.2.0.1.0)forAIX5L OracleDatabase10gRelease2(10.2.0.1.0)forHPUXPARISC OracleDatabase10gRelease2(10.2.0.1.0)forHPUXItanium OracleDatabase10gRelease2(10.2.0.2)forHPTru64UNIX OracleDatabase10gRelease2(10.2.0.2)forHPOpenVMSAlpha OracleDatabase10gRelease2(10.2.0.2)forOpenVMSItanium OracleDatabase10gRelease2(10.2.0.2)forSolarisOperatingSystem(x86) OracleDatabase10gRelease2(10.2.0.1.0)forSolarisOperatingSystem(x8664) Oracle Database 10g Release 2 (10.2.0.1.0) for Solaris Operating System (SPARC) (64bit) OracleDatabase10gRelease2(10.2.0.2)forz/Linux OracleDatabase10gRelease2(10.2.0.2)forz/OS(OS/390) OracleDatabase10gRelease2(10.2.0.2.20)forFujitsuSiemensBS2000/OSD

SistemasOperativosyArquitecturasSoportadasenOracle11gR2 MicrosoftWindows(32bit) MicrosoftWindows(x64) Linuxx86 Linuxx8664 Solaris(SPARC)(64bit) Solaris(x8664) HPUXItanium HPUXPARISC(64bit) AIX(PPC64)

ReseaHistricadeOracle 1977:LarryEllisonyunosamigos,fundaronSoftwareDevelopmentLaboratories. 1979:SDLcambiasunombrea"RelationalSoftware,Inc." RSIintrodujosuproductoOracleV2comolaprimeraversintempranadeunsistemadebase dedatosrelacional,estaversinnotenasoportedetransaccionesperoimplementaba funcionalidadesbsicasdeconsultasSQLyJOINs.RSI,nuncalanzlaversin1. 1982:RSI,cambiasunombrenuevamentesiendoahoraconocidacomoOracleCorporation paraalinearsemsestrechamenteconsuproductoestrella,comoestrategademarketing. 1983:LacompaialanzaOracleversin3,elcualfuereescritousandolenguajeC,ytiene funcionalidadesparasoportartransaccionescomosonCOMMITyROLLBACK. 1984:OracleCorporationlanzalaversin4,elcualtienesoportedereadconsistency. 1985:OracleCorporationlanzalaversin5consoporteClienteServidor.

1986:Oracleversion5.1eslanzadoconsoporteparaqueryesdistribuidos. 1988: Oracle lanzalaversin6quevieneconsoportedePL/SQLembebidoconOracleForms versin3(Laversin6deOracle,nopodaalmacenarelcdigodePL/SQLenlabasede datospropiamentedicha).Estaversintambintenabloqueodefilaycopiasdeseguridaden caliente. 1989:OracleCorporationentraenelmercadodeproductosdeaplicacionesydesarrollasu ERP(QueluegollegarahacerpartedeOracleEBussinessSuite),basadaenlabasede datosrelacionalOracle. 1990:SelanzaOracleApplicationsversin8. 1992:ApareceOracleversin7consoportedeintegridadreferencial,procedimientos almacenadosytriggers. 1997:OracleCorporationlanzalaversin8,queapoyoeldesarrolloorientadoaobjetosy aplicacionesmultimedia. 1999:SelanzalaversinOracle8idirigidoaproporcionarunabasededatosinteractuemejor conInternet(LaletraiensunombrevienedeInternet).Estaversintambinincorporauna mquinavirtualdeJAVAnativaenlabasededatos(OracleJVM). 2000:OracleEBusinessSuite11isonpionerosenintegrarsoftwareenterpriseapplication. 2001:Oracle9iselanzacon400nuevascaractersticas,incluyendoentreellaslaposibilidadde leeryescribirdocumentosXML.TambinseproveeunaopcinparaOracleRACReal ApplicationClusters 2003:OracleCorporationlanzaOracleDatabase10g,elcualsoportaexpresionesregulares. (lagvienedeGrid,haciendoincapieenunenfoquedemarketing) 2005:selanzaelrelease2(OracleDatabase10.2.0.110gR2). 2006:OracleCorporationanunciaUnbreakableLinux. 2007:OracleDatabase10grelease2estableceunnuevorecordmundialTPCH. 2007:OracleCorporationlanzalaversindebasededatos11gparaLinuxyWindows. 2008:OracleCorporationadquiereBEASystems. 2010:OracleCorporationadquiereSunMicrosystems. Paramsinformacin,consultarelsiguienteenlace.| http://www.oracle.com/timeline/index.html InstalacinBsicadeUnaBasedeDatosOracleXE SedemostrarndosmanerasdeinstalarlabasededatosOracleXE 1.InstalacinmedianteelgestordepaquetesaptgetdeUbuntu. 1.Editarelficherosources.list $sudonano/etc/apt/sources.list 2.IngresarelrepositorioparadescargarelOracleXE,adicionandolasiguientelinea. debhttp://oss.oracle.com/debianunstablemainnonfree 3.Guardarelarchivoysalir.

4.ObtenerlallaveGPGdeautorizacin $wgethttp://oss.oracle.com/el4/RPMGPGKEYoracleO|sudo aptkeyadd 5.Actualizarlabasededatosdepaquetes $sudoaptgetupdate 6.Luegodeactualizadoslosrepositorios,instalarelOracleXE $sudoaptgetinstalloraclexe Se le solicitar al usuario confirmacin de la instalacin de paquetes adicionales y la basededatos,sedebeindicarlaautorizacindigitandoyes. 7.Configurarlabasededatosluegodelainstalacin $sudo/etc/init.d/oraclexeconfigure ConfigurarlacontraseaparalosusuariosSYSySYSTEM Configurarelpuertodellistener.Pordefectoesel1521 Configurar el puerto para acceder al servicio de la base de datos viaweb. Por defectoesel8080.

Sidesearealizarladesinstalacindelabasededatosporelmtodoaptget,puede usarlosiguiente. Listarlospaquetesinstalados(BuscarlosqueseandeOracle) $dpkggetselectionsoracle* $dpkgloracle* Deberiatenerseunpaqueteconelnombre:oraclexeoraclexeuniversal. Trasidentificarelpaquete,procederadesinstalarlodigitandouncomando otroas: $sudoaptgetremoveoraclexeuniversal $sudoaptgetpurgeoraclexeuniversal $sudormrf/usr/lib/oracle $sudodeluseroracle $sudodelgroupdba tras

2.InstalacinmedianteelgestordepaquetesdpkgdeUbuntu,teniendoel .debdela basedeDatos. 1.Verificarquesetenganlosdosinstaladoressiquientes: libaio_0.3.1041_i386.deb oraclexeuniversal_10.2.0.11.0_i386.deb

instalador

2.Elpaquetelibaio_0.3.1041_i386.debcontieneunaslibrerasde dependenciaquese requierenpreviamenteantesdeinstalarlabasededatos,parasuinstalacin digitaremoslosiguiente: $sudodpkgilibaio_0.3.1041_i386.deb 3.trasfinalizarlainstalacindeestalibreria,proseguirconelsiguientecomandopara lainstalacindelabasededatos. $sudodpkgioraclexeuniversal_10.2.0.11.0_i386.deb 4.Configurarlabasededatosluegodelainstalacin $sudo/etc/init.d/oraclexeconfigure ConfigurarlacontraseaparalosusuariosSYSySYSTEM Configurarelpuertodellistener.Pordefectoesel1521 Configurar el puerto para acceder al servicio de la base de datos viaweb. Por defectoesel8080 puede

Sidesearealizarladesinstalacindelabasededatosporelmtododpkg, usarlosiguiente. Listarlospaquetesinstalados(BuscarlosqueseandeOracle) $dpkggetselectionsoracle* $dpkgloracle* Deberiatenerseunpaqueteconelnombre:oraclexeoraclexeuniversal. Trasidentificarelpaquete,procederadesinstalarlodigitandouncomando otroas: $sudodpkgremoveoraclexeuniversal $sudodpkgpurgeoraclexeuniversal $sudoaptgetautoremove $sudormrf/usr/lib/oracle

tras

$sudodeluseroracle $sudodelgroupdba Nota:Serecomiendaparahacerladesintalacindepaquetesusarelmtodode aptget. VerificacindelaInstalacindelaBasedeDatos IngresarporelbrowserlasiguienteURL: http://127.0.0.1:8080/apex VerificarelingresoalaaplicacinconlosusuariosSYSySYSTEMylacontraseaquese definienlainstalacin. Nota:Sisedeseacambiarelpuertopordefectoenelqueseejecutaelapex,esdecirel8080, nosconectamoscomousuarioSYSTEMyejecutamoslospasossiguientes:: 1.Verificarelpuertoenelqueseestaejecutandolaaplicacin: SELECT DBMS_XDB.GETHTTPPORT"PuertoHTTP" FROM DUAL 2.Ejecutarelsiguientebloqueparacambiarelpuertoalquequeramos: BEGIN DBMS_XDB.SETHTTPPORT('9090') END / InstalacinBsicadeUnaBasedeDatosOracleEnterprise Prerrequisitos: La documentacindeOracledicequeel sistemadebe tener512MbmnimodeRAM y1Gbde swap. ParaverlacantidaddeRAMySwapejecutalossiguientescomandos: $grepMemTotal/proc/meminfo $grepSwapTotal/proc/meminfo

Paraverelespaciolibreendiscoejecuta: $dfh Instalarunservidorsshenlamquina $sudoaptgetinstallssh 1.Descargarlassiguientesycomplementosnecesariosparalainstalacin. $sudoaptgetinstallunzipbuildessentialx11utilsrpmkshlsbrpmlibaio1 2. Ubuntu 10.4 viene con las librerias libstdc++6 instaladas,sinembargoparaOracle10gR2y 11gR2 se requiere libstdc++5, para instalarlasrequerimosdeseguirlossiguientespasospara unaarquitecturade32bits. $wget http://security.ubuntu.com/ubuntu/pool/universe/i/ia32libs/ia32libs_2.7ubuntu6.1_amd6 4.deb $dpkgdebxia32libs_2.7ubuntu6.1_amd64.debia32libs $sudocpia32libs/usr/lib32/libstdc++.so.5.0.7/usr/lib/ $cd/usr/lib $sudolnslibstdc++.so.5.0.7libstdc++.so.5 Silaarquitecturaesde64bits,sedeberusar: $wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc3.3/libstdc++5_3.3.617ubuntu1_am d64.deb $dpkgdebxlibstdc++5_3.3.617ubuntu1_amd64.debia64libs $sudocpia64libs/usr/lib/libstdc++.so.5.0.7/usr/lib64/ $cd/usr/lib64/ $sudolnslibstdc++.so.5.0.7libstdc++.so.5 3.Ejecutarlossiguientespasoscomousuarioroot.Crearlosgruposoinstallydba $sudosu #addgroupoinstall #addgroupdba

4.Crearelusuariooracleyasignarloalosdosgruposcreadosenelpaso3. #useraddgoinstallGdbappasswordd/home/oracles/bin/bashoracle #mkdir/home/oracle #chownRoracle:dba/home/oracle 5.Cambiarelpasswordalusuariooraclecreado. #passwdoracle 6.Crearalgunosenlacessimblicosnecesariosenelsistema,yasignacindepermisos. #lns/usr/bin/awk/bin/awk #lns/usr/bin/rpm/bin/rpm #lns/usr/bin/basename/bin/basename #mkdir/etc/rc.d #foriin0123456Sdolns/etc/rc$i.d/etc/rc.d/rc$i.ddone Creamoseldirectoriobasedeoracle(/u01/app/oracle) #mkdirp/u01/app/oracle yopcionalmenteundirectoriodedatosparalasbasesdedatosquecreemos(/u02/oradata): #mkdirp/u02/oradata #chownRoracle:dba/u01/u02 #chmodR775/u01/u02 7.Crearelarchivo.bashrcparaelusuariooracle #suoracle $touch.bash_profile Editarelficherocon: $nano.bash_profile Ahora,adicionarlassiguienteslneasaestefichero: #!/bin/bash

#enablecolorsupportoflsandalsoaddhandyaliases if[x/usr/bin/dircolors]then testr~/.dircolors&&eval"$(dircolorsb~/.dircolors)"||eval"$(dircolorsb)" aliasls='lscolor=auto' #aliasdir='dircolor=auto' #aliasvdir='vdircolor=auto' aliasgrep='grepcolor=auto' aliasfgrep='fgrepcolor=auto' aliasegrep='egrepcolor=auto' fi umask022 ORACLE_BASE=/u01/app/oracle exportORACLE_BASE ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 exportORACLE_HOME ORACLE_SID=capacita exportORACLE_SID ORACLE_TERM=xterm exportORACLE_TERM ORACLE_OWNER=oracle exportORACLE_OWNER #TNS_ADMIN=/home/oracle/config/10.2.0exportTNS_ADMIN NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1 exportNLS_LANG #ORA_NLS10=${ORACLE_HOME}/db_1/nls/dataexportORA_NLS10 CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip LD_LIBRARY_PATH=${ORACLE_HOME}/lib exportLD_LIBRARY_PATH DISABLE_HUGETLBFS=1 exportDISABLE_HUGETLBFS TEMP=/tmp exportTEMP TMPDIR=/tmp exportTMP PATH=.:$PATH:/u01/app/oracle/product/10.2.0/db_1/bin

exportPATH Salirdelusuariooracleyretornaralusuarioroot,paraproseguir conlainstalacindigitandoexit sobreelprompt $exit Tambinsedeberancrearlossiguientesdirectorioscomosigue: #mkdirp/home/oracle/config/10.2.0 #mkdir/var/lock/subsys 8.Esnecesariotambinajustaralgunosparmetrosdelkernel.Paraverlaconfiguracin actualdenuestrosistemaejecutarlossiguientescomandos: #sysctla|grepsem #sysctla|grepshm #sysctla|grepfilemax #sysctla|grepip_local_port_range 9.Paraactualizarelficherodeconfiguracinsedebeprocederasacaruna delficheroas: #cp/etc/sysctl.conf/etc/sysctl.conf.old Luegoeditarelficheroconelcomando: #nano/etc/sysctl.conf yfinalmente,adicionaroreemplazarlosparmetrosconlossiguientesvalores: kernel.shmall=2097152 kernel.shmmax=2147483648 kernel.shmmni=4096 kernel.sem=25032000100128 fs.filemax=65536 net.ipv4.ip_local_port_range=102465000 Al reiniciar se leer la con figuracin del kernel de /etc/sysctl.conf y se aplicaran loscambios. Pero si queremos que los cambios se apliquen inmediatamente ejecutamos la siguiente instruccin: #sysctlp 10.Verificarloslmitesdeshell,as: copia

#ulimita Por defecto, hay unlmite por usuario de 1024 descriptores de fichero, y 2047procesos,para modificar estos valores, primero sacamos una copia al fichero /etc/security/limits.conf de la siguientemanera: #cp/etc/security/limits.conf/etc/security/limits.conf.old LuegoEditamoselficheroconlainstruccin: #nano/etc/security/limits.conf paramodificarestosvaloresas: *softnproc2047 *hardnproc16384 *softnofile1024 *hardnofile65536 Las dos ltimas lneas imponen un lmite inicial de 1024, pero permiten que un usuario aumenteellmitea65536usandoelcomandoulimitn65536. Lasdosprimeraslneaslimitanelnmerodeprocesos. 11. Se debemodificar el fichero pam_limits.so que es el mdulo queprocesalaconfiguracin del fichero /etc/security/limits.conf que secambienelpasoanterior.Primerosacarunacopia deseguridaddelasiguientemanera: #cp/etc/pam.d/login/etc/pam.d/login.old Luegoeditarelficheroas: #nano/etc/pam.d/login buscarenelapartadode/etc/security/limits.confyverificarsiexistelalnea sessionrequiredpam_limits.so sessionrequired/lib/security/pam_limits.so denoexistir,agregarla. 13. Ahora comenzaremos el proceso de Instalacin y deberemos salir del usuario root y continuarconelusuariodelSO,paraellodigitarlapalabraexitsobrelaconsolaas: #exit 12.Ubicarseeneldirectorioquecontieneelzipdeinstalacinyluegodescomprimirlo.

$unziporacle_10gr2_linux32.zip 13.Trasel procesodedescompresin,sedebicrearunacarpetallamadadatabase,ubicarse all. $cddatabase 14. En este paso se requiere ejecutar un asistente grfico para proseguir el proceso de instalacin. S la instalacin se ha ejecutado en una mquina diferente en donde queremos instalar Oracle, podramos exportar el sistema X remoto a nuestra mquina local, a continuacin se detallanestospasos,ysinosencontramosdirectamentesobrelamaquinade lainstalacinsoloseraejecutarelentornogrficoyomitirestospasos. Enlamquinalocalocliente $xhost+IP_SERVER_ORACLE Enlamquinaremota(ServidorOracle) $exportDISPLAY=IP_CLIENTE:0 Denuevoenlamquinalocalocliente,ejecutarlosiguiente $sshoracle@IP_SERVER_ORACLEX yaestandoenelservidorOracle,buscarlacarpetadatabaseyEjecutarelshelldeinstalacin as: $./runInstallerignoreSysPreReqs Ponemos el flag ignoreSysPreReqs porque por defecto se esperainstalar enuna maquina Red Hat, y fallaria la comprobacionde seguridad al comprobar quenuestrosistemaoperativo no es ese. con este flag le forzamos a que continue la instalacin independientemente del sistema que tengamos. Ahora sevisualizaran las pantallas delasistenteylasconfiguraciones apropiadas.

PantalladeBienvenidaalainstalacindeOracle10g,puslamossobreelbotnsiguiente.

Buscamos el directorio oracle en el /home y digitamos oraInventory, luego escogemos en NombredegrupooinstallluegoclicenSiguiente.

Seleccionamoseneltipodeinstalacin,EnterpriseEditionypulsamosSiguiente.

Sevisualizaelnombredelainstalacinysudirectorioraz,pulsamosenSiguiente.

Se realizan una serie de chequeos para determinar si se cumplen algunos requisitos, se muestra una advertencia sobre el Sistema Operativo, que no escertificadoporOracle,peroa pesardeellopulsamossobreelbotnSiguiente. Se le mostrar una advertencia que algunos requisitos han fallado y que si desea continuar, pulsarsobreS.

SeleccionamosCrearBasedeDatosypulsamossobreelbotnSiguiente.

Escogemosquedeseamoscrearunabasededatosdepropsitogeneral,ypulsamossobre elbotnSiguiente.

Ennombredelabasededatosglobal,digitamoscapacitacion.datacenter.com.co EnelSID,nosquedaronlos8caracteresdelnombreglobal:capacita. ComoJuegodecarcteresescogemos:UnicodeestndarUTF8AL32UTF8. Adicionalmente,indicamosquequeremosinstalarlosesquemasdeejemplo. Finalmente,damosclicenSiguiente.

DejamosparalaopcindeGestindelabasededatos,laopcindeadministracinpor defectoypulsamossobreelbotnSiguiente.

EscogemoscomoopcindealmacenamientoSistemadeArchivos,yescogemoseldirectorio quepreviamentesehabadestinadoparaello:/u02/oradata.LuegopulsamosSiguiente.

EnlaopcindeCopiasdeSeguridad,escogemosquenodeseamosrealizarlasdemanera automticayclicenSiguiente.

Escogemosquevamosamanejarunasolacontraseaparalosusuarios,laingresamosy damosclicenSiguiente. VerificarusuariosSYS,SYSTEM,SYSMANyDBSNMP

Sepresentaunresumendelasconfiguracionesyproductosquevanaserinstalados, pulsamossobreelbotnInstalar,paracopiarlosarchivosnecesariosalequipoyejecutarla basededatos

Sepresentaunresumendelainstalacin,ydamosclicenAceptar.

Selesolicitaalusuarioconectarsecomousuariorootyejecutardosscripts:

#/home/oracle/oraInventory/orainstRoot.sh #/u01/app/oracle/product/10.2.0/db_1/root.sh

ConfiguracindelareddeOracle ListenerdeOracle TNSListeneresunprocesoservidorqueproveelaconectividadderedconlabasededatos Oracle.Ellistenerestconfiguradoparaescucharlaconexinenunpuertoespecficoenel servidordebasededatos.Cuandounasepideunaconexinalabasededatos,ellistener devuelvelainformacinrelativaalaconexin.Lainformacindeunaconexinparauna instanciadeunabasededatosproveeelnombredeusuario,lacontraseayelSIDdelabase dedatos.Siestosdatosnosoncorrectossedevolverunmensajedeerror. Pordefectoelpuertodellisteneresel1521 Ellistenernolimitaelnmerodeconexionesalabasededatos

Todalainformacindellistenerlacontieneunarchivodenominadolistener.ora ($ORACLE_HOME/network/admin.)

Elcomandoparagestionarellistenereslsnrctl.Medianteestecomandopodemos: Pararellistener. Verelestadodellistener. Arrancarellistener. Rearrancarellistener.

ArchivoTNSNAMES.ora Archivoubicadoenlosclientes,contienelosnombresdeserviciodered,asignadosa descriptoresatravsdeloscualessenospermiteacceder Parmetrosdelarchivo: HOST:Direccinipdelservidorconelcualqueremosconectar PORT:Puertodondeescuchalabasededatos SERVICE_NAME:Nombredelserviciodebasededatosalquequeremosconectar DESCRIPTORDECONEXION:NombreoAliasconelqueseidentificalaconexin. PodemoscomprobarsilaconexinescorrectamedianteelcomandoTNSPING ArranqueyparadadelabasedeDatos Arrancarbasededatos ElarranquedeunabasededatosORACLErequieretresetapas 1.Arrancarlainstancia 2.Montarlabasededatos 3.Abrirlabasededatos 1.Arrancarlabasededatos Enestapartedelarranquesegeneranlosprocesosbackground. SecrealaSGA.Susdimensionessebasanenelficherodeinicializacininit.ora. SQLPLUS>connectsysassysdba connected SQLPLUS>startupnomount OracleInstancestarted 2.Montarlabasededatos Enestapartedelprocesodearranqueseproducelaconexinal/losarchivo/sdecontrol.

Enesteestadosepuede: 1.CambiarelmododearchivadodelaB.D. 2.RenombradodearchivosdeRedoLogodelasociadoaltablespaceSYSTEM 3.Crear,modificarosuprimirnuevosRedoLogogruposdeRedoLog Partiendodelanteriorestado(nomount),montamoslabasededatosdelasiguienteforma: SQLPLUS>alterdatabasemount databasemounted Encasodequequeramosiniciarlabasededatosenesteestadobastaraconhacerlo siguiente: SQLPLUS>connectsysassysdba connected SQLPLUS>startupmount OracleInstancestarted Databasemounted 3.Abrirbasededatos Enestapartedeprocesoabrentodoslosficherosasociadosalostablespacesylos ficherosdeRedoLog. LaB.D.estaccesibleparatodoslosusuarios Siesnecesariaunarecuperacin(porunfallodeluzoCPU),seproduceenestemomento. Partiendodelanterioestando(mount),abrimoslabasededatosdelasiguienteforma: SQLPLUS>alterdatabaseopen databaseopened Encasodequequeramosiniciarlabasededatosenesteestadobastaraconhacerlo siguiente: SQLPLUS>connectsysassysdba connected SQLPLUS>startup OracleInstancestarted Databaseopened Masalternativasparaelarranquedebasededatos ArranquesoloparausuariosconelprivilegioRESTRICTEDSESSION SQLPLUS>startuprestrict

Arranqueforzado SQLPLUS>startupforce Arranqueconunficherodeparmetrosdistintoalhabitualolocalizadoenunasituacin diferenteadondeseencuentrapordefecto SQLPLUS>startuppfile=/oracle/database/init2.ora Paradabasededatos LaparadadeunaB.D.OracleserealizamedianteelcomandoSHUTDOWNdesdeSQL*DBA despusdehaberestablecidounaconexincomoSYSASSYSDBA Existentrestiposdeshutdown 1.shutdownnormal 2.shutdownimmediate 3.shutdownabort 1.Shutdownnormal EsperaaquelosusuariosconectadosactualmentefinalicenTODASlasoperaciones. Evitanuevasconexiones.LosusuariosqueintentanconectarserecibenelmensajeShutdown inprogress. CierraydesmontalaB.D.CierralaSGAparalosprocesosbackground. Nonecesitarecuperacionalarrancarlabasededatos SQLPLUS>connectsysassysdba connected SQLPLUS>shutdownnormal 2.Shutdownimmediate Esperaaquelastransaccionesactualessecompleten Evitanuevastransaccionesynuevasconexiones.Losusuariosqueintentanconectarseolos queyaestnconectadosalintentarrealizarunanuevatransaccinrecibenelmensaje Shutdowninprogress. ElprocesoPMONfinalizalassesionesnoactivasyrealizaROLLBACKdeaquellas transaccionesquenoestnvalidadas. CierraydesmontalaB.D.CierralaSGAparalosprocesosbackground. Nonecesitarecuperacionalarrancarlabasededatos

SQLPLUS>connectsysassysdba connected SQLPLUS>shutdownimmediate 3.Shutdownabort Paradadrstica,noesperaaquelosusuariosconectadosactualmentefinalicensus transacciones.ElusuarioconectadorecibeelmensajeNologgedon. NoserealizaROLLBACKdelastransaccionespendientes. ElprocesoPMONfinalizalassesionesnoactivasyrealizaROLLBACKdeaquellas transaccionesquenoestnvalidadas. Sinecesitarecuperacionalarrancarlabasededatos SQLPLUS>connectsysassysdba connected SQLPLUS>shutdownabort ArquitecturadeOracle UnaBasedeDatosOracleesunconjuntodedatosalmacenadosyaccesiblesegnelformato detablasrelacionales.Unatablarelacionaltieneunnombreyunascolumnas,sudefinicin. Losdatosestnalmacenadosenlasfilas.Lastablaspuedenestarrelacionadasconotras. UnaBasedeDatosOracleestalmacenadafsicamenteenficheros,ylacorrespondencia entrelosficherosylastablasesposiblegraciasalasestructurasinternasdelaBD,que permitenquediferentestiposdedatosestnalmacenadosfsicamenteseparados.Est divisinlgicasehacegraciasalosespaciosdetablas,tablespaces. Tablespaces Untablespaceesunaunidadlgicadealmacenamientodentrodeunabasededatosoracle. Esunpuenteentreelsistemadeficherosdelsistemaoperativoylabasededatos. Cadatablespacesecomponede,almenos,undatafileyundatafilesolopuedepertenecera untablespace. Cadatablaoindicedeoracleperteneceauntablespace,esdecircuandosecreaunatablao indicesecreaenuntablespacedeterminado. Hayvariasrazonesquejustificanestemododeorganizacindelastablasenespaciosde tablas: Unespaciodetablaspuedequedarseofflinedebidoaunfallodedisco,permitiendoque elSGBDcontinefuncionandoconelresto.

Losespaciosdetablaspuedenestarmontadossobredispositivospticossisonde slolectura. Permitendistribuiranivellgico/fsicolosdistintosobjetosdelasaplicaciones. Sonunaunidadlgicadealmacenamiento,puedenusarseparaaislarcompletamente losdatosdediferentesaplicaciones. Oraclepermiterealizaroperacionesdebackup/recoveryaniveldeespaciodetabla mientraslaBDsiguefuncionando. CuandosecreanselesasignaunespacioendiscoqueOraclereservainmediatamente,se utiliceono.SiesteespacioinicialsehaquedadopequeoOraclepuedegestionarel crecimientodinmicodelosficherossobrelosqueseasientanlosespaciosdetablas.Esto eliminalaposibilidaddeerrorenlasaplicacionesporfallosdedimensionamientoinicial.Los parmetrosdecrecimientodeltamaodelosespaciosdetablasseespecificanenlacreacin delosmismos. SepuedenverlosespaciosdetablasdefinidosennuestraBDconelcomandoSQLsiguiente: SQL>select*fromuser_tablespace Datafiles Undatafileeslarepresentacinfsicadeuntablespace.Sonlos"ficherosdedatos"dondese almacenalainformacinfsicamente.Undatafilepuedetenercualquiernombreyextensin (siempredentrodelaslimitacionesdelsistemaoperativo),ypuedeestarlocalizadoen cualquierdirectoriodeldiscoduro,aunquesulocalizacintpicasueleser $ORACLE_HOME/Database.Undatafiletieneuntamaopredefinidoensucreacin(por ejemplo100Mb)yestepuedeseralteradoencualquiermomento.Cuandocreemosundatafile, esteocupartantoespacioendiscocomohayamosindicadoensucreacin,aunque internamenteestvaco.Oraclehaceestoparareservarespaciocontinuoendiscoyevitaras lafragmentacin.Conformesevayancreandoobjetosenesetablespace,seirocupandoel espacioquecreinicialmente. Undatafileestasociadoaunsolotablespacey,asuvez,untablespaceestasociadoauno ovariosdatafiles.Esdecir,larelacinlgicaentretablespacesydatafilesesde1N, maestrodetalle. LosdatafilestienenunapropiedadllamadaAUTOEXTEND,quesesiestactiva,seencarga dequeeldatafilecrezcaautomticamente(segnuntamaoindicado)cadavezquese necesiteespacioynoexista.Aligualquelostablespaces,losdatafilestambinpuedeestaren lneaofueradeella. EjemplodecreacinymanipulacindetablespacesyDatafiles Conocereltablespacepordefecto SQL>selectproperty_valuefromdatabase_propertieswhereproperty_name= 'DEFAULT_PERMANENT_TABLESPACE' VereltamaoenMegasdelosTablespace

SQL>selecttablespace_name,file_name,bytes/1024/1024fromdba_data_files Crearuntablespace SQL>createtablespacets_prueba_datdatafile '/u02/oradata/capacita/ts_prueba_dat_01.dbf'size10M Aumentareltamaodeundatafile SQL>alterdatabasedatafile'/u02/oradata/capacita/ts_prueba_dat_01.dbf'resize20M Adicionarunnuevodatafilealtablespace alter tablespace ts_prueba_dat adddatafile'/u02/oradata/capacita/ts_prueba_dat02.dbf' size10Mautoextendonnext1Mmaxsize20M Con esta instruccin lo que estamos haciendo es aadir un nuevo datafile llamado /u02/oradata/capacita/ts_prueba_dat02.dbf a nuestro tablespace ts_prueba_dat con 10 Mbytes de tamao. Adems, estamos indicando que queremos que aumente por si mismo cada vez que se llene y que aumente en bloquesde 1 Mb cada vez. Finalmente le ponemos un tope al tamao total que queremos que tenga nuestro datafile con la instruccin maxsize, porloqueunavezquelleguea20Mb,sisellena,novolveracrecerms. Para indicar en cualquier momento que queremos que un datafile no crezca ms automticamente,podemosutilizar: SQL>alterdatabasedatafilenombre_datafileautoextendoff Y para indicar en cualquier momento que un determinado datafile crezcaautomticamente,la instruccinqueejecutaremosser: SQL>alterdatabasedatafilenombre_datafileautoextendonnext1Mmaxize300M Nota:enestasentencia,sepuedeindicarquequeremosquecrezcaindefinidamente,sintome mximo.Estoloconseguimoscon"maxsizeunlimited",peroesmuypeligrosoporquepor algnproblemadescontrolado,nospuedecrecertantoquenosquedemossidiscoenla mquinayluegoesmuycomplicadorestauraruntamaonormal. Cambiareltablespacepordefectodeunusuario SQL>alteruserusuariodefaulttablespacets_prueba_datquotaunlimitedon ts_prueba_dat Borraruntablespace SQL>droptablespacets_prueba_datincludingcontentscascadeconstraints *****************************************PausaActiva*****************************************

LapapeleradeReciclajeenOracle CuandolaRecycleBinestactivada,lastablasqueborremosenrealidadnoseeliminan. Encambio,cuandoseeliminaunatabla,Oracleslocambiaelnombredelatablay todossusobjetosasociados(ndices,triggers,segmentosdelneadenegocio,etc) aunnombregeneradoporelsistemaqueseiniciaconBIN$. PordefectolapapeleradereciclajevieneactivadaenOracle,paraverificarqueestoes correctosepuedehacerlaverificacinporelSQLPluscomousuarioSYSTEMas: SQL>showparameterrecyclebin EjemplodeUsodelapapelera 1.Crearunatablacomosigue: createtabletabla1 ( versionvarchar2(10)notnull, fechavarchar2(10)defaultto_char(sysdate,'dd/mm/yyyy')notnull, horavarchar2(8)defaultto_char(sysdate,'hh24:mi:ss')notnull ) 2.Insertarundatoparalaverificacin. SQL>insertintotabla1(version)values('version1') 3.Borrarlatabla SQL>droptabletabla1 4.Listarlastablasdelusuarioas: SQL>select*fromuser_tables SQL>select*fromtab 5.Listarlosobjetosdelapapeleradereciclaje SQL>selectobject_name,original_name,type,can_undropas"UND",can_purgeas "PUR",droptimefromrecyclebin 6.Recobrarlatabladelapapeleradereciclaje SQL>flashbacktabletabla1tobeforedrop 7.Listarlastablasdelusuarioyelcontenidodelatablarecuperada

SQL>select*fromtab SQL>select*fromtabla1 8.Borrarnuevamentelatabla,ejecutandoelpaso3. 9.Crearnuevamentelatablaexactamenteigualqueenelpaso1. 10.realizarelsiguienteinsert. SQL>insertintotabla1(version)values('version2') 11.Listarlastablasdelusuarioyelcontenidodetabla1,comoenelpaso7. 12.Borrarlatablanuevamente SQL>droptabletabla1 13.Listarlosobjetosdelapapeleradereciclaje. SQL>selectobject_name,original_name,type,can_undropas"UND",can_purgeas "PUR",droptimefromrecyclebin 14.Recobrarnuevamentelatabla:tabla1 SQL>flashbacktabletabla1tobeforedrop 15.Listarlainformacindelatabla.Quversinapareceyporqu? 16.Borrarnuevamentelatabla. 17. Listar nuevamentelapapeleradereciclajeyverificarlascolumnasdroptimeobase_object, paraidentificarelprimerobjetoeningresaralapapelera. 18recuperaresteobjetomediantelainstruccindelpaso14,sustituyendotabla1porelvalor delacolumnaobject_nameentrecomillasdobles. 19,Listarelcontenidodelatabla. Ahorabien,sideseamosborrarunatablaomitiendolapapeleradereciclaje,sepuedehacer comosigue: SQL>droptabletabla1purge Sisedeseavaciarlapapeleradereciclaje,sepuedehaceras: SQL>purgerecyclebin Sisedeseaquelastablasborradasdurantelasesinnovayanalapapeleradereciclaje,se puededesactivarlapapeleradelasesinas:

SQL>altersessionsetrecyclebin=on Vale la penaaclararquesiantesderealizarestaaccinyahabanobjetosenlapapeleraestos permanecernall,anoserqueseliberenexplcitamente. OfuscacindeCdigo(wrap) Generarelresultadodeunaconsultaenunarchivo(spool) Cargarlainformacindeunarchivodetextoaunatabladeladasededatos(sqlldr) *****************************************PausaActiva***************************************** Oracle:Instancia La instancia enOracledescribevariosprocesosresidentes enlamemoriadelcomputador(es) y un rea de memoria compartida por aquellos procesos. En arquitecturasdebasesdedatos tales como, Microsoft SQL Server y IBM DB2, la palabra instancia indica una coleccin de bases de datos que comparten recursos de memoria en comn, o sea, la relacin entre instancia y bases de datos es 1 a N. Pero la relacin entrelainstanciadeOracleylabasede datos es 1 a 1o n a1. Cuando hayunarelacinNa1,laconfiguracinesllamadaRAC(Real Application Cluster), donde la base de datos resideendiscoscompartidosy lasinstanciasen mltiplescomputadoresanexadosalabasededatos. La instancia deOracle esel motorque procesa losrequerimientosdedatosdesdelabasede datos. Estcompuestaporprocesosenprimerplano,en segundoplanoyunreadememoria compartida(SGA). Una instancia de Oraclees un conjunto de estructuras de memoria que estn asociadas con los archivos de datos(datafiles) en una mquina. Una base de datos (database) es una coleccindearchivosfsicos.

Esquema<>Usuario Esmuycomnescucharquelagenteasocielostrminosusuarioyesquema(usery schema).EstopuedeserciertoenalgunosmotoresdebasesdedatosperonoenOracle. ParaOracle,unUSEResunnombredeunacuentaqueseagregaaunabasededatos,yun ESQUEMAeselconjuntodeobjetosqueeseUSUARIOposee.Sibienesciertoqueunode lospasoscuandounocreaunusuarioeslacreacindelESQUEMAenelquesealmacenaran susobjetos,yqueelnombrequeseleasociaeselmismoquetieneelusuario,esbastante simpledemostrarporquenoeslomismounacosaquelaotra. Ejemplo:Crearunatablallamadami_tablaconunacolumnallamadausuariodetipovarchar2 de30caracteres,estamismatablasedebecrearparadosusuarios,einsertarundatoconel nombredelusuario. paracambiarelesquemapordefecto,sepuedeusar: SQL>ALTERSESSIONSETCURRENT_SCHEMA=usuario2 Verificarelestadodelastablasparacadausuario. Sisedeseaverelusuarioyesquemaactual,sepuedenemplearestasdosconsultas:

SQL>SELECTUSERNAMEUSUARIO,SCHEMANAMEESQUEMAFROM V$SESSIONWHERESIDIN(SELECTSIDFROMV$MYSTAT) SQL>SELECT USERUSUARIO,SYS_CONTEXT('USERENV','CURRENT_SCHEMA') ESQUEMAFROMDUAL Lomsimportantearecordaresqueelcomandoaltersessionsetcurrent_schemasolamente cambiaelESQUEMApordefectodelUSUARIO.Nomodificalosprivilegiosquetenemossobre eseESQUEMA,nicambianlosresultadoscuandohacemosunaconsultaquedependedel nombredelusuario,comoporejemplolasconsultassobrelasUSER_views. Queesunperfil LosperfilesseutilizanparalimitarlacantidadderecursosdelsistemaydelaBDdisponibles para un usuario. Si no se definen perfiles para un usuario se utilizael perfil por defecto, que especificarecursosilimitados. Losrecursosquepuedenserlimitadosviaperfilsonlossiguientes: COMPOSITE_LIMIT Suma del mximo de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA. Si este limite es excedido, Oracle abortalasesinyregresaunerror. CONNECT_TIME Tiempopermitidodeconexinporsesinenminutos. CPU_PER_CALL MximotiempodeCPUporllamadaencentsimasdesegundo. CPU_PER_SESSION MximotiempodeCPUporsesinencentsimasdesegundo. IDLE_TIME Tiempo mximo permitido sin actividadpor el usuario antesde serdesconectado.Seexpresa enminutos. LOGICAL_READS_PER_CALL Mximonmerodebloquesdebasededatosledosporllamada. LOGICAL_READS_PER_SESSION Mximonumerodebloquesdebasededatosledosporsesin. PRIVATE_SGA Mxima cantidad de bytes de espacio privado reservado en la SGA. Sepuede expresar en el formatoenteroKparakilobytesoenteroMparamegabytes.

SESSIONS_PER_USER Mximonmerodesesionesconcurrentespermitidasporusuario. FAILED_LOGIN_ATTEMPTS Nmero de intentos fallidos de conexin de un usuario, antes de que Oracle ponga la cuenta bloqueada. PASSWORD_GRACE_TIME Nmero de das de gracia para realizar un cambio de password de nuestra cuenta. Si en el periododetiempodelimitadonofuecambiadoelpassword,elpasswordexpira. PASSWORD_LIFE_TIME Nmerodedasdevidadeunpassword. PASSWORD_LOCK_TIME Nmero de das que permanecer bloqueado un usuario despus de rebasar el lmite FAILED_LOGIN_ATTEMPTS. PASSWORD_REUSE_MAX Nmerodevecesqueunpasswordpuedeserreusado. PASSWORD_REUSE_TIME Nmerodedasquetienenquepasarparapoderreusarunpassword. PASSWORD_VERIFY_FUNCTION En este parmetro, se puede especificar un script para validar el password. Porejemplo,que tengaunadeterminadacantidaddecaracteres,quetengaletrasynmeros,etctera. Creacin,borradoyalteracindeperfiles Paracrearunperfil,serequieretenerelprivilegioCREATEPROFILEasignadoenelusuario queloquierecrear,yseusaelsiguientecomando: createprofilenombre_perfillimit nombre_limite_1[valorentero|unlimited|default] nombre_limite_2[valorentero|unlimited|default] ... nombre_limite_n[valorentero|unlimited|default] Pordefault,cadaperfilcreadotienetodosloslmitesposiblesdelmismodeacuerdoala versindelabasededatos.Existeunperfilllamadodefaultelcual,regiratodoslosusuarios delabasededatos,mientrasnoseacreadounonuevoyasignadoaunusuarioenespecial. Enelperfilcreado,loslmitesquenoseanasignadosconunvalorpredefinido,tendrnelvalor delperfildefaultdelabasededatos,comoseveenelsiguienteejemplo: Parahabilitarelusodeperfiles,sedebedigitarlasiguientesentenciacomousuario administrador: SQL>altersystemsetresource_limit=true

Paraactivarlosperfileseladministradordebeejecutarlasiguienteorden: Ejemplodecreacindeunperfil SQL>createprofileper_pruebalimitconnect_time45 Visualizarlosatributosdelperfil: SQL>select*fromdba_profileswhereprofile='PER_PRUEBA'orderby resource_name Ejemplodemodificacindeunperfil(SedebetenerprivilegiodeALTERPROFILE) SQL>alterprofileper_pruebalimitpassword_life_time30 SQL>select*fromdba_profileswhereprofile='PER_PRUEBA'orderby resource_name Nota. Si se desea regresar un valor al default, se tendr que ponerdicho valor en vez de un nmeropropiamente. Para borrar un perfil, nada ms tenemos que aplicar el comando drop comoenmuchostipos deobjetosenOracle. SQL>dropprofileper_prueba Crearunperfil SQL>createprofileper_pruebalimitidle_time1 failed_login_attempts1 sessions_per_user1 Consultarelperfildelusuario: SQL>selectusername,default_tablespace,temporary_tablespace,profile fromdba_userswhereusername='XXX' Asignarelnuevoperfilalusuario: SQL>alteruserXXXprofileper_prueba Verificacindelosparametrosdelperfil. Engeneral,elperfilpordefectodebeseradecuadoparalosusuariosnormaleslosusuarios conrequerimientosespecialesdeberantenerperfilesespeciales. Privilegios

Es la capacidaddeunusuariodentrodelabase dedatosarealizardeterminadasoperaciones oaccederadeterminadosobjetosdeotrosusuarios. Privilegiossobrelosobjetos Nos permite acceder yrealizarcambiosenlosdatosdeotrosusuairo. Ejemplo:Elprivilegiode consultarlatabladeotrousuarioesunprivilegiosobreobjetos. GRANT{PRIV_OBJETO[,PRIV_OBJETO]|ALL[PRIVILEGES]} [(COL[,COL])] ON[USUARIO]OBJETO TO{USUARIO|ROL|PUBLIC}[,{USUARIO|ROL|PUBLIC}] [WITHGRANTOPTION] ON=Especificaelobjetosobreelquesedanlosprivilegios. TO=Identificaalosusuariosorolesalosqueseconcedenlosprivilegios. ALL=Concedetodoslosprivilegiossobreelobjetoespecificado. WITH GRANT OPTION = Permite que el receptor del privilegio o rol se lo asigne a otros usuariosoroles. PUBLIC =Asigna los privilegios a todos los usuarios actuales yfuturos:Elpropsitoprincipal del grupo PUBLIC es garantizar el acceso a determinados objetos a todos los usuarios de la basededatos. Privilegiosdesistema DanderechoaejecutaruntipodecomandoSQLoarealIzaralgunaaccinsobreobjetosde untipoespecificado.Porejemplo,elprivilegioparacrearTABLESPACESesunprivilegiode sistema.Formato: GRANT{PRIVILEGIO|ROL}[,{PRIVILEGIO|ROL},] TO{USUARIO|ROL|PUBLIC}[,{USUARIO|ROL|PUBLIC}] [WITHADMINOPTION] WITHADMINOPTION=Permitequeelreceptordelprivilegioorolpuedaconcederesos mismosprivilegiosaotrosusuariosoroles. Retiradadeprivilegiosdeobjetosalosusuarios REVOKE{PRIV_OBJETO[,PRIV_OBJETO]|ALL[PRIVILEGES]} ON[USUARIO.]OBJETO FROM{USUARIO|ROL|PUBLIC}[,{USUARIO|ROL|PUBLIC}] Retiradadeprivilegiosdesistemaorolesalosusuarios REVOKE{PRIV_SISTEMA|ROL}[,{PRIV_SISTEMA|ROL}] FROM{USUARIO|ROL|PUBLIC}[,{USUARIO|ROL|PUBLIC}] Cadatipodeobjetotienesupropioconjuntodepermisos:

Tablas: select, insert,update,delete,alter,debug,flashback,oncommitrefresh,queryrewrite, references,all Vistas:select,insert,update,delete,under,references,flashback,debug Secuencias:alter,select Paquetes,Procedimientos,Funciones,ClasesJAVA:execute,debug VistasMaterializadas:delete,flashback,insert,select,update Directorios:read,write Librerias:execute TiposdeDatos:execute,debug,under Operadores:execute Indextypes:execute Roles Conjuntodeprivilegiosagrupados.Formato: CREATEROLENOMBREROL[IFENTIFIEDBYCONTRASEA] Nota:Unrolpuededecidirelaccesodeunusuarioaunobjeto,peronopuedepermitirla creacindeobjetos. Supresindeprivilegiosenlosroles REVOKENOMBREPRIVILEGIOONNOMBRETABLAFROMNOMBREROL REVOKENOMBREPRIVILEGIOFROMNOMBREROL Supresindeunrol DROPROLENOMBREROL Establecerunrolpordefecto ALTERUSERNOMBREUSUARIO DEFAULT{[ROLENOMBRE_ROL]|[NONE]} NONE=Hacequeelusuarionotengarolpordefecto.

Paralaverificacindelosrolesyprivilegiosasignadosalasesinactual,sepuedenusarlas siguientesconsultas: SQL>SELECTGRANTED_ROLE"Rol",ADMIN_OPTION"Admin"FROM USER_ROLE_PRIVS SQL>SELECTPRIVILEGE"Privilegio",ADMIN_OPTION"Admin"FROM USER_SYS_PRIVS Sisedeseahacerestaconsultaparaotrosusuarios,sedebernutilizarlavista dba_role_privs. TiposdeObjetosenOracle Tablas SonlaunidadbsicadealmacenamientodedatosenOracle.Losdatosson almacenadosenfilasycolumnas.Latablasedefineatravsde: Nombre. Conjuntodecolumnas(nombreytipo) Sinonimos Un sinnimo es un nombrealternativo que identifica un tabla en labase dedatos.Con un sinnimo sepretendenormalmentesimplificarelnombre originaldelatabla,aunque tambin se suelen utilizar para evitar tener que escribir el nombre delpropietario de la tabla. Funciones UnafuncinesunconjuntodeinstruccionesenPL/SQL,quepuedenserllamados usandoelnombreconqueselehayacreado.Sediferenciandelosprocedimientos,en quelasfuncionesretornanunvaloralambiendedesdedondefueronllamadas. Procedimientos UnprocedimientoalmacenadoesunconjuntodeinstruccionesenPL/SQL,quepueden serllamadousandoelnombrequeselehayaasignado. Paquetes LospaquetesenOracleseutilizanparaguardarsubprogramasyotrosobjetosdela basededatos.Unpaqueteconstadelossiguienteselementos: Especificacinocabecera:contienelasdeclaracionespblicas(esdecir,accesibles desdecualquierpartedelaaplicacin)desusprogramas,tipos,constantes,variables, cursores,excepciones,etc. Cuerpo:contienelosdetallesdeimplementacinydeclaracionesprivadas,esdecir, accesiblessolamentedesdelosobjetosdelpaquete. Triggers UnTriggerenPLSQLesuntipoespecialdeprocedimientoalmacenadoasociadocon

unatabladelabasededatosOracleyquese"dispara"(istriggered)cadavezquese ejecutasobredichatablaunasentenciaINSERT,unasentenciaUPDATEouna sentenciaDELETE,esdecir,esunprocedimientoquepermiterealizardistintas operacionescuandounregistrodeunatablaOracleesactualizadooborrado,ocuando seaadeunregistronuevoadichatabla. Indices Unndiceesunaestructuradedatosquepermiteaccederadiferentesfilasdeuna mismatablaatravsdeuncampo(ocamposclave).Unndicepermiteunacceso muchomsrpidoalosdatos. Constraints Secuencias JAVA DBLinks Usuarios Jobs Types Directorios Perfiles Tablespaces Vistas VistasMaterializadas Roles

2.FundamentosdeSQL Definicin EllenguajedeconsultaestructuradooSQL(porsussiglaseninglsstructuredquery language)esunlenguajedeclarativodeaccesoabasesdedatosrelacionalesquepermite especificardiversostiposdeoperacionesenstas.Unadesuscaractersticaseselmanejo dellgebrayelclculorelacionalpermitiendoefectuarconsultasconelfinderecuperarde unaformasencillainformacindeintersdeunabasededatos,ascomotambinhacer cambiossobreella.Esunlenguajeinformticodecuartageneracin(4GL). OrgenesyEvolucin LosorgenesdelSQLestnligadosalosdelasbasesdedatosrelacionales.En1970E.F. Coddproponeelmodelorelacionalyasociadoasteunsublenguajedeaccesoalosdatos basadoenelclculodepredicados.Basndoseenestasideas,loslaboratoriosdeIBMdefinen ellenguajeSEQUEL(StructuredEnglishQUEryLanguage)quemstardeseraampliamente implementadoporelsistemadegestindebasesdedatos(SGBD)experimentalSystemR, desarrolladoen1977tambinporIBM.Sinembargo,fueOraclequienlointrodujoporprimera vezen1979enunprogramacomercial. ElSEQUELterminarasiendoelpredecesordeSQL,siendosteunaversinevolucionadadel primero.ElSQLpasaaserellenguajeporexcelenciadelosdiversossistemasdegestinde basesdedatosrelacionalessurgidosenlosaossiguientesyesporfinestandarizadoen

1986porelANSI,dandolugaralaprimeraversinestndardeestelenguaje,el"SQL86"o "SQL1".AlaosiguienteesteestndarestambinadoptadoporlaISO. Sinembargo,esteprimerestndarnocubretodaslasnecesidadesdelosdesarrolladorese incluyefuncionalidadesdedefinicindealmacenamientoqueseconsideraronsuprimir.As queen1992selanzaunnuevoestndarampliadoyrevisadodelSQLllamado"SQL92"o "SQL2". EnlaactualidadelSQLeselestndardefactodelainmensamayoradelosSGBD comerciales.Y,aunqueladiversidaddeaadidosparticularesqueincluyenlasdistintas implementacionescomercialesdellenguajeesamplia,elsoportealestndarSQL92es generalymuyamplio. ElANSISQLsufrivariasrevisionesyagregadosalolargodeltiempo:

Ao 1986

Nombre SQL86

Alias SQL87

Comentarios PrimerapublicacinhechaporANSI. ConfirmadaporISOen1987. Revisinmenor.

1989 1992 1999

SQL89 SQL92 SQL:1999 SQL2 SQL2000

Revisinmayor. Seagregaronexpresionesregulares, consultasrecursivas(pararelaciones jerrquicas),triggersyalgunas caractersticasorientadasaobjetos. IntroducealgunascaractersticasdeXML, cambiosenlasfunciones,estandarizacin delobjetosequenceydelascolumnas autonumericas.(VerEisenbergetal.: SQL:2003HasBeenPublished.) ISO/IEC907514:2006Definelasmaneras enlascualeselSQLsepuedeutilizar conjuntamenteconXML.Definemaneras importaryguardardatosXMLenunabase dedatosSQL,manipulndolosdentrodela basededatosypublicandoelXMLylos datosSQLconvencionalesenformaXML. Adems,proporcionafacilidadesque permitenalasaplicacionesintegrardentro desucdigoSQLelusodeXQuery,

2003

SQL:2003

2006

SQL:2006

lenguajedeconsultaXMLpublicadoporel W3C(WorldWideWebConsortium)para accesoconcurrenteadatosordinariosSQL ydocumentosXML. 2008 SQL:2008 PermiteelusodelaclusulaORDERBY fueradelasdefinicionesdeloscursores. IncluyelosdisparadoresdeltipoINSTEAD OF.AadelasentenciaTRUNCATE.(Ver [1].)

CaractersticasGenerales El SQL es un lenguajede acceso abasesdedatosqueexplotalaflexibilidadypotenciadelos sistemasrelacionalespermitiendogranvariedaddeoperacionesenstosltimos. Es un lenguaje declarativo de "altonivel"o"denoprocedimiento",quegraciasasufuertebase terica y su orientacin al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificacin y la orientacin a objetos. De esta forma una sola sentencia puede equivaler a uno o ms programas que se utilizaran en un lenguaje de bajonivelorientadoaregistros. Optimizacin Como ya se dijo arriba, y suele ser comn en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especificaqu es lo que se quiere y no cmo conseguirlo, por lo que una sentencia no establece explcitamente un orden de ejecucin. El orden de ejecucin interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de su ejecucin. Muchas veces, el uso dendicesaceleraunainstruccindeconsulta,peroralentiza la actualizacin de los datos. Dependiendo del uso de la aplicacin, se priorizar el acceso indexado o una rpida actualizacin de la informacin. La optimizacin difiere sensiblemente encadamotordebasededatosydependedemuchosfactores. Existe una ampliacinde SQL conocida como FSQL (FuzzySQL,SQLdifuso)quepermiteel acceso a basesdedatosdifusas,usandolalgicadifusa.Estelenguajehasidoimplementado anivelexperimentalyestevolucionandorpidamente. Lenguajededefinicindedatos(DDL) El lenguaje de definicin de datos (en ingls Data DefinitionLanguage, o DDL), es el que se encarga de lamodificacin de la estructura de los objetos de labasededatos.Existencuatro operacionesbsicas:CREATE,ALTER,DROPyTRUNCATE.

CREATE Este comando crea un objeto dentro de la base dedatos. Puede ser una tabla, vista, ndice, trigger,funcin,procedimientoocualquierotroobjetoqueelmotordelabasededatossoporte. ALTER Este comando permite modificarla estructura de unobjeto.Sepuedenagregar/quitarcampos a una tabla, modificar el tipo de un campo, agregar/quitar ndices a una tabla, modificar un trigger,etc. RENAME Cambiaelnombreaunatabla,vista,secuenciaosinonimoprivado. DROP Este comando eliminaunobjetodelabasededatos.Puedeserunatabla,vista,ndice,trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puedecombinarconlasentenciaALTER. TRUNCATE Este comando trunca todoel contenido de una tabla. La ventaja sobre elcomandoDROP,es que si se quiereborrartodoelcontenidodelatabla,esmuchomsrpido,especialmentesila tabla es muy grande. La desventaja es que TRUNCATE slo sirve cuando sequiere eliminar absolutamente todos los registros, ya que no se permite la clusula WHERE. Si bien, en un principio, esta sentencia parecera ser DML (Lenguaje de Manipulacin de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y lavuelve a crearynoejecutaningunatransaccin. LenguajedemanipulacindedatosDML(DataManipulationLanguaje) Unlenguajedemanipulacindedatos(DataManipulationLanguage,oDMLeningls)esun lenguajeproporcionadoporelsistemadegestindebasededatosquepermitealosusuarios llevaracabolastareasdeconsultaomanipulacindelosdatos,organizadosporelmodelode datosadecuado. EllenguajedemanipulacindedatosmspopularhoydaesSQL,usadopararecuperary manipulardatosenunabasededatosrelacional. INSERT UnasentenciaINSERTdeSQLagregaunoomsregistrosauna(yslouna)tablaenuna basededatosrelacional. UPDATE Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registrosexistentesenunatabla. MERGE lo que permite la sentenciaSQL MERGE es, dependiendo de una condicin lgica, actualizar registros (UPDATE) cuando la condicin se cumple, o insertar registros (INSERT) cuando dichacondicinnosecumple,deahsurgeladenominacindeUPSERT.

DELETE UnasentenciaDELETEdeSQLborraunoomsregistrosexistentesenunatabla, InstruccionesdeTransferencia AdministranlasmodificacionescreadasporlasinstruccionesDML.Loformanlas instruccionesROLLBACK,COMMITySAVEPOINT. LenguajedeControldeDatosDCL(DataControlLanguage) Administranlosderechosyrestriccionesdelosusuarios.LoformanlasinstruccionesGRANT yREVOKE. TiposdeDatosenOracle


Es importante conocer los tipos de datos disponibles en un Sistema Gestor de Base de Datos (SGBD), de esta forma podremos optimizar al mximo el uso de recursos de las aplicaciones. A continuacin se indican los tipos de datos de Oracle y sus caractersticas bsicas: TIPO CHAR CARACTERISTICAS Cadena de caracteres (alfanumricos) de longitud fija OBSERVACIONES Entre 1 y 2000 bytes como mximo. Aunque se introduzca un valor ms corto que el indicado en el tamao, se rellenar al tamao indicado. Es de longitud fija, siempre ocupar lo mismo, independientemente del valor que contenga Entre 1 y 4000 bytes como mximo. El tamao del campo depender del valor que contenga, es de longitud variable. En desuso, se VARCHAR2 en su lugar utiliza

VARCHAR2

Cadena de caracteres longitud variable

de

VARCHAR NCHAR

Cadena de caracteres longitud variable

de

Cadena de caracteres de longitud fija que slo almacena caracteres Unicode

Entre 1 y 2000 bytes como mximo. El juego de caracteres del tipo de datos (datatype) NCHAR slo puede ser AL16UTF16 UTF8. El juego de caracteres se especifica cuando se crea la base de datos Oracle

NVARCHAR2

Cadena de caracteres de longitud variable que slo almacena caracteres Unicode

Entre 1 y 4000 bytes como mximo. El juego de caracteres del tipo de datos (datatype) NCHAR slo puede ser AL16UTF16 UTF8. El juego de caracteres se especifica cuando se crea la base de datos Oracle Como mximo admite hasta 2 GB (2000 MB). Los datos LONG debern ser convertidos apropiadamente al moverse entre diversos sistemas. Este tipo de datos est obsoleto (en desuso), en su lugar se utilizan los datos de tipo LOB (CLOB,NCLOB). Oracle recomienda que se convierta el tipo de datos LONG a alguno LOB si an se est utilizando. No se puede utilizar en clasulas WHERE, GROUP BY, ORDER BY, CONNECT BY ni DISTINCT Una tabla slo puede contener una columna de tipo LONG. Slo soporta acceso secuencial. Hasta 2 GB. En desuso, se sustituye por los tipos LOB. Hasta 32767 bytes. En desuso, se sustituye por los tipos LOB. Admiten hasta 8 terabytes (8000 GB). Una tabla puede contener varias columnas de tipo LOB. Soportan acceso aleatorio. Las tablas con columnas de tipo LOB no pueden ser replicadas. Admiten hasta 8 terabytes Admiten hasta 8 terabytes Admiten hasta 8 terabytes. Guarda los datos segn

LONG

Cadena de caracteres longitud variable

de

LONG RAW

Almacenan cadenas de ancho variable Almacenan cadenas de ancho variable CLOB,

binarias

RAW

binarias

LOB (BLOG, BFILE)

NCLOB, Permiten almacenar y manipular bloques grandes de datos no estructurados (tales como texto, imgenes, videos, sonidos, etc) en formato binario o del carcter

BLOB CLOB NCLOB

Permite almacenar datos binarios no estructurados Almacena carcter Almacena carcter datos datos de de tipo tipo

el

juego de caracteres Unicode nacional. BFILE Almacena datos binarios no estructurados en archivos del sistema operativo, fuera de la base de datos. Una columna BFILE almacena un localizador del archivo a uno externo que contiene los datos Almacenar la direccin nica de cada fila de la tabla de la base de datos Admiten hasta 8 terabytes. El administrador de la base de datos debe asegurarse de que exista el archivo en disco y de que los procesos de Oracle tengan permisos de lectura para el archivo . ROWID fsico almacena la direccin de fila en las tablas, las tablas en clster, los ndices, excepto en las ndices-organizados (IOT). ROWID lgico almacena la direccin de fila en tablas de ndice-organizado (IOT). Un ejemplo del valor de un campo ROWID podra ser: "AAAIugAAJAAC4AhAAI". El formato es el siguiente: Para "OOOOOOFFFBBBBBBRRR", donde: OOOOOO: segmento de la base de datos (AAAIug en el ejemplo). Todos los objetos que estn en el mismo esquema y en el mismo segmento tendrn el mismo valor. FFF: el nmero de fichero del tablespace relativo que contiene la fila (fichero AAJ en el ejemplo). BBBBBB: el bloque de datos que contiene a la fila (bloque AAC4Ah en el ejemplo). El nmero de bloque es relativo a su fichero de datos, no al tablespace. Por lo tanto, dos filas con nmeros de bloque iguales podran residir en diferentes datafiles del mismo tablespace. RRR: el nmero de fila en el bloque (fila AAI en el ejemplo). Este tipo de campo no aparece en los SELECT ni se puede modificar en los UPDATE, ni en los INSERT. Tampoco se puede utilizar en los CREATE. Es un tipo de

ROWID

datos utilizado exclusivamente por Oracle. Slo se puede ver su valor utilizando la palabra reservada ROWID, por ejemplo: select rowid, nombre, apellidos from clientes Ejemplo 2: SELECT ROWID, SUBSTR(ROWID,15,4) "Fichero", SUBSTR(ROWID,1,8) "Bloque", SUBSTR(ROWID,10,4) "Fila" FROM proveedores Ejemplo 3: una forma de saber en cuntos ficheros de datos est alojada una tabla: SELECT COUNT(DISTINCT(SUBSTR(RO WID,7,3))) "Numero ficheros " FROM facturacion UROWID ROWID universal Admite ROWID a tablas que no sean de Oracle, tablas externas. Admite tanto ROWID lgicos como fsicos.

NUMBER

Almacena nmeros fijos y en Se admiten hasta 38 dgitos de punto flotante precisin y son portables a cualquier entre los diversos sistemas en que funcione Oracle. Para declarar un tipo de datos NUMBER en un CREATE UPDATE es suficiente con: nombre_columna NUMBER opcionalmente se le puede indicar la precisin (nmero total de dgitos) y la escala (nmero de dgitos a la derecha de la coma, decimales, los coger de la precisin indicada): nombre_columna NUMBER (precision, escala) Si no se indica la precisin se tomar en funcin del nmero a guardar, si no se indica la escala se tomar escala cero. Para no indicar la precisin y s la escala podemos utilizar: nombre_columna NUMBER (*, escala) Para introducir nmeros que no estn el el formato estndar

de Oracle se puede utilizar la funcin TO_NUMBER. FLOAT Almacena tipos de datos numricos en punto flotante Almacena un punto tiempo (fecha y hora) en el Es un tipo NUMBER que slo almacena nmeros en punto flotante El tipo de datos DATE almacena el ao (incluyendo el siglo), el mes, el da, las horas, los minutos y los segundos (despus de medianoche). Oracle utiliza su propio formato interno para almacenar fechas. Los tipos de datos DATE se almacenan en campos de longitud fija de siete octetos cada uno, correspondiendo al siglo, ao, mes, da, hora, minuto, y al segundo. Para entrada/salida de fechas, Oracle utiliza por defecto el formato DD-MMM-AA. Para cambiar este formato de fecha por defecto se utiliza el parmetro NLS_DATE_FORMAT. Para insertar fechas que no estn en el mismo formato de fecha estndar de Oracle, se puede utilizar la funcin TO_DATE con una mscara del formato: TO_DATE (el 13 de noviembre de 1992, DD del MES, YYYY)

DATE

TIMESTAMP TIMESTAMP WITH TIME ZONE

Almacena datos de tipo hora, fraccionando los segundos Almacena datos de tipo hora incluyendo la zona horaria (explcita), fraccionando los segundos Almacena datos de tipo hora incluyendo la zona horaria local (relativa), franccionando los segundos Tipo de datos abstracto. En realidad se trata de un CLOB. Cuando se usa un SELECT para mostrar los datos de este tipo, el valor de la hora ser ajustado a la zona horaria de la sesin actual Se asocia a un esquema XML para la definicin de su estructura.

TIMESTAMP WITH LOCAL TIME ZONE

XMLType

De los tipos anteriores, los comunmente utilizados son: VARCHAR2 (cadenas de texto no muy grandes), DATE (fechas, horas), NUMBER (nmeros), BLOB (ficheros de tipo word, excel, access, video, sonido, imgenes, etc) y CLOB (cadenas de texto muy grandes). Actualmente el tipo de dato VARCHAR es sinonimo de VARCHAR2. Sin embargo Oracle no recomienda utilizar el tipo VARCHAR. En el futuro, Oracle redefinir al tipo de dato VARCHAR como un tipo de datos para cadenas de caracteres de longitud variable con semantica de comparacion diferente a la del VARCHAR2.

Operadores de Comparacin Operador = !=, <>, ^= < > <= >= in not in between Operacin Igualdad Desigualdad Menor que Mayor que Menor o igual que Mayor o igual que Igual a cualquiera de miembros entre parntesis los Ejemplo select * from cod_dep = 100; emp where where where where where where where where

select * from emp cod_dep != 100; select * from cod_dep < 200; select * from cod_dep > 200; emp emp

select * from emp cod_dep <= 200; select * from emp cod_dep >= 200; select * from emp cod_dep in (100, 300); select * from emp cod_dep not in (200);

Distinto a cualquiera de los miembros entre parntesis Contenido en el rango

select * from emp where cod_emp between 100 and 199; select * from emp where cod_emp not between 100 and 199; select * from emp nombre like 'Ma%'; where

not between

Fuera del rango

like '_abc%'

Contiene la cadena 'abc' a partir del segundo carcter y luego cualquier cadena de caracteres

Operadores de Aritmticos Operador Operacin Ejemplo

Suma

select nombre, salario+comision from emp where oficio='VENDEDOR'; select nombre from emp where sysdate-fecha_alta > 365; select nombre, salario*12 from emp; select nombre, salario/31 from emp;

* /

Resta Producto Divisin

Operadores de Cadenas de Caracteres Operador || Operacin Concatenacin Ejemplo select emp; nombre||oficio from

Oracle Built in Functions Existen en SQL muchas funciones que pueden complementar el manejo de los datos en las consultas. Se utilizan dentro de las expresiones y actuan con los valores de las columnas, variables o constantes. Se pueden incluir en las clsulas SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos: aritmticas, de cadenas de caracteres, de manejo de fechas, de conversin, otras, de grupo. Funciones Aritmticas Funcin ABS(n) CEIL(n) Cometido Calcula el absoluto de n. valor Ejemplo select abs(-15) from dual; select ceil(15.7) from dual; select floor(15.7) from dual; select mod(11,4) from Resultado 15 16

Calcula el valor entero inmediatamente superior o igual a n. Calcula el valor entero inmediatamante inferior o igual a n. Calcula el resto

FLOOR(n)

15

MOD(m,n)

resultante de dividir m entre n. POWER(m,n) ROUND(m,n) Calcula la potencia n-esima de m.

dual; select power(3,2) from dual; 9

Calcula el redondeo de select 123.5 m a n decimales. Si round(123.456,1) from n<0 el redondeo se dual; efectua a por la izquierda del punto decimal. Calcula la cuadrada de n. raz select dual; sqrt(4) from 2 123.4

SQRT(n) TRUNC(m,n)

Calcula m truncado a n decimales (n puede ser negativo). Calcula el signo de n, devolviendo -1 si n<0, 0 si n=0 y 1 si n>0.

select trunc(123.456,1) from dual; select sign(-12) from dual;

SIGN(n)

-1

Funciones de Cadenas de Caracteres Funcin CHR(n) Cometido Devuelve el carcter cuyo valor codificado es n. Devuelve el valor ascii de cad. Devuelve cad1 concatenada con cad2. Esta funcin es esquivalente al operador ||. Devuelve la cadena cad con todas sus letras convertidas a minsculas. Devuelve la cadena cad con todas sus letras convertidas a maysculas. Devuelve cad con el primer caracter en maysculas. Devuelve cad1 con Ejemplo select dual; chr(65) from Resultado A

ASCII(cad) CONCAT(cad1,cad2)

select ascii('A') from dual; select concat(concat(nombr e,' es '),oficio) from emp; select lower('MinUsCulAs') from dual; select upper('maYuSCulAs') from dual; select initcap('isabel') from dual; select lpad('P',5,'*')

65 Cano etc. es Presidente,

LOWER(cad)

minusculas

UPPER(cad)

MAYUSCULAS

INITCAP(cad)

Isabel

LPAD(cad1,n,cad2)

****P

longitud n, y a la rellenando izquierda con RPAD(cad1,n,cad2)

ajustada from dual; derecha, por la cad2. P****

Devuelve cad1 con select rpad('P',5,'*') longitud n, y ajustada from dual; a la izquierda, rellenando por la derecha con cad2. Devuelve cad en la que cada ocurrencia de la cadena ant ha sido sustituida por la cadena nue. Devuelve la sudcadena de cad compuesta por n caracteres a partir de la posicion m. Devuelve de cad. la longitud select replace('digo','i','ie') from dual;

REPLACE(cad,ant,nue)

diego

SUBSTR(cad,m,n)

select substr('ABCDEFG',3,2) from dual;

CD

LENGTH(cad)

select length('cadena') dual;

6 from

Funciones de Manejo de Fechas Funcin SYSDATE ADD_MONTHS(d,n) Cometido Devuelve la fecha y hora actuales. Devuelve la fecha d incrementada en n meses. Ejemplo select dual; sysdate from Resultado 14-MAR-97 14-JUL-97

select add_months(sysdate, 4) from dual;

LAST_DAY(d)

Devuelve la fecha del select ltimo da del mes de last_day(sysdate) d. from dual; select months_between(sysd ate,'01-JAN-97') from dual;

31-MAR-97

MONTHS_BETWEEN(d1 Devuelve la diferencia , d2) en meses entre las fechas d1 y d2. NEXT_DAY(d,cad)

2.43409424

Devuelve la fecha del select primer da de la next_day(sysdate, semana cad despus 'sunday') from dual; de la fecha d.

16-MAR-97

Funciones de Conversin de Tipos Funcin Cometido Ejemplo Resultado

TO_NUMBER(cad,fmto )

Convierte la cadena cad a un nmero, opcionalmente de acuerdo con el formato fmto. Convierte la fecha d a una cadena de caracteres, opcionalmente de acuerdo con el formato fmto. Convierte la cadena cad de tipo varchar2 a fecha, opcionalmente de acuerdo con el formato fmto.

select to_number('12345') from dual;

124345

TO_CHAR(d, fmto)

select to_char(sysdate) from dual;

'14-MAR-97'

TO_DATE(cad,fmto)

select to_date('1-JAN-97') from dual;

01-JAN-97

Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la presentacin de una fecha. En la siguiente tabla se presentan algunos formatos de fecha y el resultado que generan. Mscaras de Formato Numricas Formato cc scc Cometido Valor del siglo. Ejemplo select to_char(sysdate,'cc') from dual; select to_char(sysdate,'y,yy y') from dual; select to_char(sysdate,'yyyy ') from dual; select to_char(sysdate,'q') from dual; Resultado 20

y,yyy sy,yyy

Ao con coma, con o sin signo. Ao sin signo con cuatro, tres, dos o un dgitos. Trimestre.

1,997

yyyy yyy yy y

1997

ww w

Nmero de la semana select del ao o del mes. to_char(sysdate,'ww') from dual; Nmero del mes. select to_char(sysdate,'mm') from dual;

11

mm

03

ddd dd d

Nmero del da del select ao, del mes o de la to_char(sysdate,'ddd') semana. from dual; La hora en formato select

073

hh hh12 hh24

12

12h. o 24h. mi Los minutos hora. de la

to_char(sysdate,'hh') from dual; select to_char(sysdate,'mi') from dual; select to_char(sysdate,'ssss s') from dual; 15

ss sssss

Los segundos dentro del minuto, o desde las 0 horas.

44159

Mscaras de Formato de Caracteres Formato syear year Cometido Ao en Ingls Ejemplo select to_char(sysdate,'syea r) from dual; Resultado nineteen ninety-seven

month o mon

Nombre del mes o su select abreviatura de tres to_char(sysdate,'mont letras. h') from dual; Nombre del da de la select semana o su to_char(sysdate,'day') abreviatura de tres from dual; letras. El espacio del da. select to_char(sysdate,'a.m.' ) from dual; select to_char(sysdate,'b.c.' ) from dual;

march

day dy

friday

a.m. p.m.

p.m.

b.c. a.d.

Indicador del ao respecto al del nacimiento de Cristo.

a.d.

Otras Funciones Funcin Cometido Ejemplo Resultado

DECODE(var, val1, Convierte el valor de cod1, val2, cod2, ..., var, de acuerdo con defecto) la codificacin. GREATEST(exp1, exp2, ...) LEAST(cad,fmto) NVL(val, exp)

select decode(oficio, P, D, X, ... 'Presidente', 'P', 'Director', 'D', 'X') from emp; sin ejemplo. sin ejemplo. 450000, 350000, ...

Devuelve el mayor sin ejemplo. valor de una lista. Devuelve el menor sin ejemplo. valor de una lista. Devuelve la expresin select exp si val es NULL, y salario+nvl(comision,0 val si en otro caso. ) from emp;

Clausula Group by La clusula Group By sirve para calcular propiedades de uno o ms conjuntos de filas. Si se selecciona ms de un conjunto de filas, Group By controla que las filas de la tabla original sean agrupadas en un temporal. Los datos seleccionados en la sentencia "Select" que lleva el "Group By" deben ser: Una constante. Una funcin de grupo (SUM, COUNT, AVG) Una columna expresada en el Group By. Clausula Having La clusula Having se emplea para controlar cual de los conjuntos de filas se visualiza. Se evala sobre la tabla que devuelve el Group By. No puede existir sin Group By. Having es similar al Where, pero trabajo con grupos de filas; pregunta por una caracterstica de grupo, es decir, pregunta por los resultados de las funciones de grupo, lo cual Where no pude hacer. Funciones de Grupo Oracle dispone de funciones que nos permiten contar registros, calcular sumas, promedios, obtener valores mximos y mnimos. Las funciones de grupo operan sobre un conjunto de valores (registros) y retornan un solo valor. Caractersticas: Se pueden usar en una instruccin "select" y combinarlas con la clusula "group by" Todas estas funciones retornan "null" si ningn registro cumple con la condicion del "where" (excepto "count" que en tal caso retorna cero). El tipo de dato del campo determina las funciones que se pueden emplear con ellas.

Las relaciones entre las funciones de grupo y los tipos de datos es la siguiente: count: se puede emplear con cualquier tipo de dato. min y max: con cualquier tipo de dato. sum y avg: slo en campos de tipo numrico.

Tratamiento de los valores nulos: Si realiza una consulta con la funcin "count" incluyendo entre parntesis un campo y la tabla contiene 18 registros, 2 de los cuales contienen valor nulo, el resultado devuelve un total de 16 filas porque no considera aquellos con valor nulo. Todas las funciones de grupo, excepto "count(*)", excluye los valores nulos de los campos; "count(*)" cuenta todos los registros, incluidos los que contienen "null". Las funciones de grupo que se pueden utilizar son las siguientes. Funcin Cometido Ejemplo

COUNT(col) AVG(col) MAX(col)

Cuenta el agrupadas.

nmero

de

filas

select count(nombre),oficio from emp group by oficio; select avg(salario),oficio from emp group by oficio;

Calcula el valor medio de todos los valores de la columna col.

Calcula el valor mximo de select max(salario),oficio from todos los valores de la emp group by oficio; columna col. Calcula el valor mnimo de select min(salario),oficio from todos los valores de la emp group by oficio; columna col. Calcula la suma de los valores de la columna col. Calcula la desviacin tpica de los valores de la columna col sin tener en cuenta los valores nulos. Calcula la varianza de los valores de la columna col sin tener en cuenta los valores nulos. select sum(salario), oficio from emp group by oficio; select stddev(salario), oficio from emp group by oficio;

MIN(col)

SUM(col) STDDEV(col)

VARIANCE(col)

select variance(salario), oficio from emp group by oficio;

Hay que tener en cuenta que los valores nulos no participan en el clculo de las funciones de conjuntos. Estas funciones se pueden utilizar con las clusulas DISTINCT y ALL. Tambin se pueden utilizar aunque no realicemos agrupacin alguna en la consulta, considerando a toda la tabla como un grupo.

OperacionesconConjuntos Permitecombinarlosresultadosdevarios"Select"paraobtenerunnicoresultado. UNION: Combina los resultados de dos consultas. Las filas duplicadas que aparecen se reducen a unafilanica. UNIONALL:Comolaanteriorperoaparecernnombresduplicados. INTERSECT: Devuelve las filas que son iguales en ambas consultas. Todas las filas duplicadas serneliminadas. MINUS: Devuelve aquellas filas que estn en la primera "Select" y no estnen la segunda "Select". Las filas duplicadas del primer conjunto se reducirn a una fila nica antes de que empiece la comparacinconelotroconjunto. Reglasparalautilizacindeoperadoresdeconjunto: Lascolumnasdelasdosconsultasserelacionanenorden,deizquierdaaderecha. Los nombres decolumnadelaprimerasentencia"Select"notieneporqueserlosmismosque losnombresdelasegunda. Los"Select"necesitantenerelmismonumerodecolumnas. Lostiposdedatosdebencoincidir,aunquelalongitudnotienequeserlamisma.

Otrascaractersticasadicionalesenlosoperadoresdeconjunto Los resultados se ordenan ascendentemente por defecto segn las columnas de la primer sentenciaSELECT,exceptoenUNIONALL LaclusulaORDERBYPuedeaparecerslounavezalfinaldelasentencia Puedeaceptarelnombredelacolumnaoelaliasde laprimersentenciaSELECTolanotacin deposicin Losoperadoresdeconjuntospuedenserusadosensubconsultas Cuando se usa un operador de conjuntos en la clusula WHERE, debe existir coincidencia entrelascolumnasdelacondicinylasdelresultadodeloperadordeconjunto CombinacionesdeTabla(Joins) La sentencia join en SQL permite combinar registros de dos o ms tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno,externo,ycruzado. En casos especiales una tabla puede unirse a s misma, produciendo una autocombinacin, SELFJOIN. Matemticamente, JOIN es composicin relacional, la operacin fundamental en el lgebra relacional,ygeneralizandoesunafuncindecomposicin. Tablasdeejemplo Todaslasexplicacionesqueestnacontinuacinutilizanlassiguientesdostablasparailustrar elefectodediferentesclasesdeunionesJOIN. Apellido Andrade Jordn Steinberg Rbinson Zolano Gaspar IDDepartamento 31 33 33 34 34 36

NombreDepartamento Ventas

IDDepartamento 31

Ingeniera Produccin Mercadeo

33 34 35

La tabla Empleado contiene a los empleados con el nmero del departamento al que pertenecen mientras que la tabla Departamento, contiene el nombre de los departamentosdelaempresa,sepuede notarqueexisteunempleadoquetieneasignado un nmero de departamento que no se encuentra en la tabla Departamento (Gaspar), igualmente, en la tabla Departamento existe un departamento al cual no pertenece empleado alguno (Mercadeo). Esto servir para presentar algunos ejemplos ms adelante.

Combinacininterna(INNERJOIN) Con esta operacin secalcula el productocruzadodetodoslosregistrosascadaregistroen la tabla A es combinado con cada registro de la tabla B pero slo permanecen aquellos registrosenlatablacombinadaquesatisfacenlascondicionesqueseespecifiquen. Este es el tipo de JOIN ms utilizado por lo que es considerado el tipo de combinacin predeterminado. SQL:2003 especifica dos formas diferentes para expresar estas combinaciones.La primera, conocida como explcita usa la palabra JOIN, mientras que la segunda es implcita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaracin SELECT. Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones quecumplanloqueindicalasentenciaWHERE. Es necesario tener especial cuidado cuando se combinan columnascon valores nulos NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agreganpredicadostalescomoISNULLoISNOTNULL. Comoejemplo,lasiguienteconsultatomatodoslos registrosdelatablaEmpleadoyencuentra todas las combinaciones enlatablaDepartamento.LasentenciaJOINcomparalosvaloresen la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, stas no se muestran esdecirquesielnmerodedepartamentode un empleado no coincide con los nmeros de departamento de latabla Departamento, no se mostrarelempleadoconsurespectivodepartamentoenlatablaresultante. Las dos consultas siguientes son similares, y se realizan de manera explicita (A) e implcita (B). A.EjemplodelasentenciaINNERJOINexplcita: SELECT* FROMempleado

INNERJOINdepartamento ONempleado.IDdepartamento=departamento.IDdepartamento B.EjemplodelasentenciaINNERJOINimplcita: SELECT* FROMempleado,departamento WHEREempleado.IDdepartamento=departamento.IDDepartamento Resultados: Empleado.Apellido Empleado.IDdep artamento departamento.No mbreDepartamen to Produccin Ingeniera Produccin Ingeniera Ventas departamento.ID Departamento

Zolano Jordn Rbinson Steinberg Andrade

34 33 34 33 31

34 33 34 33 31

El empleado Gaspar y eldepartamento de Mercadeo nosonpresentadosenlosresultadosya que ninguno de stos tiene registros correspondientes en la otra tabla. No existe un departamentoconnmero36niexisteunempleadoconnmerodedepartamento35. AlacombinacinqueutilizacomparacionesdentrodelpredicadoJOINselellamathetajoin. C.Ejemplodecombinacintipotheta: SELECT* FROMempleado INNERJOINdepartamento ONempleado.IDDepartamento<departamento.IDDepartamento Las operaciones INNER JOIN puede ser clasificadas como de equivalencia, naturales, y cruzadas. Deequivalencia(equijoin) Es una especie de thetajoin que usa comparaciones de igualdad en el predicado JOIN. Cuandoseusanoperadores,talescomo<o>nosepuedeclasificarenesterango. D.Ejemplodecombinacindeequivalencia: SELECT*

FROMempleado INNERJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento La tabla resultante presenta dos columnas llamadas IDDepartamento, una proveniente de la tablaEmpleadoyotradelatablaDepartamento. SQL:2003notieneunasintaxisespecficaparaestaclasedecombinaciones. Natural(Naturaljoin) Esunaespecializacindelacombinacindeequivalencia,anteriormentemencionada.Enestecaso secomparantodaslascolumnasquetenganelmismonombreenambastablas.Latablaresultante contieneslounacolumnaporcadapardecolumnasconelmismonombre. E.Ejemplodecombinacinnatural: SELECT* FROMempleadoNATURALJOINdepartamento El resultado es un poco diferente al del ejemplo D, ya queesta vez la columna IDDepartamento se muestrasolaunavezenlatablaresultante. Empleado.Apellido IDDepartamento Departamento.NombreD epartamento Produccin Ingeniera Produccin Ingeniera Ventas

Zolano Jordn Rbinson Steinberg Andrade

34 33 34 33 31

El uso de esta sentencia NATURAL puede producir resultados ambiguos y generar problemas si la base de datos cambia, porque al aadir, quitar, o renombrar las columnas, puede perder el sentido la sentencia por estarazn es preferible expresar el predicadousandolasotrasexpresionesnombradasanteriormente(ejemplosAyB). Cruzada(Crossjoin) Presentaelproductocartesianodetodoslosregistrosdelasdostablas. El cdigo SQL para realizar este producto cartesiano enuncia las tablas que sern combinadas,peronoincluyealgnpredicadoquefiltreelresultado. F.Ejemplodecombinacincruzadaexplcita: SELECT*

FROMempleadoCROSSJOINdepartamento G.Ejemplodecombinacincruzadaimplcita: SELECT* FROMempleado,departamento Empleado.Apelli do Empleado.IDDep artamento Departamento.N ombreDepartam ento Ventas Ventas Ventas Ventas Ventas Ventas Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Produccin Produccin Produccin Produccin Produccin Produccin Mercadeo Mercadeo Departamento.I DDepartamento

Andrade Jordn Steinberg Zolano Rbinson Gaspar Andrade Jordn Steinberg Solano Rbinson Gaspar Andrade Jordn Steinberg Solano Rbinson Gaspar Andrade Jordn

31 33 33 34 34 36 31 33 33 34 34 36 31 33 33 34 34 36 31 33

31 31 31 31 31 31 33 33 33 33 33 33 34 34 34 34 34 34 35 35

Steinberg Solano Rbinson Gaspar

33 34 34 36

Mercadeo Mercadeo Mercadeo Mercadeo

35 35 35 35

Esta clase de combinaciones son usadas pocas veces, generalmente se les agregan condicionesdefiltradoconlasentenciaWHEREparahallarresultadosespecficos. Combinacinexterna(OUTERJOIN) Mediante esta operacin no se requiere que cada registro en las tablas a tratar tenga un registro equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existeotroregistroquelecorresponda. EnSQL:2003noexisteunanotacinimplcitaparalascombinacionesexternas. Este tipo de operacin se subdivide dependiendo de la tabla a la cual se le admitirn los registros que no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinacincompleta. detablaizquierda(LEFTOUTERJOINoLEFTJOIN) El resultado de esta operacin siempre contiene todos los registros de la tabla de la izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un registrocorrespondienteenlatabladeladerecha,paraunodelaizquierda. La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de la tabla izquierda con los valoresdelatabladeladerechacorrespondientes,oretornaunvalor nuloNULLencasodenocorrespondencia. A diferencia del resultado presentado en los ejemplos A y B (de combinacin interna) donde no se mostraba el empleado cuyo departamento no exista en el siguiente ejemplo se presentarn losempleadosconsurespectivodepartamento,einclusivese presentarelempleado,cuyodepartamentonoexiste. H.Ejemplodetablaizquierdaparalacombinacinexterna: SELECTdistinct* FROMempleado LEFTOUTERJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento Empleado.Apelli do Empleado.IDDep artamento Departamento.N ombreDepartam ento Departamento.I DDepartamento

Jordn Andrade Rbinson Zolano Gaspar Steinberg

33 31 34 34 36 33

Ingeniera Ventas Produccin Produccin NULL Ingeniera

33 31 34 34 NULL 33

detabladerecha(RIGHTOUTERJOINoRIGHTJOIN) Esta operacin es inversa a la anterior el resultado de esta operacin siempre contiene todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la consulta),auncuandonoexistaunregistrocorrespondienteenlatabladelaizquierda,para unodeladerecha. LasentenciaRIGHTOUTERJOINretornalaparejadetodoslosvaloresdelatabladerecha conlosvaloresdelatabladelaizquierdacorrespondientes,oretornaunvalornuloNULLen casodenocorrespondencia. I.Ejemplodetabladerechaparalacombinacinexterna: SELECT* FROMempleado RIGHTOUTERJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento Empleado.Apelli do Empleado.IDDep artamento Departamento.N ombreDepartam ento Produccin Ingeniera Produccin Ingeniera Ventas Mercadeo Departamento.I DDepartamento

Zolano Jordn Rbinson Steinberg Andrade NULL

34 33 34 33 31 NULL

34 33 34 33 31 35

En este caso el rea de Mercadeo fue presentada en los resultados,aunque an no hay

empleadosregistradosendicharea. combinacincompleta(FULLOUTERJOIN) Esta operacin presenta los resultados de tabla izquierda y tabla derecha aunque no tengan correspondencia en la otra tabla. La tabla combinada contendr, entonces, todos losregistrosdeambastablasypresentarvaloresnulosNULLspararegistrossinpareja. J.Ejemplodecombinacinexternacompleta: SELECT* FROMempleado FULLOUTERJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento Empleado.Apelli do Empleado.IDDep artamento Departamento.N ombreDepartam ento Produccin Ingeniera Produccin NULL Ingeniera Ventas Mercadeo Departamento.I DDepartamento

Zolano Jordn Rbinson Gaspar Steinberg Andrade NULL

34 33 34 36 33 31 NULL

34 33 34 NULL 33 31 35

Como se puedenotar, eneste caso se encuentra el empleado Gaspar con valornuloen su rea correspondiente, y se muestra adems el departamento de Mercadeo con valor nuloenlosempleadosdeesarea. Algunos sistemas de bases dedatosnosoportan estafuncionalidad,peroestapuede ser emulada a travs de las combinaciones de tabla izquierda, tabla derecha y de la sentenciadeunin. K.Elmismoejemplopuedeexpresarseas: SELECT* FROMempleado LEFTJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento UNION

SELECT* FROMempleado RIGHTJOINdepartamento ONempleado.IDDepartamento=departamento.IDDepartamento WHEREempleado.IDDepartamentoISNULL

ElcatlogodeOracle Elcatlogodeoracleesunconjuntodetablasyvistasquecontienenladefinicindela estructuralgicayfsicadelabasededatos. Estoincluyelosobjetosexistentes,lasituacindelosdatafiles,laconfiguracindelos usuarios,etc. Losnombresdelastablasdecatlogosiguelasiguientenomenclaturadeprefijos: DBA_Objetosconinformacindeadministrador.SloaccesiblesporusuariosDBA. USER_ Objetos con informacin del usuario con el que estamos conectado. ProporcionanmenosinformacinquelosobjetosDBA_ ALL_Objetosconinformacindetodoslosobjetosenbasededatos. V_$V$Tablasvirtuales Existeunatabladecatlogoparacadatipodeobjetoposible(enplural). TABLES,VIEWS,SEQUENCES,TABLESPACES... Sabiendoestopodemosveralgunosejemplos: DBA_TABLESInformacinparaadministradoresdelastablasenbasededatos. USER_VIEWS Informacin de las vistas creadas por el usuario desde el que accedemos. ALL_SEQUENCESInformacindetodaslassecuenciasexistentesenbasededatos. DBA_TABLESPACESInformacindeadministracinsobrelostablespaces. USER_TAB_COLUMNSTodaslascolumnasdetablaenelusuarioactivo. Los objetos de catlogo pueden estar relacionados entre ellos. Por ejemplo, el objeto ALL_TABLES guarda una relacin 1N con el objeto ALL_TAB_COLUMNS: Una tabla tiene N columnas. Si se quiere que todoslosusuariostenganalgntipodeaccesoaunobjeto, podemosdarese privilegioalrolPUBLIC. El catlogo pblico son aquellas tablas (USER_ y ALL_) que son accesibles por todos los usuarios.Normalmentedaninformacinsobrelosobjetoscreadosenlabasededatos. El catlogo de sistema (DBA_y V_$) es accesible slo desde usuarios DBA ycontiene tanto informacin de objetosen base de datos, comoinformacinespecficadelabasededatosen s(versin,parmetros,procesosejecutndose...)

Ciertos datos delcatlogodeOracledebeactualizarseparaelbuenfuncionamientodelabase dedatos(ANALYZE). Disponemos de un par de tablas en elcatlogopblicoquesirvenalanalistayalprogramador paracrearcomentariossobretablasycolumnas. ALL_TAB_COMMENTSContieneloscomentariosparatablasyvistas. ALL_COL_COMMENTSContieneloscomentariosparalascolumnasdetablasy vistas. EstastablassemantientenpormediodelasentenciaCOMMENT. Contodasestainformacinenlabasededatos,podemosescribirprocedimientososcripts SQLparagenerardocumentacinogenerarasuvezscripts.

Fuentes http://www.gplivna.eu/papers/sql_join_types.htm#p4 http://www.oracledeveloper.net/display.php?id=213 http://www.oraclepassport.com/OracleJoins.html http://www.smartsoft.co.uk/Oracle/oracletipsandtricks.htm http://www.java2s.com/Code/Oracle/CatalogOracle.htm http://es.wikipedia.org/wiki/Join http://www.plsql.biz/2007/01/hintsenplsqlparadeterminarelmtodo.html

http://www.oracle.com/index.html http://es.wikipedia.org/wiki/Oracle http://en.wikipedia.org/wiki/Oracle_Database http://www.pythian.com/news/13291/installingoracle11gr2enterpriseeditiononub untu1004lucidlynx/ http://ubuntulife.wordpress.com/2007/02/11/instalaroracle10grelease2enubuntu edgy/

http://www.taringa.net/posts/linux/5400558/AplicacionesXremotasdesdeWindow http://www.buanzo.com.ar/lin/x_cliente_servidor.html http://www.infor.uva.es/~jvegas/cursos/bd/orarq/orarq.html http://www.infor.uva.es/~jvegas/cursos/bd/oraseg/oraseg.html http://blobgle.com/blog/?p=51 http://alexhomar.blogspot.com/2007/05/esquemausuario.html http://orlandoolguin.wordpress.com/2009/09/20/manejodeperfiles/ http://cursos.atica.um.es/cursosdba/dba10g1.php http://www.desarrolloweb.com/manuales/tutorialoracle.html

s.html

http://www.elartedeprogramar.cl/foro/sql/miniguiadeprogramacionoracleplsql/?PHPSESSI D=d5f1570a72e581449b195c2a4f5d1857 http://www.devjoker.com/gru/TutorialPLSQL/PLSQ/TutorialPLSQL.aspx http://www.dataprix.com/comocrearunnuevoesquemaenoraclepasopaso http://www.programacionweb.net/foros/mensaje/?num=16941 http://www.infor.uva.es/~jvegas/cursos/bd/orarq/orarq.html http://www.dbasupport.com.mx/index.php?option=com_content&view=article&id=126:Apuntes +de+SQLPlus&catid=1:administracion&Itemid=3 http://www.infor.uva.es/~jvegas/cursos/bd/sqlplus/sqlplus.html#conexion http://www.orafaq.com/wiki/SQL*Plus_FAQ http://www.exes.es/ManSQL/index.asp?Pg=sql_plsql_10.htm http://4.bp.blogspot.com/_nt6c3XlwGIs/Sh2sQXxP6gI/AAAAAAAAAaI/74PTi9JdGPM/s1600h/qu ery.jpg http://www.dbaoracle.com/oracle_tips_like_sql_index.htm http://carcasco.blogspot.com/2009/05/oraclebusquedaslikefuzzycontains.html http://www.dbaoracle.com/plsql/ http://www.dbaoracle.com/oracle_tips_like_sql_index.htm

http://www.orafaq.com/node/1918 http://knoworacle.wordpress.com/2010/02/25/oracle10gtop10oracleplsqlperformancetips/ http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96624/12_tune.htm http://download.oracle.com/docs/cd/B12037_01/appdev.101/b10807/12_tune.htm http://www.plsql.biz/2006/08/buclesyproblemasderendimiento.html http://www.devshed.com/c/a/Oracle/TuningPLSQLCode/ http://www.dbaoracle.com/oracle_news/2004_2_5_rittman.htm http://www.dbspecialists.com/files/presentations/bulk_binds.html http://daust.blogspot.com/2006/01/xechangingdefaulthttpport.html http://www.maestrosdelweb.com/editorial/tutsql1/ http://www.desarrolloweb.com/manuales/9/ http://es.wikipedia.org/wiki/SQL http://www.redcientifica.com/oracle/c0002p0004.html http://www.softcov.com/es/database/oracledatadictionaryused.html http://www.bd.cesma.usb.ve/ci5313/em04/taller4_MEV.pdf http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=268 http://66.221.222.85/reference/builtin_functions.html http://techonthenet.com/oracle/functions/ http://www.infor.uva.es/~jvegas/cursos/bd/sqlplus/sqlplus.html#columnas http://www.oraclebase.com/articles/10g/MergeEnhancements10g.php http://www.oracleya.com.ar/simulador/simulador.php?cod=212&punto=54 http://oracleya.com.ar/temarios/descripcion.php?cod=190&punto=1 http://www.desarrolloweb.com/articulos/1900.php

Vous aimerez peut-être aussi