9:42
2024-02-06 10:11:16
6:47
2024-02-06 10:22:16
5:15
2024-02-06 10:31:49
3:57
2024-02-06 10:38:48
17:59
2024-02-06 10:43:27
1:06
2024-02-06 11:12:41
10:20
2024-02-06 11:15:29
2:42
2024-02-06 11:26:39
11:03
2024-02-06 12:01:53
1:16
2024-02-06 12:14:47
42:32
2024-02-06 12:19:55
10:32
2024-02-07 10:25:03
4:02
2024-02-07 10:39:09
1:54:16
2024-02-07 10:45:07
2:11:58
2024-02-07 20:24:23
11:55
2024-02-08 10:29:34
15:14
2024-02-08 10:43:38
3:39
2024-02-08 11:02:01
1:28:10
2024-02-08 11:14:14
1:31:21
2024-02-08 21:37:16
2:33:55
2024-02-09 09:35:00
15:39
2024-02-09 12:49:52
1:17:31
2024-02-12 09:26:50
36:07
2024-02-12 10:56:05
8:43
2024-02-13 12:48:13
3:05
2024-02-14 10:23:00
Visit the Oracle Database 19c: Administration course recordings page
United Arab Emirates - Oracle Database 19c Security
WEBVTT--> lo lograron. Y con eso, bueno, ahí se tardará un tiempo, más o menos. Ahí creo que más --> bien ya depende de la conexión de internet de cada uno. La verdad es que sí se tarda --> ahí unos 10, 15 minutos. Entonces, vamos a dejarnos nada más, el objetivo era crear --> la base. Si en algún momento ven que ya se demoró más de 10 minutos, no debería --> tardar tanto, le dan un refresh al navegador, ¿no? O sea, refrescan aquí la instancia --> del navegador. Con eso, es que luego como que se queda ahí pasmado, me di cuenta de --> eso. Y ya con eso debería darles la respuesta. Vale, entonces yo también la voy a dejar --> ahí creando, nada más por tener más bases, ¿va? Voy a limpiar aquí pantalla y la voy --> a dejar ahí creando. Y pues bueno, es eso. Ya que ahorita se cree, ya podemos conectarnos --> con nuestro usuario SID y pues ver ahí la conexión, ¿va? Entonces, en lo que --> se crea eso, pues vamos a continuar con la presentación. Con esto de aquí ya damos --> por cerrado ese tema de la parte de los CDBs y de los PDBs. Y como les comentaba, --> pues es importante porque bueno, la parte de lo que comienza a trabajar con instancias --> vamos a estar ocupando mucho ese concepto, ¿no? De lo que vimos. Entonces, en lo --> que ahí se crea, digamos, el problema, perdón, en lo que ahí se crea el proceso, es lo --> que quería decir el proceso. Vamos a iniciar con esta parte, ¿va? Realmente estos son --> temas muy sencillos de visualización de archivos, más que nada. Y pues bueno, --> hay que revisarlos, ¿va? Entonces, adelante. ¿Quién me habló? Aaron. --> A ver, déjame. Correcto. Ah, ok. No. Ok, para eso nos vamos igual a la --> página, a la presentación 42. Si ven ahí mi pantalla, les decía que este --> comando, ah bueno, de hecho aquí la presentación te va guiando y si tú --> llegas a la parte, a la presentación, a la diapositiva número 49, justo la pregunta --> que haces, ahí está literal así, resuelve. Te dice, ¿cómo puedo crear más de un PDB --> dentro del CDB? Y aquí te dice que este comando está limitado. O sea, no es posible --> que yo le cree aquí un 2 y le agregue otro flag de nombre de PDB. Eso no es --> posible. Lo que hay que hacer es crear uno, y ya estando ahí adentro de la sesión, --> ¿sí? Como SIS, con el comando SIS DBA, ya puedo yo crear esto. De esta forma, --> yo puedo crear una nueva base de datos pluggable, en otro, con otro nombre de PDB, --> con otro usuario identificado por el password, y diciéndole este parámetro, ¿va? Este sería --> el parámetro para añadirle nuevos PDBs a un CDB ya existente. --> ¿Sale? Perfecto. Bien, y además de crear el PDB, pues también --> crea el usuario y demás. Ok, sale, vale. Entonces, bueno, es esa parte, ¿va? --> ¿Alguna otra duda o comentario? --> Va, perfecto. Bien, entonces, entonces ya nos vamos a la --> diapositiva 52 en lo que ahí el proceso termina, este, ok. Y bueno, sigue esta --> parte, ¿no? Trabajando con instancias de bases de datos. Vamos a seguir la --> dinámica un poquito en la parte teórica, este, para no aburrir los --> vamos a ir este alternando, ¿no? Entre todos. Entonces, dice, trabajando con --> instancias de bases de datos. Iniciando la base, la instancia de la base de datos de --> Oracle. Para iniciar una instancia de Oracle database en Ubuntu, --> generalmente utilizamos el comando sql asterisco plus como usuario sysdba. --> Este proceso carga la instancia de Oracle en memoria y prepara la base de --> datos para que los usuarios puedan conectarse y realizar operaciones. --> Ayer todavía alcanzamos a decir que la instancia realmente es, tiene una --> naturaleza efímera, porque realmente no es algo que se instale dentro de la --> instalación, digamos, de algún sistema gestor de bases de datos. Es decir, es --> un, es un intermediario, es un software que va a estar disponible solo cuando --> la base de datos está en tiempo de ejecución, ¿no? Entonces, este, a esto se --> refiere, ¿no? Que sea efímera. Entonces, aquí en, siguiendo este --> ejemplo, que es básicamente como lo hemos estado, este, trabajando, si, yo --> me conecto a mi instancia de Docker, me conecto como el usuario sysdba, y yo al --> ejecutar este comando startup, lo que Oracle estaría haciendo es intentar --> iniciar la instancia en el archivo de parámetros de inicio, perdón, con este --> archivo de parámetros. Este archivo, ahorita vamos a ver este, --> con más detalle a que se refieren estos dos, sí, pero básicamente estos dos --> archivos son archivos de parámetros que tienen nuestra instancia de base de --> datos y que los va a tomar como, digamos, variables para trabajar en su --> configuración, ¿no? Y se ejecutan, como dice aquí la presentación, al inicio, --> cuando va cargando. Si no se especifica un archivo de parámetros, Oracle va a --> buscar uno que es por defecto, entonces yo no estoy especificando ningún archivo, --> entonces lo que va a pasar es que va a tomar el archivo que está este, por --> defecto, ¿no? Por defecto. --> Luego, ¿cómo puedo ver esos archivos? Bueno, en un entorno de base de datos, --> el sp file, o server parameter file, y el p file, o parameter file, son --> archivos cruciales que almacenan parámetros de configuración de la --> instancia. ¿Dónde los encontramos? En este entorno que está dockerizado, --> las ubicaciones pueden variar ligeramente según se haya configurado --> una imagen de docker y de Oracle. En embargo, comúnmente, los podemos --> encontrar acá. Entonces, si yo me fuera a esta ruta o a esta de acá, --> te dice en el directorio específico de la instancia, bajo, esta es la instancia --> que nosotros tenemos instalada, pues ya, ahí vamos a poder encontrar los --> archivos sp file y p file, ¿va? En el mismo directorio se van a --> encontrar, ahí vas a encontrar los dos, y se van a llamar, van a tener --> unos nombres de este tipo, ¿va? --> Entonces, hay otra forma en la que yo puedo ver el contenido de estos --> archivos directamente dentro de la instancia de la base de datos, que es --> este, ¿no? show parameter sp file. Esto me va a dar la ruta que está --> siendo ocupada por ese archivo de configuración de parámetros. --> Entonces, vamos a hacer esa pequeña demostración. Yo me voy a conectar con --> mi usuario, ah, bueno, eso ya los comandos tengo acá. --> Aquí voy a dejar corriendo esto, voy a actualizar, a ver si es que ya acabó, --> y nada más lo hicimos la práctica, pues, para que vean cómo se ejecuta --> la base de datos y más o menos como cuánto tardaría. Voy a abrir --> una nueva pestaña en la terminal y voy a ver si están mis comandos aquí --> disponibles, que sí están. Creo que no todos, entonces, mejor los --> copio directamente, ¿va? De nuestro acordeoncito. Entonces, aquí está, --> mira, para conectarme a SQL plus, primero me pide conectarme a la --> instancia, ah, perdón, al docker, al contenedor, mejor dicho, ¿sí? --> Y ya dentro me voy a conectar a lo que es SQL plus como Sysdba. --> Aquí abajito, de hecho, en la lista de comandos que yo les dejé, --> encuentran también en un apartado que tenemos aquí hacia abajo. --> Aquí yo como que traté de poner de las cosas que vamos ocupando lo más --> relevante, ¿no? Estos acordiones se los voy a estar pasando, --> digamos, al día. Entonces, por ejemplo, en este nuevo archivo les estoy --> poniendo cómo hacemos lo de sacar la información del sistema operativo de --> la instancia de Docker. Les estoy poniendo cómo ver archivos --> de control, que bueno, estos los vamos a ver después. --> Estamos hablando de lo que es el CDB y el PDB, que es básicamente el --> comando de EBCA para crear estas dos instancias, ¿no? --> Les hablo también o les resumo o les dejo a la mano el Docker Compose, --> que es lo que estamos ocupando para nuestra instancia. --> Y estoy agregando una sección que se llama Connections. --> Básicamente aquí estoy agregando todas las conexiones, que igual ya --> tenemos, pero denme ya más otros minutitos, cinco minutos. --> Las conexiones que hemos estado ocupando para conectarnos a las --> diferentes, vaya, diferentes formas de conectarnos. --> Si se fijan, esto que hice ahorita de conectarme primero la instancia y --> luego agregar este comando para conectarme a mi instancia como --> CDBA, lo puedo hacer, por ejemplo, con este solo comando. --> Entonces, aquí hay, o sea, es nada más como para que ustedes vean que --> hay varias formas y ahí están todas las conexiones y a dónde se --> estaría conectando cada, cada orden. --> Hay conexiones directamente a la instancia de Docker, a la PDB, --> a la que ustedes crearon, la pueden ahí modificar y con eso. --> Ahorita vamos a ver lo que sigue, que es la parte de los --> tenes y eso, eso lo vamos a ver ahorita. --> Pero bueno, o sea, les voy como explicando de cómo se conforma --> el archivo que digamos el de comandos de como una chuleta, --> por así decirlo, va. --> Entonces yo aquí adentro de la instancia de base de datos se me --> olvida que no puedo usar este. --> Ya dentro de SQL plus voy a seguir la la bueno, --> lo que dice aquí sí y yo voy a ver y decíamos que queremos --> ver la ruta de los archivos de configuración. --> Voy a ver qué pasa si yo ejecuto este comando --> directamente ya en mi instancia. --> Voy a tratar de pasarlo por Coucher. --> Hasta arriba voy a ir poniendo como las cosas que se ocupan --> del día a día para pasarme los comandos. --> Entonces ahí se supone que ya me lo pasé. --> Si me voy hasta acá arriba, ejecutamos este comando y ya --> vamos al siguiente pomodoro. --> Entonces lo ejecuto y con eso me va a dar una ruta. --> Esa ruta es la que hice la presentación, --> que ahí es donde se encuentra el archivo de configuración que --> carga nuestra instancia de ahora con justo cuando nosotros la --> instanciamos, no cuando nosotros la vemos. --> Entonces voy a copiarme este parámetro, --> este valor, esta ruta. --> Si lo voy a copiar y obviamente pues la voy a intentar formatear --> hasta acá porque si la pego así no tiene forma de todo menos --> de ruta. --> Entonces me voy a ir hasta acá para quitarle este espacio --> y yo le voy a agregar el comando CD. --> Con eso me voy a poder acceder a la ruta, --> pero más que un CD, este ya es un archivo. --> Entonces lo que voy a hacer es entrar al directorio --> porque si se acuerdan la presentación dice que aquí --> adentro están los dos, el SP File y el PE File. --> Entonces lo que voy a hacer es voy a entrar en la ruta y con --> este otro podría ver directamente el contenido del --> archivo con este comando CUT. --> Entonces lo que voy a hacer primero es acceder a lo que es --> la ruta. --> Para eso, obviamente, pues me tengo que salir porque eso --> me dice que está dentro de la instancia, ¿no? --> No, no, vaya, no, no dentro de la base de datos. --> La base de datos no tiene rutas. --> Aquí adentro yo ya me metí. --> De hecho, si doy el comando PWD, ya me dice que estoy en --> SEPAD. --> Y si yo ejecuto un listar directorios, --> aquí voy a encontrarme con lo que me prometieron, ¿no? --> El archivo SP File, blablabla, ¿no? --> Que es este. --> Este archivo, que es el SP File, --> básicamente dice las conexiones o, bueno, --> todo lo que contiene Oracle y que utiliza cuando carga. --> Entonces, yo le voy a dar aquí un CUT. --> Bueno, voy a ejecutar el otro archivo, el otro comando, ¿sí? --> Igual, si ustedes gustan, los pueden ir ejecutando también. --> Y yo, al hacer eso, voy a encontrarme con este comando. --> ¿Por qué voy a ejecutar un CUT? --> Porque básicamente, aquí dentro de la instancia, --> lo que decíamos es que está bien limitado y no tengo --> comandos tan básicos como el sudo, como el nano. --> Entonces, tal vez lo pueda instalar. --> Se los dejo instalar, pero ya no lo tendrían ustedes. --> Es que esos luego tardan un poco más. --> No hay problema, o sea, no nos limitan, --> porque yo puedo usar comandos nativos como, por ejemplo, --> este de acá. --> Y yo puedo ver el contenido de ese archivo. --> Y si se fijan, ese contenido es lo que viene acá. --> Esto de aquí son parámetros, por así decirlo, --> de configuración que carga nuestra base de datos. --> Ahorita vamos a explicar qué hace cada uno. --> Bueno, no vamos a explicarlos uno por uno. --> O sea, eso viene en la presentación, --> pero vamos a ver, aunque sea algunos parámetros. --> Esto es lo que estaría cargando. --> Ahora, ¿qué pasa con el otro archivo? --> El archivo P5. --> Vamos a ver qué nos dice o qué nos dice la base de datos en --> donde se encuentra. --> Entonces, para eso, me vuelvo a conectar. --> Creo que los debí jalar los dos de una vez para no --> comentarme dos veces. --> Y voy a agregar el mismo parámetro que puse acá, --> solo que esta vez, en vez de un SP File, --> me interesa conocer el P File. --> Ahorita hay una parte en donde se define de mejor forma para --> que es cada uno. --> Básicamente, este archivo es el archivo, --> cómo decirlo, no editable, de solo lectura. --> Y este otro archivo es el archivo que sí se puede --> editar. --> Es la diferencia de cada uno. --> Entonces, voy a ejecutar el otro comando, el P File, --> muy diferente al SP File. --> Ah, pero bueno, mira, aquí de hecho te dice que es el --> mismo archivo. --> En esta versión de Oracle, entonces eso no lo había --> visto, son, te mapea el mismo archivo, vaya. --> Te mapea el mismo string, la misma ruta, ¿sale? --> Entonces, este es el archivo que estamos ocupando, --> como P File también, Ocupar el SP File. --> Y básicamente, por eso es que no lo encontramos como tal, --> como un P File. --> Pero bueno, básicamente el archivo es esto, ¿no? --> Este es su contenido y es un archivo de configuración. --> Si nosotros lo vemos ya rápidamente acá en la, --> va a ser en la presentación. --> Bueno, muestra básicamente lo que estamos haciendo. --> Aquí está la interpretación, mira. --> Es un archivo binario, no se puede editar y demás, ¿sí? --> Y este, si están conmigo, es la salida de lo que yo ejecuté. --> Ahorita, ya realizando hasta aquí, --> le vamos a parar para entrar un poquito en detalle de lo que --> nos trata de especificar qué parámetros ese archivo, ¿va? --> Entonces, ahorita son las 11.03, vamos a ponerle. --> 11 con 8 minutos nos volvemos a conectar y pasaríamos al --> tercer pomodoro, ¿les parece? --> Entonces, 11 con 8 minutos y nos conectamos de nuevo. --> Como ven. --> Ay, perdón. --> Harold, levantaste la mano y me gustaría más bien que me --> interrumpieran, ¿no? --> Porque como estoy presentando, luego no alcanzo a ver. --> Disculpenme. --> ¿Me decías, Harold? --> Órale, si no, ahorita que regresamos, ¿va? --> Lo chequeo. --> No, gracias a ti. --> Entonces, 11 con 8 nos vemos, compañeros. --> Bueno, bueno, ¿me escuchan? --> Listo. --> Hola, ¿quién habló? --> León. --> Ah, ¿qué onda, León? --> Ibas a comentar algo. --> Ah, mío, hola. --> Listo. --> Bien, entonces. --> Bien, entonces. --> Sale. --> Entonces, voy a volver a compartir pantalla. --> Ahí está. --> Ah, OK. --> Va, eso es de ayer. --> Perfecto. --> Entonces, este. --> Ah, creo que, Harold, si estás por ahí, creo que --> tenías alguna duda, inquietud. --> Me decías que te habías trabado con algo. --> OK. --> Ah, sí, le agarraste. --> Ah, perfecto. --> Va, no, no, no, de nada. --> Sí, es que a veces me tengo que salir porque hay comandos --> que se ejecutan no dentro de la base. --> Y como, por ejemplo, estos de entrar a las rutas y demás. --> Entonces, hay que estar entrando, saliendo. --> Pero tal vez también, perdón. --> Entonces, nos quedamos con una terminal, ¿No? --> Una pestaña extra en donde sea exclusivamente para las --> conexiones a SQL de plus y en la otra donde haya comandos --> así como diferentes, ¿No? --> Dentro de la instancia. --> Pero bueno. --> Entonces, este, nos quedamos en que íbamos a revisar el --> Bueno, más bien revisamos el contenido del archivo SP file, --> que es un archivo que carga la instancia de la base de datos en automático --> y son parámetros que va a estar leyendo para cuando se levanta nuestra instancia. --> Cada vez que se reinicie o que se detenga y la volvamos a querer levantar, --> va a cachar estos parámetros. --> Sí, y bueno, esta es la salida del comando, --> que el comando cat, o c-a-t, perdón, --> que nos va a ayudar a revisar el contenido del archivo. --> Por cierto que, déjenme poner el ponedor porque, bueno, el cronómetro. --> Este sería el tercero, igual de 45 y el siguiente ya es un pequeño descanso de poco más de tiempo. --> Y listo. Ok, entonces, el contenido de ese archivo tiene todo esto, va. --> Aquí en la siguiente diapositiva que es la 56 nos va a explicar algunos de esos parámetros y su propósito. --> Por ejemplo, este que tiene punto de vene, o r l c d v. --> O r c l d v, que es esta parte de acá. --> Nos está diciendo que está especificando el nombre de la base de datos, en este caso este. --> Si se acuerdan, de los ejercicios que hicimos, bueno, del ejercicio que hicimos anteriormente, --> esto viene configurado en nuestro archivo docker-compose. --> Entonces, como que todo tiene ahí disejado el hilo. --> Le vamos viendo ahí este, el hilo a esta parte. --> Esta sección que dice control files, sí, donde está esta esta parte, --> dice que es la ubicación de los archivos de control de la base de datos. --> Estos archivos son críticos ya que contienen metadata necesaria para arrancar la base de datos. --> Entonces ustedes podrían hacer a manera de tal vez prueba de curiosidad, no sé, --> meterse hasta donde está esta ruta. --> Y como es un archivo, lo pueden abrir su contenido con el comando c a t. --> Entonces, ahí adentro, me parece que estos archivos también como son, se van a ver de forma binaria. --> Y más por el comando cat. --> No es un comando tan específico como para ver este tipo de archivos. --> Pero bueno, lo que podemos ilustrar es que esos archivos existen. --> Ahí se encuentran y tienen una función que básicamente es esto. --> Luego tenemos el tamaño de bloque de la base de datos en bytes. --> Que son los 8192 bytes que nosotros le metimos también en el archivo de configuración de Docker Compose para que inicie. --> Este es el tamaño de los bloques de datos utilizados por Oracle. --> Tenemos el tamaño del sistema global área. --> Aquí se especifica de cuánto es. --> Aquí nos da un recordatorio de lo que es el SGA, --> que es una estructura de memoria compartida que contiene datos y control de información --> para la instancia de Oracle. --> Y bueno, aquí te va dando cierta información. --> Aquí, por ejemplo, nos da la versión literal de Oracle. --> Y pues bueno. --> Esto es lo que podemos deducir o especificar o encontrar aquí dentro del contenido de este archivo. --> Eso es lo que nos estaría diciendo. --> Entonces. --> Si nosotros quisiéramos hacerle alguna modificación a alguno de estos parámetros, --> podríamos utilizar este comando. --> Este comando directo nos ayuda a modificar estos parámetros que nosotros tenemos acá. --> Y básicamente es este comando. --> Alter System Set. --> Metemos el nombre del parámetro, su valor y su alcance es SP5. --> Después de cambiar esos parámetros con Alter System, --> vamos a reiniciar la base de datos para que esos cambios tomen efecto. --> Dale. --> Entonces, aquí lo que nos da la recomendación es que siempre hagamos esto. --> Siempre que queramos configurar esto, --> chequemos el archivo, veamos su contenido. --> Y lo guardemos en algún lugar como para poder regresarnos a la versión anterior en caso de que algo no esté funcionando bien o demás. --> Algo que hayamos modificado. --> Y que veamos que está dando algún problema. --> Listo. --> Después de esto. --> Continuamos con la parte de apagado de la instancia. --> Bueno, antes de eso. --> Creo que no ejecutamos nada más se dijo. --> Este comando. --> Este comando. --> Startup no está tan complicado de aprendérselo. --> Creo que lo podemos ejecutar. --> Si yo ejecuto aquí Startup. --> Aquí, de hecho, ya nos dice el mensaje y nos dice no puedo iniciarlo porque ya existe, ya está corriendo. --> Entonces, eso quiere decir que yo la instancia. --> Como ya la tengo corriendo, pues no está, no va a tener algún efecto. --> Para eso, para que yo pueda levantarla y ver qué sucede. --> Lo que primero tendría que hacer. --> De hecho, ahí el mensaje nos lo dice. --> Apagala primero. --> Entonces, eso. --> Lo podemos hacer con este comando. --> El shut down inmediate. --> Entonces puedo ejecutar. --> Shut down. --> Inmediate. --> Creo que aquí hay algo mal. --> Es inmediate. --> Ahora es lo que no me gusta de esto. --> Ahora de nuevo. --> Es shut down. --> Creo que lo más fácil es copiar, pegar. --> Inmediate. --> Haciendo eso es que aquí me equivoqué por la N. --> Ya estaría yo aquí apagando lo que es la instancia. --> Y vamos a estar ahí viendo qué es lo que hace. --> Aquí ya te está diciendo que se está cerrando. --> Vamos a poner atención en esta salida. --> Porque Oracle define tipos de apagado. --> Entonces, esto de hecho, el que está haciendo el inmediate. --> Está cerrando la base de datos, la está desmontando. --> Y aquí ya te dice que ya se apago finalmente. --> Ahorita la vamos a volver a iniciar con el comando start up. --> Pero antes de eso vamos a leer un poquito. --> De los diferentes modos de apagado. --> Y sobre todo compararlos. --> Entonces, como les decía, ofrece varios modos. --> Y tiene cada uno un uso propio y algún comportamiento en específico. --> Eso lo dice acá. --> Por ejemplo, un shutdown normal. --> Hace que Oracle cierre la base de datos de manera ordenada. --> No permite nuevas conexiones. --> Pero espera que todas las actuales se desconecten. --> El transaccional es un similar al apagado normal. --> Pero Oracle espera que las transacciones actuales se completen. --> Y no permite nuevas. --> Entonces, ¿qué significa esto? --> Que si yo estoy teniendo alguna transacción sobre la base. --> Aplicar ese flag de transaccional o parámetro o opción al apagado. --> Va a hacer que las que estén vivas se completen. --> Voy a esperarlas, ¿sí? --> No voy a aceptar nuevas. --> Y las que tenía activas en curso. --> Voy a esperar a que se acaben. --> El inmediate, que es el que yo acabo de ejecutar. --> Lo que va a hacer es que la va a apagar al chasquido. --> Inmediato. --> Todo lo que está en curso lo voy a quitar. --> Lo voy a deshacer. --> Y voy a desconectar a los usuarios. --> Voy a cerrar la base de datos. --> Y es más rápido que el modo normal y el transaccionar. --> Ahorita ustedes pueden ejecutar. --> Va a ser un pequeño ejercicio. --> Cada uno va a ejecutar un apagado de forma diferente. --> Un normal, un transaccional. --> Yo ya ejecuté el inmediate. --> Y vamos a ir viendo ahí como que las salidas. --> El otro y último es el abort. --> Es el más rápido, pero el menos seguro. --> ¿Qué hace? --> Oracle detiene inmediatamente la instancia y no espera nada. --> Ni desconectar a los usuarios de forma ordenada. --> Simplemente apagué la base, la instancia. --> Y listo. --> Entonces yo aquí ya la apagué. --> Y ahora yo la voy a volver a iniciar. --> Para que no haya problemas de que se nos fue. --> Una vez la voy a agregar. --> La voy a iniciar. --> Y se ve que una vez vemos el parámetro. --> Lo que hace rato no nos dejaba. --> Porque ya estaba corriendo. --> Y ahí podemos ver como al iniciarla. --> Se va cargando lo que es el sistema global a la área. --> Y ahí está todo lo que jala del archivo de parámetros de conexión. --> Que ya habíamos visto. --> Ahí va leyendo eso. --> Y son los bytes. --> Todo lo que teníamos asignado. --> En nuestro archivo. --> Que bueno, de hecho se ve acá. --> En este archivito. --> Está leyendo esto. --> Va. --> Bueno. --> Entonces en lo que eso carga. --> El. --> El start. --> Vamos a. --> Ahí ya se abrió. --> Ya la base de datos está lista. --> Está montada y lista. --> Para recibir transacciones. --> Para que vuelvan a funcionar. --> Como se espera. --> Entonces no sé si haya alguna duda. --> Yo ya me voy a salir incluso. --> Para poder limpiar la pantalla. --> No sé si haya duda con esto de los modos de. --> Apagado. --> Como se enciende. --> Este. --> Con respecto a esto. --> Si no. --> Ayúdenme. --> Alguien que ejecute el comando. --> Apagado. --> Normal. --> Otro. --> Otra persona que me ayude a ejecutar. --> El transaccional. --> Y otro el abort. --> Y otros dos. --> Pues bueno. --> Que repitan. --> A lo mejor el inmediate. --> No sé. --> Cualquiera. --> Elijan uno. --> Entonces. --> Elijamos. --> Cada quien uno. --> Y este. --> Y vemos que. --> Que aparece. --> Va. --> Yo me voy a conectar. --> Aquí a sus instancias. --> Bueno. --> La instancia de. --> Del desktop. --> Y voy a ir viendo a ver que este. --> Que salidas la. --> Y entre todos vemos que. --> Que salidas la. --> Listo. --> Entonces. --> A ver. --> Ya veo que se están conectando. --> Arun. --> Se conectó. --> A la base. --> Y. --> Le dio startup. --> Ese startup. --> No lo puedes ejecutar. --> Porque. --> Hay. --> Incluso el mensaje te dice. --> Que hay que apagarla primero. --> Entonces. --> A ver. --> Si quieres tú Aron. --> Ayúdame a ejecutar. --> En la presentación viene. --> El apagado transaccional. --> Qué te parece si lo ejecutas. --> Bien. --> Entonces. --> Aron se va a ejecutar. --> El transaccional. --> Luego. --> Por ahí veo a Orlando. --> Orlando Florida. --> No es cierto. --> Este. --> Ya te conectaste. --> Estás. --> Intentando ejecutar el startup. --> Pero. --> No te deja. --> Porque está corriendo. --> Hay que apagarlo primero. --> Entonces. --> Vas a ejecutar. --> Si quieres tú ejecuta. --> El comando. --> Porfa. --> Ayúdanos. --> Con el y media. --> Y ya lo pagamos. --> No. --> Transaccional. --> Lo va a hacer Aron. --> A ver tú. --> Ejecutalo con el flag normal. --> Por favor. --> Si estoy. --> Bien. --> Entonces. --> Perfecto. --> Entonces. --> Orlando nos va a ayudar con él. --> Normal. --> Vamos a ver Harald. --> Harald que. --> Que hizo. --> El y media. --> Bueno. --> Hicimos el mismo. --> Ah no. --> Ya lo estés ejecutado con el normal. --> Ok. --> Perfecto. --> Ahí. --> Ahí leyendo lo que dice. --> Pues te dice. --> Quién tarda más que otros. --> Y demás. --> Listo. --> Y ya nada más falta. --> Jesús. --> A Jesús. --> A ver. --> Vamos a ver con Jesús. --> Ok. --> Jesús va a ejecutar el abort. --> Listo. --> Ahí falta el WN. --> Y va a ejecutar el abort. --> Correcto. --> Entonces ahí se está ejecutando. --> Y ya te dijo que ya se apagó. --> Es como el más brusco ese. --> Y el más rápido. --> Si te fijaste. --> Jesús lo ejecutó de volada. --> Y León. --> Está ayudando. --> Con el y media. --> Ok. --> Ya lo está pagando. --> Y ahí pues ya no va a ir. --> Este. --> Desconectado. --> Ya que todos tengan su salida. --> Mira. --> Ya te está diciendo. --> Cierra. --> Lo desmonte. --> Y demás. --> Entonces. --> Ya. --> Después de que lo bajen. --> Lo vuelven a iniciar. --> Con el startup. --> Para. --> No se va a olvidar. --> Este. --> Levantarla. --> Para que puedan. --> Este. --> Continuar con. --> Los ejercicios. --> Pero bien. --> Ahorita ya todos lo ejecutaron. --> De formas. --> Diferentes. --> Y. --> Pues bueno. --> Ahí vemos la. --> La ejecución. --> Perfecto. --> Harold. --> Está haciendo la. --> Shutdown. --> Normal. --> Y bien. --> Entonces. --> Bueno. --> Ese es el concepto. --> De que hay. --> Formas de apagar. --> La instancia. --> Y. --> Ya. --> Podemos ver. --> Identificar. --> En que escenarios. --> Podemos ocupar. --> Este. --> Una u otra. --> Entonces. --> Voy a dar ahí. --> Un. --> Minutito. --> Dos. --> Para que se levanten. --> Sus. --> Instancias. --> Otra vez. --> Con el. --> Startup. --> Y. --> Que no. --> Este. --> Se tarden. --> A ver. --> Quería ver. --> La de Jesús. --> Porque tú la desaste. --> Con el. --> Abort. --> Vamos a. --> Estar. --> A ver. --> Que tanto se. --> Tarda. --> Está. --> Una. --> Y luego la. --> Exacto. --> A. --> Levanta. --> O sea. --> Nada más el. --> Lo que. --> Lo que hace rápido. --> Es el aborto. --> La apagado. --> Lo apaga de volada. --> Y el iniciado. --> Pues es. --> Ese. --> Pues. --> A mí se me hizo. --> Igual. --> Rápido. --> Pero bueno. --> Igual. --> Es porque. --> No tiene mucho. --> Ahí. --> Y bueno. --> Esa salida. --> Que ven cuando. --> Se levanta. --> La. --> Instancia. --> Es la que. --> Trata. --> Jala. --> Perdón. --> Del archivo de este. --> El S.P. --> File. --> No. --> El archivo de configuración. --> Muy bien. --> Jesús. --> Ahí. --> Ya quedó. --> Tu. --> Tu ejercicio. --> Ok. --> Pues creo que ya todos le. --> A. --> Ya por ejemplo. --> León también la levantó. --> Ya también. --> Orlando. --> Harold. --> Está haciendo el apagado. --> Shutdown normal. --> Y si se está tardando. --> Todavía. --> Y. --> Harón. --> Ya también la abrió. --> Ahí ya nada más. --> Este. --> Harold será quien nos. --> Alcance. --> No. --> Eh. --> Porque el tutorial. --> Tarda más. --> Porque bueno. --> Aquí lo dice. --> No. --> Cierra la base de datos de manera ordenada. --> Entonces. --> Se está tardando en ordenar. --> Demás. --> No va a permitir nuevas conexiones. --> Y las que están activas. --> Pues. --> Está esperando a que. --> Este. --> Se desconecta. --> Entonces. --> Ese comando. --> Pues se va a tardar ahí. --> Un poquito. --> Va. --> Quién me habló. --> Perdón. --> Déjame. --> Acá. --> Harón. --> Échale. --> Dime. --> Ajá. --> Ajá. --> Option. --> Sí. --> Es que. --> Ahí te pasó como a mí. --> Le pusiste. --> Inmediate. --> Y es. --> Sin la N. --> Es con doble M. --> Inmediate. --> Ajá. --> Ajá. --> Sí. --> Va. --> Perfecto. --> Ah. --> Bien. --> Entonces. --> Si. --> Si quieres. --> Después de que. --> Acabe. --> Tu comando. --> Es que tú. --> Tú. --> Atento. --> Cuál más. --> Este. --> El más tardado. --> Lo ejecutamos con el inmediate. --> Y ahí te fijas. --> Bien. --> Todos. --> Sale. --> Entonces. --> Una vez que la instancia. --> Levante. --> Con el. --> Startup. --> Vamos a poder. --> Abrir y cerrar. --> PDB. --> No. --> Que ya tenemos más claro el concepto de lo que es un PDB. --> Que básicamente es una base de datos. --> Contenida. --> Dentro de un CDB. --> No. --> Dentro de un container database. --> Ok. --> Y. --> Este concepto. --> Cuando hablamos de PDB. --> CDB. --> Estamos aplicando el multi. --> No. --> De ahora. --> Ok. --> Entonces. --> Aquí nos dice. --> Que yo puedo abrir. --> Y apagar. --> Eh. --> Cada una de las bases. --> De forma. --> Eh. --> Eh. --> Eh. --> Como decirlo. --> Puedo abrirlas y cerrarlas. --> No. --> Para abrirlas. --> No es más que conectarme. --> Con este comando. --> Pues. --> Literal es meterme a esta conexión. --> Si. --> Eh. --> Yo al agregar esto. --> Pues ya la puedo abrir. --> Eh. --> O también. --> No sé si se acuerdan. --> Eh. --> El comando alter session. --> No. --> El alter session. --> Permite hacerlo. --> De hecho. --> Eso lo tenemos en los comandos. --> Eh. --> Que voy a. --> A volver a abrir. --> En. --> En los primeros. --> Bueno. --> Aquí en la parte. --> Más bien en los de hoy. --> Los de connections. --> En la parte de. --> De hoy. --> Del día de hoy. --> Tenemos. --> Varias formas de conectarnos. --> No. --> Que es básicamente lo que viene ahí. --> Entonces. --> Eh. --> Aquí nosotros podemos meternos. --> Por ejemplo. --> A un. --> A una instancia. --> Con sysdba. --> Y. --> Después de eso. --> Puedo conectarme. --> Por ejemplo. --> Eh. --> Creo que ahorita tiene más relevancia meternos. --> A este. --> Eh. --> O rlcdb. --> El pdb1. --> Que. --> Es donde yo puedo ver. --> Mi tabla de. --> Eh. --> Mi. --> Mi instancia vaya. --> De. --> Que instale. --> No. --> Vamos a hacer ese ejemplo. --> Si yo ejecuto. --> Como sysdba. --> Va. --> Y me conecto. --> A la. --> Instancia. --> Y ya me conecte. --> Aquí adentro. --> Yo puedo. --> Decirle. --> Eh. --> El alter session. --> Si yo ejecuto este alter session. --> Antes de eso. --> Voy a ejecutar este otro comando. --> Todos estos. --> Entonces. --> Están ahí en el archivo. --> Los. --> Los pueden. --> Nada más. --> Delos identifican. --> Donde dice. --> Y ahí vienen varias conexiones. --> Formas de conectarse. --> Si yo ejecuto. --> Por ejemplo esto. --> Aquí me dice. --> Que no hay. --> Al uso del tipo. --> Usar name. --> Ok. --> Entonces. --> ¿Qué pasa. --> Cuando yo hago el alter session. --> Te. --> Dejame. --> A ver. --> Tiene aquí la conexión. --> Porque creo que no me conecte en la instancia correcta. --> ahí ya me dice sección alterada, si no la tuviera no me dejaría ni siquiera entrar, --> y si yo pusiera, a ver déjame ver si puedo ejecutar este otro comando, entro de esta --> sección que se altera, si se fijan cuando yo entré, de hecho esto lo vamos a volver --> a hacer para que se vea con mayor claridad, miren, si yo me conecto a la instancia --> de la base de datos como sysdba, de hecho me voy a conectar, de esta forma, cualquiera --> de las dos equivalentes son sysdba, me conecto y ahí estoy adentro de la base de datos, --> con ese comando yo voy a buscar un usuario que se llama hr, ahorita voy a hacer, aquí --> yo le puse un word, y no me da nada, que pasa si yo le quitar a ese word, si yo le --> quito ese word, ahí yo estaba buscando muy en específico el usuario hr que se debió --> haber instalado con mi esquema, si yo lo quito, aquí me dice todos los usuarios --> y me dicen quién está, mira, está este y está bloqueado, está este, está bloqueado, --> me dice varios usuarios, pero no encuentra mi usuario hr, que es el que a mí me interesa, --> por qué no lo encuentra, aquí es donde se ve claramente el concepto del pdb, --> en este caso yo estoy dentro de una cdb y lo que yo necesito es entrar a su base de --> datos interna, para eso yo voy a hacer este intersession, entonces al meter este --> como yo ya había emitido gracias al contenedor de docker la pdb interna y yo lo ejecuto, --> ahí ya me cambió la sesión, ya no estoy dentro de acá, ahora qué va a pasar si --> yo le pregunto y le digo ahora sí vuelve a decirme si existe el usuario hr, si se fijan en la --> misma conexión al principio no me salió sino que hasta que yo me cambie el contenedor a la --> pdb ahora sí me sale el usuario y me dice cómo está conectado, mismo caso que qué va a pasar --> si yo ejecuto y le pregunto por los usuarios, no exclusivamente el de hr, o sea quitamos ese --> word y aquí me dice igual todos los usuarios que tiene, nada más es cuestión de manipular --> con el scrn y bueno ahí voy a tener todos los usuarios que están listados, una vez que yo --> tengo esto, ahorita vamos a entrar en otros comandos un poquito más útiles como por ejemplo --> esto de acá, de los comandos que los pdb que tienen, de hecho lo vamos a hacer de una vez, --> ya que estamos aquí adentro, sí, ah bueno nada más para terminar yo hice mi username, --> mi account de mi tabla users y yo ahí adentro ya este, ya puedo ver por ejemplo mi base de --> datos, lo que yo puedo ejecutar mis tablas, este ok, aquí no existe porque tengo que --> conectarme con mi usuario, entonces yo me voy a salir y me voy a salir de la instancia ya --> conectándome con el usuario hr que pude entrar, y si yo me conecto y ahora sí quisiera yo --> ejecutar por ejemplo la consulta de la tabla de empleados que son los que vienen en el --> esquema, ya me aparece y ya está la data, obviamente como me cambié de pestaña por --> eso ya no me está respetando esto, este pero bueno, no es mayor tema, lo puedo ejecutar en --> donde en donde configure los parámetros y pues listo, ahí funcionaría, sale entonces --> bueno, ah bueno esto es con lo que la base de datos ya terminó de nuestro comando --> anterior y listo, ahí ya estaría la mismo concepto, no se debe si no se debe, entonces ahora un --> comando más que me gustaría mostrar es el que cuando yo me conecto como sysdba, de hecho me --> voy a volver a salir, si me voy a volver a conectar como el usuario sysdba a la instancia --> muy en particular que se llama ahora db1, bueno este password con el usuario sys y --> lo conecto, si yo voy a poder ejecutar un query dentro de esta tabla que se llama --> cdb pdbs, si yo la ejecuto, me lo pego, me va a decir cuáles son todos los pdbs que yo tengo --> internos, va o sea este cdb tiene aquí un pdb por ejemplo que se llama de esta forma --> y está normal y tiene otro pdb que se llama así, este pdb es el que yo me conecté hace ratito es --> decir esta instancia de acá o bien es el pdb al que yo le puedo hacer el alter session --> seteando el contenedor conforme este pdb, de ahí viene, es una forma como de también --> encontrarlo, los pdbs que están instalados en ese cdb, eso es lo que me está ayudando --> este query, dame su nombre y su estatus, va entonces este bueno todo eso ya se los --> puse ahí como un este a modo de a modo de chuleta, se les conoce así, esas hojas comandos --> para que los puedan consultar, va y pues bueno esa es la parte de cómo estamos ocupando y --> cerrando pdbs que básicamente es con las sesiones y este pues bueno usando ahí los usuarios este --> adecuados, luego tenemos el tema de cómo se configuran, que básicamente lo de la configuración --> es lo que ya habíamos visto, podemos configurarnos por medio del comando que --> creamos de hecho acá, una es con el compose, docker compose que ya trabajamos, otra es --> generando aquí directamente el pdb que de hecho por aquí lo encontramos, ahí están los cdbs, --> ah bueno en este caso mi pdb es este, ahí lo podemos setear y otra forma que es la que --> también ya habíamos hablado es este alterar la base de datos que ya existe y le puedo agregar --> un pdb nuevo, en este caso yo a este contenedor a este pdb le voy a meter una configuración de --> parámetros como los que habíamos platicado anteriormente que son estos de acá, parámetros --> como de este tipo, se los estoy agregando a esa configuración en específico y bueno en este --> caso estoy metiendo un curso opencursors y el scope en ambos significa que se van al --> archivo este de acá, este se me va el nombre, al archivo spfile y al pfile con esta configuración --> del boat, entonces este eso es lo que estaría agregando aquí con más detalle también se --> explica que es lo que hace cada uno, que se refiere al tema de los cursores abiertos, --> esto es nada más por explicar un parámetro x, realmente puede ser cualquier otro de los que --> de los que tenemos acá, pero bueno por poner un ejemplo se habla de cómo se puede meterle --> más memoria para los cursores, en algún momento yo me imagino los que hacemos también desarrollo, --> trabajamos con el tema de cursores, entonces aquí podemos hacer esa configuración, los opencursors, --> este los puedo añadir más memoria, le puedo meter este más potencia para que cuando yo --> ejecute cursores dentro de mi base de datos pues sea más óptima, es como un ejemplo de --> cómo podríamos meterle a cero uso mejor dicho de un archivo de configuración y ahí no nos --> quedamos que reiniciar la instancia con los comandos que ya vimos y volverla a levantar, --> lo que les decía del scope cuando está en boat es básicamente tanto en el spfile como en --> spfile, y listo, entonces bueno aquí nos da un comando, un ejemplo ya también he comentado --> en donde bueno eso es lo que hemos estado haciendo, nos conectamos a la base, hacemos --> el alter session y modificamos, es lo que explicamos acá, modificamos el parámetro y listo. --> Este otro concepto dice configurar servicios de red para una pdb, dice configuración, --> ah bueno aquí ya vamos a hablar de lo que es el Oracle List, entonces ya vamos a entrar --> ahorita en materia de lo que son los dos archivos importantes para Oracle que es el --> ListTener y el Teners and Names, otros archivos pero ahorita nos vamos a centrar en esta parte, --> entonces para eso es, nos vamos a cambiar al siguiente tema, --> y pues bueno la administración de instancias de base de datos, vamos a leer como en las --> prácticas anteriores un poquito el tema de la teoría, entonces bueno si no hay alguna --> otra pregunta antes de continuar, no sé si pudiera Orlando tal vez echarnos la mano con --> la lectura, si es que no hay preguntas, entonces si no hay alguna duda Orlando tú crees que --> nos puedas apoyar si estás por ahí, si aquí andamos, te escuchamos, si quieres dejo aquí --> la presentación o no sé si la tengas en la mano, ah perfecto, entonces diapositivas 62 --> y te escuchamos, correcto, muchas gracias, lo dice en 63 o ejemplo de uso de la vista --> de parámetro, para consultar parámetros de inicialización actuales se puede usar la vista --> dinámica de rendimiento, va es esta, entonces yo puedo ejecutar este parámetro donde devuelve --> los valores actuales para los objetivos cga y pga que son indicativos del tamaño de la cga y --> la pga y luego podemos hacer la modificación de esos valores en una sesión activa utilizando --> el comando ante el sistema, sin embargo estos cambios son temporales y sólo afectan a la --> instancia hasta el próximo reinicio, para un cambio permanente podemos modificar la --> variable de entorno en el archivo docker compose yaml o usar el archivo del que ya --> hemos hablado el sp5, que de hecho en el ejemplo anterior vimos también como se modifica --> directamente un valor de acá, que de hecho es este, bueno aquí es consulta y en el otro --> vimos la el seteo, y aquí está un ejemplo en el que podemos trabajar, aquí básicamente --> ejecutamos primero la conexión como siempre, nos conectamos a sql plus directamente todo en --> un solo comando como sysdba, y luego podemos antes de modificar esto como nos decía la --> recomendación anterior, podemos hacer la consulta de esto para ver qué valores tienen y poder --> regresarlos, acá conforme estaba, si yo le digo que con estos comandos los voy a ejecutar de --> forma temporal, si y los valores exactos que podamos agregar van a depender de la memoria --> disponible y necesidades del sistema, podemos entonces volver a ejecutar el comando y checar --> el cambio, que esto se modificó, posteriormente aquí nos dan un ejemplo de cómo se ve la --> mejora de rendimiento de lo que hemos agregado, como el sga y el pga estarían ayudando, --> si le incrementamos o si le bajamos los valores, para demostrar la mejora podríamos ejecutar --> una consulta en el esquema antes y después de los cambios, midiendo el tiempo de ejecución, --> entonces aquí nos da la idea de que podemos hacer este timing y podemos ejecutar la --> consulta, podemos ver antes de modificar haciendo el alter y podemos ejecutar nuevamente, --> vamos a ejecutar entonces este escenario, bueno esto lo voy a poner tal cual, lo voy a copiar --> al coacher, igual como para tener ahí los comandos, ahí me mando problemas porque dice --> que se expiró la sesión, listo entonces aquí voy a salir de esto para dejar la instancia --> como estaba y me voy a meter al coacher, entonces siguiendo el ejemplo de los comandos --> que me da la diapositiva, yo puedo ejecutar desde mi huésped, mi máquina host mejor dicho, --> mi comando y con eso me conecto directamente a docker e incluso a ese coli plus, ya directamente --> como si es de VR, esos comandos los tenemos igual en la sección de conexiones, --> es un tipo de conexión, luego antes de eso me decía que yo podría verificar primero --> los valores actuales que tiene mi archivo, que creo que eran por ahí de 8.5, 8.5 gramos, --> entonces si más o menos 8.4 gramos, entonces yo puedo ejecutar este valor va y si se fijan aquí --> me está diciendo cuál es el valor actual de cada uno, los tengo a la mano para que yo --> pueda hacer la reversa, es decir dejarlo como estaba, entonces si yo ejecuto estos --> valores, entonces si me doy cuenta, porque pues no termina y le está cambiando el target a 1024 --> megas, que bueno esto creo que lo tendremos que convertir a megas que son 8, --> 1024 megas son gigas, tendremos que hacer un cálculo a 8 gigas, ahí se está ejecutando, --> nada más el escopo es memoria, ya se alteró, aquí de hecho yo ya podría ejecutar nuevamente --> la vista, que no me deja re-usar comandos, nada más voy a modificar ese parámetro, --> y si yo pego esto, si se fijan ya cambio, el valor ya no es de 8 gigas, sino que ya es de --> de 1 giga, 1024 megabytes son un gigabyte, entonces voy a hacer aquí el cálculo de 1024 por 8, --> lo hago aquí con el sistema operativo, 1024 por 8 para volverlo a regresar, --> 8192, entonces lo voy a volver a regresar a 8192, para eso acá le pongo en vez de 1024, --> 8192 megas, vuelvo a ejecutar el comando, --> ahí se va a tardar porque va a volver a reiniciar todo esto, sale, ahí ya me dijo alterado, --> y si yo vuelvo a ejecutar la vista para verificar el cambio, que ya me lo haya regresado, --> vamos a ver si más o menos son los bytes que aquí nos dan, vamos a ver, --> entonces para eso le vuelvo a dar pegar, y si te fijas son estos, 858, 99, vamos a ver si no nos falló el cálculo, --> 858, 99, si, si eran 8 gigas, va, entonces con eso ya lo alteré, lo cambié, yo regresé, sale, --> bueno aquí nos da una forma de poder, bueno, podíamos haber probado cómo se comportaba, --> pero obviamente no iba a ser tan, como decirlo, drástico el cambio, porque realmente esta consulta a la base de datos está muy liviana, --> son consultas muy pequeñas, bueno aquí de entrada me tengo que conectar, como mi usuario, --> sí, aquí esto lo tendría que haber hecho en la instancia de human resources, el comando para conectarme a esa instancia, --> ah bueno, lo identifico más rápido acá, creo que incluso lo teníamos, es este, --> bueno, aquí dentro, si yo lo ejecuto, sale, aquí adentro, ahora tengo que conectarme primero a la instancia, y luego ya con el usuario, --> ahí está, entonces aquí es donde yo podría haber ejecutado esos queries, y checarlo, --> vamos a ver si aquí me da por este, no sé si este usuario tenga permiso de ver o de alterar incluso estos valores, --> eso podría ser un buen ejercicio, si ustedes también lo quieren ir haciendo, sí, mira, no me va a dejar porque esto solamente lo deja ver desde admin, --> no, entonces este, bueno, este ejemplo está un poquito, bisparejo, porque no podríamos comprobar esto, --> pero bueno, en una instancia en donde me pueda conectar a la misma tabla, si ejecutar este comando, realmente son 18 filas, --> entonces, aunque yo le hubiera seteado el parámetro de una buena forma, realmente no se iba a ver mucho cambio, --> porque es muy rápido, si nosotros nos metiéramos tal vez en una base de datos ya con mucha más información y a lo mejor más cruces, --> o a lo mejor más subqueries más grandes, entonces esto sí que se ve beneficiado, en vez de meterle ocho gigas, --> si yo lo bajo a hasta incluso 512 medas, pues se va a ver afectado el rendimiento, si yo lo agrego, pues ahí se va a mejorar, --> va, perdón, estaba tomando agua, y listo, entonces, pues bueno, eso es lo que podríamos estar este checando, --> vimos ya cómo se modifica el parámetro, pero ahora a través de la consulta de lo que son las vistas, --> incluso aquí nos dice, por ejemplo, para PGA bajarlo a 512, pero bueno, la idea ahora, no sé si ustedes ya corrieron, --> este otro comando, el de PGA 512, sería buena idea, entonces si quieren, pueden ejecutarlo, --> recuerden que se tienen que conectar como Sysdba, o alguien ya lo ejecutó, le mandó algún error, --> no sé, a ver, si quieren, monitoreo, y creo que, ahí lo podemos ir viendo, --> a mirar por ejemplo, ya lo voy a ejecutar, Alter System, va, pero todos lo están haciendo, muy bien, --> si nada más es como para que tengamos noción de cómo conectarnos a esa vista, cómo podemos añadirle --> parámetros, que va a estar cachando nuestra colección, o nuestra distancia, --> entonces ahí pueden jugar con eso, y pues ya se deja a su práctica, digamos, tal vez fuera de, --> que además de conectar la configuración, perdón, cambiarle el parámetro, puedan hacer un ejercicio --> un poco más real, incluso en sus propios cambios, y ver cómo esos parámetros les ayudan, --> cambiando y hacia el más, el menos, memoria, para ver cómo se tardan las consultas y demás, --> va, entonces ahorita sonó la alarma, terminamos el tercer pomodoro, este que viene es de 15 --> minutos, pero nada más déjenme ver si no hay algo que podemos, este, alcanzar a ver, --> creo que para cerrarlo, ya pasará el pomodoro, este, va a ser esto, que es el SGA y el PGA, --> es un pequeño resumen de lo que es el Sistema Global Área, y lo que es el Program Global Área, --> nos va a estar especificando ahí lo que hace, básicamente, SGA es un grupo de estructuras de --> datos compartidos en memoria, que contienen información y datos necesarios para una --> instancia en la base de datos de Oracle, SGA es fundamental para la operación de la base --> de datos, pues almacena, entre otros, el cache de datos, el cache de instrucciones de SQL y la --> información de control y gestión de transacciones, su tamaño y eficiencia afectan directamente el --> rendimiento de la base de datos, pues una SGA que está optimizada puede reducir --> significativamente la necesidad de algún acceso directo al disco, al mantener los --> instrucciones frecuentemente necesadas en memoria, va, eso es lo que nos puede ayudar, y la PGA, --> la Program Global Área, es una región de memoria usada por un proceso del servidor de --> Oracle que contiene datos e información específicos, pero de ese proceso, ahí nos dice la --> diferencia, es que la SGA que es compartida por todos los procesos del servidor, cada proceso --> va a tener una PGA exclusiva, entonces a eso se refiere la PGA, esto es un área global, --> que está en el servidor en donde se instancia tu, donde se crea mejor dicho tu instancia de base --> de datos, y cada una de esas SGA contiene PGA, entonces podemos acceder, digamos ese PGA viene --> a ser cada cliente que se conecte a ese servidor, va a tener una área de global, --> donde va a tener almacenado, pues generalmente son variables de sesión, --> estado de ejecución y se juele, muy en específico, en particular, del proceso en donde se está --> ejecutando, va, de esa porción de área global. Y bueno, ahora, ya ven que también decíamos que --> si yo no modifico dentro de la vista, bueno, más bien dicho, haciéndome uso de la vista, --> yo lo pudo haber ejecutado dentro del Docker Compose, que es lo que decía al inicio, --> se puede ejecutar en un ambiente Dockerizado directamente desde acá, entonces es esto, --> de hecho, yo le puedo meter aquí esos tamaños, si ustedes quieren después crear otro Docker --> Compose, o sea, les doy la idea, vaya, de que aquí también le podemos ajustar ese tipo --> de parámetros que vienen y que van a ayudarte en el rendimiento de la base de datos. En este --> caso, aquí ya está, está en megabytes, que es el cálculo que hicimos, de 1 giga, de 8 gigas, --> va, los números de megabytes. Para que pudiéramos aplicar cambios, si nosotros hacemos esto, --> y es muy importante, si yo ejecutara un cambio aquí, acuérdense que eso está dentro de mi --> archivo Docker Compose, de hecho aquí lo dice, el Docker Compose lo vemos en las notas, --> podemos acceder a él a través de, si nosotros nos vamos, a bueno, este archivo no está creo --> que en las notas, pero si recuerdan, del día de ayer, incluso me voy a salir, --> esto yo lo ejecuté en mi máquina cliente, o mi host, aquí yo puedo ver más bien, --> y recuerdan que yo les deje aquí un archivo que se llama, una carpeta que se llama Docker --> Images, ahí adentro está mi archivo, no es cierto, no está ahí, a ver, le voy a dar clear, --> está más bien, la verdad es que no me acuerdo, ah, está aquí, en Oracle 19, --> si yo me meto a esa carpeta, aquí yo voy a encontrar mi Docker Compose, --> aquí creo que si tengo nano, si yo lo abro, este es el archivo que hemos estado manejando, --> aquí están los parámetros, el SGA y el PGA, si yo le modificara aquí, --> y quisiera volver a levantar mi instancia, si recuerdan aquí las instancias las podemos ver --> acá, los contenedores y demás, si yo quisiera esto reiniciarlo para que cache la nueva --> configuración de ese yaml, lo puedo hacer y ahí nos dice cómo, nada más que aquí --> hay un problema, si yo hago esto, lo dejo ahí escrito, pero es para que no lo apliquen, --> porque este comando, al menos no lo apliquen ahorita, este comando lo que va a hacer es --> que les va a borrar, digamos, nuestro ambiente que tenemos, entonces levantarlo, pues no es más que --> volver a ejecutar el comando para construir la imagen que vimos el día de ayer, pero pues eso --> puede ser, puede demorar un poquito, y además de eso, pues va a eliminarles la instancia, --> entonces no hay que hacerlo ahorita, nada más es como para que ustedes puedan entender cómo --> se puede reiniciar, y haciendo eso, va a cacher las nuevas configuraciones que le hagamos al composto, --> con eso la instancia tendría nuevos valores en esos parámetros, y así la iniciamos, --> y bueno, con eso lo vamos a terminar, ya de hecho está también por terminar lo que va del día, --> sale, entonces lo vamos a dejar aquí, vamos a aplicar el pomodoro, y les parece, si tomamos 10 --> minutos en vez de 15, ahí me disculpo tarde en la explicación, pero para no perder mucho tiempo, --> ¿no? ¿Les parece 12 y 18 nos volvemos a conectar? ¿Cómo ven? --> Perfecto, entonces 12 y 18 nos conectamos para darnos un respiro, y pues aprovechamos estos 10 minutos, nos vemos ahorita. --> Bienvenidos al canal de subtítulos en español por la comunidad de Amara.org --> Bueno, bueno. --> Listo, sale, a ver, entonces voy a compartir pantalla. --> No sé si hay alguna duda o inquietud con lo que hemos visto hasta ahorita, sino para que continuemos. --> Va, bien, entonces, este, bueno, cualquier cosa me avisan sin problema, ¿va? --> Ok, entonces, vamos a hablar de otro concepto, que es el repositorio de diagnóstico automático, --> también llamado ADR, este, es un componente crítico para la gestión de diagnósticos en la base de datos de Oracle, --> armacena archivos de traza, DOMs, alertas y registros de salud de nuestra base, ¿va? --> La funcionalidad de esto es que nos permite identificar y diagnosticar problemas de la base de datos de manera eficiente, --> nada más como para no perder el foco, recordemos que estamos en el 68, --> todo esto que estamos viendo corresponde a la parte de la ADR, está acá, --> con las instancias de la base de datos, administrando instancias, ¿va? --> Entonces, vamos a ver la diapositiva 68, continuamos, 68. --> Entonces, bueno, nos está diciendo aquí que podemos aplicar esta herramienta, --> monitoreando con el esquema que trabajamos, ¿no? --> Para identificar algún problema de rendimiento, errores en operaciones con datos del esquema y demás. --> Es una característica de Oracle que se centra en todo esto, ¿no? --> Recopilar, gestionar, analizar datos de diagnóstico para problemas de la base. --> ADR significa material de diagnosticar problemas, armazenando archivos de traza, --> dumps, alertas y información de salud de la base de datos en una estructura de directorios que está unificada. --> La ubicación de este archivo, aquí lo tenemos como un parámetro, --> es un parámetro de inicialización de Oracle. --> Esta ubicación dentro del contenedor, esta ubicación es dentro del contenedor de la base de datos, acá, ¿no? --> OPT Oracle DIAG. --> Entonces, aquí nos da un ejemplo de cómo yo puedo entrar. --> Y, pues, básicamente es esto, ¿no? --> Yo puedo meterme aquí igual a la intensa. --> Hay una herramienta que se llama ADRCI. --> Y, a ver, vamos a probar esto. --> Entonces, de igual, de forma rápida yo me voy a conectar. --> Aquí está la máquina. --> Sigue limpia, está ya respondiendo. --> Si yo me meto aquí a la instancia, --> este, con el mismo comando que ya hemos manejado, --> bueno, había uno más directo. --> Este. --> Yo ya me meto incluso a, ah, no, pero es que este va a meter a SQL, no. --> Me voy a meter a la instancia nada más. --> ¿Sí? --> Entonces, para conectarme a la instancia de ad-docker, --> vaya al contenedor, mejor dicho. --> Es con este comando que por aquí pasamos, que es este. --> ¿Sí? --> Y a estar ahí adentro, yo voy a poder ejecutar dentro del contenedor, --> por ejemplo, esta línea de comando. --> A ver, vamos a ver si la puedo ejecutar, que es ADRCI. --> Es que no sé si tenga que estar dentro de algún bin. --> No. --> Aquí estoy. --> Entonces, aquí dentro de, simplemente conectándome a la instancia, --> ya está conectada esta herramienta. --> Si yo ocupo el HOMS, vamos a poder, estos comandos están, --> no son necesarios todos los metiendo. --> Y, pues bueno, aquí me está diciendo todas las rutas hacia donde yo --> puedo, este, ver, digamos, información, ¿no? --> Aquí, esta información nos dice que, bueno, aquí podemos --> cachar la que corresponde con nuestra instancia de la base de datos. --> En este caso, ya bien que hemos estado creando varias bases, --> la base de datos que corresponde con nuestro, --> la instalación de nuestro Docker Compose, pues es esta, ¿no? --> Este vendría siendo ahí nuestro, nuestro PAD. --> El ORSLDB CDBD, ¿va? --> Este es el que viene en el Compose. --> De hecho, si yo me voy hacia abajo, aquí en el Docker Compose, --> pues lo encuentro, ¿no? --> Es este de acá que, que, que señalo. --> Ese. --> Entonces, ese es el que mapeas, digamos, esa, esa instancia. --> Para ver los logros recientes o archivos de esa, de esa traza, --> vamos a establecer el HOM adecuado. --> Entonces, podemos meter Set HOM. --> Vamos a ponerlo aquí, tal cual nos lo dice. --> Y vamos a agregar este. --> Yo le voy a copiar. --> Le voy a pegar. --> Y con eso ya lo, ya lo ejecuté. --> Entonces, yo puedo ver a manera de un tail, --> que es un comando de UNIX. --> Puedo ver las alertas que me manda aquí el, --> ah, no lo, no lo agregué. --> Es Show Alert. --> Es que está muy este, --> chiquito el comando como para que se lo pueda meter. --> Entonces, si nosotros nos fijamos, --> aquí nos está dando este comando, --> ya información, ¿no? --> Nos está diciendo y este, --> pues bueno, de hecho aquí está haciendo, está guardando --> todas las cosas que hemos estado generando. --> Aquí hicimos los, los alters, ¿no? --> Es que estuvimos agregando información. --> Metimos este, --> internamente, --> empezó a meter información cuando cargamos los esquemas --> de la base de datos, se conectó --> a Tribal Spaces. --> Aquí hizo varias cosas, este, --> internamente en nuestra base de datos. --> Y pues bueno, aquí nos está reimportando, --> pues esta información que guarda --> los registros de, --> de esta herramienta, ¿no? --> Son los logs --> y las alertas. --> Entonces, todo lo que en algún momento alertó la base de datos, --> pues aquí lo está guardando, ¿sí? --> Y nosotros podemos este, --> bueno, este Show Trace File, --> creo que nos lo hemos ejecutado. --> Vamos a ponerlo, a ver, sí. --> Creo que, --> ahí está. --> Aquí nosotros vemos todos los archivos de traza --> que ha estado generándose desde que creamos nuestra conexión, --> nuestra base de datos, --> llamada O-R-C-L-C-D-B, --> C-D-D-B, --> que básicamente son todas las trazas que tenemos --> desde ayer, ¿no? --> Bueno, incluso yo, desde un poco antes, --> que yo creé la base de datos, este, --> pues desde hace un tiempo ya, --> más atrás, ¿no? --> Tenemos ahí logs, tenemos archivos de traza. --> Entonces, toda esa información la vamos a poder tener acá --> y gracias a la simpleza de este comando --> o esta utilidad que se llama A-D-R-C-I, --> va. --> Es el Automatic Diagnostic Repository Command Interface, --> ¿no? --> Es lo que significa el A-D-R-C-I. --> Y, pues bueno, de esta forma podemos, este, --> manipular ese tipo de información --> y muy directamente con nuestra base de datos, --> nuestra instancia, ¿no? --> Dice aquí un ejemplo. --> Supongamos que estamos experimentando problemas --> con operaciones en el esquema --> y necesitamos revisarnos logs de raíces recientes. --> Vamos a acceder a A-D-R, --> al A-D-R como se describió --> y vamos a localizar el log de alertas --> para ver si hay mensajes relacionados --> con errores y operaciones en el esquema, ¿sí? --> Para eso, aquí te dice que puedes también --> gestionar incidentes, --> es decir, errores que son específicos --> y que han sido capturados por la base de datos, ¿no? --> O teniendo un agrupamiento de uno o más incidentes --> que comparten la misma causa. --> Son los mensajes, por ejemplo, --> que veíamos ahorita de que el inmediate --> lo metimos con L en vez de con doble M --> y ahí mando errores y demás. --> Todo eso lo vamos a poder ir revisando acá. --> Como te digo, están reladas los comandos, --> entonces, pues, los podemos copiar directamente, --> ejecutar, mejor dicho, no directamente. --> Una vez que yo setee cuál es el home, --> el A-D-R Home, --> aquí me está diciendo incluso los problemas, --> me dan un key que, si se acuerdan, --> es como te lo representan, --> un hora, punto, no sé qué, --> te dice cuál fue el ID del incidente, --> aquí te los va a ir agrupando, ¿no? --> Y también la fecha en la que se creó. --> Entonces, todo esto sirve y ayuda realmente --> a tener un monitoreo sobre la base, --> sobre los incidentes, --> de forma más ordenada. --> Aquí tenemos otro comando, --> que es el problem. --> Y muy en específico, este nos dice, --> por ejemplo, que el problema de todo esto --> que ha ocasionado, --> de hecho, el agrupado es este, --> el ORA 800. --> Aquí nos dice el último incidente --> y demás. --> Esto ya lo podríamos buscar --> en un diccionario de problems --> y ver a qué se refiere. --> Usos eficazes de esta herramienta --> es fundamental para la administración, --> sobre todo, --> de la base de datos, ¿no? --> Nos permite identificar causas --> de los problemas, agilizando resolución --> de incidentes. --> Entonces, --> vamos a simular un conflicto --> que se puede rastrear --> usando esta línea de comando, --> esta interfaz, ¿no? --> Dentro de la Human Resources. --> Este lo podemos ir --> haciendo igual, --> es un ejercicio medamente, --> ¿va? Entonces, podemos ejecutar una operación --> SQL --> que va a fallar debido a alguna --> restricción de integridades o --> algún error similar, ¿no? --> Un ejemplo de esto puede ser --> a intentar --> insertar un registro duplicado --> en una tabla que tenga --> una clave primaria o una restricción --> de unicidad. --> Entonces, aquí nos dice, supongamos que la --> tabla tiene una columna empleado ID --> que es una clave primaria --> y intentar insertar un nuevo empleado --> que ya existe --> nos va a provocar un error de violación. --> Vamos a --> ejecutar estos comandos, --> ¿va? Entonces, para eso, --> si se acuerdan, aquí tenemos --> un comando --> directamente que nos --> permite acceder --> al esquema. --> Déjame ver --> porque aquí se me trabo --> esta. --> Nos permite acceder al esquema, ¿no? Incluso yo lo voy --> a acceder desde otra terminal. --> ¿Va? --> Haciendo eso, yo me puedo --> meter a la instancia --> y puedo ejecutar, por ejemplo, --> este comando, --> ¿no? En donde --> ah, no me deja --> este lo voy a, estos --> los voy a agregar al --> al culture --> si están --> más largos. --> ¿Va? Entonces, --> si lo agrego aquí al culture, --> lo voy a poner --> hasta arriba. --> ¿Va? Entonces, esto de acá --> lo copio de --> directamente del culture, aquí --> expiro la sesión. --> La voy a --> la voy a recargar. --> Ahí vamos a ver que --> recargue, que luego --> hay veces que esto medio se traba. Vamos a reiniciar --> a ver la --> conexión. ¿Qué tal --> es? Ya se cayó el culture. Ah, bueno, ahí está. --> Entonces, eso me permite --> a mí ya copiar este --> comando y --> ejecutarlo, ¿no? Tal cual. --> Voy a ver cuál es el empleado --> el último ID que --> se insertó, ¿no? Que tiene. Entonces, --> en este caso es el 206. --> ¿Qué te parece si hacemos --> un insert? --> Sí, este insert tal vez falle --> en la línea --> de comando. Entonces, es que --> ahí medio se está trabando el culture. --> Voy a esperar a que cargue otra vez --> y más bien el código --> lo voy a pasar al --> blog de notas interna. --> Ahí está. --> Entonces, mejor para que no se me vuelva --> a trabar. --> Lo voy a dejar ahí --> por si ustedes también quieren --> este. --> Luego hace estas cosas, ¿eh? --> Como que se --> se muere. Pero bueno, --> a ver, ya lo alcancé a copiar. --> Ahorita lo regreso para que --> que de hecho sabes que creo que es más bien --> mi conexión. --> Porque aquí también ya se me está --> trabando la interfaz. --> A ver, déjame ver si puedo --> crear. --> Ah, no, no, no, no se me está trabando. --> Es que estoy en esta, pero --> estoy intentando --> entrar a la misma, entonces. --> No, no tiene sentido. --> Lo voy a agregar incluso --> en una nueva pestaña. --> Y ahí está. --> Entonces, aquí --> este comando lo que quería hacer era --> cambiarlo acá. --> Y aquí voy a volver a darle --> un control z. Ahí está. Ya por si lo quieren --> ustedes también ahí ocupar. Entonces, --> este comando, --> si yo lo intento ejecutar, --> seguramente me va a mandar --> pues un error porque --> ya existe un usuario --> con el ID 206, --> ¿no? Ahí nos dice --> esto ya ya no sirve --> porque, bueno, más bien no te deja --> hacerlo porque pues eso ya --> este ya ya existe, --> ¿no? Vamos a --> rastrear ese error. Entonces, yo --> me conecto con la misma --> como estaba. De hecho, --> por eso no cerré esto porque ya estoy en --> ADSRI. ADRSI, --> ¿verdad? Tengo los coms, ya --> estoy en mi pad. --> Vamos a ver qué pasa si vuelvo a ejecutar --> los coms. --> Vamos a ver si se agrego uno nuevo. --> Aquí es este, ¿no? --> En el que hemos estado trabajando. --> El de CDB. --> Exacto. Entonces, --> este es el mismo, --> la misma instancia. Entonces, ahí no hay problema. --> Luego, --> nos dice aquí, mira, por ejemplo, --> este --> comando, no me había fijado, está mal. --> Ahí está. Y --> podemos hacer --> el tracefile --> tailf. --> Ah, pero creo que este es un --> es un parámetro --> o ¿cómo se agrega? Ah, no, me equivoco, --> ese es sin la F. --> Es --> show --> tracefile, guión --> tail. --> Ok. --> A ver, es show, tracefile, --> guión tail. --> Y, a ver, --> una vez identificado, --> bueno, es que aquí el comando, --> lo teníamos más fácil. --> Es show --> funds, --> show alert, --> show tracefile. --> Creo que ahí tiene un problema el --> los comandos. --> Error de --> sintaxis, --> encontrado en la cabina. --> Creo que sí es más fácil --> copiar y pegar más descomandos. --> Pero bueno, sirve para que podamos hacer eso. --> Ahí se están guardando todos --> los traces, como ya los --> hemos visto. --> Aquí se debió haber agregado --> algo nuevo a los --> incidentes. --> Ahí podemos buscar --> un comando en específico, ese fue --> un alert. Vamos a ver que nos --> imprime el alert. --> El puro alert, si --> agregamos el guión tail --> y ahorita hacemos la --> corrección también ahí en el --> en el --> en el archivo --> y vamos a estar aquí buscando --> qué es lo que está, creo que no --> creo que no lo va a reportar por una razón. --> Esta base de datos --> nos conectamos al PDB y --> no al CDB. Entonces --> esa puede ser una --> razón del por qué no se está --> viendo, pero a ver, vamos a enfocar --> que más viene por acá. Probablemente --> acá lo podamos ver. --> Ah, la otra que quería revisar es esta --> bueno, el show incident --> y el show problem. --> Ok, --> aquí se agregó. Parece ser que es --> porque estamos en el CDB. --> Entonces muy probablemente tendríamos --> que setear el home. A ver, --> probablemente es eso. A ver, si agregamos --> los homes, --> probablemente --> aquí vamos a ver. --> Es que quiero ver --> cuando nos salió una lista de más --> homes. --> Creo que fue por el tema --> de hacer un set. --> Ok, aquí --> están todos los --> al agregar esto. --> Nosotros agregamos este CDB. --> Pero --> ok, no estoy viendo el PDB que estamos --> mapeando. Es que esa instancia --> está corriendo --> dentro del PDB. De hecho lo podemos --> ver cuando nos conectamos --> por acá, acá, --> a PDB1. --> Por eso es que no lo estoy mapeando --> porque yo me conecté a este de acá. --> Pero lo que no veo --> es por qué al mostrar este home --> no me está mostrando ese PDB. --> Otra cosa --> que podríamos haber hecho es crear --> dentro de la instancia de acá, --> o sea meternos al CDB --> con el usuario admin. --> Ahí ejecutar --> algún error y yo haría --> esta corrección para que el ejercicio --> nos quede completo. --> Pero podríamos intentar --> modificar, o sea conectarnos --> más bien como SIS al CDB --> en donde estamos trabajando --> y con eso --> estar revisando los errores. --> Lo que quería ver aquí es, si fíjate --> que si me da duda eso, porque no se está mostrando --> aquí ese home --> del PDB. --> Entonces esa parte me la voy a llevar --> para corregirla. --> Pero bueno, básicamente esa es como --> la forma de estarlo viendo. --> El estar rastreando errores. --> Aquí hay todavía --> algo más que podemos ejecutar. --> Va a ver el error del registro específico. --> Lo vamos a estar viendo así. --> Es que este es el resultado que tendríamos que ver. --> El hora debe de uno --> como los que estamos viendo acá. --> Pero bueno, --> a ver, aquí como no se agregó --> lo vamos a --> revisar. --> El 800, el 8001. --> Y de hecho si yo lo agrego acá. --> La violación --> es esta. --> Otra puede ser --> que --> estoy en una pestaña diferente. --> Eso lo voy a revisar para no --> invertir más tiempo ahí. --> Entonces, --> bueno, --> eso es como se ocuparía ADR. --> Y --> digamos en un ejemplo en particular. --> Aquí por el tema de que --> no se logró mapear --> con el PDB que ocupamos. --> En donde teníamos la trance y en donde --> digamos --> provocamos el error. --> No pudimos revisarlo. --> Pero a ver. --> Quiero revisar otra cosa. --> Trace file. --> A ver. --> Lo que también podemos hacer es --> un TRC --> de alguno de estos que tenemos acá. --> A ver, voy a --> agarrarme este. --> Nada más como para ver qué contiene. --> Y voy a --> agregar un show --> trace file y voy a agregar ese --> comando. --> Esa ruta. --> Ok, ahí no mando nada. Entonces quiere decir que --> ahí no está guardando ningún archivo. --> O sea, ningún problema. --> Entonces, --> a ver. --> Aquí tenemos otra información. --> Otro comando. Dice. --> En los archivos de traza, buscamos --> información que te ayude a diagnosticar --> problemas específicos en base a la base --> de datos como errores de --> ejecución, estadísticas de rendimiento, --> de consultas o detalles de bloqueo. --> Ejemplos de lo que podrías --> buscar incluyen mensajes de error --> como de este tipo. --> Vamos a hacer un paso a paso. --> Supongamos que deseamos diagnosticar --> el rendimiento de una consulta. --> Hacemos esta parte, --> pero mira, aquí es lo mismo. --> Parece que nos estamos conectando al --> mismo esquema. --> A ver, nada más déjame ver --> si abajo nos dice otra forma --> de --> de no revisarlo. --> A ver, vamos a ejecutar esto. --> ¿Qué pasa? --> Si yo esto --> lo ejecuto --> directamente --> de acá --> y --> pego este archivo, este comando. --> Este es el que --> quería llegar porque este de aquí --> tiene una expresión regular. --> Según yo, --> ahí se debería haber copiado. --> Y este --> de aquí lo tendría que ejecutar --> dentro del Bash. Ah, bueno, --> de esto me puedo salir. --> Me voy a dar acá. --> Acá me voy a salir. --> Y aquí que me conecté a la mera --> instancia de Oracle, puedo ejecutar --> esto. Sí, uno está encontrando --> este registro. --> Entonces, déjame ver primero --> qué pasa si yo me muevo esta ruta. --> ¿Dónde está --> esto de acá? Y vamos a ver qué archivos --> tiene. Porque a lo mejor la Regex --> no encuentra --> ningún este, ningún archivo. --> Entonces, está buscando --> hr3. No, aquí no va a encontrar --> los archivos tras. --> Mira, toda esta información --> de este ejercicio --> lo vamos a --> lo vamos a corregir --> para que --> lo podamos revisar. Porque --> incluso esto de acá, este --> grep no está instalado --> en el --> en el --> en el contenedor. Entonces --> tampoco creo que lo podamos --> ejecutar. A ver, déjame --> agregar esto acá. --> Nada más como para ver si --> de alguna forma sirve --> de este mecanismo. --> Este de aquí que tenemos dentro de --> donde están los trace ID --> podemos hacer --> que --> bueno, esto lo tendríamos que ejecutar --> aquí adentro. --> Por ejemplo, estos trace ID --> que están acá, que --> le voy a copiar. --> Y a ver, qué pasa si --> modifico esto --> acá. Voy a --> quitar esto. --> Se supone que ahí están mis --> trace IDs. Y --> aquí voy a ejecutar --> en esto se ejecuta ya de este lado. --> A ver si encuentra el path. --> Sí, no, no lo va a encontrar. --> Ok. --> Trace file. --> Y no sé si lo ejecute aquí. --> Ajá. --> Ok. --> Voy a tener que revisar esta parte. --> Ahorita, esto último no --> hay que tomarlo tan en consideración. --> Lo voy a revisar para --> que podamos este --> completar el error, --> el error propuesto, el --> completar el ejercicio propuesto. --> O sea, básicamente lo que queremos hacer es --> ocasionar intencionalmente --> un problema. Por ejemplo, --> el de violación de base de datos --> por ID. --> Por violación de --> constraint. Y --> poder revisarlo en nuestros archivos de --> visualización. --> Entonces, de ese no vamos a perder --> foco. Lo revisamos --> mañana. --> Y pues bueno, ahorita para no invertir --> más tiempo en esa parte, --> vamos a continuar esa parte, --> la vamos a saltar. Pero bueno, lo que --> quiero que quede claro es como que --> es lo que tenemos que --> es lo que queremos buscar. --> Aquí, por ejemplo, --> bueno, aquí es otro ejemplo en donde --> podemos monitorear --> una consulta que tomó --> demasiado tiempo o demás. --> Entonces, vamos a estar revisando estos archivos --> de traza, --> metiendo incluso, esto es una expresión --> regular, que en este caso busca un hora --> guión algo, porque así es como ahora --> que reporta los errores. --> Y en estos archivos de traza, en todo ese directorio --> que vimos, ahí lo tiene que encontrar. --> Entonces, vamos a hacer esa práctica, --> la vamos a revisar el día --> de mañana. --> Posterior a eso, --> de hecho, miren, vamos a marcarlo --> como, porque a mí me sirve, --> lo voy a poner --> en rojo, como para --> revisarlo. --> Luego, --> tenemos otro archivo, --> que es un archivo de log DDL, --> ya los últimos 12 minutos que nos queda. --> Aquí, como tal, --> nos dice que --> Oracle también permite registrar este tipo --> de operaciones, los DDL, --> que son --> las siglas de data definition --> language, ¿no? --> en un archivo de log. Entonces, --> eso nos ayuda a facilitar --> el seguimiento de cambios que son --> estructurales. Por estructurales, pues nos referimos --> a todo lo que es definition --> language, ¿no? --> Los create tables, todos los altentables, --> todo lo que nos permite modificar --> la información de los objetos --> de la instancia o de la base. --> Ventajas de esto --> es que nos ayuda a --> auditar y revertir cambios que no son --> deseados o, en un ejemplo --> aquí con HR, --> pues bueno, que es lo que va a pasar, --> que --> Oracle permite registrar este tipo --> de operaciones --> para auditar o revisar --> cambios estructurales en la base. --> ¿Va? ¿Cómo vamos a registrar y --> revisar esas operaciones? --> Vamos a habilitar el registro --> DDL. --> Como tal, aquí es lo que --> a lo que quería llegar, --> Oracle no tiene --> por defecto, --> habilitado ningún log DDL específico. --> Pero para eso vamos a --> ocupar un mecanismo, digamos --> un poco más como --> manual --> a programación, ¿no? --> Que yo creo que aquí, --> bueno, quisiera hacer la pregunta, ¿no? Todos hemos ocupado --> los triggers, ¿no? --> O entendemos el concepto de lo que es un --> trigger, sino para desde ahí también --> este parte. Exactamente. --> Ahí Aaron ya nos dio la --> respuesta. ¿Los has ocupado, Aaron? --> ¿En algún momento? --> ¿En algún momento? --> Ajá. Perfecto. --> Va. --> Como primaria. Exactamente. --> Ok. Bueno. --> Eso que nos dices, este --> perdón. Ah. --> Una disculpa. Ok. --> Eso mismo que dices son como aplicaciones --> de los triggers. --> Básicamente el trigger, como bien --> comentaron, es un desencadenador. --> Un desencadenador que se puede --> ejecutar --> cuando nosotros lo configuremos, --> ahorita vamos a ver el ejemplo. --> Pero este desencadenador se puede --> ejecutar en diferentes --> escenarios. Por ejemplo, --> puedo crear un trigger --> que cuando se cree --> un registro --> sobre una tabla, en automáticamente --> dispare, ese es el --> el concepto, --> es un disparador, se dispare --> una acción y haga --> otra cosa. Por ejemplo, --> yo puedo hacer un insert --> sobre una tabla, --> configurarle un trigger de --> insertión, ¿Sí? Y --> puedo cachar ese registro --> que se está insertando, y --> registrarlo en otra tabla, digamos, de auditoría. --> Que de hecho como para allá vamos. --> Estos archivos --> de logs --> Oracle no tiene un mecanismo como --> tal. Lo podemos simular --> a través de un trigger. Entonces, --> eso es lo que ahorita vamos a --> revisar en el ejemplo. --> Como bien dijo Aaron, --> o sea, es una funcionalidad --> adicional que le podemos meter --> un comando, es un programa --> chiquito, es un programa --> que lo que va a hacer es desencadenarse --> cuando ocurra alguna acción de --> insertión, actualización o consulta --> sobre la base, o borrado --> sobre la base de datos, ¿Va? --> Entonces, sobre esas cuatro --> cosas, vamos --> a poder desencadenar triggers. --> Aquí nos dice, por ejemplo, --> crear un trigger para capturar --> eventos DDL y --> almacenarlos --> en una tabla personalizada, --> ¿Va? Entonces, revisamos --> los logs, consultamos la --> tabla, nada más, ese sería nuestro log --> customizado, ¿No? --> O utilizamos las tablas que --> son de auditoría, DB Audit Trail, --> para revisar --> operaciones DDL realizadas. --> Entonces, aquí --> nos da un ejemplo, dice, supon --> que deseas auditar todos los cambios --> de estructura en el esquema de human --> resources, podríamos crear un trigger --> que registre estos eventos --> en una tabla de auditoría específica --> y consultar esa tabla --> podemos ver a manera --> de un historial los cambios que se --> realizaron, ¿Va? --> Entonces, realmente este ejercicio está --> muy bueno para ejecutarlo --> y yo creo que ya no nos va a dar tiempo --> en estos siete minutos. --> Lo vamos a ver así nada más ahorita --> conceptual y mañana igual, a partir --> de que revisemos lo de --> los logs, vamos a continuar --> haciendo con más calma --> este ejercicio para que lo puedan --> ejecutar y podamos revisar --> las dudas que se tienen, ¿No? Porque este es un --> mecanismo para ejecutar logs --> de este tipo de --> de comandos. Ahorita --> en lo que resta de la sesión lo vamos a ver --> nada más como platicado, ¿Va? --> Entonces, ¿Cómo --> se puede crear ese mecanismo de auditoría? --> Bueno, antes de continuar, no sé si me --> expliqué más o menos, me di a entender --> de lo que vamos a ejecutar --> de lo que se va a hacer --> con el tema del mecanismo de --> auditoría. --> ¿Quién me está hablando? ¿Leon, --> verdad? ¿Leon? --> ¿Qué onda, Leon? --> Es una aplicación --> de los triggers, no tanto es como --> que sirvan para eso, ¿No? --> O sea, un trigger tú puedes --> usarlo para, por ejemplo, --> tú creas una --> tabla, --> digamos que tienes una tabla de usuarios --> y tienes otra tabla, --> digamos, tal vez de datos personales, --> no sé. Y en la tabla de usuarios --> vas a revisar todo lo que tenga que ver --> como con la oficina del usuario, --> de ese tipo de información, ¿No? --> Y la tabla de datos personales es otra cosa. --> Entonces, tú podrías, es un ejemplo --> burdo que se me ocurrió ahorita, ¿No? --> Podrías crear un insert --> que guarde la data sobre --> la tabla de usuarios, nada más. --> Y desencadenar un trigger --> o crear un trigger sobre esa tabla --> de usuarios. --> Y ese trigger le dirías, --> prácticamente es lo que --> voy a decir. --> Cuando llegue un insert en la tabla --> de usuarios, --> cacha los registros que se están insertando --> e insertarlos en algún otro --> lado, donde yo quiera. Lo puedo --> agregar en otra tabla, --> lo puedo redireccionar --> a otra tabla, lo puedo --> redireccionar, no sé, a otra base de datos. --> Puedo hacer --> lo que yo quiera con esa información. Puedo --> ejecutar cualquier operación, cualquier otra operación. --> Los triggers --> se ejecutan en --> cuatro escenarios principalmente. --> Cuando vas a hacer la inserción --> de algún registro, la actualización, --> el borrado o --> la consulta. O sea, --> no nada más sirve para insertar --> información, o bueno, más bien, --> para que se desencadene cuando insertes --> información en una tabla, sino que --> tal vez también cuando se haga --> un update, por ejemplo, o un borrado. --> Imagínate que borras algo sobre --> la tabla de usuarios, --> el trigger, podrías desencadenar --> un trigger de borrado sobre esa tabla --> y guardar --> ese registro que se está borrando --> en otra tabla como de bitácora. --> Probablemente. --> Generalmente es como su mayor --> o bueno, es uno de sus --> usos, pero no es que se limite --> a hacer logs. --> Entonces, perfecto. --> Ok, entonces esa es como la --> la ventaja que tienen los --> triggers y si te fijan aquí vamos --> a crear una tabla --> que se llama, aquí nos dice de hecho --> que podemos entrar como usuario. --> El CIS --> vamos a entrar, miren aquí el tema --> es que la tabla --> y creo que ya vi por qué está --> ocasionando esos --> problemas. Básicamente es porque --> todos los esquemas los creamos dentro --> de la tabla, mejor dicho, --> dentro del concepto del multi-tenant, --> lo creamos en el PDB y --> no en el CDB. --> Entonces, para eso --> eso es lo que --> tengo que ahorita revisar, muy en específico --> en el tema de los logs, cómo cachar --> esos logs de los PDBs. --> Pero para que fuera directo, esto --> realmente ese esquema lo debimos haber creado --> en el CDB. --> Entonces, no pasa nada, podemos hacer --> la creación del CDB o --> yo ahorita me pongo a --> revisar cómo podemos acceder directamente --> a esa información y poder --> manipularla. Pero bueno, aquí --> me doy cuenta porque --> el usuario con el que me tendría que conectar --> no es el CIS, sino que más bien --> yo tendría que conectarme con el usuario --> HR. Ajá, y conectándome --> con ese usuario HR, ya --> podría yo crear esta tabla. --> Esta tabla --> nada más, bueno, --> como concepto, ahorita lo que --> está definiendo, si se fijan, es un --> identificador, una --> fecha, que se declara como --> timestamp, el nombre de un usuario, --> el tipo de DDL, --> el nombre del objeto --> y el texto del SQL que --> se va a generar, --> que se va a ejecutar. Entonces, --> esta tabla se guarda y de hecho --> se va a llamar DDL Audit, --> pero se puede haber llamado como --> 15 años. Este es el trigger, --> así es como se ve un trigger. --> El trigger es, como les decía, es un --> programa, es algo así como un store procedure. --> Entonces, --> aquí si te fijas, yo le estoy --> diciendo que cree o reemplece el trigger --> y se llama de esta forma, --> y esto es lo que te decía que --> va a definir cuándo --> se va a desencadenar ese trigger. --> En este caso, se va a --> desencadenar cuando se --> ejecute un comando del tipo DDL, --> Data Definition Language, --> sobre la base de --> datos. --> Es decir, que sobre cualquier --> tabla que se ejecute un --> DDL en esa tabla, en esa base de --> datos en donde yo estoy conectado, --> lo que va a hacer, este es el cuerpo --> del trigger, esto es lo que va a ejecutar. --> Aquí yo ya le especificé cuándo --> se va a disparar y acá le estoy --> explicando qué quiero que haga. --> Entonces, lo que va a hacer, --> lo que yo quiero que haga, es que sabes que me estorba --> este cuadrito, lo voy a hacer por acá. --> Lo que yo quiero que haga, cuando suceda --> ese evento, es que --> inserte en la tabla --> DDL Audit, que es la que yo --> creé acá, en el campo --> identificador, DDL Date, --> Username, el Type, --> Log Name y el SQL Text, --> los valores --> que yo traigo de esto. --> Con esta --> secuencia, yo estoy --> calculando el identificador --> en el que se encuentra --> el ID. --> Entonces, cada vez que --> un insert ocurra --> sobre la --> tabla, alguna tabla de la --> base de datos, este comandito --> va a saber en qué secuencia --> va, en automático. --> Y lo va a cachar. --> Si vamos en el 206, te pone --> el 6. Si va en el 7, --> lo mete. Y entonces, ese es el identificador --> que le va metiendo. Le crea una secuencia --> a nuestro registro. --> Va a meter la fecha, --> calculada por el sistema. --> El username lo puedo calcular con --> este directiva. --> El tipo, --> igual con esta directiva. Fíjate, --> este directiva me va a decir qué tipo --> de DDL se está ejecutando. --> Un SELECT, --> un ALTER, --> que son básicamente los que se --> son DDL, --> un ALTER, un CREATE, --> todo esa parte de los DDL. --> El nombre al cual se le está --> ejecutando y el texto --> es el query --> como tal que estoy ejecutando. Si yo hiciera un --> ALTER TABLE de la tabla --> de empleados, aquí me lo pondría. --> ALTER TABLE, --> este lo vamos a ejecutar --> ya por razón de tiempo el día de mañana. --> Y pues bueno, --> para revisar nada más, --> nos decía cómo podemos revisar --> qué se está ejecutando. Pues ejecuto --> algún ALTER TABLE, por ejemplo, --> aquí le está agregando una columna --> y si yo revisara lo que se --> auditó en la tabla de audit, --> me va a devolver --> más bien esta información, --> pero en particular --> para el comando de la tabla que se le hizo. --> En este caso, --> se le agregó un test column. Esto es lo que --> me pondría de hecho en el campo query --> acá, ¿no? --> en el SQL Text. --> Eso lo vamos entonces a revisar mañana. --> Si está bueno que vamos a este --> ejercicio. Y pues bueno, --> eso es básicamente cómo podemos --> hacer un, este, --> cómo decirlo, un mecanismo --> de auditoría --> en Oracle. Realmente no nos --> faltó mucho por revisar, --> pero bueno, creo que --> vamos todavía a buen ritmo. --> Este tema 2 realmente --> estaba, --> eso un poquito era de los largos, --> entonces, perdón, --> este día 2 en esta parte, ¿no? --> Pero bueno, entonces --> vamos a estar revisándolo ya detalle --> mañana el tema de la auditoría. Por ahorita --> pues ya, no me queda más que --> igual que ayer --> agradecerles el tiempo --> y la atención y la participación, --> ¿no? Para este día y pues --> que seguimos mañana. Harold, --> perdóname, nunca te veo, este. --> Puedes interrumpirme, creo que sería --> mejor. Dime tu, tu pregunta --> por ahí. Ah, este estaba tu mano --> levantada. Este, --> ok. Va, --> no, está bien, no te preocupes. Entonces pues ya --> nos vemos mañana. Y cualquier cosa --> este, pues ahí estoy en --> en contacto, ¿no? Por el --> por el chat. No, ya mañana. --> Pues bueno, muchas gracias --> a ustedes. --> Nos vemos mañana. Hasta luego. --> Hasta mañana. --> Gracias a ustedes. Harold --> levanté la mano. --> Ok, no te preocupes. Dale, dale. --> Que tengan buen día. Hasta mañana.