saber - ¿Cómo puedo cambiar el SID de una instancia de Oracle XE?
sid oracle 11g (3)
Asktom tiene la respuesta , tuve que pasar por un montón de google-fu para llegar a ella.
Necesitaba cambiar el SID de una base de datos Oracle XE (no el nombre del servicio) para que coincida con una base de datos de producción.
Cuando traté de buscar en línea, la mayoría de las páginas describían cómo cambiar o agregar un nombre de servicio a través de tnsnames.ora; eso no es lo que necesitaba hacer.
El artículo de asktom tiene la respuesta, pero el formato y la verbosidad lo hacen difícil de seguir, así que aquí hay un resumen:
[XE_HOME] significa donde está instalado Oracle XE. Normalmente esto es C:/oraclexe/app/oracle/product/10.2.0/server
.
Asegúrese de tener privilegios de administrador o el procedimiento fallará.
- Configure el SPFILE (puede eliminar el archivo anterior si lo desea)
-
copy [XE_HOME]/dbs/spfileXE.ora [XE_HOME]/dbs/spfileNEW_SID_NAME.ora
-
copy [XE_HOME]/database/initXE.ora [XE_HOME]/database/initNEW_SID_NAME.ora
- Edite
[XE_HOME]/database/initNEW_SID_NAME.ora
: debe contener una sola línea como esta:SPFILE=''[XE_HOME]/server/dbs/spfileNEW_SID_NAME.ora''
-
- Apagar y reemplazar el antiguo servicio por uno nuevo:
-
sqlplus / as sysdba
y ejecutarshutdown
-
lsnrctl stop
-
oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]/database/initNEW_SID_NAME.ora
-
oradim -delete -sid XE
-
lsnrctl start
-
- Actualice la propiedad de entorno ORACLE_SID (Configuración del sistema> Avanzado> Entorno)
- Forzar a Oracle a registrarse con el oyente
-
sqlplus / as sysdba
y ejecutaralter system register;
-
Puede verificar que el SID se modificó ejecutando la siguiente consulta: select instance_name from v$instance;
Tuve algunos problemas con la solución publicada por Johannes, así que tuve que hacer algunos pasos adicionales. Al intentar conectar con Oracle (paso 4) haciendo sqlplus / como sysdba , obtuve:
ERROR: ORA-12560: TNS:protocol adapter error
La solución para esto fue ejecutar la siguiente línea:
oradim -start -sid NEW_SID_NAME
Luego de conectarme con / funcionó bien, pero tratar de conectarme a NEW_SID_NAME con el sistema o HR me dio otro problema:
ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Lo comprobé con la consulta select instance_name from v$instance;
que el oyente sería NEW_SID_NAME, y así lo hizo. Pero ejecutando el lsnrctl status
en la línea de comando o consultando el select name from dba_services;
no mostró NEW_SID_NAME como un oyente. La solución de este problema fue ejecutar la siguiente sentencia en sqlplus:
alter system set service_names=''NEW_SID_NAME'';
Quizás necesites ejecutar el alter system register;
después de esto también.
Después de hacer estos dos pasos, me puedo conectar a NEW_SID_NAME con el sistema y HR.
Espero eso ayude