Error ORA-27101

ovidio.gavira
27 de Octubre del 2009
Hola a todos. Tengo montado Oracle 8.1.7 sobre Linux y de pronto me está dando el error 27101.

ORA-27101: shared memory realm does not exist
SVR4 Error: 2: No such file or directory


He intentado hacer lo siguiente que he visto en algún foro :
export $oracle_sid mi_sid
$ sqlplus /nolog
SQL> connect sys/ as sysdba
SQL> startup

Pero al hacer el startup me da el siguiente error:

SQL> startup
LRM-00110: syntax error at 'B'
ORA-01078: failure in processing system parameters


También he visto que han dado otra solución :
oradim -delete -sid <mi_sid>
oradim -new -sid <mi_sid> -intpwd <> -startmode a

Pero como hago esto en Linux? , porque este comando es sólo para Windows.

Gracias.

Manny
27 de Octubre del 2009
Hola, Ovidio

Mi experiencia para este tipo de error ORA-27101, quiere decir que la SGA (System Global Area), es mas grande que la memoria que es permitida o configurada en linux para oracle... HAY provado a modificar algunos parametros del init.ora de tu instancia.

Seguidamente, para el segundo tipo de errore ORA-01078, es posible que al cambiar algunos parametros del init.ora, haya quedado basura al interno del INIT.ORA, debes darle un ojo en el alert.log de la instance. (ORACLE_HOME/admin/SID/udump/)

1.- Puedes provar a recrear il password file de la instancia:


To Create the password file;
On all platforms post-8.1.x:
orapwd file=<fname>
password=<password>
entries=<number
donde file = nombre de archivo orapwd<SID>
password = password for SYS or INTERNAL
entries = numero maximo de conexciones.

2.- Debes modificar el init.ora
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE , recuerda que la instancia de esta abajo.

3.- Puedes provar a startup del svrmgrl, con el pfile:

SVRMGRL>CONNECT INTERNAL
SVRMGRL>startup mount pfile='/app/oracle/admin/SID/pfile/init<SID>.ora';
SVRMRGL> alter database open;

Si todavia no parte la instance, verifica a nivel de linux
que no estan los processo de oracle , dbwr, lgwr,smon, pmon, verifica en el udump, bdump, cdump, si hay algun mensaje.

Debes de hacer todos estos procesos en el local y no de remoto...

bye.
Suerte.




ovidio.gavira
27 de Octubre del 2009
Gracias Manny , pero el ini no lo he tocado y tampoco tengo ningun fichero alert en la ubicación que me indicas.
Que parametro debo mirar para ver si se ha sobrepasado la memoria permitida?

Gracias

ovidio.gavira
27 de Octubre del 2009
El el directorio udump encontré un fichero alert. Te lo muestro a continuación :

Tue Aug 12 11:11:15 2003
Starting ORACLE instance (normal)
Tue Aug 12 11:11:15 2003
WARNING: EINVAL creating segment of size 0x0000000004640000
fix shm parameters in /etc/system or equivalent
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
LICENSE_MAX_USERS = 0
Starting up ORACLE RDBMS Version: 8.1.7.0.1.
System parameters with non-default values:
processes = 150
shared_pool_size = 31457280
large_pool_size = 614400
java_pool_size = 20971520
control_files = /home/oracle/OraHome1/oradata/ref63/control01.ctl,
/home/oracle/OraHome1/oradata/ref63/control02.ctl, /home/oracle/OraHome1/oradata
/ref63/control03.ctl
db_block_buffers = 2048
db_block_size = 8192
compatible = 8.1.0
log_buffer = 163840
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
max_enabled_roles = 30
remote_login_passwordfile= EXCLUSIVE
distributed_transactions = 10
instance_name = ref63
service_names = ref63
mts_dispatchers = (PROTOCOL=TCP)(SER=MODOSE), (PROTOCOL=TCP)(PRE=orac
le.aurora.server.SGiopServer)
open_links = 4
sort_area_size = 65536
sort_area_retained_size = 65536
db_name = ref63
open_cursors = 300
os_authent_prefix =
job_queue_processes = 0
job_queue_interval = 60
background_dump_dest = /home/oracle/OraHome1/admin/ref63/bdump
user_dump_dest = /home/oracle/OraHome1/admin/ref63/udump
core_dump_dest = /home/oracle/OraHome1/admin/ref63/cdump
PMON started with pid=2
Load Indicator not supported by OS !
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
Tue Aug 12 11:11:16 2003
starting up 1 shared server(s) ...
RECO started with pid=7
Tue Aug 12 11:11:16 2003
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL
=TCP))'...
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL
=TCP))'...
Tue Aug 12 11:11:16 2003
create controlfile reuse set database "ref63"
datafile '/home/oracle/OraHome1/oradata/ref63/system01.dbf',
'/home/oracle/OraHome1/oradata/ref63/temp01.dbf',
'/home/oracle/OraHome1/oradata/ref63/rbs01.dbf',
'/home/oracle/OraHome1/oradata/ref63/indx01.dbf',
'/home/oracle/OraHome1/oradata/ref63/users01.dbf',
'/home/oracle/OraHome1/oradata/ref63/drsys01.dbf',
'/home/oracle/OraHome1/oradata/ref63/tools01.dbf'
logfile '/home/oracle/OraHome1/oradata/ref63/redo01.log' SIZE 500K,
'/home/oracle/OraHome1/oradata/ref63/redo02.log' SIZE 500K,
'/home/oracle/OraHome1/oradata/ref63/redo03.log' SIZE 500K resetlogs
Tue Aug 12 11:11:24 2003
Successful mount of redo thread 1, with mount id 494131351.
Tue Aug 12 11:11:24 2003
Completed: create controlfile reuse set database "ref63"
data
Tue Aug 12 11:11:24 2003
alter database "ref63" open resetlogs
RESETLOGS after incomplete recovery UNTIL CHANGE 251846
Tue Aug 12 11:11:24 2003

