jueves, 3 de noviembre de 2016

[ TIP ] Como Crear Esquema HR en Base de Datos Oracle 12c

 
En una placentera tarde de desarrollo pude experimentar un inesperable inconveniente a la hora de crear el esquema de base de datos de Recursos Humanos (HR) en la Base de Datos Oracle 12c. Por alguna razon, no existian los scripts SQL para crear dicho esquema.

Despues de tanto batallar, les dejo una manera practica y sencilla de solventar esto. En este articulo se describen los pasos a seguir para aplicar una posibile solución a esto. Cualquier otra sugerencia puede tratarse.

¿Como crear el esquema HR en la Base de Datos Oracle 12c?

1_ Descargar el archivo ZIP que contiene los scripts SQL y descomprimirlo.



2_ Copiamos todos los archivos .SQL a la ruta:
C:\app\oracle\product\12.1.0\dbhome_1\demo\schema\human_resources\


3_ Abrimos SQLPlus y nos logueamos con las siguientes credenciales:
usuario: sys as sysdba
contraseña: <la establecida para SYS en la instalación>


4_ Ejecutamos la siguiente Query:
@?/demo/schema/human_resources/hr_main.sql


5_ Completamos con los siguientes datos:

• Ingresar una contraseña para el esquema HR. (se recomienda usar la contraseña hr o HR)
specify password for HR as parameter 1:
Enter value for 1:
• Ingresar un espacio de tablas por defecto. Aca debemos ingresar el valor USERS

specify default tablespace for HR as parameter 2:
Enter value for 2:
• Ingresar un espacio de tablas temporal. Ingresar el valor TEMP
specify temporary tablespace for HR as parameter 3:
Enter value for 3:
• Debemos ingresar también nuestra contraseña para el usuario SYS (en mi caso 123).
specify password for SYS as parameter 4:
Enter value for 4:
• Y por ultimo, establecer la ruta (path) hacia una carpeta de log (puede ser cualquiera). En mi caso introduje el path: $ORACLE_HOME/log
specify log path as parameter 5:
Enter value for 5:










