场景:两台Oracle数据库所在的服务器共享存储,磁阵损坏;现将RAC改为其中一台数据库单机启动。
首先了解,Oracle中的参数文件是一个包含一系列参数以及参数对应值的系统文件。数据库启动时加载参数文件,按参数文件中的配置决定数据库的物理结构、内存、数据库的限制等各种属性。
因此需要在服务器指定生成一个新的pfile参数文件。
我在测试环境中模拟删除掉配置文件pfiles和dbf来模拟上述场景。
步骤:
1.启动监听
监听查看是停止的,直接启动失败,因为配置了scan ip。
修改配置文件:
vi /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
将其中的scan ip替换为服务器的物理ip地址。
运行lsnrctl start 成功
这里我拿自己的测试库现做的实验
2. 启动数据库
- sqlplus /nolog
- conn /as sysdba
直接startup
会报错:
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+SYS/XXX.ora'
ORA-17503: ksfdopn:10 Failed to open file +XXX.ora
ORA-29701: unable to connect to Cluster Synchronization Service
因为无法访问pfile文件,因为在本机新建参数文件。
一般参数文件可分为:pfile(文本文件)和 spfile(二进制文件)。
系统启动时默认读取 spfile 来初始化实例,可以通过 show parameter spfile;命令来查看实例是不是通过 spfile 启动。如果数据库未启动,运行此命令是报错的。
创建文本文件 pfile,让数据库根据 pfile 中的参数来初始化实例
create pfile='/data/oracle/product/11.2.0/dbs/test_pfile.ora' from spfile;
启动数据库时读取 pfile 文件:
startup pfile='/data/oracle/product/11.2.0/dbs/test_pfile.ora'
启动成功
but,上面是dbf正常的情况,如果磁阵损坏,dbf也是无法访问,需要重新指定的,备份重命名dbf文件,重新启动显示:
alter database datafile '/data/oracle/product/11.2.0/dbs/ptho_ts.dbf' offline drop;
其中archive log list; //查一下数据库的归档模式
打开数据库后看到还有其他的dbf文件
以上是对单机的数据库命令,如果是RAC,还需要停止集群服务。
使用的 crsctl 命令如下:
- crsctl check has ## 检查 HAS 的状态
- crsctl config has ## 显示 HAS 的自动启动/配置
- crsctl disable has ## 禁用 HAS 的自动启动
- crsctl enable has ## 启用 HAS 的自动启动
- crsctl start has ## 启动本地服务器上的 HAS
- crsctl stop has ## 停止本地服务器上的 HAS
下面的2个命令:使用crs 和 使用has 效果是完全一样的:
#crsctl stop crs [-f]
#crsctl start crs
参加文章:
ORACLE 11g RAC 集群的管理与维护(1) —— crsctl 命令之(一) :概述_睿思达DBA_WGX的博客-CSDN博客_oracle11g rac 维护