Manny
27 de Octubre del 2009

Bien, para todas las instance oracle, debes de tener
un directorio que se llama 'pfile' buscalo,
por que hay debe estar un file que es el init.ora.

Por eso que te digo de startup pfile=.....

Lo que me haz enviado es como han creado un database partienedo , del controlfile y archive log de oracle.
Prueba como $ORACLE_BASE /admin/<SID>/pfile/init?.ora.
Sabes si la instancia que esta provando a startup es la "ref63". Entonces debes tener un initref63.ora


ovidio.gavira
27 de Octubre del 2009
Ok , aquí lo tengo :

db_name = "ref63"
instance_name = ref63

service_names = ref63

# db_files = 80 # SMALL
# db_files = 400 # MEDIUM
# db_files = 1500 # LARGE

control_files = ("/home/oracle/OraHome1/oradata/ref63/control01.ctl", "/home/ora
cle/OraHome1/oradata/ref63/control02.ctl", "/home/oracle/OraHome1/oradata/ref63/
control03.ctl")

open_cursors = 300
max_enabled_roles = 30
# db_file_multiblock_read_count = 8 # SMALL
# db_file_multiblock_read_count = 16 # MEDIUM
# db_file_multiblock_read_count = 32 # LARGE

db_block_buffers = 2048 # INITIAL
# db_block_buffers = 100 # SMALL
# db_block_buffers = 550 # MEDIUM
# db_block_buffers = 3200 # LARGE

shared_pool_size = 60000000 # changed FMB, Sept. 22, 2003
# shared_pool_size = 3500000 # SMALL
# shared_pool_size = 5000000 # MEDIUM
# shared_pool_size = 9000000 # LARGE

large_pool_size = 614400
#large_pool_size = 6000000
java_pool_size = 20971520

log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800

processes = 150 # INITIAL
# processes = 50 # SMALL
# processes = 100 # MEDIUM
# processes = 200 # LARGE

log_buffer = 163840 # INITIAL
# log_buffer = 32768 # SMALL
# log_buffer = 32768 # MEDIUM
# log_buffer = 163840 # LARGE

# audit_trail = false # if you want auditing
# timed_statistics = false # if you want timed statistics
# max_dump_file_size = 10000 # limit trace file size to 5M each

# Uncommenting the lines below will cause automatic archiving if archiving has
# been enabled using ALTER DATABASE ARCHIVELOG.
# log_archive_start = true
# log_archive_dest_1 = "location=/home/oracle/OraHome1/admin/ref63/arch"
# log_archive_format = arch_%t_%s.arc

# If using private rollback segments, place lines of the following
# form in each of your instance-specific init.ora files:
rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6 )

# If using public rollback segments, define how many
# rollback segments each instance will pick up, using the formula
# # of rollback segments = transactions / transactions_per_rollback_segment
# In this example each instance will grab 40/10 = 4:
# transactions = 40
# transactions_per_rollback_segment = 10

# Global Naming -- enforce that a dblink has same name as the db it connects to
global_names = false

# Edit and uncomment the following line to provide the suffix that will be
# appended to the db_name parameter (separated with a dot) and stored as the
# global database name when a database is created. If your site uses
# Internet Domain names for e-mail, then the part of your e-mail address after
# the '@' is a good candidate for this parameter value.
# db_domain = us.acme.com # global database name is db_name.db_domain

