CRS的几种用法

这几天从网上下载了个RAC的视频,在自己的电脑上利用虚拟机环境试着装了一下,然后在网上找了几个RAC中常的管理命令,自己总结一下。

下面的内容摘自网络上的他人的博客。

usermod -G dba,oinstall,disk oracle

这个命令对设备文件自动连接的(PNP)的要ORACLE用户访问,特别有用.

crs命令用法及offline, unknown 状态处理

$ORA_CRS_HOME/bin/crs_stat  -t   查看crs各服务状态 。

$ORA_CRS_HOME/bin/crs_start –all
此命令用来启动所有的集群服务,但是启动的前提是 资源状态State不能是UNKNOWN。
$ORA_CRS_HOME/bin/crs_start 集群服务名(集群服务名可以通过$ORA_CRS_HOME/bin/crs_stat得到)

$ORA_CRS_HOME/bin/crs_stop -all
$ORA_CRS_HOME/bin/crs_stop 集群服务名(集群服务名可以通过$ORA_CRS_HOME/bin/crs_stat得到)
上面的一组crs命令是用来启动关闭crs服务的

 

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

 

发现unknown 的服务如何处理 ?

[oracle@rac1 ~]$crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....CL1.srv application ONLINE UNKNOWN rac1
ora....CL2.srv application ONLINE UNKNOWN rac2
ora....TEST.cs application ONLINE UNKNOWN rac2
ora....L1.inst application ONLINE OFFLINE
ora....L2.inst application ONLINE OFFLINE
ora.ORCL.db application ONLINE UNKNOWN rac1
ora....SM1.asm application ONLINE UNKNOWN rac1
ora....C1.lsnr application ONLINE UNKNOWN rac1
ora.rac1.gsd application ONLINE UNKNOWN rac1
ora.rac1.ons application ONLINE UNKNOWN rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE UNKNOWN rac2
ora....C2.lsnr application ONLINE UNKNOWN rac2
ora.rac2.gsd application ONLINE UNKNOWN rac2
ora.rac2.ons application ONLINE UNKNOWN rac2
ora.rac2.vip application ONLINE ONLINE rac2

可以各种原因导致服务呈现unknown 状态,比如两个节点时间差太多,比如1分钟,可能导致这个异常。

那么我们需要首先处理好这个异常,然后去处理unknown状态。

$ORA_CRS_HOME/bin/crs_stop –all只能停掉State为ONLINE的服务(使之变成offline) ,状态为UNKNOWN的资源不能通过这个命令关闭, 因此可以通过  $ORA_CRS_HOME/bin/crs_stop 服务名的方式单独停止那些状态为UNKNOWN的资源。服务名称的获取可以通过 $crs_stat  -v 得到 。

[oracle@rac1 ~]$crs_stop  -all             停掉状态为online的服务 。

[oracle@rac1 ~]$crs_stop    ora.rac1.LISTENER_RAC1.lsnr        停掉状态为unknown 状态的服务 。

例子 :

ecsrac01</home/oracle>$crs_stop  ora.ecsrac01.ons
ecsrac01</home/oracle>$crs_stop  ora.ecsrac01.gsd
ecsrac01</home/oracle>$crs_stop  ora.ecsrac01.vip
ecsrac01</home/oracle>$crs_stop  ora.ecsrac02.LISTENER_ECSRAC02.lsnr
ecsrac01</home/oracle>$crs_stop  ora.ecsdb.ecsdb1.inst 

 

 

再次查看资源状态:


[oracle@rac1 ~]$ $ORA_CRS_HOME/bin/crs_stat   -t                  所有服务变成offline 状态 
Name Type Target State Host
------------------------------------------------------------
ora....CL1.srv application OFFLINE OFFLINE
ora....CL2.srv application OFFLINE OFFLINE
ora....TEST.cs application OFFLINE OFFLINE
ora....L1.inst application OFFLINE OFFLINE
ora....L2.inst application OFFLINE OFFLINE
ora.ORCL.db application OFFLINE OFFLINE
ora....SM1.asm application OFFLINE OFFLINE
ora....C1.lsnr application OFFLINE OFFLINE
ora.rac1.gsd application OFFLINE OFFLINE
ora.rac1.ons application OFFLINE OFFLINE
ora.rac1.vip application OFFLINE OFFLINE
ora....SM2.asm application OFFLINE OFFLINE
ora....C2.lsnr application OFFLINE OFFLINE
ora.rac2.gsd application OFFLINE OFFLINE
ora.rac2.ons application OFFLINE OFFLINE
ora.rac2.vip application OFFLINE OFFLINE   


此时可以重启所有crs资源了
[oracle@rac1 ~]$ $ORA_CRS_HOME/bin/crs_start –all(注意,这里是在oracle用户下操作) 

