Buscar este blog

martes, 17 de octubre de 2017

Instalacion Oracle 11.2.0.4 Oracle Linux 6.4

Descargamos los binarios necesario para la instalación


#11.2.0.4
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
The "/etc/hosts" file must contain a fully qualified name for the server.
<IP-address>  <fully-qualified-machine-name>  <machine-name>
For example.
127.0.0.1       localhost       localhost.localdomain

192.168.203.14  srvt03gdb02.sigfe.local srvt03gdb02

Oracle Installation Prerequisites

Antes debemos crear un repositorio para yum, local o remoto
para esto debemos ir a: /etc/yum.repos.d/ y mover lo siguiente desde
otro servidor ya configurado:
[oracle@srvt01mid01 etc]$ scp -R yum.repos.d/ root@192.168.203.14:/etc
[oracle@srvt01mid01 yum.repos.d]$ ls -ltr total 12 -rw-r--r-- 1 root root 91 Aug 1 2014 local.repo -rw-r--r-- 1 root root 115 Aug 1 2014 local-updates.repo -rw-r--r-- 1 root root 561 Aug 1 2014 rhel-debuginfo.repo
En nuestro servidor con el nuevo repositorio:
[root@srvt03gdb02 yum.repos.d]# find / -name *GPG* /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-legacy-former /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-legacy-release /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-legacy-rhx
[root@srvt03gdb02 yum.repos.d]# rpm --import
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [root@srvt03gdb02 yum.repos.d]# rpm --import
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta
[root@srvt03gdb02 yum.repos.d]# yum update
Estamos listos para instalar cualquier RPM necesario para nuestro motor Oracle.
Ejemplo:
[root@srvt03gdb02 yum.repos.d]# yum install unzip, sysstat.x86_64
[root@srvt03gdb02 yum.repos.d]# yum install vncserver, xterm, make.x86_64
[root@srvt03gdb02 oracle]# yum install libaio.x86_64 libaio.i686