# Uncomment the following line if you wish to enable the Oracle Trace product
# to trace server activity. This enables scheduling of server collections
# from the Oracle Enterprise Manager Console.
# Also, if the oracle_trace_collection_name parameter is non-null,
# every session will write to the named collection, as well as enabling you
# to schedule future collections from the console.
# oracle_trace_enable = true

# define directories to store trace and alert files
background_dump_dest = /home/oracle/OraHome1/admin/ref63/bdump
core_dump_dest = /home/oracle/OraHome1/admin/ref63/cdump
#Uncomment this parameter to enable resource management for your database.
#The SYSTEM_PLAN is provided by default with the database.
#Change the plan name if you have created your own resource plan.# resource_mana
ger_plan = system_plan
user_dump_dest = /home/oracle/OraHome1/admin/ref63/udump

db_block_size = 8192

# Size 4K 5500K 8800K 21000K
#
# To set up a database that multiple instances will be using, place
# all instance-specific parameters in one file, and then have all
# of these files point to a master file using the IFILE command.
# This way, when you change a public
# parameter, it will automatically change on all instances. This is
# necessary, since all instances must run with the same value for many
# parameters. For example, if you choose to use private rollback' segments,
# these must be specified in different files, but since all gc_*
# parameters must be the same on all instances, they should be in one file.
#
# INSTRUCTIONS: Edit this file and the other INIT files it calls for
# your site, either by using the values provided here or by providing
# your own. Then place an IFILE= line into each instance-specific
# INIT file that points at this file.
#
# NOTE: Parameter values suggested in this file are based on conservative
# estimates for computer memory availability. You should adjust values upward
# for modern machines.
#
###############################################################################

Manny
27 de Octubre del 2009
Bien, amigo.

Esto es el init.ora que me referia para startup.
Debes de hacer esto.

linux-oracle# svrmgrl (comando de conexion oracle)
SVRMGRL> connect internal
SVRMGRL> startup mount pfile='todo_el path_donde haz_encontrado_el_pfile/initref63.ora';
SVRMGRL>alter database open;
SVRMGRLexit;
linu-oracle# ipcs -a (ocupacion de oracle en linux "allocation memory")


ok.
Prueba

Manny
27 de Octubre del 2009

El Startup viene eseguido asi:


SVRMGR> CONNECT INTERNAL or
SVRMGR> CONNECT / AS SYDSBA
SVRMGR> startup pfile ='/home/oracle/OraHome1/admin/ref63/initref63.ora';
SVRMGR>EXIT;

Verifica, sin presenta el mismo error:
bye,



ovidio.gavira
27 de Octubre del 2009
Me ha dado el siguiente error :

SVRMGR> connect internal
Connected.
SVRMGR> startup mount pfile='OraHome1/admin/ref63/pfile/initref63.ora'
LRM-00110: syntax error at 'B'
ORA-01078: failure in processing system parameters

Manny
27 de Octubre del 2009
Bien,

Debes de verificar en el initref63.ora
hay un palabra que no le gusta a oracle, a pesar,
que es un comento.
Prueba a quitarla...OK.
LRM-00110: syntax error at 'B'

"# changed FMB, Sept. 22, 2003"

Despues prueba , a startup.......

OK.

Manny
27 de Octubre del 2009

Puedes hacer tenerlo un po' limpio:


db_name = "ref63"
instance_name = ref63

service_names = ref63

control_files = ("/home/oracle/OraHome1/oradata/ref63/control01.ctl", "/home/ora
cle/OraHome1/oradata/ref63/control02.ctl", "/home/oracle/OraHome1/oradata/ref63/
control03.ctl")

open_cursors = 300
max_enabled_roles = 30

db_block_buffers = 2048


shared_pool_size = 60000000


large_pool_size = 614400
#large_pool_size = 6000000
java_pool_size = 20971520

log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800

processes = 150

log_buffer = 163840



rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6 )o
global_names = false

background_dump_dest = /home/oracle/OraHome1/admin/ref63/bdump
core_dump_dest = /home/oracle/OraHome1/admin/ref63/cdump
user_dump_dest = /home/oracle/OraHome1/admin/ref63/udump

db_block_size = 8192


bye.

ovidio.gavira
27 de Octubre del 2009
Gracias Manny, tenía una B al principio del fichero.
Hice el startup mount y bingo, ya tengo otravez la BD operativa.
Lo siento por la lata que te he dado hoy. Te debo una.

Muchas gracias

Manny
27 de Octubre del 2009

Recuerda de abrir el database:

"alter database open;"

Por nada amigo...
Saludos de Italia.

ovidio.gavira
27 de Octubre del 2009
Si , de eso no me olvidé.
Saludos desde Munich.