此时,看到crs所有资源全部启动,问题解决。
其它一些常用命令:
$ORA_CRS_HOME/bin/crsctl check crs用于检查后台进程状态
$ORA_CRS_HOME/bin/crsctl start resources启动crs资源
$ORA_CRS_HOME/bin/crsctl start crs启动crs,需要超级用户操作。
$ORA_CRS_HOME/bin/crsctl stop crs关闭crs,需要超级用户操作。
$ORA_CRS_HOME/bin/crs_unregister取消注册crs
$ORA_CRS_HOME/bin/ocrcheck检查ocr设置信息用ocrcheck
$ORA_CRS_HOME/bin/crsctl query css votedisk检查表决磁盘信息
举例:
[oracle@rac2 css]$ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 104344
Used space (kbytes) : 4568
Available space (kbytes) : 99776
ID : 328160432
Device/File Name : /dev/raw/raw4
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw5
Device/File integrity check succeeded
Cluster registry integrity check succeeded
[oracle@rac2 css]$ $ORA_CRS_HOME/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 104344
Used space (kbytes) : 4568
Available space (kbytes) : 99776
ID : 328160432
Device/File Name : /dev/raw/raw4
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw5
Device/File integrity check succeeded
Cluster registry integrity check succeeded
[oracle@rac2 css]$crsctl query css votedisk
0. 0 /dev/raw/raw6
1. 0 /dev/raw/raw7
2. 0 /dev/raw/raw8
located 3 votedisk(s).
注意:
执行crsctl命令的可以是root用户,也可以是oracle用户,如果是root用户要指定绝对路径,但是对于crsctl start crs和crsctl stop crs必须是root用户来执行。
crs主要进程
(1)crsd
负责管理ha操作
管理crs资源,如linstener,vip,ons,gsn等
由root用户管理、启动
(2)ocssd
管理各节点的关系,用于节点间通信
由oracle用户运行管理
(3)oprocd
集群进程管理 —Process monitor for the cluster.
仅在没有使用vendor的集群软件状态下运行
(4)evmd
事件检测进程,由oracle用户运行管理
(5)主要log位置
$ORA_CRS_HOME/log/节点主机名/racg
$ORA_CRS_HOME/log/节点主机名/crsd
$ORA_CRS_HOME/crs/init
$ORA_CRS_HOME/css/log
$ORA_CRS_HOME/css/init
$ORA_CRS_HOME/evm/log
$ORA_CRS_HOME/evm/init
$ORA_CRS_HOME/srvm/log

### 关于 `ValueError: Must pass either crs or epsg` 的解决方案 在处理地理空间数据时,`ValueError: Must pass either crs or epsg` 是一个常见的错误。此错误通常发生在使用 GeoPandas 或 Fiona 创建或操作矢量数据集时未指定坐标参考系统 (CRS)[^3]。 #### 错误原因分析 该错误表明,在创建 GeoDataFrame 或保存文件时,缺少必要的 CRS 参数。无论是通过手动定义还是从现有数据继承,都需要明确提供 CRS 或 EPSG 代码以确保几何对象的空间上下文被正确定义[^1]。 --- #### 解决方案 以下是几种可能的解决方法: 1. **显式设置 CRS** 如果您正在构建一个新的 GeoDataFrame,则需要为其分配一个有效的 CRS。可以通过以下方式实现: ```python import geopandas as gpd # 假设 geometry 列已存在 df = gpd.GeoDataFrame(df, geometry='geometry', crs="EPSG:4326") ``` 这里指定了 WGS84 投影(即 EPSG:4326),这是最常见的全球投影之一[^3]。 2. **读取文件时验证 CRS** 当加载现有的 Shapefile、GeoJSON 文件或其他格式的数据时,请确认其是否携带了正确的 CRS 定义。如果缺失,可以重新设定: ```python geo_df = gpd.read_file('path_to_your_data.shp') if geo_df.crs is None: geo_df.set_crs(epsg=4326, inplace=True) # 设置默认 CRS ``` 3. **导出前检查 CRS** 在将 GeoDataFrame 导出到磁盘之前,始终要确保它具有有效 CRS。例如: ```python output_path = 'output.geojson' if not geo_df.crs: raise ValueError("CRS must be defined before exporting.") geo_df.to_file(output_path, driver='GeoJSON') # 使用其他驱动程序如 ESRI Shapefile 亦可 ``` 4. **利用 Leafmap 显示地图时同步 CRS** 若结合 leafmap 展示栅格与矢量叠加效果,需注意输入数据的一致性。例如: ```python import leafmap m = leafmap.Map() raster_layer = "image.tif" vector_layer = "data.gpkg" m.add_raster(raster_layer, layer_name="Raster Layer") m.add_vector(vector_layer, layer_name="Vector Layer", crs="EPSG:4326") # 确保一致的 CRS m ``` 上述代码片段展示了如何强制指定 CRS 来避免潜在冲突[^2]。 --- #### 总结 为了防止出现 `ValueError: Must pass either crs or epsg`,务必在整个工作流中保持清晰且统一的 CRS 配置。这不仅有助于减少运行时异常的发生概率,还能提高最终可视化成果的质量准确性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值