A veces nos hacen la pregunta, cuanto espacio debemos reservar para el crecimiento a futuro de la base de datos, o cuanto espacio hemos consumido en un año anterior.
Esa información de forma natural en la base de datos, sin precalcularlo es un poco complejo obtenerla, especialmente si no tenemos vistas históricas que se obtienen con EE y Packs de diagnóstico y tuneo.
Aquí un pequeño TIP para poder calcular dicha información y almacenarlo, no considera el UNDO y TEMP, solo Información real de usuario.
Crear Tabla que almacenara la información histórica.
CREATE OR REPLACE PROCEDURE db_space_history AS
BEGIN
INSERT INTO db_space_hist
SELECT SYSDATE, total_space,
total_space-NVL(free_space,0) used_space,
NVL(free_space,0) free_space,
((total_space - NVL(free_space,0)) / total_space)*100 pct_inuse,
num_db_files
FROM ( SELECT SUM(bytes)/1024/1024 free_space
FROM sys.DBA_FREE_SPACE WHERE tablespace_name NOT LIKE '%UNDO%') FREE,
( SELECT SUM(bytes)/1024/1024 total_space,
COUNT(*) num_db_files
FROM sys.DBA_DATA_FILES WHERE tablespace_name NOT LIKE '%UNDO%') FULL;
COMMIT;
END;
/
Crear el JOB que calculara la información, la Frecuencia puede ser la deseada, o necesitada, diaria, semanal , mensual.(Puede usarse o mejor dicho usar Scheduler JOBS).
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
(
job=> X
,what => 'OBS.DB_SPACE_HISTORY;'
,next_date=> sysdate+1
,INTERVAL => 'TRUNC(SYSDATE+7)'
,no_parse => FALSE
);
END;
La información se consulta asi:
select * from db_space_hist order by timestamp desc;
Esto debe realizarse en los N Nodos que formaran el Conjunto Data Guard, para mi ejemplo 2 Nodos.
Log in as root.
Download and install the Oracle Database Preinstallation RPM:
Descargar el rpm de
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
Instalar el software con el rpm
# yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
La instalación del Software esta ahora completa.
Creación de la Base de datos
Puede hacerse la creación de la Base de Datos en el Servidor Origen, usando el tool del rpm de instalación o lanzar el dbca de forma normal, pongo los 2 ejemplos.
Conectarse con root
To configure a sample Oracle Database instance, run the following service configuration script:
[WARNING] [DBT-11205] Specified shared pool size does not meet the recommended minimum size requirement. This might cause database creation to fail.
ACTION: Specify at least (481 MB) for shared pool size.
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
50% complete
54% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/emcdb.
Database Information:
Global Database Name:emcdb
System Identifier(SID):emcdb
Look at the log file "/opt/oracle/cfgtoollogs/dbca/emcdb/emcdb.log" for further details.
-bash-4.2$
A este punto tenemos correctamente configurada una Base de Datos 19c en el servidor Origen.
Asumiremos, que logramos
Configuramos la maquina virtual correctamente
Instalar en el servidor Destino o nodo2 el Software Oracle Database
Tenemos reglas de transferencia y comunicación entre los nodos (firewall y access list en la VCN).
Ademas, debemos
Trasladado el Password file de la BD creada , así como el init (mejor spfile) , el tnsnames.ora hacia el servidor destino.
Con el spfile, iniciamos la instancia en el nodo2
Ahora vamos a Crear la replica, que método usaremos, bueno el ahora método preferido para mi, duplicación via el servicio:
Nota: Durante la clonación, me percate que no tenia en Modo archive la BD Origen.
-bash-4.2$ rman targetsys/syspassword1
RMAN> restore standby controlfile from service emcdb;
Starting restore at 18-APR-23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=255 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service emcdb
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/EMCDB/control01.ctl
output file name=/u01/app/oracle/oradata/EMCDB/control02.ctl
Finished restore at 18-APR-23
RMAN>restore database from service emcdb;
Starting restore at 18-APR-23
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=255 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service emcdb
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/EMCDB/system01.dbfRMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of restore command at 04/18/2023 21:12:45ORA-19845: error in backupDataFile while communicating with remote database serverORA-17628: Oracle error 19602 returned by remote Oracle serverORA-19602: cannot backup or copy active file in NOARCHIVELOG modeORA-19660: some files in the backup set could not be verifiedORA-19661: datafile 1 could not be verified
ORA-19845: error in backupDataFile while communicating with remote database server
ORA-17628: Oracle error 19602 returned by remote Oracle server
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
SQL> shutdown immediatestartup mount;
ORACLE instance started.
Total System Global Area524285856 bytes
Fixed Size 8898464 bytes
Variable Size 285212672 bytes
Database Buffers 222298112 bytes
Redo Buffers 7876608 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
restore database from service emcdb;
Starting restore at 18-APR-23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=256 device type=DISKchannel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: using network backup set from service emcdbchannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/EMCDB/system01.dbfchannel ORA_DISK_1: restore complete, elapsed time: 00:00:25channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: using network backup set from service emcdbchannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/EMCDB/sysaux01.dbfchannel ORA_DISK_1: restore complete, elapsed time: 00:00:16channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: using network backup set from service emcdbchannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/EMCDB/undotbs01.dbfchannel ORA_DISK_1: restore complete, elapsed time: 00:00:07channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: using network backup set from service emcdbchannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/EMCDB/users01.dbfchannel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 18-APR-23
RMAN>recover database from service emcdb;
Starting recover at 18-APR-23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=255 device type=DISK
skipping datafile 1; already restored to SCN 2065656
skipping datafile 3; already restored to SCN 2065666
skipping datafile 4; already restored to SCN 2065672
skipping datafile 7; already restored to SCN 2065675
starting media recovery
RMAN-08187: warning: media recovery until SCN 2064663 complete
Finished recover at 18-APR-23
Continuamos, ya tenemos la replica, ahora hay que configurar el paso del Broker, es demasiado util para dejar de usarlo:
dgmgrl / –> a veces es necesario para algunas tareas usar sys y su password.
Me di cuenta que me falto encender el parámetros de broker en ambos sitios
CREATE CONFIGURATION emcdbdrp as primary database is emcdb connect identifier is emcdb;
Error:
ORA-16525: The Oracle Data Guard broker is not yet available.
DGMGRL>
SQL> alter system set dg_broker_start=true;
System altered.
SQL>
DGMGRL> enable configuration;
Enabled.
DGMGRL> show configuration;
Configuration - emcdbdrp
Protection Mode: MaxPerformance
Members:
emcdb- Primary database
Warning: ORA-16789: standby redo logs configured incorrectly
emcdbr - Physical standby databaseWarning: ORA-16809: multiple warnings detected for the member
Fast-Start Failover:Disabled
Configuration Status:
WARNING (status updated 36 seconds ago)
DGMGRL> show database emcdbr
Database - emcdbr
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag:1 minute 58 seconds (computed 46 seconds ago)
Apply Lag:1 minute 58 seconds (computed 46 seconds ago)
Average Apply Rate: 18.95 MByte/s
Real Time Query:OFF
Instance(s):
emcdb
Database Warning(s):
ORA-16853: apply lag has exceeded specified threshold
ORA-16855: transport lag has exceeded specified threshold
ORA-16857: member disconnected from redo source for longer than specified threshold
ORA-16789: standby redo logs configured incorrectly
Database Status:
WARNING
Como PLUS, vamos a activar Active Data Guard (ADG) , en el sitio alterno, o nodo 2 , o sitio secundario:
SQL> alter database open;
Database altered.
DGMGRL>
Database - emcdbr
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag:8 minutes 1 second (computed 59 seconds ago)
Apply Lag:8 minutes 1 second (computed 59 seconds ago)
Average Apply Rate: 18.95 MByte/s
Real Time Query:ON
Instance(s):
emcdb
Database Warning(s):
ORA-16853: apply lag has exceeded specified threshold
ORA-16855: transport lag has exceeded specified threshold
ORA-16857: member disconnected from redo source for longer than specified threshold
ORA-16789: standby redo logs configured incorrectly
Database Status:
WARNING
DGMGRL>edit database emcdbr set state=apply-on;
Succeeded.
DGMGRL> show configuration;
Configuration - emcdbdrp
Protection Mode: MaxPerformance
Members:
emcdb- Primary database
emcdbr - Physical standby databaseWarning: ORA-16809: multiple warnings detected for the member
Fast-Start Failover:Disabled
Configuration Status:
WARNING (status updated 47 seconds ago)
DGMGRL> show database emcdbr;
Database - emcdbr
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag:50 minutes 18 seconds (computed 17 seconds ago)
Apply Lag:50 minutes 18 seconds (computed 17 seconds ago)
Average Apply Rate: 18.95 MByte/s
Real Time Query:ON
Instance(s):
emcdb
Database Warning(s):
ORA-16853: apply lag has exceeded specified threshold
ORA-16855: transport lag has exceeded specified threshold
Database Status:
WARNING
DGMGRL> sql ' alter system switch logfile'
Succeeded.
DGMGRL>DGMGRL> show database emcdbr;
Database - emcdbr
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag:0 seconds (computed 1 second ago)
Apply Lag:0 seconds (computed 1 second ago)
Average Apply Rate: 553.00 KByte/s
Real Time Query:ON
Instance(s):
emcdb
Database Status:
SUCCESS
DGMGRL>
Voy a intentar la validación de configuración y sitios antes de intentar el switchover, previo a esto recordé que debo configurar el Flashback, Necesario para FSFO y otros beneficios.
SQL> alter database flashback on;alter database flashback on*ERROR at line 1:ORA-38706: Cannot turn on FLASHBACK DATABASE logging.ORA-38707: Media recovery is not enabled.SQL> alter database archivelog;alter database archivelog*ERROR at line 1:ORA-01126: database must be mounted in this instance and not open in any
instance
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/product/19c/dbhome_1/dbs/arch
Oldest online log sequence 1
Current log sequence 2
SQL> select status,open_mode from v$database,v$instance;
STATUS OPEN_MODE
------------ --------------------
OPEN READ ONLY WITH APPLY
SQL>
La validación me indica debo cubrir las entradas estáticas que el broker requiere , esto debido que no hay srvctl , o Oracle Restart.
Ademas tenemos otro punto a cubrir, los Standby RedoLogs o SRL.
Recordemos que tenemos dos tipos de Redologs , Online, y Standby.
DGMGRL>validate database emcdb;Database Role:Primary database
Ready for Switchover:Yes
Managed by Clusterware:
emcdb:NOValidating static connect identifier for the primary database emcdb...
Unable to connect to database using (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux7.subnet.vcn.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=emcdb_DGMGRL)(INSTANCE_NAME=emcdb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))ORA-12514: TNS:listener does not currently know of service requested in connect descriptorFailed.Warning: Ensure primary database's StaticConnectIdentifier propertyis configured properly so that the primary database can be restartedby DGMGRL after switchoverDGMGRL>validate database emcdbr;Database Role: Physical standby database
Primary Database:emcdb
Ready for Switchover:Yes
Ready for Failover:Yes (Primary Running)
Managed by Clusterware:
emcdb :NOemcdbr:NOValidating static connect identifier for the primary database emcdb...Unable to connect to database using (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux7.subnet.vcn.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=emcdb_DGMGRL)(INSTANCE_NAME=emcdb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))ORA-12514: TNS:listener does not currently know of service requested in connect descriptorFailed.Warning: Ensure primary database's StaticConnectIdentifier property
is configured properly so that the primary database can be restarted
by DGMGRL after switchover
Log Files Cleared:
emcdb Standby Redo Log Files: Cleared
emcdbr Online Redo Log Files: Not Cleared
emcdbr Standby Redo Log Files:Available
Current Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdb) (emcdbr)13 2 Insufficient SRLsFuture Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdbr)(emcdb) 1 3 0 Insufficient SRLsWarning: standby redo logs not configured for thread 1 on emcdb
DGMGRL> exit
sql-bash-4.2$ dgmgrl /
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Apr 18 22:36:07 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "emcdb"
Connected as SYSDG.
DGMGRL> validate database emcdr;
Object "emcdr" was not found
DGMGRL> validate database emcdbr;
Database Role: Physical standby database
Primary Database:emcdb
Ready for Switchover:Yes
Ready for Failover:Yes (Primary Running)
Managed by Clusterware:
emcdb :NOemcdbr:NOValidating static connect identifier for the primary database emcdb...
Unable to connect to database using (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux7.subnet.vcn.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=emcdb_DGMGRL)(INSTANCE_NAME=emcdb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Failed.
Warning: Ensure primary database's StaticConnectIdentifier property
is configured properly so that the primary database can be restarted
by DGMGRL after switchover
Log Files Cleared:
emcdb Standby Redo Log Files: Cleared
emcdbr Online Redo Log Files: Not Cleared
emcdbr Standby Redo Log Files:Available
Current Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdb) (emcdbr)1 3 2 Insufficient SRLs
Future Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdbr)(emcdb) 1 3 0 Insufficient SRLs
Warning: standby redo logs not configured for thread 1 on emcdb
Las entradas estáticas en el listener.ora quedo dela siguiente manera,
recordemos que debemos reiniciar el listener para que ese cambio tome efecto.
No usar reload.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = linux7.subnet.vcn.oraclevcn.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=emcdb)
(GLOBAL_DBNAME=emcdb_DGMGRL)
(ORACLE_HOME=/opt/oracle/product/19c/dbhome_1)
)
)
-bash-4.2$
Ajustaremos la entrada estatica mas simple en el broker:
DGMGRL>edit database emcdb set property staticconnectidentifier='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=10.0.0.3))(CONNECT_DATA=(SERVICE_NAME= emcdb_DGMGRL)(INSTANCE_NAME=emcdb)(SERVER=DEDICATED)))';edit database emcdbr set property staticconnectidentifier='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=10.0.0.4))(CONNECT_DATA=(SERVICE_NAME= emcdbr_DGMGRL)(INSTANCE_NAME=emcdb)(SERVER=DEDICATED)))';
Intentaremos nuevamente la validación:
DGMGRL> validate database emcdb;Database Role:Primary database
Ready for Switchover:Yes
Managed by Clusterware:
emcdb:NOValidating static connect identifier for the primary database emcdb...
The static connect identifier allows for a connection to database "emcdb".
DGMGRL> validate database emcdbr;Database Role: Physical standby database
Primary Database:emcdb
Ready for Switchover:Yes
Ready for Failover:Yes (Primary Running)
Managed by Clusterware:
emcdb :NOemcdbr:NOValidating static connect identifier for the primary database emcdb...
The static connect identifier allows for a connection to database "emcdb".
Log Files Cleared:
emcdb Standby Redo Log Files: Cleared
emcdbr Online Redo Log Files: Not Cleared
emcdbr Standby Redo Log Files:Available
Current Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdb) (emcdbr)1 3 2 Insufficient SRLs
Future Log File Groups Configuration:
Thread #Online Redo Log GroupsStandby Redo Log Groups Status(emcdbr)(emcdb) 1 3 0 Insufficient SRLs
Warning: standby redo logs not configured for thread 1 on emcdb
Vamos a corregir el tema de los standby redologs en ambos sitios, borramos los que están mal ( quedaron con thread 0), y los agregamos de forma correcta.
Por defecto el dbca crea 3 Online redologs, en este caso de 600mb, y para seguir la regla de la documentacion, debemos crear N+1 standby Redologs, donde N es la cantidad de Online Redologs x Thread, en el caso es un solo thread, porque es SingleInstance.
-bash-4.2$ dgmgrl sys/syspassword1
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Apr 18 23:23:34 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "emcdb"
Connected as SYSDBA.
DGMGRL> sql ' alter system switch logfile';
Succeeded.
DGMGRL> validate database emcdb;Database Role:Primary database
Ready for Switchover:Yes
Managed by Clusterware:
emcdb:NOValidating static connect identifier for the primary database emcdb...
The static connect identifier allows for a connection to database "emcdb".
DGMGRL> validate database emcdbr;Database Role: Physical standby database
Primary Database:emcdb
Ready for Switchover:Yes
Ready for Failover:Yes (Primary Running)
Managed by Clusterware:
emcdb :NOemcdbr:NOValidating static connect identifier for the primary database emcdb...
The static connect identifier allows for a connection to database "emcdb".
Log Files Cleared:
emcdb Standby Redo Log Files: Cleared
emcdbr Online Redo Log Files: Not Cleared
emcdbr Standby Redo Log Files:Available
DGMGRL>
Intentemos el Swicthover:
DGMGRL> switchover to emcdbr;
Performing switchover NOW, please wait...
Operation requires a connection to database "emcdbr"
Connecting ...
Connected to "emcdbr"
Connected as SYSDBA.
New primary database "emcdbr" is opening...
Operation requires start up of instance "emcdb" on database "emcdb"
Starting instance "emcdb"...
Connected to an idle instance.
ORACLE instance started.
Connected to "emcdb"
Database mounted.
Database opened.
Connected to "emcdb"
Switchover succeeded, new primary is "emcdbr"
DGMGRL>
Del log, en la secuencia de tiempo, podemos notar que demoro menos de 2 Minutos:
SWITCHOVER VERIFY COMPLETE
2023-04-18T23:27:09.914922+00:00
Additional information: 7
2023-04-18T23:27:14.836244+00:00
rfs (PID:8201): Selected LNO:5 for T-1.S-11 dbid 888512743 branch 1134441066
2023-04-18T23:27:15.108620+00:00
PR00 (PID:7203): Resetting standby activation ID 888530151 (0x34f5e4e7)
2023-04-18T23:27:15.126778+00:00
Media Recovery End-Of-Redo indicator encountered
....
TMI: kcv_commit_to_so_to_primary Switchover from physical END 2023-04-18 23:28:06.692280SWITCHOVER: completed request from primary database.
2023-04-18T23:28:12.732013+00:00
ALTER SYSTEM SET fal_server='' SCOPE=BOTH;
2023-04-18T23:28:12.735019+00:00
Starting background process NSV1
2023-04-18T23:28:12.749558+00:00
NSV1 started with pid=26, OS id=8428
2023-04-18T23:28:14.946580+00:00
ARC0 (PID:5163): Becoming the 'no SRL' ARCH
2023-04-18T23:28:16.040815+00:00
RSM0 (PID:5182): Using STANDBY_ARCHIVE_DEST parameter default value as /opt/oracle/product/19c/dbhome_1/dbs/arch [krsd.c:18141]
2023-04-18T23:28:16.049990+00:00
ALTER SYSTEM SET log_archive_dest_2='service="emcdb"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 reopen=300 db_unique_name="emcdb" net_timeout=30','valid_for=(online_logfile,all_roles)' SCOPE=BOTH;
2023-04-18T23:28:16.109045+00:00
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;
ALTER DATABASE OPEN
Validamos el cambio correcto:
DGMGRL> show database emcdb;
Database - emcdb
Role: PHYSICAL STANDBY
Intended State: APPLY-ONTransport Lag:0 seconds (computed 0 seconds ago)
Apply Lag:1 second (computed 0 seconds ago)
Average Apply Rate: 5.00 KByte/s
Real Time Query:ONInstance(s):
emcdb
Database Status:
SUCCESS
DGMGRL> show database emcdbr;
Database - emcdbr
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
emcdb
Database Status:
SUCCESS
DGMGRL>
Con este tutorial, vamos a terminar de complementarlo, cuando se hace cambio de rol, debe considerarse si las Apps lograran conectarse a un nuevo HOST, IP, datos de otro sitio, otro servicio, etc, etc; Oracle provee una solución para garantizar la menor intervención de DBA, de SYSADMIN, de NetworkAdmin, etc: Client failover connectivity .
De La documentacion:
Pre 11.2 Configuration:
Recordemos que en este ejemplo no tenemos SIHA ni Clusterware, entonces debemos considerar que el usuario el servicio debe manejarse solo por funcionamiento de la DB, y eso lo lograremos con un trigger en la misma DB.
La idea es, intervenir lo menos posible en un evento de switchover o Failover, esto es requerido, porque el servicio default de BD, de PBD, no funciona correctamente.
Crear en la primaria los servicios para ser usados por el respectivo rol:
+ On the current primary, create 2 services, one to connect to the primary (prim_db) and another (stby_db) to connect to the read only standby:
+ On the current primary, start the service that is needed to connect to primary:
SQL> exec dbms_service.start_service('prim_db');
+ Now, on the current primary, create the trigger to manage these services accordingly:
CREATE OR REPLACE TRIGGER startDgServices after startup on database
DECLARE
db_role VARCHAR(30);
db_open_mode VARCHAR(30);
BEGIN
SELECT DATABASE_ROLE, OPEN_MODE INTO db_role, db_open_mode FROM V$DATABASE;
IF db_role = 'PRIMARY' THEN DBMS_SERVICE.START_SERVICE('prim_db'); END IF;
IF db_role = 'PHYSICAL STANDBY' AND db_open_mode LIKE 'READ ONLY%' THEN DBMS_SERVICE.START_SERVICE('stby_db'); END IF;
END;
/
Complementaremos este tutorial, con un Video de las pruebas de switchover y un cliente conectandose para validar la cadena de conexión unificada sin intervención manual para ajustar dicha cadena.
1. Con la BD encendida, cambie el parametro undo _management de AUTO a MANUAL ( Es estatico, requiere reinicio).
— alter system set undo_management=manual scope=spfile;
Consulte los segmentos de rollback que permanecen en el tablespace UNDO y que no permiten redimensionarlo a menos tamaño
1.1 SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,STATUS FROM DBA_ROLLBACK_SEGS WHERE TABLESPACE_NAME LIKE ‘%UND%’;
SEGMENT_NAME OWNER TABLESPACE_NAME STATUS
------------------------------ ------ ------------------------------ ----------------
_SYSSMU1_2287069710$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU2_1428768168$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU3_1956277333$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU4_2809192227$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU5_1081917160$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU6_615989371$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU7_3192789434$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU8_1508326656$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU9_4053710062$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU10_1046413189$ PUBLIC UNDOTBS1 ONLINE
10 rows selected.
1.2 crear el pfile
create pfile from spfile;
shutdown immediate;
1.3 Modificar el init
vi initBAODI.ora
2.Agregue la siguiente linea al archivo pfile:
_OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU10_1046413189$) – agregar al final del archivo de init segun el listado del select anterior
4. Borraremos el segmento de rolback o deshacer “_SYSSMU10_1046413189$” se genera el script debe de quedar asi:drop rollback segment ” “_SYSSMU10_1046413189$”;
SELECT ‘drop rollback segment “‘||SEGMENT_NAME||” FROM DBA_ROLLBACK_SEGS WHERE TABLESPACE_NAME LIKE ‘_SYSSMU10_1046413189$‘;
5. ejecutamos el script
6. Reiniciamos la BD
startup ;
7. Retornamos el parametro undo _management de MANUAL a AUTO
alter system set undo_management=AUTO scope=spfile;
8. Reiniciamos la instancia
shutdown immediate; y luego startup (normal)
Listo, para nuestro ejemplo solo use un segmento de rollback, pero puede crearse el listado de borrado de todos los segmentos de rollback necesarios.
A veces necesitamos ( lo más usual en la via de un DBA), monitorear una actividad de respaldo o restauración, esto porque siempre nos están preguntando, cual es el avance, como vamos, como va el respaldo.
Y a simple vista, responder a dicha pregunta no es tan fácil, especialmente si son restauraciones o respaldo de bases de datos de gran tamaño.
Pero los scripts construidos con el poderoso SQL nunca nos abandonan, en este caso traemos uno utilísimo (a mi modo de ver), que permite contestar de gran manera (es una aproximación) las preguntas planteadas arriba.
El query a usar, que es totalmente personalizable se basa en la session longops:
El resultado seria similar a la siguiente salida, indicando, la Sesión o SID, la hora de inicio, el Porcentaje de avance, usualmente del Hilo o Sesión el restante en Segundos, Minutos y Horas, para aquello de los impacientes:
ORACLE RAC 11GR2 (2 Nodes) Completamente en modo Silencioso, sin usar interfaz grafica.
San Salvador, 25 de Marzo de 2023
#OracleACE
#OracleTipsSV
Hace algún tiempo, me enfrente a una situación de instalación de un producto Oracle llamado OAS, para los que lo conocieron fue el Servidor de Aplicaciones Caballo de Batalla de Oracle Corp, malo para mi modo de ver, Weblogic le gana por mucho.
Centrándose en la situación vivida, estaba instalando via VPN (2011), con un acceso a internet algo lento, y recuerdo que cuando lanzaba el modo gráfico de la instalación demoraba mucho tiempo en hacerme caso, y el proceso era lento en su totalidad, quede frustrado, después de horas y horas de búsqueda y nada.
Tiempo después, cuando me dio curiosidad el Examen de OCM, lei un tópico o requisito, saber Instalar todo producto Oracle involucrado en el examen en modo silencioso, sin uso de interfaz gráfica, y pensé que ser eso, y comencé a investigar y descubrí eso que tiempo tras me pudo haber permitido instalar el OAS sin complicación.
Oracle Corp, para todo producto, permite instalarlo de 2 formas, en modo interactivo en sus típicos instaladores bajo el estándar Oracle Universal Installer, que es un Tool creado en Java con toda una pila de subutilerias internas y scripts que se ejecutan cuando una persona lo esta utilizando, no es particularmente lento pero, al cargarlo de forma remota se complica la existencia.
El otro modo, el modo silencioso, particularmente complejo dado que la persona que lo use, debe saber rellenar las respuestas a las preguntas que el Wizard de Instalación o OUI realiza para poder completar una instalación. Todo producto Oracle viene con una plantilla que puede ser rellenada, en la mayoría de los mismos viene una sección de explicación para cada item a completar su valor.
Entrando en materia, vamos a ver los comandos necesarios para instalar un Oracle RAC de 2 nodos en version 11g( en realidad todas las versiones en esencia son iguales), usando el modo silencioso.
Vamos a asumir algunas consideraciones:
Tenemos el Hardware adecuado y correctamente configurado
Sistema operativo adecuado y correctamente configurado en los nodos involucrados
La mayoría o todos los elementos requisitos correctamente configurados, esto porque nunca es correcto dejando elementos con warning (para producción esto puede provocar fallas posteriores), o Error ( error ni siquiera se puede terminar la instalación)
Tenemos el Software correcto descargando y copiado al nodo inicial , también desempacado.
Hay que definir una variable para evitar errores durante la instalación:
export IGNORE_PREADDNODE_CHECKS=Y
Configuramos la equivalencia de usuarios entre los nodos:
Al iniciar nos indica el log donde se ve el avance, el mismo log nos indica que hay que ejecutar los scripts de root ( 2 el del inventario y el del OracleHome), también nos indicara cualquier error que haya que corregir, etc.
El mismo nos indicara cuando el proceso haya finalizado.
El OUI inicial solo crea y configura el diskgroup de ASM donde el OCR y los voting files son creados por lo cual cualquier diskgroup de ASM adicional debe configurarse posterior a dicho paso, aqui creamos un diskgroup de ASM:
Una vez el GI ha sido configurado de forma correcta, validamos su funcionamiento, apagando, encendiendo, reiniciando equipos, podemos parcharlo, etc , etc.
En este ejemplo usamos, separación de soles, por lo cual el Software de RDBMS se ejecuta con usuario oracle, solo instalaremos el RDBMS, no crearemos la BD, eso sera en un paso posterior:
El proceso de instalación completo la instalación y al finalizar debió ejecutarse el script de root del mismo Home, con esto podríamos crear la BD del mismo modo silencioso:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 11.2.0.3.0 - Production
Start Date 12-APR-2014 23:53:51
Uptime 0 days 2 hr. 50 min. 10 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/11.2.0/grid/log/diag/tnslsnr/racprod01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.102)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.105)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "mvadb" has 1 instance(s).
Instance "mvadb1", status READY, has 1 handler(s) for this service...
Service "mvadbXDB" has 1 instance(s).
Instance "mvadb1", status READY, has 1 handler(s) for this service...
The command completed successfully
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 11.2.0.3.0 - Production
Start Date 12-APR-2014 23:53:51
Uptime 0 days 2 hr. 50 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/11.2.0/grid/log/diag/tnslsnr/racprod02/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.104)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.106)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "mvadb" has 1 instance(s).
Instance "mvadb2", status READY, has 1 handler(s) for this service...
Service "mvadbXDB" has 1 instance(s).
Instance "mvadb2", status READY, has 1 handler(s) for this service...
The command completed successfully
Raul Antonio Molina Alvarenga – Oracle ACE Associate
04-dec-2022
No se si alguna vez les ha pasado que por algún error involuntario o una falla han perdido el spfile, pfile, o init temporal, representando alguna que otra sudoración por no poder encender la instancia y que la base de datos de servicio.
En este articulo vamos a simular una falla frecuente en el mundo de los dbas, que también puede venir acompañada de la ejecución de un establecimiento de parámetros que imposibilita el arranque de la instancia.
Primero validamos que tenemos nuestro spfile configurado y utilizado:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /opt/oracle/product/19c/dbhome_1/dbs/spfileORCLCDB.ora
SQL>
SQL> show parameter name
NAME TYPE VALUE
db_namestring ORCLCDB
SQL>
Crearemos una copia del spfile como pfile.
Recordemos la definición:
pfile: archivo de parámetros en texto
spfile: archivo de parámetros en formato binario.
SQL> create pfile from spfile;
File created.
También crearemos un archivo de parámetros alterno, con nombre alterno.
SQL> create pfile='noperderpfile.ora' from spfile;
File created.
Es importante observemos donde esta el diag, la ruta de archivos de log y traces de la bd y el estado de la instancia:
SQL> show parameter diag
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
diagnostic_deststring /opt/oracle
SQL>select status from v$instance;
Ahora vamos a simular la falla de perder el spfileSID, borramos el spfileSID, note que hay un initSID, el archivo alterno de parámetros que nosotros creamos.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string --> esta vacio, arranco con init
SQL>
Notese que la instancia arranco, sin spfile, porque por default en el orden de precedencia al no encontrar spfileSID, busca initSID
y para el caso lo encontró en el directorio $ORACLE_HOME/dbs.
Vamos a provocar la falla , borrando el initSID
[oracle@instance-20221204-1045 dbs]$ ls
hc_ORCLCDB.datinit.orainitORCLCDB.oralkORCLCDBnoperderpfile.oraorapwORCLCDB
[oracle@instance-20221204-1045 dbs]$ rm initORCLCDB.ora
[oracle@instance-20221204-1045 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 4 22:46:21 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.All rights reserved.
Connected to an idle instance.
SQL> startupORA-01078: failure in processing system parametersLRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initORCLCDB.ora'SQL>
Puede observarse que al no encontrar spfile ni init, no arranco la instancia
[oracle@instance-20221204-1045 dbs]$ ls
hc_ORCLCDB.datinit.oralkORCLCDBnoperderpfile.oraorapwORCLCDB
Vamos a reconstruir nuestro spfile del init que guardamos previamente con nombre personalizado.
[oracle@instance-20221204-1045 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 4 22:46:44 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile='noperderpfile.ora';File created.SQL> startup
ORACLE instance started.
Total System Global Area473953632 bytes
Fixed Size 8897888 bytes
Variable Size 222298112 bytes
Database Buffers 234881024 bytes
Redo Buffers 7876608 bytes
Database mounted.
Database opened.
SQL>
Esto creo el spfile y se puede observar en el $OH/dbs
Otra forma utilísima de regenerar el init o spfile es usando los valores impresos en el alert en el diag repository.
[oracle@instance-20221204-1045 dbs]$ adrci
ADRCI: Release 19.0.0.0.0 - Production on Sun Dec 4 22:59:57 2022
Copyright (c) 1982, 2019, Oracle and/or its affiliates.All rights reserved.
ADR base = "/opt/oracle"
adrci> show alert
Choose the home from which to view the alert log:
1: diag/rdbms/orclcdb/ORCLCDB
2: diag/rdbms/dummy/ORCLCDB
3: diag/tnslsnr/instance-20221204-1045/listener
Q: to quit
Please select option: 1
Cuando Comenzó la tecnología de Multitenant, fue como un giro de timón, algo complejo de entender, y para mi existía una analogía que encontraba algo cierta, comparaba Multitenant como SQL Server, algo que un sostengo, aquí les explico mi analogía:
la CDB$ROOT, es como la master y msdb del SQLSERVER,
La instancia de la base de datos es como el motor en los Servicios de Windows ejecutandose si se apaga ninguna Base de Datos atachada se puede acceder
Las bases de datos , pueden desconectarse y posteriormente pegarse o atacharse, a la misma Instancia Principal o otra en otro servidor
Pueden crearse backups de las bases de datos
No deben existir Objetos de usuario en la CDB$ROOT y/o la master o msdb.
Habiendo aclarado mi analogía, expongo el acceso.
Parecía complejo y tedioso el conectarse a una PDB en el mismo servidor de Base de datos al inicio, pues si no usábamos TNSNAMES o easy connect, solo podíamos cambiándonos de contenedor en la sesión así:
[oracle@nodo1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 7 15:57:33 2022
Version 19.15.0.0.0
Copyright (c) 1982, 2022, Oracle.All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.15.0.0.0
SQL> show pdbs;
CON_ID CON_NAME OPEN MODERESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEEDREAD ONLYNO
3 MYPLUGDB3_NEWREAD WRITE NO
SQL>
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL>
SQL> show pdbs;
CON_ID CON_NAME OPEN MODERESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEEDREAD ONLYNO
3 MYPLUGDB3_NEWREAD WRITE NO
SQL> alter session set container=MYPLUGDB3_NEW;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
MYPLUGDB3_NEW
SQL>
Ahora bien, desde 18c, es posible definir una nueva variable de ambiente, que permita conectarse directamente a una Base de Datos sin necesidad de pasar primero por el contenedor raíz, así:
[oracle@nodo1 ~]$ export ORACLE_PDB_SID=MYPLUGDB3_NEW
[oracle@nodo1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 7 16:19:03 2022
Version 19.15.0.0.0
Copyright (c) 1982, 2022, Oracle.All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.15.0.0.0
SQL> show con_name
CON_NAME
------------------------------
MYPLUGDB3_NEW
SQL>
Este formato permite, inclusive ejecutar expdp directamente en la PDB o Base de Datos pluggable sin necesidad de usar tnsnames.
Llevar a cabo el incremento o disminución del espacio asignado en un Diskgroup de ASM hoy en día es una tarea normal de la operación, lo que hace años haciamos con los FileSystems, Folders o Puntos de Montaje en Unix y Windows.
En un Sistema de Ingenieria de Oracle tampoco es la excepción, pues las bases de Datos o repositorios de Datos, estan en constante crecimiento basados en el Negocio o Rubro que Soportan.
Siendo las Bases de Datos de Empresas de Telecomunicaciones o Bancos las que Más Rapido crecen.
En esta oportunidad vamos a Incrementar el espacio de almacenamiento en un Diskgroup de ASM en un Sistema de Ingenieria Exadata.
IPS de las celdas
Debemos conocer las IPs de las Celdas de Almacenamiento porque, es necesario hacer ciertos pasos de procedimiento en dichos componenes, aunque podria hacerse con el utilitario dcli desde el Nodo de Procesamiento Database Machine, Prefiero hacerlo desde la propia celda.
Los nombres de Diskgroups, IPS , Bases de Datos, Hostname, etc son ficticios en el Articulo.
20.10.101.230 nodo01
20.10.101.231 nodo02
20.10.101.232 nodo03
Conectarse mediante SSH
Nos conectamos mediante SSH ya sea fuera del Exadata o desde un nodo de computo a las celdas.
Tarea de Redimensión del espacio actual
Lo que se redimensiona son los GridDisk, los GridDisk son las porciones en que se dividen los CELLDISK, el CELLDISK es el LUN, y el CELLDISK es tambien cada disco fisico en la Celda, existen N discos fisicos en las celdas existiendo un minimo de 6 discos, y todas las celdas tienen la misma candidad de discos.
Validamos el espacio libre de los CELLDISk, a ver si hay espacio para incrementar los GridDisk del cluster en estudio.
cellcli -e “list celldisk where name like ‘CD.*’ attributes name, size, freespace”
Ahora validamos el espacio que tiene cada GridDisk, observamos que el espacio que produce dicha configuración es de 1TB y se obtiene asi.
6 Discos de 58Gb por 3 celdas, 6*58G*3= 1044G aprox 1Tb , en los GridDisk del Diskgroup DATA
cellcli -e “list griddisk where name like ‘DATA.*’ attributes name, size” –> 1Tb
DATA_CD_00_celda01 58G
DATA_CD_01_celda01 58G
DATA_CD_02_celda01 58G
DATA_CD_03_celda01 58G
DATA_CD_04_celda01 58G
DATA_CD_05_celda01 58G
Vamos a trabajar tambien el diskgroup RECO
6 Discos de 14Gb por 3 celdas, 6*58G*3= 250G , en los GridDisk del Diskgroup RECO
cellcli -e “list griddisk where name like ‘RECO.*’ attributes name, size” –> 250GB
RECO_CD_00_celda01 14G
RECO_CD_01_celda01 14G
RECO_CD_02_celda01 14G
RECO_CD_03_celda01 14G
RECO_CD_04_celda01 14G
RECO_CD_05_celda01 14G
Debemos comprender que los dos GridDisk tanto del diskgroup DATA y RECO provienen del mismo CELLDISK, pero Oracle usa la logica del sector del disco que da vueltas más rapidas, ese sector al ser mas rapido es definido para DATA, y el sector más alejado o que da las vueltas más lentas, es definido para RECo, usando una propiedad definido en cilindros y llamada Interleave Disk(Puede que me equivoque).
Analizamos los diskgroups a aumentar el tamaño ( el proceso de reducir es exactamente igual al reves los pasos).
asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED HIGH N 512 512 4096 4194304 1069056 172704 118784 17973 0 Y DATA/
MOUNTED HIGH N 512 512 4096 4194304 258048 63060 28672 11462 0 N RECO/
Necesitamos incrementar los griddisk de data a 116GB
Necesitamos incrementar los griddisk de reco a 58G
Consultamos el tamaño de cada Disco o GRIDDISK de ASM para RECO y DATA en cualquiera de los nodos de Computo o Database Machine del Cluster que estamos trabajando ( Virtual o BareMetal es indiferente).
SQL> select name, total_mb from v$asm_disk_stat where name like ‘%RECO%’;
NAME TOTAL_MB
—————————— ———-
RECO_CD_01_celda03 14336
RECO_CD_00_celda03 14336
RECO_CD_03_celda03 14336
RECO_CD_04_celda03 14336
RECO_CD_05_celda03 14336
RECO_CD_02_celda03 14336
RECO_CD_05_celda02 14336
RECO_CD_02_celda02 14336
RECO_CD_00_celda02 14336
RECO_CD_01_celda02 14336
RECO_CD_04_celda02 14336
RECO_CD_03_celda02 14336
RECO_CD_04_celda01 14336
RECO_CD_00_celda01 14336
RECO_CD_05_celda01 14336
RECO_CD_01_celda01 14336
RECO_CD_03_celda01 14336
RECO_CD_02_celda01 14336
QD_RECO_NODO1 128
QD_RECO_NODO1 128
20 rows selected.
SQL> c.RECO.DATA
1* select name, total_mb from v$asm_disk_stat where name like ‘%DATA%’
SQL> /
NAME TOTAL_MB
—————————— ———-
DATA_CD_02_NODO03 59392
DATA_CD_05_NODO03 59392
DATA_CD_04_NODO03 59392
DATA_CD_00_NODO03 59392
DATA_CD_03_NODO03 59392
DATA_CD_01_NODO03 59392
DATA_CD_04_NODO02 59392
DATA_CD_03_NODO02 59392
DATA_CD_01_NODO02 59392
DATA_CD_00_NODO02 59392
DATA_CD_02_NODO02 59392
DATA_CD_05_NODO02 59392
DATA_CD_03_NODO01 59392
DATA_CD_02_NODO01 59392
DATA_CD_04_NODO01 59392
DATA_CD_05_NODO01 59392
DATA_CD_00_NODO01 59392
DATA_CD_01_NODO01 59392
QD_DATA_NODO2 128
QD_DATA_NODO1 128
20 rows selected.
Para cada griddisk por celda primero los griddisk del diskgroup RECO
En cellcli, por Celda aumentar en Megabytes en Multiplos de 16MB dice la documentación.
Celda3
cellcli
cellcli>
alter griddisk RECO_CD_01_NODO03,RECO_CD_00_NODO03,RECO_CD_03_NODO03,RECO_CD_04_NODO03,RECO_CD_05_NODO03,RECO_CD_02_NODO03 size=59392M;
Celda2
cellcli
cellcli>
alter griddisk RECO_CD_05_NODO02,RECO_CD_02_NODO02,RECO_CD_00_NODO02,RECO_CD_01_NODO02,RECO_CD_04_NODO02,RECO_CD_03_NODO02 size=59392M;
Celda1
cellcli
cellcli>
alter griddisk RECO_CD_04_NODO01,RECO_CD_00_NODO01,RECO_CD_05_NODO01,RECO_CD_01_NODO01,RECO_CD_03_NODO01,RECO_CD_02_NODO01 size=59392M;
Luego DATA
Celda3
cellcli
cellcli>
alter griddisk DATA_CD_01_NODO03,DATA_CD_00_NODO03,DATA_CD_03_NODO03,DATA_CD_04_NODO03,DATA_CD_05_NODO03,DATA_CD_02_NODO03 size=118784M;
Celda2
cellcli
cellcli>
alter griddisk DATA_CD_05_NODO02,DATA_CD_02_NODO02,DATA_CD_00_NODO02,DATA_CD_01_NODO02,DATA_CD_04_NODO02,DATA_CD_03_NODO02 size=118784M;
Celda1
cellcli
cellcli>
alter griddisk DATA_CD_04_NODO01,DATA_CD_00_NODO01,DATA_CD_05_NODO01,DATA_CD_01_NODO01,DATA_CD_03_NODO01,DATA_CD_02_NODO01 size=118784M;
Los outputs, tener cuidado que el comando quede en una sola linea, el cellcli es como un prompt CLI ASMCMD o SQLPLUS.
GridDisk RECO_CD_04_nodo01 successfully altered
GridDisk RECO_CD_00_nodo01 successfully altered
GridDisk RECO_CD_05_nodo01 successfully altered
GridDisk RECO_CD_01_nodo01 successfully altered
GridDisk RECO_CD_03_nodo01 successfully altered
GridDisk RECO_CD_02_nodo01 successfully altered
GridDisk DATA_CD_04_nodo01 successfully altered
GridDisk DATA_CD_00_nodo01 successfully altered
GridDisk DATA_CD_05_nodo01 successfully altered
GridDisk DATA_CD_01_nodo01 successfully altered
GridDisk DATA_CD_03_nodo01 successfully altered
GridDisk DATA_CD_02_nodo01 successfully altered
GridDisk RECO_CD_05_nodo02 successfully altered
GridDisk RECO_CD_02_nodo02 successfully altered
GridDisk RECO_CD_00_nodo02 successfully altered
GridDisk RECO_CD_01_nodo02 successfully altered
GridDisk RECO_CD_04_nodo02 successfully altered
GridDisk RECO_CD_03_nodo02 successfully altered
GridDisk DATA_CD_05_nodo02 successfully altered
GridDisk DATA_CD_02_nodo02 successfully altered
GridDisk DATA_CD_00_nodo02 successfully altered
GridDisk DATA_CD_01_nodo02 successfully altered
GridDisk DATA_CD_04_nodo02 successfully altered
GridDisk DATA_CD_03_nodo02 successfully altered
GridDisk RECO_CD_01_nodo03 successfully altered
GridDisk RECO_CD_00_nodo03 successfully altered
GridDisk RECO_CD_03_nodo03 successfully altered
GridDisk RECO_CD_04_nodo03 successfully altered
GridDisk RECO_CD_05_nodo03 successfully altered
GridDisk RECO_CD_02_nodo03 successfully altered
GridDisk DATA_CD_01_nodo03 successfully altered
GridDisk DATA_CD_00_nodo03 successfully altered
GridDisk DATA_CD_03_nodo03 successfully altered
GridDisk DATA_CD_04_nodo03 successfully altered
GridDisk DATA_CD_05_nodo03 successfully altered
GridDisk DATA_CD_02_nodo03 successfully altered
Los celldisk despues del resize scaleup, vemos que ocupamos .10TB de cada CELLDISK
cellcli -e “list celldisk where name like ‘CD.*’ attributes name, size, freespace”