oracle中clusterware的命令集有几种
小编给大家分享一下oracle中clusterware的命令集有几种,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
oracle clusterware的命令集可以分为以下4种:
节点层:osnodes
网络层:oifcfg
集群层:crsctl, ocrcheck,ocrdump,ocrconfig
应用层:srvctl,onsctl,crs_stat
下面分别来介绍这些命令。
1、节点层
olsnodes,这个命令用来显示集群点列表,可用的参数如下:grid用户执行
$olsnodes -h
用法: olsnodes [-n] [-p][-i] [<node> | -l] [-g] [-v]
-n打印节点编号和节点名
-p打印专用互联名和节点名
-i打印虚拟ip名和节点名
<node>打印指定节点的信息
-l打印本地节点的信息
-g启用事件记录
-v在详细模式下运行
--这些参数可以混合使用,如下:
[grid@dbrac2 bin]$ which olsnodes
/oracle/app/11.2.0/grid/bin/olsnodes
[grid@dbrac2 bin]$
[grid@dbrac2 bin]$ olsnodes
dbrac1
dbrac2
[grid@dbrac2 bin]$ olsnodes -n
dbrac1 1
dbrac2 2
[grid@dbrac2 bin]$
[grid@dbrac2 bin]$ olsnodes -s
dbrac1 active
dbrac2 active
[grid@dbrac2 bin]$
2、网络层
网络层由各个节点的网络组件组成,包括2个物理网卡和3个ip地址。也只有一个命令:oifcfg
oifcfg命令的格式如下:
用法:
[grid@dbrac2 bin]$ oifcfg
name:
oifcfg - oracle interface configuration tool.
usage: oifcfg iflist [-p [-n]]
oifcfg setif {-node <nodename> | -global} {<if_name>/<subnet>:<if_type>}...
oifcfg getif [-node <nodename> | -global] [ -if <if_name>[/<subnet>] [-type <if_type>] ]
oifcfg delif {{-node <nodename> | -global} [<if_name>[/<subnet>]] [-force] | -force}
oifcfg [-help]
<nodename> - name of the host, as known to a communications network
<if_name> - name by which the interface is configured in the system
<subnet> - subnet address of the interface
<if_type> - type of the interface { cluster_interconnect | public }
<nodename> -为通信网络所知的主机名
<if_name> -系统中配置的接口的名称 (interface_name网络接口包括名称)
<subnet> -接口的子网地址 (subnet网段地址)
<if_type> -接口类型{ cluster_interconnect | public | storage } (interface_type接口类型)
oifcfg命令用来定义和修改oracle集群需要的网卡属性,这些属性包括网卡的网段地址,子网掩码,接口类型等。
要想正确的使用这个命令,必须先知道oracle是如何定义网络接口的,oracle的每个网络接口包括名称,网段地址,接口类型3个属性:interface_name/subnet:interface_type。
这些属性中没有ip地址,但接口类型有两种,public和private,前者说明接口用于外部通信,用于oracle net和vip地址,而后者说明接口用于interconnect。
接口的配置方式分为两类:
global和node-specific。前者说明集群所有节点的配置信息相同,也就是说所有节点的配置是对称的;而后者意味着这个节点的配置和其他节点配置不同,是非对称的。
iflist:显示网口列表
getif:获得单个网口信息
setif:配置单个网口
delif:删除网口
--显示网口列表
[grid@dbrac1 ~]$ oifcfg iflist
eth0 192.168.56.0
eth2 10.10.10.0
eth2 169.254.0.0
--显示网口信息
[grid@dbrac1 ~]$ oifcfg getif
eth0 192.168.56.0 global public
eth2 10.10.10.0 global cluster_interconnect
[grid@dbrac1 ~]$
--查看public类型的网卡
[grid@dbrac2 bin]$ oifcfg getif -type public
eth0 192.168.56.0 global public
--删除接口配置
[grid@dbrac2 bin]$ oifcfg delif -global
--添加接口配置
[grid@dbrac2 bin]$ oifcfg setif -global eth0/192.168.1.119:public
[grid@dbrac2 bin]$ oifcfg setif -globaleth2/10.85.10.119:cluster_interconnect
3、集群层
集群层是指由clusterware组成的核心集群, 这一层负责维护集群内的共享设备,并为应用集群提供完整的集群状态视图,应用集群依据这个视图进行调整。这一层共有4个命令:crsctl, ocrcheck,ocrdump,ocrconfig.后三个是针对ocr磁盘的。
3.1 crsctl
crsctl命令可以用来检查crs进程栈,每个crs进程状态,管理votedisk,跟踪crs进程功能
3.1.1 检查crs状态
[grid@dbrac2 bin]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[grid@dbrac2 bin]$
--检查单个状态
[grid@dbrac2 bin]$ crsctl check cssd
CRS-272: This command remains for backward compatibility only
Cluster Synchronization Services is online
[grid@dbrac2 bin]$ crsctl check crsd
CRS-272: This command remains for backward compatibility only
Cluster Ready Services is online
[grid@dbrac2 bin]$ crsctl check evmd
CRS-272: This command remains for backward compatibility only
Event Manager is online
[grid@dbrac2 bin]$
3.1.2 配置crs栈是否自启动
crs进程栈默认随着操作系统的启动而自启动,有时出于维护目的需要关闭这个特性,可以用root用户执行下面命令。
[grid@dbrac2 bin]$ crsctl disable crs
[grid@dbrac2 bin]$ crsctl enable crs
3.1.3 启动,停止crs栈
oracle在10.1时,必须通过重新启动系统重启clusterware,但是从oracle 10.2开始,可以通过命令来启动和停止crs。
--启动crs:
[grid@dbrac2 bin]$ crsctl start crs
attempting to start crs stack
the crs stack will be started shortly
--关闭crs:
[grid@dbrac2 bin]$ crsctl stop crs
stopping resources.
successfully stopped crs resources
stopping cssd.
shutting down css daemon.
shutdown request successfully issued.
3.1.4 查看votedisk磁盘位置
[grid@dbrac2 bin]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 844bb4b723954f31bf8e6a0002e335aa (/dev/asm_ocrvote1) [OCRVOTE]
2. ONLINE 4a88237c23a84fe5bf8f235e84d60b5b (/dev/asm_ocrvote2) [OCRVOTE]
3. ONLINE 8398f24ab1e34faebf890fe7a7ef7919 (/dev/asm_ocrvote3) [OCRVOTE]
Located 3 voting disk(s).
[grid@dbrac2 bin]$
3.1.5 查看和修改crs参数
--查看参数:用get
[grid@dbrac2 bin]$ crsctl get css misscount
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.
[grid@dbrac2 bin]$
[grid@dbrac2 bin]$ crsctl get css disktimeout
CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.
--修改参数: 用set,但是这个功能要慎用
[grid@dbrac2 bin]$ crsctl set css miscount 60
3.1.6 跟踪crs模块,提供辅助功能
crs由crs,css,evm三个服务组成,每个服务又是由一系列module组成,crsctl允许对每个module进行跟踪,并把跟踪内容记录到日志中。
[grid@dbrac2 bin]$ crsctl lsmodules css
[grid@dbrac2 bin]$ crsctl lsmodules evm
--跟踪cssd模块,需要root用户执行:
[grid@dbrac2 bin]$ crsctl debug log css "cssd:1"
configuration parameter trace is now set to 1.
set crsd debug module: cssd level: 1
--查看跟踪日志
[root@rac1 cssd]# pwd
/u01/app/oracle/product/crs/log/rac1/cssd
[root@rac1 cssd]# more ocssd.log
…
3.1.7 维护votedisk
以图形方式安装clusterware的过程中,在配置votedisk时,如果选择external redundancy策略,则只能填写一个votedisk。但是即使使用external redundancy作为冗余策略,也可以添加多个vodedisk,只是必须通过crsctl命令来添加,添加多个votedisk后,这些votedisk互为镜像,可以防止votedisk的单点故障。
需要注意的是,votedisk使用的是一种“多数可用算法”,如果有多个votedisk,,则必须一半以上的votedisk同时使用,clusterware才能正常使用。 比如配置了4个votedisk,坏一个votedisk,集群可以正常工作,如果坏了2个,则不能满足半数以上,集群会立即宕掉,所有节点立即重启,所以如果添加votedisk,尽量不要只添加一个,而应该添加2个。这点和ocr不一样。ocr只需配置一个。
添加和删除votedisk的操作比较危险,必须停止数据库,停止asm,停止crs stack后操作,并且操作时必须使用-force参数。
1) 查看当前配置
[grid@dbrac2 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 844bb4b723954f31bf8e6a0002e335aa (/dev/asm_ocrvote1) [OCRVOTE]
2. ONLINE 4a88237c23a84fe5bf8f235e84d60b5b (/dev/asm_ocrvote2) [OCRVOTE]
3. ONLINE 8398f24ab1e34faebf890fe7a7ef7919 (/dev/asm_ocrvote3) [OCRVOTE]
Located 3 voting disk(s).
[grid@dbrac2 ~]$
2) 停止所有节点的crs:
[grid@dbrac2 bin]$ crsctl stop crs
3) 添加votedisk
[grid@dbrac2 bin]$ crsctl add css votedisk /dev/raw/rac1 -force
注意:即使在crs关闭后,也必须通过-force参数来添加和删除votedisk,并且-force参数只有在crs关闭的场合下使用才安全,否则会报:cluter is not a ready state for online disk addition.
4) 确认添加后的情况:
[grid@dbrac2 bin]$ crsctl query css votedisk
5) 启动crs
[grid@dbrac2 bin]$ crsctl start crs
--可以动态更改表决磁盘配置,如添加新的表决磁盘,请使用以下命令:
# crsctl add css votedisk <new voting disk path>
--要删除表决磁盘,请使用以下命令:
# crsctl delete css votedisk <old voting disk path>
--如果所有节点上的 Oracle Clusterware 都已关闭,请使用 –force 选项:
# crsctl add css votedisk <new voting disk path> -force
# crsctl delete css votedisk <old voting disk path> -force
6)备份和恢复表决磁盘:
当在如下情况下,可使用 dd 命令备份一个表决磁盘
– 在安装 Oracle Clusterware 之后
– 在添加或删除节点之后
– 可以联机执行
$ crsctl query css votedis
$ dd if=<voting disk path> of=<backup path> bs=4k
可以使用以下方法恢复表决磁盘:使用 dd 命令恢复第一个表决磁盘,然后根据需要对该磁盘进行多路复用。如果没有可用的表决磁盘备份,则应重新安装 Oracle Clusterware。
3.2 ocr命令系列
oracle clusterware把整个集群的配置信息放在共享存储上,这个存储就是ocr disk.在整个集群中,只有一个节点能对ocr disk进行读写操作,这个节点叫作master node,所有节点都会在内存中保留一份ocr的拷贝,同时有个ocr process从这个内存中读取内容。ocr内容发生改变时,由master node的ocr process负责同步到其他节点的ocr process。
因为ocr的内容如此重要,oracle每4个小时对其做一次备份,并且保留最后的3个备份,以及前一天,前一周的最后一个备份。这个备份由master node crsd进程完成,备份的默认位置是$crs_home\cdata\<cluster_name>目录下。每次备份后,备份文件名自动更改,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。这些备份文件除了保存在本地,dba还应该在其他存储设备上保留一份,以防止意外的存储故障。
3.2.1 ocrdump
该命令能以ascii的方式打印出ocr的内容,但是这个命令不能用作ocr的备份恢复,也就是说产生的文件只能用作阅读,而不能用于恢复。+
命令格式:
[grid@acctdb01 ~]$ ocrdump -help
Name:
ocrdump - Dump contents of Oracle Cluster/Local Registry to a file.
Synopsis:
ocrdump [-local] [<filename>|-stdout] [-backupfile <backupfilename>] [-keyname <keyname>] [-xml] [-noheader]
Description:
Default filename is OCRDUMPFILE. Examples are:
prompt> ocrdump
writes cluster registry contents to OCRDUMPFILE in the current directory
prompt> ocrdump MYFILE
writes cluster registry contents to MYFILE in the current directory
prompt> ocrdump -stdout -keyname SYSTEM
writes the subtree of SYSTEM in the cluster registry to stdout
prompt> ocrdump -local -stdout -xml
writes local registry contents to stdout in xml format
prompt> ocrdump -backupfile /oracle/CRSHOME/backup.ocr -stdout -xml
writes registry contents in the backup file to stdout in xml format
Notes:
The header information will be retrieved based on best effort basis.
A log file will be created in
$ORACLE_HOME/log/<hostname>/client/ocrdump_<pid>.log. Make sure
you have file creation privileges in the above directory before
running this tool.
Use option '-local' to indicate that the operation is to be performed on the Oracle Local Registry.
[grid@acctdb01 ~]$
参数说明:
-stdout:把内容打印输出到屏幕上
filename:内容输出到文件中
-keyname:只打印某个键及其子健内容
-xml:以xml格式打印输出
示例:把system.css键的内容以.xml格式打印输出到屏幕
[grid@dbrac2 bin]$ocrdump -stdout -keyname system.css -xml|more
……
这个命令在执行过程中,会在$crs_home\log\<node_name>\client目录下产生日志文件,文件名ocrdump_<pid>.log,如果命令执行出现问题,可以从这个日志查看问题原因。
3.2.2 ocrcheck(以root命令执行)
ocrcheck命令用于检查ocr内容的一致性,命令执行过程会在$crs_home\log\nodename\client目录下产生ocrcheck_pid.log日志文件。 这个命令不需要参数。
语法:
[grid@dbrac2 ~]$ ocrcheck -h
Name:
ocrcheck - Displays health of Oracle Cluster/Local Registry.
Synopsis:
ocrcheck [-config] [-local]
-config Displays the configured locations of the Oracle Cluster Registry.
This can be used with the -local option to display the configured
location of the Oracle Local Registry
-local The operation will be performed on the Oracle Local Registry.
Notes:
A log file will be created in
$ORACLE_HOME/log/<hostname>/client/ocrcheck_<pid>.log.
File creation privileges in the above directory are needed
when running this tool.
--root执行
[grid@dbrac2 ~]$
[root@dbrac2 ~]# /oracle/app/11.2.0/grid/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3120
Available space (kbytes) : 259000
ID : 6988404
Device/File Name : +OCRVOTE
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
[root@dbrac2 ~]#
3.2.3 ocrconfig
该命令用于维护ocr磁盘,安装clusterware过程中,如果选择external redundancy冗余方式,则只能输入一个ocr磁盘位置。但是oracle允许配置两个ocr磁盘互为镜像,以防止ocr磁盘的单点故障。ocr磁盘和votedisk磁盘不一样,ocr磁盘最多只能有两个,一个primary ocr和一个mirror ocr。
[grid@dbrac2 ~]$ ocrconfig -help
Name:
ocrconfig - Configuration tool for Oracle Cluster/Local Registry.
Synopsis:
ocrconfig [option]
option:
[-local] -export <filename>
- Export OCR/OLR contents to a file
[-local] -import <filename> - Import OCR/OLR contents from a file
[-local] -upgrade [<user> [<group>]]
- Upgrade OCR from previous version
-downgrade [-version <version string>]
- Downgrade OCR to the specified version
[-local] -backuploc <dirname> - Configure OCR/OLR backup location
[-local] -showbackup [auto|manual] - Show OCR/OLR backup information
[-local] -manualbackup - Perform OCR/OLR backup
[-local] -restore <filename> - Restore OCR/OLR from physical backup
-replace <current filename> -replacement <new filename>
- Replace an OCR device or file <current filename> with <new filename>
-add <filename> - Add a new OCR device/file
-delete <filename> - Remove a OCR device/file
-overwrite - Overwrite OCR configuration on disk
-repair -add <filename> | -delete <filename> | -replace <current filename> -replacement <new filename>
- Repair OCR configuration on the local node
-help - Print out this help information
Note:
* A log file will be created in
$ORACLE_HOME/log/<hostname>/client/ocrconfig_<pid>.log. Please ensure
you have file creation privileges in the above directory before
running this tool.
* Only -local -showbackup [manual] is supported.
* Use option '-local' to indicate that the operation is to be performed on the Oracle Local Registry.
[grid@dbrac2 ~]$
--查看自助备份
在缺省情况下,ocr自动备份在$crs_home\cdata\cluster_name目录下,可以通过ocrconfig -backuploc <directory_name>命令修改到新的目录
[grid@dbrac2 ~]$ ocrconfig -showbackup
dbrac2 2018/01/12 03:10:52 /oracle/app/11.2.0/grid/cdata/dbrac-cluster/backup00.ocr
dbrac2 2017/10/20 00:32:00 /oracle/app/11.2.0/grid/cdata/dbrac-cluster/backup01.ocr
dbrac2 2017/10/19 15:09:44 /oracle/app/11.2.0/grid/cdata/dbrac-cluster/backup02.ocr
dbrac2 2018/01/12 03:10:52 /oracle/app/11.2.0/grid/cdata/dbrac-cluster/day.ocr
dbrac2 2018/01/12 03:10:52 /oracle/app/11.2.0/grid/cdata/dbrac-cluster/week.ocr
PROT-25: Manual backups for the Oracle Cluster Registry are not available
[grid@dbrac2 ~]$
3.2.4 使用导出,导入进行备份和恢复(root用户执行)
oracle推荐在对集群做调整时,比如增加,删除节点之前,应该对ocr做一个备份,可以使用export备份到指定文件,如果做了replace或者restore等操作,oracle建议使用cluvfy comp ocr -n all命令来做一次全面的检查。该命令在clusterware的安装软件里。
1)、首先关闭所有节点的crs
[root@dbrac1 ~]# /oracle/app/11.2.0/grid/bin/crsctl stop crs
[root@dbrac2 ~]# /oracle/app/11.2.0/grid/bin/crsctl stop crs
2)、用root用户导出ocr内容
[root@dbrac2 ~]# /oracle/app/11.2.0/grid/bin/ocrconfig -export /home/grid/ocr.exp
--查看
[grid@dbrac2 ~]$ pwd
/home/grid
[grid@dbrac2 ~]$ ls -lrt ocr*
-rw------- 1 root root 122854 Jan 12 03:42 ocr.exp
[grid@dbrac2 ~]$
3)、重启crs
[root@dbrac1 ~]# /oracle/app/11.2.0/grid/bin/crsctl start crs
[root@dbrac2 ~]# /oracle/app/11.2.0/grid/bin/crsctl start crs
4)、检查crs状态
[grid@dbrac2 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[grid@dbrac2 ~]$
5)破坏OCR内容
[root@rac1 bin]# dd if=/dev/zero of=/dev/raw/rac1 bs=1024 count=102400
102400+0 records in
102400+0 records out
6)、检查ocr一致性
[root@dbrac2 ~]# ocrcheck
prot-601: failed to initialize ocrcheck
7)、使用cluvfy工具检查一致性
[root@dbrac2 ~]# runcluvfy.sh comp ocr -n all
verifying ocr integrity
unable to retrieve nodelist from oracle clusterware.
verification cannot proceed.
8)、使用import恢复ocr内容
[root@dbrac2 ~]# ocrconfig -import /home/grid/ocr.exp
9)、再次检查ocr
[root@dbrac2 ~]# ocrcheck
10)、使用cluvfy工具检查
[root@rac1 cluvfy]# runcluvfy.sh comp ocr -n all
3.2.5 移动ocr文件位置
实例演示将ocr从/dev/raw/rac1移动到/dev/raw/raw3上
1) 查看是否有ocr备份
[grid@dbrac2 bin]$ocrconfig -showbackup
如果没有备份,可以立即执行一次导出作为备份:
[root@dbrac2 ~]# ocrconfig -export /u01/ocrbackup -s online
2) 查看当前ocr配置
[root@dbrac2 ~]# ocrcheck
3)添加一个mirror ocr
[root@dbrac2 ~]# ocrconfig -replace ocrmirror /dev/raw/raw4
4)确认添加成功
[grid@dbrac2 bin]$ocrcheck
5)改变primary ocr位置
[root@dbrac2 ~]# ocrconfig -replace ocr /dev/raw/raw3
确认修改成功:
[grid@dbrac2 bin]$ocrcheck
6)使用ocrconfig命令修改后,所有rac节点上的/etc/oracle/ocr.loc文件内容也会自动同步了,如果没有自动同步,可以手工的改成以下内容。
[grid@dbrac2 bin]$more /etc/oracle/ocr.loc
ocrconfig_loc=/dev/raw/rac1
ocrmirrorconfig_loc=/dev/raw/raw3
local_only=false
总结:
使用物理备份恢复 OCR
1. 找到物理备份:
$ ocrconfig –showbackup
2. 检查其内容:
# ocrdump –backupfile file_name
3. 停止所有节点上的Oracle Clusterware:
# crsctl stop
4. 还原 OCR 物理备份:
# ocrconfig –restore <CRS HOME>/cdata/jfv_clus/day.ocr
5. 重新启动所有节点上的Oracle Clusterware:
# crsctl start crs
6. 检查 OCR 完整性:
$ cluvfy comp ocr -n all
使用逻辑备份恢复 OCR
1. 找到使用 OCR 导出文件创建的逻辑备份。
2. 停止所有节点上的 Oracle Clusterware:
# crsctl stop crs
3. 还原逻辑 OCR 备份:
# ocrconfig –import /shared/export/ocrback.dmp
4. 重新启动所有节点上的 Oracle Clusterware:
# crsctl start crs
5. 检查 OCR 完整性:
$ cluvfy comp ocr -n all
替换 OCR
# ocrcheck
Status of Oracle Cluster Registry is as follows:
Version : 2
Total space (kbytes) : 200692
Used space (kbytes) : 3752
Available space (kbytes) : 196940
ID : 495185602
Device/File Name : /oradata/OCR1
Device/File integrity check succeeded
Device/File Name : /oradata/OCR2
Device/File needs to be synchronized with the other device
# ocrconfig –replace ocrmirror /oradata/OCR2
修复 OCR 配置
1. 停止节点 2 上的 Oracle Clusterware:
# crsctl stop crs
2. 从节点 1 添加 OCR 镜像:
# ocrconfig –replace ocrmirror /OCRMirror
3. 修复节点 2 上的 OCR 镜像位置:
# ocrconfig –repair ocrmirror /OCRMirror
4. 启动节点 2 上的 Oracle Clusterware:
# crsctl start crs
OCR 注意事项
1. 如果使用裸设备还原 OCR 文件,则在执行添加或替换操作之前需要先确保这些文件已存在。
2. 使用 ocrconfig 时,必须具有 root 用户身份才能添加、替换或删除 OCR 文件。
3. 添加或替换 OCR 文件时,其镜像需要处于联机状态。
4. 如果删除了 OCR 主文件,则 OCR 镜像文件将成为主文件。
5. 任何时候都不能删除最后一个保留的 OCR 文件。
4、应用层
应用层就是指rac数据库了,这一层有若干资源组成,每个资源都是一个进程或者一组进程组成的完整服务,这一层的管理和维护都是围绕这些资源进行的。有如下命令:srvctl, onsctl, crs_stat三个命令。
4.1.1 crs_stat
crs_stat这个命令用于查看crs维护的所有资源的运行状态,如果不带任何参数时,显示所有资源的概要信息。每个资源显示是各个属性:资源名称,类型,目录,资源运行状态等。
[grid@dbrac2 bin]$ crs_stat
……
也可以指定资源名,查看指定资源的状态,并可以使用-v和-p选项,以查看详细信息,其中-p参数显示的内容比-v更详细。
1) 查看制定资源状态
[grid@dbrac2 ~]$ crs_stat ora.dbrac2.vip
NAME=ora.dbrac2.vip
TYPE=ora.cluster_vip_net1.type
TARGET=ONLINE
STATE=ONLINE on dbrac2
[grid@dbrac2 ~]$
2) 使用-v选项,查看详细内容,这时输出多出4项内容,分别是允许重启次数,已执行重启次数,失败阀值,失败次数。
[grid@dbrac2 ~]$ crs_stat -v ora.dbrac2.vip
NAME=ora.dbrac2.vip
TYPE=ora.cluster_vip_net1.type
RESTART_ATTEMPTS=0
RESTART_COUNT=0
FAILURE_THRESHOLD=0
FAILURE_COUNT=0
TARGET=ONLINE
STATE=ONLINE on dbrac2
[grid@dbrac2 ~]$
3) 使用-p选项查看更详细内容
[grid@dbrac2 ~]$ crs_stat -p ora.dbrac2.vip
NAME=ora.dbrac2.vip
TYPE=ora.cluster_vip_net1.type
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AUTO_START=restore
CHECK_INTERVAL=1
DESCRIPTION=Oracle VIP resource
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=dbrac2
PLACEMENT=favored
RESTART_ATTEMPTS=0
SCRIPT_TIMEOUT=60
START_TIMEOUT=120
STOP_TIMEOUT=0
UPTIME_THRESHOLD=1h
[grid@dbrac2 ~]$
这些字段是所有资源共有的,但是根据资源类型不同,某些字段可以空值。
4) 使用-ls选项,可以查看每个资源的权限定义,权限定义格式和linux一样。
[grid@dbrac2 ~]$ crs_stat -ls ora.dbrac2.vip
Name Owner Primary PrivGrp Permission
-----------------------------------------------------------------
ora.dbrac2.vip root root rwxr-xr--
[grid@dbrac2 ~]$
这个命令用于管理配置ons(oracle notification service). ons是oracle clusterware实现fan event push模型的基础。在传统模型中,客户端需要定期检查服务器来判断服务端状态,本质上是一个pull模型,oracle 10g引入了一个全新的push机制╟fan(fast application notification),当服务端发生某些事件时,服务器会主动的通知客户端这种变化,这样客户端就能尽早得知服务端的变化。而引入这种机制就是依赖ons实现, 在使用onsctl命令之前,需要先配置ons服务。
4.1.2.1 ons配置内容
在rac环境中,需要使用$crs_home下的ons,而不是$oracle_home下面的ons, 这点需要注意。 配置文件在$crs_home\opmn\conf\ons.config.
[grid@acctdb01 conf]$ pwd
/oracle/app/11.2.0/grid/opmn/conf
[grid@acctdb01 conf]$ ls
ons.config ons.config.acctdb01 ons.config.acctdb01.bak ons.config.bak.acctdb01
[grid@acctdb01 conf]$ more ons.config
usesharedinstall=true
allowgroup=true
localport=6100 # line added by Agent
remoteport=6200 # line added by Agent
nodes=acctdb01:6200,acctdb02:6200 # line added by Agent
[grid@acctdb01 conf]$
参数说明:
localport:这个参数代表本地监听端口,这里本地特指:127.0.0.1这个回环地址,用来和运行在本地的客户端进行通信
remoteport:这个参数代表的是远程监听端口,也就是除了127.0.0.1以外的所有本地ip地址,用来和远程的客户端进行通信。
loglevel:oracle允许跟踪ons进程的运行,并把日志记录到本地文件中,这个参数用来定义ons进程要记录的日志级别,从1-9,缺省值是3.
logfile:这个参数和loglevel参数一起使用,用于定义ons进程日志文件的位置,缺省值是$crs_home\opmn\logs\opmn.log
nodes和useocr:这两个参数共同决定本地的ons daemon要和哪些远程节点上的ons daemon进行通信。
nodes参数值格式如下:hostname/ip:port[hostname/ip:port]
如:useoce=off
nodes=rac1:6200,rac2:6200
而useocr参数值为on/off,如果useocr是on, 说明信息保存在ocr中,如果是off,说明信息取nodes中的配置。对于单实例而言,要把useocr设置为off。
4.1.2.2 配置ons
可以直接编译ons的配置文件来修改配置,如果使用了ocr,则可以通过racgons命令进行配置,但必须以root用户来执行,如果用oracle用户来执行,不会提示任何错误,但也不会更改任何配置。
若要添加配置,可以使用下面命令:
racgons add_config rac1:6200 rac2:6200
若要删除配置,可以用下面命令:
racgons remove_config rac1:6200 rac2:6200
4.1.2.3 onsctl命令
使用onsctl命令可以启动,停止,调试ons,并重新载入配置文件,其命令格式如下:
ons进程运行,并不一定代表ons正常工作,需要使用ping命令来确认
[grid@acctdb01 ~]$ onsctl
ERROR!
usage: onsctl [verbose] <command> [<options>]
The verbose option enables debug tracing and logging (for the server start).
Permitted <command>/<options> combinations are:
command options
------- ---------
start - Start ons
shutdown - Shutdown ons
reload - Trigger ons to reread its configuration file
debug [<attr>=<val> ..] - Display ons server debug information
set [<attr>=<val> ..] - Set ons log parameters
query [<attr>=<val>] - Query ons log parameters
ping [<max-retry>] - Ping local ons
help - Print brief usage description (this)
usage [<command>] - Print detailed usage description
[grid@acctdb01 ~]$
1) 在os级别查看进程状态。
[grid@dbrac2 bin]$ps -aef|grep ons
2) 确认ons服务的状态
[grid@dbrac2 bin]$onsctl ping
3) 启动ons服务
[grid@dbrac2 bin]$onsctl start
4)使用debug选项,可以查看详细信息,其中最有意义的就是能显示所有连接。
[grid@dbrac1 ~]$ onsctl debug
HTTP/1.1 200 OK
Content-Length: 2435
Content-Type: text/html
Response:
== dbrac1:6200 9880 18/03/06 19:32:52 ==
Home: /oracle/app/11.2.0/grid
======== ONS ========
IP ADDRESS PORT TIME SEQUENCE FLAGS
--------------------------------------- ----- -------- -------- --------
192.168.56.2 6200 5a9e7c23 00000002 00000008
Listener:
TYPE BIND ADDRESS PORT SOCKET
-------- --------------------------------------- ----- ------
Local 0.0.0.1 6100 5
Local 127.0.0.1 6100 6
Remote any 6200 7
Remote any 6200 -
Servers: (1)
INSTANCE NAME TIME SEQUENCE FLAGS DEFER
---------------------------------------- -------- -------- -------- ----------
dbInstance_dbrac2_6200 5a9e739d 00000006 00000002 0
192.168.56.4 6200
Connection Topology: (2)
IP PORT VERS TIME
--------------------------------------- ----- ----- --------
192.168.56.4 6200 4 5a9e739d
** 192.168.56.2 6200
192.168.56.2 6200 4 5a9e7c23=
** 192.168.56.4 6200
Server connections:
ID CONNECTION ADDRESS PORT FLAGS SENDQ REF WSAQ
-------- --------------------------------------- ----- ------ ----- --- ----
0 192.168.56.4 6200 010405 00000 001
Client connections:
ID CONNECTION ADDRESS PORT FLAGS SENDQ REF SUB W
-------- --------------------------------------- ----- ------ ----- --- --- -
1 internal 0 01008a 00000 001 002
4 0.0.0.1 6100 01001a 00000 001 000
request 0.0.0.1 6100 03201a 00000 001 000
Worker Ticket: 18/18, Last: 18/03/06 19:32:47
THREAD FLAGS
-------- --------
aa4f9700 00000012
aa4b8700 00000012
aa477700 00000012
Resources:
Notifications:
Received: Total 6 (Internal 2), in Receive Q: 0
Processed: Total 6, in Process Q: 0
Pool Counts:
Message: 1, Link: 1, Ack: 1, Match: 1
[grid@dbrac1 ~]$
4.1.3 srvctl
该命令是rac维护中最常用的命令,也是最复杂的命令。 这个工具可以操作下面的几种资源:database,instance,asm,service,listener和node application,其中node application又包括gsd,ons,vip。 这些资源除了使用srvctl工具统一管理外,某些资源还有自己独立的管理工具,比如ons可以使用onsctl命令进行管理;listener可以通过lsnrctl管理。
[grid@dbrac1 ~]$ srvctl -help
Usage: srvctl <command> <object> [<options>]
commands: enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config|convert|upgrade
objects: database|instance|service|nodeapps|vip|network|asm|diskgroup|listener|srvpool|server|scan|scan_listener|oc4j|home|filesystem|gns|cvu
For detailed help on each command and object and its options use:
srvctl <command> -h or
srvctl <command> <object> -h
[grid@dbrac1 ~]$
4.1.3.1 使用config查看配置
1)查看数据库配置
不带任何参数时,显示ocr中注册的所有数据库
[grid@dbrac1 ~]$ srvctl config database
dbrac
[grid@dbrac1 ~]$
--使用-d选项,查看某个数据库配置
[grid@dbrac1 ~]$ srvctl config database
dbrac
[grid@dbrac1 ~]$
[grid@dbrac1 ~]$ srvctl config database -d dbrac
Database unique name: dbrac
Database name: dbrac
Oracle home: /oracle/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/dbrac/spfiledbrac.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: dbrac
Database instances: dbrac1,dbrac2
Disk Groups: DATA,FRA
Mount point paths:
Services:
Type: RAC
Database is administrator managed
[grid@dbrac1 ~]$
注: 该输出结果显示数据库raw由2个节点组成,各自实例名交rac1和rac2.两个实例的$oracle_home是/u01/app/oracle/product/10.2.0/db_1
--使用-a选项查看配置的详细信息
[grid@dbrac1 ~]$ srvctl config database -d dbrac -a
Database unique name: dbrac
Database name: dbrac
Oracle home: /oracle/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/dbrac/spfiledbrac.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: dbrac
Database instances: dbrac1,dbrac2
Disk Groups: DATA,FRA
Mount point paths:
Services:
Type: RAC
Database is enabled
Database is administrator managed
[grid@dbrac1 ~]$
2)查看node application的配置
[grid@dbrac1 ~]$ srvctl config nodeapps -h
Displays the configuration information for the node applications.
Usage: srvctl config nodeapps [-a] [-g] [-s]
-a Display VIP configuration
-g Display GSD configuration
-s Display ONS daemon configuration
-h Print usage
[grid@dbrac1 ~]$
不带任何参数,返回节点名,实例名和$oracle_home
[grid@dbrac1 ~]$ srvctl config nodeapps
Network exists: 1/192.168.56.0/255.255.255.0/eth0, type static
VIP exists: /dbrac1-vip/192.168.56.3/192.168.56.0/255.255.255.0/eth0, hosting node dbrac1
VIP exists: /dbrac2-vip/192.168.56.5/192.168.56.0/255.255.255.0/eth0, hosting node dbrac2
GSD exists
ONS exists: Local port 6100, remote port 6200, EM port 2016
[grid@dbrac1 ~]$
--使用-a选项,查看vip配置
[grid@dbrac1 ~]$ srvctl config nodeapps -a
Network exists: 1/192.168.56.0/255.255.255.0/eth0, type static
VIP exists: /dbrac1-vip/192.168.56.3/192.168.56.0/255.255.255.0/eth0, hosting node dbrac1
VIP exists: /dbrac2-vip/192.168.56.5/192.168.56.0/255.255.255.0/eth0, hosting node dbrac2
[grid@dbrac1 ~]$
--使用-g选项, 查看gsd:
[grid@dbrac1 ~]$ srvctl config nodeapps -g
GSD exists
[grid@dbrac1 ~]$
--使用-s选项,查看ons:
[grid@dbrac1 ~]$ srvctl config nodeapps -s
ONS exists: Local port 6100, remote port 6200, EM port 2016
[grid@dbrac1 ~]$
3)查看listener.
[grid@dbrac1 ~]$ srvctl config listener -l LISTENER
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
End points: TCP:1521
[grid@dbrac1 ~]$
[grid@dbrac1 ~]$ srvctl config listener -l LISTENER -a
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/oracle/app/11.2.0/grid on node(s) dbrac2,dbrac1
End points: TCP:1521
[grid@dbrac1 ~]$
[grid@dbrac1 ~]$
4)查看asm
[grid@dbrac1 ~]$ srvctl config asm -h
Displays the configuration for ASM.
Usage: srvctl config asm [-a]
-a Print detailed configuration information
-h Print usage
[grid@dbrac1 ~]$
[grid@dbrac1 ~]$ srvctl config asm
ASM home: /oracle/app/11.2.0/grid
ASM listener: LISTENER
[grid@dbrac1 ~]$
[grid@dbrac1 ~]$ srvctl config asm -a
ASM home: /oracle/app/11.2.0/grid
ASM listener: LISTENER
ASM is enabled.
[grid@dbrac1 ~]$
5) 查看service
--查看数据库所有service配置
[grid@dbrac1 ~]$ srvctl config service -h
Displays the configuration for the service.
Usage: srvctl config service -d <db_unique_name> [-s <service_name>] [-v]
-d <db_unique_name> Unique name for the database
-s <service> Service name
-v Verbose output
-h Print usage
[grid@dbrac1 ~]$
4.1.3.2 使用add添加对象
一般情况下,应用层资源都是在图形界面的帮助下注册到ocr中的,比如vip,ons实在安装最后阶段创建的,而数据库,asm是执行dbca的过程中自动注册到ocr中的,listener是通过netca工具。 但是有些时候需要手工把资源注册到ocr中。 这时候就需要add命令了。
1) 添加数据库
[grid@dbrac2 bin]$srvctl add database -d dbrac -o $ORACLE_HOME
2) 添加实例
[grid@dbrac2 bin]$srvctl add instance -d dbrac -n dbrac1 -i dbrac1
[grid@dbrac2 bin]$srvctl add instance -d dbrac -n dbrac2 -i dbrac2
3)添加服务,需要使用4个参数
-s :服务名
-r:首选实例名
-a:备选实例名
-P:taf策略,可选值为none(缺省值),basic,preconnect。
[grid@dbrac1 ~]$ srvctl add service -d dbrac -s dmmservice -r dbrac1 -a dbrac2 -P basic
4)确认添加成功
[oracle@dbrac1 ~]$ srvctl add service -d dbrac -s dmmservice -r dbrac1 -a dbrac2 -P basic
[oracle@dbrac1 ~]$
--查看服务配置:
[oracle@dbrac1 ~]$ srvctl config service -d dbrac -s dmmservice -v
Service name: dmmservice
Service is enabled
Server pool: dbrac_dmmservice
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: dbrac1
Available instances: dbrac2
[oracle@dbrac1 ~]$
[grid@dbrac1 ~]$ crsctl status resource ora.dbrac.dmmservice.svc
NAME=ora.dbrac.dmmservice.svc
TYPE=ora.service.type
TARGET=OFFLINE
STATE=OFFLINE on dbrac1
[grid@dbrac1 ~]$
--启动服务:
[oracle@dbrac1 ~]$ srvctl start service -d dbrac -s dmmservice
--再次查看服务状态:
[grid@dbrac1 ~]$ crsctl status resource ora.dbrac.dmmservice.svc
NAME=ora.dbrac.dmmservice.svc
TYPE=ora.service.type
TARGET=ONLINE
STATE=ONLINE on dbrac1
[grid@dbrac1 ~]$
---------------------------------
[oracle@dbrac1 ~]$ srvctl add service -d dbrac -s abcde -r dbrac2 -a dbrac1 -P BASIC -y automatic -e SELECT -z 5 -w 180
[oracle@dbrac1 ~]$ srvctl add service -d dbrac -s aaaa -r dbrac1,dbrac2 -P BASIC -e SELECT -z 10 -w 60
[oracle@dbrac1 ~]$ srvctl config service -d dbrac -s abcde -v
Service name: abcde
Service is enabled
Server pool: dbrac_abcde
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: NONE
TAF failover retries: 5
TAF failover delay: 180
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: dbrac2
Available instances: dbrac1
[oracle@dbrac1 ~]$
[oracle@dbrac1 ~]$ srvctl config service -d dbrac -s aaaa -v
Service name: aaaa
Service is enabled
Server pool: dbrac_aaaa
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: NONE
TAF failover retries: 10
TAF failover delay: 60
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: dbrac1,dbrac2
Available instances:
[oracle@dbrac1 ~]$
4.1.3.3 使用enable/disable启动,禁用对象
缺省情况下数据库,实例,服务,asm都是随着crs的启动而自启动的,有时候由于维护的需要,可以先关闭这个特性。
1)配置数据库随crs的启动而自动启动
--启用数据库的自启动:
[grid@dbrac2 bin]$srvctl enable database -d dbrac
--查看配置
[oracle@dbrac1 ~]$ srvctl config database -d dbrac -a
Database unique name: dbrac
Database name: dbrac
Oracle home: /oracle/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/dbrac/spfiledbrac.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: dbrac
Database instances: dbrac1,dbrac2
Disk Groups: DATA,FRA
Mount point paths:
Services: aaaa,abcde,dmmservice
Type: RAC
Database is enabled
Database is administrator managed
[oracle@dbrac1 ~]$
--禁止数据库在crs启动后自启动,这时需要手动启动
[grid@dbrac2 bin]$ srvctl disable database -d dbrac
2) 关闭某个实例的自动启动
[grid@dbrac2 bin]$ srvctl disable instance -d dbrac -i dbrac1
[grid@dbrac2 bin]$ srvctl enable instance -d dbrac -i dbrac2
--查看信息
[grid@dbrac2 bin]$ srvctl config database -d dbrac -a
3)禁止某个服务在实例上运行
[grid@dbrac2 bin]$ srvctl enable service -d dbrac -s aaaa -i dbrac1
[grid@dbrac2 bin]$ srvctl disable service -d dbrac -s aaaa -i dbrac2
--查看
[oracle@dbrac1 ~]$ srvctl config database -d dbrac -a
4.1.3.4 使用remove删除对象
使用remove命令删除的是对象在ocr中的定义信息,对象本身比如数据库的数据文件等不会被删除,以后随时可以使用add命令重新添加到ocr中。
1)删除service,在删除之前,命令会给出确定提示
[oracle@dbrac1 ~]$ srvctl remove service -d dbrac -s aaaa
2)删除实例,删除之前同样会给出提示
[grid@dbrac2 bin]$ srvctl remove instance -d dbrac -i dbrac1
3)删除数据库
[grid@dbrac2 bin]$ srvctl remove database -d dbrac
4.1.3.5 启动,停止对象与查看对象
在rac环境下启动,关闭数据库虽然仍然可以使用sql/plus方法,但是更推荐使用srvctl命令来做这些工作,这可以保证即使更新crs中运行信息,可以使用start/stop命令启动,停止对象,然后使用status命令查看对象状态。
1) 启动数据库,默认启动到open状态
[grid@dbrac2 bin]$ srvctl start database -d dbrac
2) 指定启动状态
[grid@dbrac2 bin]$ srvctl start database -d dbrac -i dbrac1 -o mount
[grid@dbrac2 bin]$ srvctl start database -d dbrac -i dbrac2 -o nomount
3) 关闭对象,并指定关闭方式
[grid@dbrac2 bin]$ srvctl stop instance -d dbrac -i dbrac1 -o immediate
[grid@dbrac2 bin]$ srvctl stop instance -d dbrac -i dbrac2 -o abort
4) 在指定实例上启动服务:
[grid@dbrac2 bin]$ srvctl start service -d dbrac -s aaaa -i dbrac1
--查看服务状态
[grid@dbrac2 bin]$ srvctl status service -d aaaa -v
5) 关闭指定实例上的服务
[grid@dbrac2 bin]$ srvctl stop service -d dbrac -s aaaa -i dbrac1
--查看服务状态
[grid@dbrac2 bin]$ srvctl status service -d dbrac -v
4.1.3.6 跟踪class="lazy" data-srcctl
在oracle 10g中要跟踪srvctl非常简单,只要设置srvm_trace=true这个os环境变量即可,这个命令的所有函数调用都会输出到屏幕上,可以帮助用户进行诊断。
[grid@dbrac2 bin]$ export srvm_trace=true
[grid@dbrac2 bin]$ srvctl config database -d dbrac
4.1.4 恢复
设ocr磁盘和votedisk磁盘全部破坏,并且都没有备份,该如何恢复,这时最简单的方法就是重新初始话ocr和votedisk, 具体操作如下:
1) 停止所有节点的clusterware stack
crsctl stop crs;
2) 分别在每个节点用root用户执行$crs_home\install\rootdelete.sh脚本
3) 在任意一个节点上用root用户执行$crs_home\install\rootinstall.sh脚本
4) 在和上一步同一个节点上用root执行$crs_home\root.sh脚本
5) 在其他节点用root执行行$crs_home\root.sh脚本
6) 用netca命令重新配置监听,确认注册到clusterware中
#crs_stat -t -v
到目前为止,只有listener,ons,gsd,vip注册到ocr中,还需要把asm, 数据库都注册到ocr中。
l 向ocr中添加asm
#srvctl add asm -n rac1 -i +asm1 -o /u01/app/product/database
#srvctl add asm -n rac2 -i +asm2 -o /u01/app/product/database
l 启动asm
#srvctl start asm -n rac1
#srvctl start asm -n rac2
若在启动时报ora-27550错误。是因为rac无法确定使用哪个网卡作为private interconnect,解决方法:在两个asm的pfile文件里添加如下参数:
+asm1.cluster_interconnects=’10.85.10.119′
+asm2.cluster_interconnects=’10.85.10.121′
l 手工向ocr中添加database对象
#srvctl add database -d raw -o /u01/app/product/database
l 添加2个实例对象
#srvctl add instance -d raw -i rac1 -n rac1
#srvctl add instance -d raw -i rac2 -n rac2
l 修改实例和asm实例的依赖关系
#srvctl modify instance -d raw -i rac1 -s +asm1
#srvctl modify instance -d raw -i rac2 -s +asm2
l 启动数据库
#srvctl start database-d raw
若也出现ora-27550错误。也是因为rac无法确定使用哪个网卡作为private interconnect,修改pfile参数在重启动即可解决。
sql>alter system set cluster_interconnects=’10.85.10.119′ scope=spfile sid=’rac1′;
sql>alter system set cluster_interconnects=’10.85.10.121′ scope=spfile sid=’rac2′;
以上是“oracle中clusterware的命令集有几种”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341