由于意外导致数据库无法启动

 

首先切换到oracle用户,查看profile文件。

su - oracle

cat .bash_profile

然后进入数据库,查看挂载上

sqlplus “/as sysdba”

 

startuo mount;

 

create pfile=/home/oracle/init_20210731.ora from spfile;

创建文件报错

ORACLE数据库起不来_参数文件

 

然后关闭数据库,再启动,创建文件

shutdown immediate;

startup mount;

create pfile from spfile;

创建成功,退出exit

切换到oracle目录下的dbs查看

cd $ORACLE_HOME/dbs

ls

修改参数

cat initnonsecret.ora

vi initnonsecret.ora

db_recovery_file_dest_size=10G

退出保存

然后重新启动pfile文件

sqlplus "/as sysdba"

shutdown immediate;

startup pfile="/db/oracle/install/dbs/initnonsecret.ora";

退出

然后进入rman,只保留七天的日志文件

rman target /

crosscheck archivelog all;

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

退出

进入数据库

sqlplus "/as sysdba"

create spfile from pfile;

shutdown immediate;

startup;

退出查看监听状态

lsnrctl status

这是数据库已经起来了

 

 

总结:

 

 

使用参数文件pfile创建服务器参数文件spfile:

1,SQL> create spfile from pfile="/u01/app/oracle/admin/db_name/pfile/init$ORACLE_SID.ora";

2,SQL> create spfile from pfile;

3,SQL> create spfile="/u01/oracle/dbs/test_spfile.ora" from pfile="/u01/app/oracle/admin/db_name/

pfile/init$ORACLE_SID.ora";

4,SQL> create spfile="/u01/oracle/dbs/test_spfile.ora" from pfile;

综上所述,如果数据库中没有使用服务器参数文件,则不能使用服务器参数文件创建文本参数文件,因为服务器中可

能使用文本参数文件。

用show命令查看到底使用服务器参数文件还是文本参数文件:

SQL> show parameter spfile

NAME        TYPE         VALUE

-------------------------------

spfile     string              

如果这里显示为空,表示使用的是文本参数文件

 

 

 

 

数据库在启动的过程当中默认读取参数文件的顺序是:在$ORACLE_HOME/dbs路径下查找并使用名为spfileSID.ora的参数文件启动,次之查找spfile.ora文件,最后才会查找名为initSID.ora的pfile来启动数据库,若这三个文件都没有查到,则数据库在默认情况下就启不来。当然,我们也可以在启动的过程中显示指定使用一个非默认路径下的某个非默认命名的pfile来启动数据库,命令类似于{SQL>startup pfile=/u01/app/…./init.ora}。但是,我们却不可以在启动的过程中显示指定用某个SPFILE来启动数据库!