Necesitamos aumentar el area temporal /tmp:
[root@srvt03gdb02 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 gso lvm2 a-- 149.85g 134.60g /dev/sdb1 vgoracle lvm2 a-- 166.66g 66.66g /dev/sdb2 vgoracle lvm2 a-- 166.66g 166.66g /dev/sdb3 vgoracle lvm2 a-- 166.67g 166.67g

[root@srvt03gdb02 ~]#  lvresize -r -L +2G /dev/mapper/gso-tmp
  Extending logical volume tmp to 3.00 GiB
  Logical volume tmp successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/gso-tmp is mounted on /tmp; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/gso-tmp to 786432 (4k) blocks.
The filesystem on /dev/mapper/gso-tmp is now 786432 blocks long.


[root@srvt03gdb02 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/gso-raiz  2.0G  266M  1.7G  14% /
tmpfs                 5.9G     0  5.9G   0% /dev/shm
/dev/sda1             146M   43M   96M  31% /boot
/dev/mapper/gso-home  248M   11M  226M   5% /home
/dev/mapper/gso-opt   2.0G   69M  1.9G   4% /opt
/dev/mapper/gso-tmp   3.0G  130M  2.7G   5% /tmp
/dev/mapper/gso-usr   4.0G 1006M  2.8G  27% /usr
/dev/mapper/gso-var   2.0G  182M  1.7G  10% /var
/dev/mapper/vgoracle-vg01
                       99G  8.1G   86G   9% /u01
Configuramos acceso remoto para correr ./runInstaller
[oracle@srvt03gdb02 ~]$ vncserver You will require a password to access your desktops. Password: Verify: xauth: creating new authority file /home/oracle/.Xauthority New 'srvt03gdb02:1 (oracle)' desktop is srvt03gdb02:1 Creating default startup script /home/oracle/.vnc/xstartup Starting applications specified in /home/oracle/.vnc/xstartup Log file is /home/oracle/.vnc/srvt03gdb02:1.log
Paso siguiente descomprimimos los binarios de Oracle:
[oracle@srvt03gdb02 oracle]$ unzip linux.x64_11gR2_database_1of2.zip
[oracle@srvt03gdb02 oracle]$ unzip linux.x64_11gR2_database_2of2.zip
[oracle@srvt03gdb02 database]$
Accedemos via VNC al servidor para levantar entorno grafico:

Manejo de excepciones en PL/SQL (excepciones predefinidas)

Los errores que se producen durante la ejecución de un bloque de código PL/SQL pueden ser manejados a gusto del programador, es decir, si durante la ejecución de una sentencia PLSQL se produce un error, podemos hacer que el programa realice unas acciones u otras dependiendo del tipo de error que se haya generado, esto es algo parecido a lo que se puede hacer cuando programamos en C++ o Java. Para conseguir esto debemos añadir dentro del bloque de código PL/SQL una sección para tratamiento de las excepciones.

Existen dos tipos de excepciones:

- Excepciones predefinidas
- Excepciones definidas por el usuario.

En este artículo voy a hablar sólo de las excepciones predefinidas.

PL/SQL proporciona un gran número de excepciones predefinidas que permiten controlar las condiciones de error más habituales. Las excepciones predefinidas no necesitan ser declaradas y son las siguientes:

DUP_VAL_ON_INDEX - Se produce cuando se intenta almacenar un valor ya existente en una columna que tiene restricción de índice único.

TIMEOUT_ON_RESOURCE - Se excedió el tiempo máximo de espera por un recurso en Oracle.

NOT_LOGGED_ON - El programa efectuó una llamada a Oracle sin estar conectado.

LOGIN_DENIED - El login o la contraseña utilizados para entrar en Oracle son inválidos.

NO_DATA_FOUND - Una sentencia SELECT INTO no devolvió ningún registro.

TOO_MANY_ROWS - Una sentencia SELECT INTO devolvió más de un registro.

ZERO_DIVIDE - Se ha ejecutado una división donde el divisor valía cero.

STORAGE_ERROR - Si no se dispone de más memoria o la memoria esta dañada.

PROGRAM_ERROR - Ocurrió un problema interno al ejecutar el código PL/SQL.

INVALID_NUMBER - Cuando falla la conversión de una cadena de caracteres hacia un número porque la cadena no representa un número válido.

VALUE_ERROR - Ocurrió un error aritmético, de conversión o truncamiento. Por ejemplo, esto sucede cuando se intenta dar un valor muy grande a una variable que no soporta dicho tamaño.

ROWTYPE_MISMATCH - Los elementos de una asignación (el valor a asignar y la variable que lo contendrá) son de tipos incompatibles. También se presenta este error cuando un parámetro pasado a un subprograma no es del tipo esperado.

SYS_INVALID_ROWID - Falla la conversión de una cadena de caracteres hacia un tipo rowid porque la cadena no representa un número.

INVALID_CURSOR - Se efectuó una operación no válida sobre un cursor. Suele ocurrir cuando un cursor no está abierto y se ejecuta una sentencia para cerrar dicho cursor.

CURSOR_ALREADY_OPEN - Cuando se intenta abrir un cursor que ya estaba abierto. Hay que recordar que un cursor de tipo FOR se abre automáticamente por lo que no se debe ejecutar la sentencia OPEN.

ACCESS_INTO_NULL - Se intentó asignar un valor a los atributos de un objeto no inicializado.

COLLECTION_IS_NULL - Se intentó asignar un valor a una tabla anidada aún no inicializada.

SELF_IS_NULL - El parámetro SELF (el primero que es pasado a un método MEMBER) es nulo.

OTHERS - Cualquier otro tipo de error que pueda producirse. Cuando se utiliza la excepción OTHERS, cualquier excepción que no se haya tratado anteriormente se procesará según la secuencia de instrucciones incluida dentro de la sección OTHERS. OTHERS debe ser la última excepción tratada dentro de la sección dedicada al tratamiento de excepciones.

La sintaxis de una sección para tratamiento de excepciones es como sigue:

   BEGIN
     [Secuencia de sentencias]
     EXCEPTION
     WHEN [nombre de la excepción 1] THEN
       [Sentencias para tratar la excepción 1]
     .................................................
     WHEN [nombre de la excepción n] THEN
       [Sentencias para tratar la excepción n]
     WHEN OTHERS THEN
       [Sentencias para tratar el resto de las excepciónes]
     END;

En el siguiente ejemplo se utilizan las excepciones predefinidas NO_DATA_FOUND, TOO_MANY_ROWS y OTHERS:

   DECLARE
     vprecio inventario.precio%TYPE;
   BEGIN
     [Otras sentencias]
     BEGIN
       SELECT precio FROM inventario
       WHERE cantidad = 100
       INTO vprecio;
       EXCEPTION
       WHEN NO_DATA_FOUND THEN
         DBMS_OUTPUT.PUT_LINE("No hay ningún artículo.");
       WHEN TOO_MANY_ROWS THEN
         DBMS_OUTPUT.PUT_LINE("Hay más de un artículo.");
       WHEN OTHERS THEN
         DBMS_OUTPUT.PUT_LINE("Error, abortando ejecución.");
         RAISE;
     END;
     [Otras sentencias]
   END;

En este ejemplo si la sentencia SELECT INTO fallase por no devolver ningún registro o por devolver más de uno, se mandaría un mensaje de error a la pantalla pero la ejecución del programa continuaría; por contra, para cualquier otro error, aunque también se mandaría un mensaje de error a la pantalla, la ejecución del programa se abortaría (comando RAISE).