37 comentarios:

  1. Genial, me sirvio mucho

    ResponderEliminar
  2. soy nuevo en oracle, que es el esquema HR?

    ResponderEliminar
    Respuestas
    1. El esquema HR es un usuario que tiene tablas ya creadas con datos para que uno puedo realizar pruebas de concepto o realizar algun ejercicio para entender cierto tema, etc.
      Por ejemplo, si un día quieres certificarte en SQL el libro de estudio usa el esquema HR (Recursos Humanos) y OE (Order Entry).

      Espero haber solventado tu duda. Gracias por escribirnos!

      Eliminar
    2. Si, ya me quedo claro.
      Gracias por responder.

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. En el usuario cúal debo poner y en la contraseña?

    ResponderEliminar
  5. cuando hago consultas no me aparece los datos, solo me muestra el nombre de campo de la tabla, alguien me podria ayudar a como solucionar.

    ResponderEliminar
  6. En mi caso yo uso el oracle 11g y no existe el usuario hr cuando busco en la carpeta de "otros usuarios",entonces...¿tambien tendria que seguir el mismo procedimiento con el mismo archivo .zip?

    ResponderEliminar
  7. Muchas gracias! Nadie explica que Oracle por defecto crea los usuarios a la vieja escuela y que se puede modificar con: alter session set "_ORACLE_SCRIPT"=true;
    Estuve bastante tratando de aplicar el esquema HR, me ayudaste mucho!
    Exitos!!!

    ResponderEliminar
  8. MUCHAS GRACIAS ME COSTO MUCHO ENCONTRAR UNA SOLUCIÓN PERO ESTE POST ME SOLUCIONÓ TODO.

    ResponderEliminar
    Respuestas
    1. Excelente, gracias por los comentarios... siempre son bienvenidos. Que bueno que les haya servido. Saludos! Cualquier cosa estamos para ayudarnos.

      Eliminar
  9. me sale esto
    BEGIN dbms_stats.gather_schema_stats( 'HR' , granularity => 'ALL' , cascade => TRUE , block_sample => TRUE ); END;

    *
    ERROR at line 1:
    ORA-20000: Schema "HR" does not exist or insufficient privileges
    ORA-06512: at "SYS.DBMS_STATS", line 3701
    ORA-06512: at "SYS.DBMS_STATS", line 24470
    ORA-06512: at "SYS.DBMS_STATS", line 24435
    ORA-06512: at line 1

    ResponderEliminar
  10. Con que usuario estás corriendo el script? Récorda que debe ser con usuario administrador (normalmente sys). Saludos!

    ResponderEliminar
    Respuestas
    1. hola amigo, tengo exactamente el mismo error y estoy corriendo el script con el usuario sys con privilegios sysdba

      Eliminar
    2. Hola Leandro, pueden ser varias cosas... te propongo una lista para que pruebes a ver cual de ellas resuelve el problema:

      1- Puede que el problema venga de la linea del script hr.sql donde dice:
      create user hr identified by 123456a@

      *TIP: intenta quitar el arroba, o de reemplazarlo por un guion bajo (underscore), depende como hayas instalado tu base de datos ese simbolo puede generar inconvenientes. También puedes intentar agregarle doble comillas a la password: create user hr identified by "123456a@"


      2- Navega al contenedor PDB que contiene el usuario SYS antes de ejecutar el script. Por ejemplo:
      $ sqlplus sys as sysdba
      Enter password: password

      Connected to:
      Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
      SQL> alter session set container = ORCLPDB1 # Aqui iria tu PDB
      SQL> @hr_main.sql


      3- En algunos escenarios particulares puedes intentar ejecutando esta configuracion, antes de lanzar el script:
      SQL> alter session set "_ORACLE_SCRIPT"=true;

      Comentame como te fue, y si alguna de ellas te permitió ejecutar el script correctamente. Saludos!

      Eliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. Muchísimas gracias por tu aporte!!!

    ResponderEliminar
  13. Si quiero generar el esquema con una tabla Non-CBD, debo seguir los mismos pasos?
    Y muy buen aporte, aprendí mucho

    ResponderEliminar
    Respuestas
    1. No, deberías deshabilitar CDB antes de ejecutar los comandos... seria un comando extra antes de empezar con el articulo. De hecho hay un articulo en el blog que explicar como hacerlo. Saludos!

      Eliminar
  14. Gracias Amigo....
    Excelente aporte, me ayudaste mucho,

    ResponderEliminar
  15. Muchas gracias, me ayudo mucho.
    Recomendación: La primera vez no me resulto, porque al llegar al directorio vi que los archivos ya estaban y no los reemplace. Por eso no resulto.
    Recuerden primero, reemplazar los archivos.

    ResponderEliminar
  16. A mi me salio lo mismo y lo que hice fue crear el usuario HR con todos los privilegios y con eso volví a correr el procedimiento se se muestra en esta pagina. Y me creo el esquema correctamente.

    ResponderEliminar
  17. Me sirvió mucho, a mi me salìa el usuario hr pero sin tablas y el archivo human resources si estaba en esa ubicación entonces solo realicè los pasos del sqlplus, en el punto 4 me pidió el path y no me pidió contraseña, pero al final me creò las tablas, gracias por estos aportes que nos ayudan tanto. Saludos desde Costa Rica.

    ResponderEliminar
  18. Tengo problemas para establecer la conexión con el sql developer como puedo hacerlo alguno puede poner pantallazo de como puso el usuario conexion etc ..

    ResponderEliminar
  19. Gracias!!!! Soy muy novato en esto y sin este tutorial no lo habría conseguido. Enserio, gracias.

    ResponderEliminar
  20. Muchas Gracias me ayudooo a resolver ese inconveniente del user HR!

    ResponderEliminar
  21. Hola,

    Estoy perdido, he seguido todos los pasos y me aparece el mensaje de creación correcto, pero cuando intento conectar a traves del sql developper me dice que el usuario y contraseña es erroneo...

    He intentado crear el usuario siguiendo la forma que comenta William mas arriba:

    alter session set "_ORACLE_SCRIPT"=true;
    create user HR identified by hr;
    grant dba to HR;

    Y sin problemas pero una vez creado el usuario a mano , al hacer los pasos de SQL PLUS me da error como si ya existieran los datos...pero no los encuentro!! no me aparecen en ningún lado.

    Ahora tengo un usuario HR pero este no tiene ninguna de las tablas que en teoría si me ha creado...

    ResponderEliminar
  22. que se supone que debo de poner en cada campo soy nuevo en esto y el prof me mando a hacer este mismo trabajo..

    ResponderEliminar
    Respuestas
    1. Hola que tal, te explico cada campo por separado:
      1- es la contraseña que quieres configurarle a ese esquema de base datos. El esquema se crea con nombre HR, y esto va a gusto de cada usuario/desarrollador... en mi caso use "hr" (sin comillas y en minusculas) para no olvidarlo.

      2- es el espacio (o particion) dentro de nuestra base de datos donde creará el esquema... por defecto se recomienda usar el valor "USERS" (sin comillas y en mayuculas), dado que ese espacio o particion siempre existirá dentro de nuestra base de datos (esto puedes personalizarlo, pero implica mas tareas de Database Administrator).

      3- refiere a algo similar del punto anterior... es un espacio temporal para operaciones, tablas, punteros y vistas que se crean (valga la redundancia) de manera temporal en ese espacio o particion. Aqui se recomienda usar el valor "TEMP" dado que esa particion ya existirá dentro de nuestra base de datos. Igualmente puedes personalizarla, pero debes realizar tareas que solo un Administrador de Base de Datos realiza.

      4- la contraseña de tu usuario administrador... normalmente este script lo estas ejecutando con el usuario SYS y por tanto es la contraseña de ese usuario. El valor es la contraseña que configuraste al instalar tu base de datos.

      5- aqui te pide un path (o ruta) en donde se guardarán los logs que arroje este esquema... por defecto se recomienda guardarlos en la carpeta /logs dentro de tu instalacion de tu base datos (es decir: $ORACLE_HOME/logs (lo que sería identico a /u01/app/oracle/database/logs. Igualmente esta ruta puede ser cualquier carpeta de tu preferencia. Solo asegurate de que esa carpeta exista.

      Cualquier duda me avisas y trataré de ayudarte lo mas claro y certero posible. Saludos!

      Eliminar
  23. pero si en mi carpeta app no tengo la carpeta oracle cual seria la solucion

    ResponderEliminar
    Respuestas
    1. depende como hayas realizado la instalación del producto... por default es C:\app\oracle, esto hace referencia a tu variable $ORACLE_HOME, lo importante es llegar a la ruta $ORACLE_HOME\demo\schema\

      Eliminar