Solution to the problem caused by sga_max_size modification of oracle9i in order to improve oracle performance, try to modify some parameters. As a result, after sga_max_size = 2 GB is modified, the database fails to start (it is later known that the maximum value cannot exceed 1.7 GB ), when the restart of the report: ORA-27123: unable to attach to shared memory segment Linux Error: 22: Invalid argument www.2cto.com at this time with sysdba login, can not modify the parameter. After crazy Google, use the following solutions: 1. Use another pflie to start the database SQL code startup pfile = '$ {ORACLE_BASE}/admin/*** (sid) /pfile/init *** (sid ). the ora 'pfile file can be found in the directory above. If there is no such file, copy it back to another machine. If there is no such file, I don't know how to do it. Let's just take a look. Www.2cto.com 2. Generate spfile. At this time the database is running normally, but still can not change the parameter, will report an error: SQL code ORA-32001: write to SPFILE requested but no SPFILE specified at startup can be started normally with startup, so you need to convert it into spfile. Run the following command: SQL code create spfile from pfile = '$ {ORACLE_BASE}/admin/*** (sid)/pfile/init *** (sid ). ora 3. Turn it off and try again. I don't know if this step is necessary. I prefer to restart (the most effective troubleshooting method ). SQL code shutdown immediate; startup; 4. It is normal now. Change the parameter. Do not change the parameter this time. SQL code www.2cto.com alter system set sga_max_size = 1500 M scope = spfile; no problem, the database can continue to run. If you have any questions, you can only say that each has its own misfortune. It is said that pfile cannot be edited directly, but it cannot be edited. Of course, I am not sure it is because I have edited it, But I recommend you do not change it. A beginner in database is very depressed, but I still learned a little bit this time: 1. The database can specify a pfile at startup (in fact, I don't quite understand what pfile comes from, but I know it is very important, and it will be useful to back up a backup next time ). 2. You can use spfile to create a pfile. Run the following command (specified path): SQL code www.2cto.com create pfile = '/opt/oracle/init. ora 'from spfile; 3. After you specify pfile to start the database, you need to switch to spfile (or you can specify pfile to start each time, but what is spfile ?). Run the following command: SQL code create spfile from pfile = '$ {ORACLE_BASE}/admin/*** (sid)/pfile/init *** (sid). ora'