lunes, 25 de septiembre de 2023

Oracle 13 - Nuevo enfoque (10). Oracle Enterprise con docker, Ampliar el tablespace a mas DE 12 GB

 0. Introducción

Probamos con las versiones FREE y EXPRESS y teníamos una limitación de 12 GB en los tablespaces. Estamos pendientes de recibir una copia de seguridad mucho mayor y seguramente estará hecha con compresión.

Vamos a realizar varias pruebas:

  1. Incrementar un Tabspace por encima de los 12 GB (por ejemplo 20 GB)
  2. Añadir a la tabla PRODUCTS 100 millones de registros

1. Incrementar el TABSPACE  a 21 GB

Como hemos creado el tablespace dandole un tamaño de 50 MB con esta sentencia:

CREATE TABLESPACE TABSPC01_XIMO DATAFILE '/opt/oracle/oradata/FREE/FREEPDB1/TABSPC01_XIMO.dbf' SIZE 50M;

Para incrementar su tamaño, tenemos que cambiar el tamaño del DATAFILE así, por ejemplo a 21000 Mbyte:

--Aumentamos el tamaño del DATAFILE a 21GB
ALTER DATABASE DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/TABSPC01_XIMO.dbf' RESIZE 21000M;

Y si además queremos que pueda autoincrementar su tamaño (AUTOEXTEND ON) según le vaya haciendo falta:

--Que autoincremente su tamaño 
ALTER DATABASE DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/TABSPC01_XIMO.dbf' AUTOEXTEND ON;

Y para ver el resultado

SELECT * FROM dba_data_files;

y sale

FILE_NAME                                             |FILE_ID|TABLESPACE_NAME|BYTES      |BLOCKS |STATUS   |RELATIVE_FNO|AUTOEXTENSIBLE|MAXBYTES   |MAXBLOCKS|INCREMENT_BY|USER_BYTES |USER_BLOCKS|ONLINE_STATUS|LOST_WRITE_PROTECT|
------------------------------------------------------+-------+---------------+-----------+-------+---------+------------+--------------+-----------+---------+------------+-----------+-----------+-------------+------------------+
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf     |      9|SYSTEM         |  293601280|  35840|AVAILABLE|           1|YES           |34359721984|  4194302|        1280|  292552704|      35712|SYSTEM       |OFF               |
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf     |     10|SYSAUX         |  387973120|  47360|AVAILABLE|           4|YES           |34359721984|  4194302|        1280|  386924544|      47232|ONLINE       |OFF               |
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf    |     11|UNDOTBS1       |  104857600|  12800|AVAILABLE|           9|YES           |34359721984|  4194302|         640|  103809024|      12672|ONLINE       |OFF               |
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf      |     12|USERS          |    5242880|    640|AVAILABLE|          12|YES           |34359721984|  4194302|         160|    4194304|        512|ONLINE       |OFF               |
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/TABSPC01_XIMO.dbf|     13|TABSPC01_XIMO  |22020096000|2688000|AVAILABLE|          13|YES           |34359721984|  4194302|           1|22019047424|    2687872|ONLINE       |OFF               |

2. Añadir a la tabla PRODUCTS 100 millones de registros

Vamos a ejecutar este script dentro de nuestra BD (ORCLPDB1) que añade 10 millones de registros a la tabla PRODUCTS


Para ello, como la columna PRODUCT_ID es autogenerada, veamos don DBeaver dicha columna 



y creamos este script en nuestra BD ORCLPDB1 y observar el valor que le damos al campo PRODUICT_ID para que coincida con el que hemos consultado ("SCHM01_XIMO"."ISEQ$$_76482".nextval)


declare
  i number(12) := 1;
begin
   
  while (i<=10000000)
  loop
    INSERT INTO SCHM01_XIMO.PRODUCTS
(PRODUCT_ID, PRODUCT_NAME, DESCRIPTION, STANDARD_COST, LIST_PRICE, CATEGORY_ID)
VALUES("SCHM01_XIMO"."ISEQ$$_76482".nextval, 'AName_' || LTRIM(TO_CHAR(i,'999999999999')), 'ADescription_' || LTRIM(TO_CHAR(i,'999999999999')), 10, 11, 1);
    i := i+1;
  end loop;
 
end;


Para ver el espacio libre de los tabspaces, segun GPSOS ejecutamos

select tablespace_name nb_tablespace, 
       file_id, file_name nb_fichero, 
       size_data_file_mb tamanyo_fichero_MB,
       nvl(free_size_mb,0) espacio_libre_MB
from (
      select d.tablespace_name, d.file_id, d.file_name, 
             d.bytes/1024/1024 size_data_file_mb, 
             sum(f.bytes)/1024/1024 free_size_mb 
      from dba_data_files d left outer join dba_free_space f on d.file_id=f.file_id
      group by d.tablespace_name, d.file_id, d.file_name, d.bytes
      )
order by tablespace_name, file_name;

y obtenemos

NB_TABLESPACE|FILE_ID|NB_FICHERO                                            |TAMAÑO_FICHERO_MB|ESPACIO_LIBRE_MB|
-------------+-------+------------------------------------------------------+-----------------+----------------+
SYSAUX       |     10|/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf     |              370|         22.6875|
SYSTEM       |      9|/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf     |              280|            7.75|
TABSPC01_XIMO|     13|/opt/oracle/oradata/ORCLCDB/ORCLPDB1/TABSPC01_XIMO.dbf|            21000|       20245.625|
UNDOTBS1     |     11|/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf    |             1920|             131|
USERS        |     12|/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf      |                5|               4|






No hay comentarios :

Publicar un comentario