El cambio de dedicated server a shared server es fácil. Comienzas editando el archivo init.ora para tu instancia. Vas a necesitar, o añadir una línea para dispatchers, o editar la línea existente (Cuando se crea una base de datos con DBCA en Windows, Oracle añade una línea, incluso si no requiere dispatchers. Entonces, se debe tener en cuenta el hecho de que puedes sencillamente cambiar esa linea).
Como mínimo vas a necesitar:
Una configuración más completa sería:
El (dispatchers=2) que ves le dice a Oracle que cree 2 dispatchers al inicio.
Configurar los dispatchers puede ponerse más complejo. A menos que tengas experiencia y documentación para establecer una configuración más avanzada, es probablemente mejor permitirle a Oracle darte los valores por defecto para todo lo demás. A continuación se muestra una lista completa de todos los posibles parámetros de dispatcher:
Hay algunos otros parámetros que querrás cambiar a medida que vayas trabajando con dispatchers. Aquí un ejemplo:
# Dispatchers
# shared servers al inicio
# máximo de sesiones shared server
# máximo de shared servers
## máximo de dispatchers
Una vez cambiado el archivo init.ora y levantada tu base de datos, ¿Cómo puedes saber si las conexiones están yendo a través de dispatchers? Hay un número de vistas dinámicas de rendimiento que te pueden entregar esta información, por ejemplo v$session, v$dispatcher, v$queue. Para mantener las cosas fáciles, a continuación se muestra una vista que muestra los datos que queremos observar:
Salida de ejemplo:
Ahora puedes saber quién se está conectando y cómo, ya sea vía dispatcher o conexión dedicada.
¿Significa esto que ahora todas las conexiones serán a través de un dispatcher? No. Hay una gran cantidad de casos en los cuales querrás, o incluso, requerir una conexión que sea dedicada. Por ejemplo, para apagar la base de datos se necesita una conexión dedicada. Tambien, muchos procesos requieren muchos recursos y rendirán mejor con una conexión dedicada. Para crear una conexión dedicada, necesitarás editar el archivo TNSNAMES.ORA en la máquina desde la cual se está generando la conexión. Aquí un ejemplo:
# Conexión SHARED para probar la base de datos
# Conexión DEDICATED para probar la base de datos
Ahora para conectar a través del dispatcher, prueba esto:
Para conectar a través de un proceso dedicado del servidor, prueba esto:
Referencia documentación oficial
Articulo original
dispatchers="(protocol=tcp)"
Una configuración más completa sería:
dispatchers="(protocol=tcp)(dispatchers=2)(service=mydatabase)"
El (dispatchers=2) que ves le dice a Oracle que cree 2 dispatchers al inicio.
Configurar los dispatchers puede ponerse más complejo. A menos que tengas experiencia y documentación para establecer una configuración más avanzada, es probablemente mejor permitirle a Oracle darte los valores por defecto para todo lo demás. A continuación se muestra una lista completa de todos los posibles parámetros de dispatcher:
dispatch_clause::=
(PROTOCOL = protocol) |
(ADDRESS = address) |
(DESCRIPTION = description )
[options_clause]
options_clause::=
(DISPATCHERS = integer |
SESSIONS = integer |
CONNECTIONS = integer |
TICKS = seconds |
POOL = {1 | ON | YES | TRUE | BOTH |
({IN | OUT} = ticks) | 0 | OFF | NO | FALSE | ticks} |
MULTIPLEX = {1 | ON | YES | TRUE | 0 | OFF | NO | FALSE | BOTH | IN | OUT} |
LISTENER = tnsname |
SERVICE = service |
INDEX = integer
)
Hay algunos otros parámetros que querrás cambiar a medida que vayas trabajando con dispatchers. Aquí un ejemplo:
# Dispatchers
dispatchers="(protocol=tcp)(dispatchers=2)(service=test)"
# shared servers al inicio
shared_servers=2
# máximo de sesiones shared server
shared_server_sessions=200
# máximo de shared servers
max_shared_servers=20
## máximo de dispatchers
max_dispatchers=20
Una vez cambiado el archivo init.ora y levantada tu base de datos, ¿Cómo puedes saber si las conexiones están yendo a través de dispatchers? Hay un número de vistas dinámicas de rendimiento que te pueden entregar esta información, por ejemplo v$session, v$dispatcher, v$queue. Para mantener las cosas fáciles, a continuación se muestra una vista que muestra los datos que queremos observar:
CREATE OR REPLACE FORCE VIEW SYSTEM.CURRENT_CONNECTIONS
(SID, SERIAL#, USERNAME, OSUSER, STATUS,
"SCNDS NOT ACTIVE", DISPATCHER)
AS
SELECT
s.SID, s.serial#, s.username, s.osuser, s.status,
DECODE (s.username, NULL, 0, s.last_call_et) "SCNDS NOT ACTIVE",
NVL (d.NAME, 'none') "DISPATCHER"
FROM v$session s, v$dispatcher d
WHERE s.paddr = d.paddr(+)
ORDER BY status ASC, last_call_et ASC;
CREATE PUBLIC SYNONYM CURRENT_CONNECTIONS FOR SYSTEM.CURRENT_CONNECTIONS;
Salida de ejemplo:
SELECT * FROM SYSTEM.CURRENT_CONNECTIONS;
SID SERIAL# USERNAME OSUSER STATUS SCNDS NOT ACTIVE DISPAT
------ ------- ------------ ------------ -------- ---------------- ------
15 167 SYSTEM STOEVER ACTIVE 0 none
11 10 GENERAL GURJOBS_TEST ACTIVE 12535 none
1 1 @ ORACLE ACTIVE 0 none
2 1 @ ORACLE ACTIVE 0 none
3 1 @ ORACLE ACTIVE 0 none
4 1 @ ORACLE ACTIVE 0 none
5 1 @ ORACLE ACTIVE 0 none
6 1 @ ORACLE ACTIVE 0 none
7 1 @ ORACLE ACTIVE 0 none
8 1 @ ORACLE ACTIVE 0 none
18 176 WTAILOR jbautista INACTIVE 12 D000
16 191 WTAILOR jbautista INACTIVE 132 D001
10 212 WTAILOR jbautista INACTIVE 134 D001
13 119 WEB_USER SYSTEM INACTIVE 314 D000
14 20 SYSTEM vlugo INACTIVE 721 D001
Ahora puedes saber quién se está conectando y cómo, ya sea vía dispatcher o conexión dedicada.
¿Significa esto que ahora todas las conexiones serán a través de un dispatcher? No. Hay una gran cantidad de casos en los cuales querrás, o incluso, requerir una conexión que sea dedicada. Por ejemplo, para apagar la base de datos se necesita una conexión dedicada. Tambien, muchos procesos requieren muchos recursos y rendirán mejor con una conexión dedicada. Para crear una conexión dedicada, necesitarás editar el archivo TNSNAMES.ORA en la máquina desde la cual se está generando la conexión. Aquí un ejemplo:
# Conexión SHARED para probar la base de datos
TEST_SHARED =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = alpha2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = test)
)
)
# Conexión DEDICATED para probar la base de datos
TEST_DEDICATED =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = alpha2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
Ahora para conectar a través del dispatcher, prueba esto:
SQLPLUS scott/tiger@test_shared
Para conectar a través de un proceso dedicado del servidor, prueba esto:
SQLPLUS scott/tiger@test_dedicated
Referencia documentación oficial
Articulo original
Comments
Post a Comment