您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页不动产登记信息管理系统平台硬整体解决策划方案

不动产登记信息管理系统平台硬整体解决策划方案

来源:宝玛科技网


县级平台不动产登记信息治理系统平台

硬 件 整 体 解 决 方 案

安徽安必生信息科技有限公司

目 录

1. 项目概述 .......................................... 4 2. 项目需求 .......................................... 5

1 / 63

3. 整体解决方案 ...................................... 7 4. Oracle RAC for LINUX实施方案 ...................... 9

4.1简 9 4.2配 10 4.3基 12 4.4设 14 4.5安 32 4.6安 36 4.7创 38 4.8创 39 4.9测

装oracle 10g

集群服务软装

Oracle

10g

TNS

oracle

试集

2 / 63

案作

42 4.10启

44

5. Oracle RMAN实施方案 ............................. 46

5.1简 47

5.2目标数据库操纵文件与恢复目录 48 5.3配 49 5.4启 50 5.5在 52 5.6增 56 5.7恢 58

6. 存储区域网络(SAN)架构 .......................... 61

3 / 63

RMAN

录介

1. 项目概述

2013年国家决定将分散在多个部门的不动产登记职责整合由一个部门承担,由国土资源部负责指导监督全国土地、房屋、草原、林地、海域等不动产统一登记职责,实现登记机构、登记簿册、登记依据和信息平台“四统一”。通过建立不动产登记信息治理基础平台,实现不动产审批、交易和登记信息在有关部门间依法依规互通共享,消除“信息孤岛”。逐步建立健全社会征信体系,促进不动产登记信息更加完备、准确、可靠。推动建立不动产登记信息依法公开查询系统,保证不动产交易安全,爱护群众合法权益。

不动产登记信息治理基础平台是落实不动产统一登记各项制度和信息查询的基础。通过建立不动产登记信息治理基础平台,整合和汇合覆盖全省、标准统一、内容完整、动态更新的不动产登记信息,同时连接至国家平台,实现不动产登记信息与审批、交易信息实时互通共享,并提供依法信息查询,有效保障不动产

4 / 63

统一登记制度的全面实施,减轻群众负担,爱护群众合法权益,提高治理效率和水平。

通过招标书要求,本次利辛县国土资源局对不动产登记硬件系统进行招标,为满足软件部署要求,本次要紧招标有数据库服务器2台、应用服务器2台,前置服务器2台、备份服务器1台及光纤存储1台,本次项目招标完成后,要紧配置合软件公司进行实施部署,达到利辛县国土资源局对不动产登记软件平台发证要求。

2. 项目需求

长期以来,土地、房屋、林地、草原、海域等不动产登记职责分散在国土资源、住房城乡建设、农业、林业、海洋部门,差不多上由县级部门承担。各部门都针对各自行业治理特点,制定了技术标准和规程。

目前,土地、房屋、林地、草原、海域登记信息化在国土资源、住房城乡建设、农业、林业、海洋等部门的信息化整体规划和推进下,都积存了丰富的数据资源,建立了登记信息系统,登记业务不同程度地实现了信息化。

原有分散登记制度下形成的不动产登记信息化呈现出几个

5 / 63

显著特征,一是登记资料分散保存在各级不同部门,且数字化程度不同,数据标准互不衔接,数据格式不统一,行业之间和行业内不同地区之间差异较大;二是数据库、地理信息系统等平台软件不统一,技术架构和技术路线不尽相同;三是行业或部门信息化统筹力度不同,数据和系统标准化程度不一。

不动产登记信息治理系统作为全国不动产统一登记制度实施的重要支撑,需要构建稳健、完善、弹性可扩展的IT系统平台,满足现有业务需要。硬件平台建设具备以下特点:

 业务处理量大,对性能提出挑战

分散登记制度下各类不动产登记与审批、交易治理工作紧密关联,成为工作链条或流程的组成部分。不动产登记和审批、交易的日常业务需要双向信息共享,交互频度大。同时面向相关部门和社会公众的信息查询服务业务量更是巨大。

 涉及核心涉密信息,信息安全尤为重要

不动产登记信息涉及空间信息,属于国家规定的秘密信息,同时涉及大量公民隐私信息。不动产登记信息治理基础平台以登记信息为支撑,面向规模庞大、类型不一的服务对象,需要解决信息安全保密问题。

 数据分散且体量较大,数据存储性能要求较高

6 / 63

长期以来不动产分散登记制度的实施,使土地、房屋、林地、草原、海域等登记数据分散在各级不同的部门,数量巨大,格式多样,标准不一,把各部门分散的存量不动产登记数据整合、汇合,工作量巨大、难度高。需要建立高性能的数据存储系统,对当前的数据组织、存储和治理技术提供支撑。

3. 整体解决方案

为了满足利辛县不动产登记信息治理系统的需求,依照软件业务系统及用户招标要求,本次方案在服务器系统中都采购了两台服务器,依照招标要求,本次数据库服务器采纳Oracle RAC for LINUX的双机进行建设,达到数据库服务器满中足业务7*24小时不停机工作;本次招标采纳一台双操纵器的光纤存储,实现存储操纵器在数据存储过程中实现存储双操纵器架构,达到存储无单点故障;在本项目中采纳一台备份服务器,通过Oracle RMAN进行数据库的备份。

通过上述方案介绍,针对利辛县国土资源局不动产登记整体拓扑架构如下所示:

7 / 63

如上图所示,方案中采纳两台数据库服务器,通过Oracle RAC for LINUX技术实现数据库服务器双机热备工作,保证数据库服务器无单点故障;具体详见Oracle RAC for LINUX技术方案部份;

在业务系统中分不采纳两台应用服务器和两台前置服务器,实现服务器工作处理备份状态,保证服务器工作时无单点故障;

由于数据比较重要,本次采纳一台备份服务器,通过Oracle

8 / 63

RMAN实现数据备份,保证数据的安全性,具体详见Oracle RMAN技术方案部份;

在数据层,我们部署一台Active-Active双操纵存储,利用Active-Active的技术将两个操纵器同时属于活动状态,在其中一个操纵器出现故障后,另一个正常运行,不阻碍存储的正常工作。

4. Oracle RAC for LINUX实施方案

4.1 简介

Oracle RAC 的核心是共享磁盘子系统。集群中的所有节点必须能够访问集群中所有节点的所有数据、重做日志文件、操纵文件和参数文件。数据磁盘必须在全局范围内可用,以便同意所有节点访问数据库。每个节点拥有自己的重做日志和操纵文件,然而其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。

Oracle 真正应用集群 (RAC) 10g 技术的最有效方法之一是访问一个实际的 Oracle RAC 10g 集群。没有什么方法比直接体验它们能够更好地理解其好处的了 — 包括容错、安全性、负载均衡和可伸缩性。

9 / 63

4.2 配置方案

1、PC服务器要紧配置: Celeron(R) CPU

Maxtor 6E040L0, ATA DISK drive 40G以上 网卡 一块 内存 显示卡

操作系统:White Box Enterprise Linux 3 2、服务器分区方案 Oracle 数据库文件 RAC节点名 实例名 数据库名 $ORACLE_BASE 文件系统 dbrac orcl1 orcl

/home/oracle

10 / 63

以上版本 ASM

Oracle CRS 共享文件 文件类型 文件名 分区 挂载点 文件系统

oracle集群注册表 /u01/orcl/orcfile /dev/hda8 /u01 OCFS

CRS表决磁盘 /u01/orcl/cssfile /dev/hda8 /u01 OCFS

3、所涉及软件

1)oracle 10g 数据库软件

11 / 63

ship.db.lnx32.cpio.gz 2)oracle 10g 集群服务软件 ship.crs.lnx32.cpio.gz 3)OCFS文件系统支持

ocfs-2.4.21-EL-1.0.14-1.i686.rpm ocfs-support-1.0.10-1.i386.rpm ocfs-tools-1.0.10-1.i386.rpm 4)ASMlib驱动程序

oracleasm-2.4.21-EL-1.0.3-1.i686.rpm oracleasm-support-1.0.3-1.i386.rpm oracleasmlib-1.0.0-1.i386.rpm 4.3 基础操作

1、安装linux

安装过程中一些需要注意的地点:

1)磁盘分区:swap分区大小建议是内存的2倍,那个地点是2048MB,划出一些系统必要的分区根分区/,var分区/var,usr分区/usr,home分区/home,临时文件分区/tmp。注意:那个地点不要把所有的硬盘空间划分进操作系统,留下一半给后面安装oarcle集群磁盘使用,本文示例

12 / 63

2)文件系统 容量 挂载点 /dev/hda1 1012M / /dev/hda2 7.7G /home /dev/hda7 1012M /tmp /dev/hda3 5.8G /usr /dev/hda5 2.0G /var

3)组件选取:一定要选上delvelopment tools和X-windows两项,为了节约空间其他能够不要

4)网络设置:eth0

取消选中 [Configure using DHCP] 复选项 选中 [Activate on boot] IP 地址:192.168.22.44 网络掩码: 255.255.255.0 5)主机名:dbrac

2、.安装完成后检查必需的 RPM

3、必须安装以下程序包(或更高版本): make-3.79.1 gcc-3.2.3-34 glibc-2.3.2-95.20

13 / 63

glibc-devel-2.3.2-95.20 glibc-headers-2.3.2-95.20 glibc-kernheaders-2.4-8.34 cpp-3.2.3-34 compat-db-4.0.14-5 compat-gcc-7.3-2.96.128 compat-gcc-c++-7.3-2.96.128 compat-libstdc++-7.3-2.96.128 compat-libstdc++-devel-7.3-2.96.128 openmotif-2.2.2-16 setarch-1.3-1 4.4 设置

1、更改/etc/hosts vi /etc/hosts

127.0.0.1 localhost.localdomain localhost

192.168.22.44 dbrac int-dbrac 192.168.22.244 vip-dbrac 确保RAC节点名没有出现在回送地址中。

14 / 63

此处设置相当重要,不能跃过,一定按照此设置,IP和主机不名能够自己定;

oracle 10g RAC中 使用了虚拟IP(VIP)技术,这是一个令人心动的高可用性、多机无缝切换的解决方案,但在单机模拟环境中仅仅是个形式而已,为了以后的顺利安装,不得不配置它

2、调整内核网络设置参数

编辑/etc/sysctl.conf,增加下面的设置: vi /etc/sysctl.conf

# Default setting in bytes of the socket receive buffer net.core.rmem_default=262144

# Default setting in bytes of the socket send buffer net.core.wmem_default=262144

# Maximum socket receive buffer size which may be set by using

# the SO_RCVBUF socket option net.core.rmem_max=262144

# Maximum socket send buffer size which may be set by using

# the SO_SNDBUF socket option

15 / 63

net.core.wmem_max=262144 3、添加模块选项:

将下列行添加到 /etc/modules.conf 中: options sbp2 sbp2_exclusive_login=0 4、创建“oracle”用户和目录 $su -

#groupadd dba

#useradd -g dba -m oracle #passwd oracle

5、编辑.bash_profile文件,增加oracle环境变量 $vi .bash_profile export PATH unset USERNAME

export LANG=zh_CN.EUC

ORACLE_BASE=/home/oracle;export ORACLE_BASE

export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1 export

ORA_CRS_HOME=$ORACLE_BASE/product/10.1.0/crs_1

export ORACLE_SID=rac1

16 / 63

export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK' PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin:/usr/ucb;export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:$ORACLE_HOME/oracm/lib:/usr/local/lib:/usr/lib;export LD_LIBRARY_PATH

export ORACLE_TERM=xterm export

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native export TEMP=/tmp export TMPDIR=/tmp

export LD_ASSUME_KERNEL=2.4.1 6、创建CRS分区和数据文件分区 1)先建立CRS分区挂载点 mkdir /u01

chown oracle:dba /u01

17 / 63

2)接着创建CRS分区和共享数据文件分区 fdisk /dev/hda

CRS分区只要500M就够了,剩下的全部划分给数据文件分区,那个地点为数据文件只分了1个区/dev/hda9

CRS分区为/dev/hda8

[root@dbrac root]# fdisk /dev/hda

The number of cylinders for this disk is set to 4997. [root@dbrac root]# fdisk /dev/hda

The number of cylinders for this disk is set to 4997. There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p

Disk /dev/hda: 41.1 GB, 41109061120 bytes 255 heads, 63 sectors/track, 4997 cylinders

18 / 63

Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System

/dev/hda1 * 1 131 1052226 83 Linux

/dev/hda2 132 1151 8193150 83 Linux

/dev/hda3 1152 1916 6144862+ 83 Linux

/dev/hda4 1917 4998 24756165 f Win95 Ext'd (LBA)

/dev/hda5 1917 2177 20951 83 Linux

/dev/hda6 2178 2438 20951 82 Linux swap

/dev/hda7 2439 2569 1052226 83 Linux

Command (m for help): n

First cylinder (2570-4998, default 2570):

19 / 63

Using default value 2570

Last cylinder or +size or +sizeM or +sizeK (2570-4998, default 4998): +500M

Command (m for help): n

First cylinder (2632-4998, default 2632): Using default value 2632

Last cylinder or +size or +sizeM or +sizeK (2632-4998, default 4998): +15000M

Command (m for help): p

Disk /dev/hda: 41.1 GB, 41109061120 bytes 255 heads, 63 sectors/track, 4997 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System

/dev/hda1 * 1 131 1052226 83 Linux

/dev/hda2 132 1151 8193150 83 Linux

/dev/hda3 1152 1916 6144862+ 83

20 / 63

Linux

/dev/hda4 1917 4998 24756165 f Win95 Ext'd (LBA)

/dev/hda5 1917 2177 20951 83 Linux

/dev/hda6 2178 2438 20951 82 Linux swap

/dev/hda7 2439 2569 1052226 83 Linux

/dev/hda8 2570 2631 497983+ 83 Linux

/dev/hda9 2632 4456 14659281 83 Linux

Command (m for help): w

The partition table has been altered! Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

The kernel still uses the old table.

21 / 63

The new table will be used at the next reboot. Syncing disks.

7、编辑/etc/sysctl.conf,增加下面2行以设置系统共享内存大小和文件句柄

kernel.shmmax=21474838 kernel.sem=250 32000 100 128

本文涉及到的linux操作系统的内核参数默认设置大多符合oracle安装所需,不需要做更大的改动

8、配置 hangcheck-timer 内核模块 在/etc/modules.conf中增加下面一行 options

hangcheck-timer

hangcheck_tick=30

hangcheck_margin=180

为了确保系统每次重新启动的时候都能自动加载hangcheck-timer 模块,需要在/etc/rc.local文件中增加下面一行

echo “modprobe hangcheck-timer” >;>; /etc/rc.local 重启系统并检查hangcheck-timer模块是否差不多加载 [root@dbrac root]# lsmod | grep hangcheck-timer hangcheck-timer 2616 0 (unused)

22 / 63

9、配置 RAC 节点以进行远程访问

在 RAC 节点上运行 Oracle Universal Installer 时,它将使用 rsh 、rcp或scp命令将 Oracle 软件复制到 RAC 集群中的所有其他节点。尽管是单机模拟,但仍然要配置,无法跃过,从oracle 10g开始差不多支持ssh协议,本文将首先尝试使用它

使用oracle用户创建ssh公共密匙:

[oracle@dbrac oracle]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter

file

in

which

to

save

the

key

(/home/oracle/.ssh/id_dsa):

Enter passphrase (empty for no passphrase): Enter same passphrase again: Your

identification

has

been

saved

in

/home/oracle/.ssh/id_dsa.

Your

public

key

has

been

saved

in

/home/oracle/.ssh/id_dsa.pub.

The key fingerprint is:

2d:09:9a:c0:40:c7:99:46:ea:43:0d:22:4b:d0:a0:26

23 / 63

oracle@dbrac

复制公匙到其他节点(那个地点是单机) [oracle@dbrac

oracle]$

cp

-v .ssh/id_dsa.pub .ssh/authorized_keys

测试密匙是否生效

[oracle@dbrac oracle]$ ssh dbrac

The authenticity of host 'dbrac (192.168.22.44)' can't be established.

RSA

key

fingerprint

is

e7:ff:ce:5e:92:ac:c4:96:a8:ca:3e:20:2e:5c:75:ae.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'dbrac,192.168.22.44' (RSA) to the list of known hosts.

[oracle@dbrac oracle]$

无需密码即可登陆表示密匙差不多生效 10、安装和配置 OCFS

OCFS是Oracle 集群文件系统 (OCFS),由 Oracle 开发,用于消除数据库治理员和系统治理员治理原始设备这一负担,它

24 / 63

提供了与通常的文件系统相同的功能和用法。尽量不要在OCFS文件系统上使用linux二进制文件系统操作命令

在目前的版本1种支持以下文件类型: Oracle 数据库文件 联机重做日志文件 归档重做日志文件 操纵文件

服务器参数文件 (SPFILE) Oracle 集群注册表 (OCR) 文件 CRS 表决磁盘。

安装和配置 1)

ocfs-2.4.21-EL-1.0.14-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpmocfs-tools-1.0.10-1.i386.rpm/home/oracle/install/rac/ocfs目录

2)执行rpm -ivh ocfs*.rpm 开始安装 [oracle@dbrac oracle]$ su - Password:

25 / 63

,,到

[root@dbrac root]# cd /home/oracle/install/rac/ocfs [root@dbrac ocfs]# rpm -ivh ocfs*.rpm Preparing...

########################################### [100%]

1:ocfs-support

########################################### [ 33%]

2:ocfs-2.4.21-EL

########################################### [ 67%]

3:ocfs-tools

########################################### [100%]

3)生成并配置/etc/ocfs.conf文件 root@dbrac ocfs]# ocfstool &

4)使用 ocfstool GUI 工具执行以下步骤: 5)选择 [Task] - [Generate Config]

在“OCFS Generate Config”对话框中,输入专用互连的接口和 DNS 名。

验证所有节点上的所有值正确之后,请退出应用程序 6)检查/etc/ocfs.conf

[root@dbrac ocfs]# cat /etc/ocfs.conf

26 / 63

#

# ocfs config

# Ensure this file exists in /etc #

node_name = dbrac

ip_address = 192.168.22.44 ip_port = 7000 comm_voting = 1

guid = B907DC7945D81C0A2C8C000D61EB0166 注意guid在集群中唯一对应一个节点,假如要更换网卡,请使用ocfs_uid_gen -c 命令重新创建

7)重新启动系统并确认ocfs模块差不多正确加载 [oracle@dbrac oracle]$ lsmod | grep ocfs ocfs 299104 0 (unused) 8)创建 OCFS 文件系统 [oracle@dbrac oracle]$ id

uid=500(oracle) gid=500(dba) groups=500(dba) [oracle@dbrac oracle]$ su - Password:

27 / 63

[root@dbrac root]# mkfs.ocfs -F -b 128 -L crs -m /u01 -u '500' -g '500' -p 0775 /dev/hda8

Cleared volume header sectors Cleared node config sectors Cleared publish sectors Cleared vote sectors Cleared bitmap sectors Cleared data block Wrote volume header

注意-u和-g 是oracle用户的id和dba组的id,一定要填写正确,-p是设置/u01目录的访问权限,假如要设置dba组用户有权治理集群注册文件的话,请设置0775

9)载入 OCFS 文件系统 $ su -

# mount -t ocfs /dev/hda8 /u01

10)将 OCFS分区配置为在启动时自动载入 11)将以下条目添加到/etc/fstab 文件中

/dev/hda8 /u01 ocfs _netdev 0 0 12)重新启动服务器并检查CRS分区差不多正确安装

28 / 63

[root@dbrac root]# mount | grep ocfs /dev/hda8 on /u01 type ocfs (rw)

假如没有被自动加载,请执行如下命令echo “mount -t ocfs /dev/hda8 /u01” >;>; /etc/rc.local,然后重新启动

也可用使用oracle官方为我们提供的打过补丁的linux内核来解决此问题

11、安装并配置自动存储治理和磁盘

Oracle 数据库 10g 中引入了 ASM,使治理员不必再治理单个文件和驱动器,ASM 被内置到 Oracle 内核中,通过它,数据库治理员能够全天候治理单个实例以及集群实例的上千个磁盘驱动器。本文将使用ASM来自动存储和治理所有 Oracle 物理数据库文件(数据、联机重做日志、操纵文件、归档重做日志)。

oracle不推举使用裸设备,因此那个地点使用前面创建的/dev/hda9分区

1)上传

oracleasm-2.4.21-EL-1.0.3-1.i686.rpm,

三个软件包到

oracleasmlib-1.0.0-1.i386.rpmoracleasm-support-1.0.3-1.i386.rpm

/home/oracle/install/rac/asm目录中,开始安装:

[oracle@dbrac asmlib]$ su -

29 / 63

Password: [root@dbrac

root]#

cd

/home/oracle/install/rac/asmlib

[root@dbrac asmlib]# rpm -ivh oracleasm*.rpm Preparing...

########################################### [100%]

1:oracleasm-support

########################################### [ 33%]

2:oracleasm-2.4.21-EL

########################################### [ 67%]

3:oracleasmlib

########################################### [100%]

2)配置并加载 ASMLib 程序包

[root@dbrac asmlib]# /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

30 / 63

loaded on boot and what permissions it will have. The current values

will be shown in brackets ('[]'). Hitting ; without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle Default group to own the driver interface []: dba Start Oracle ASM library driver on boot (y/n) [n]: y Fix permissions of Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration [ OK ]

Loading [ OK ]

Mounting [ OK ]

Scanning

system

for

ASM

ASMlib

driver

module

\"oracleasm\"

filesystem

disks

31 / 63

[ OK ]

为 Oracle 共享数据文件创建 ASM 磁盘 [root@dbrac

asmlib]#

/etc/init.d/oracleasm

createdisk oradata /dev/hda9

Marking [ OK ]

其中oradata是ASM磁盘的卷标

列出ASM磁盘的命令是/etc/init.d/oracleasm listdisks 删除ASM磁盘得命令是/etc/init.d/oracleasm deltedisk ORADATA(注意:此处大写)

/etc/init.d/oraclerasm scandisk命令用于其它节点上扫描并识不新卷,由于此处是单机,因此那个地点不需要执行。 4.5 安装oracle 10g集群服务软件

从那个地点开始,建议所有的安装过程全部使用英文界面安装,在简体中文环境下安装会有问题,假如安装操作系统的时候选择了默认语言为简体中文,请更改/etc/sysconfig/i18n文件中LANG的值,然后重新登陆系统。

LANG=\"en_US.UTF-8\" 1)

ship.crs.lnx32.cpio.gz32 / 63

disk

\"/dev/hda9\"

as

an

ASM

disk

/home/oracle/install/rac目录中并解压缩;

gzip

-dv

ship.crs.lnx32.cpio.gz;cpio

-idmv

2)在安装过程中oracle 10g集群服务软件会在CRS分区创建2个文件,分不是/u01/orcl/ocrfile和/u01/orcl/cssfile,相当重要,不能跃过;检查/tmp目录是否有足够的空间,必须保证/tmp目录有500M以上空余空间;

3)更改oracle用户环境变量; unset ORA_CRS_HOME $ unset ORACLE_HOME $ unset ORA_NLS33 $ unset TNS_ADMIN

4)转到安装源文件目录/home/oracle/install/rac/Disk1目录,执行./runInstaller &开始安装;

屏幕名称 回应

Welcome Screen 单击 Next

Specify Inventory directory and credentials

33 / 63

同意默认值

Root Script Window - Run orainstRoot.sh

以“root”用户帐户打开一个新的操纵台窗口。改变目录到/home/oracle/oraInventory 目录,运行 orainstRoot.sh。 返回 OUI 并确认此对话框窗口。

Specify File Locations

Source 目录使用默认值;Name: OraCrs10g_home1;Location:/home/oracle/product/10.1.0/crs_1

Language Selection

请使用English,能够加入简体中文支持 Cluster Configuration Cluster Name: crs;

Public Node Name:dbrac Private Node Name:int-dbrac Specify Network Interface Usage 使用默认

Oracle Cluster Registry /u01/orcl/ocrfile Voting Disk /u01/orcl/cssfile

34 / 63

Root Script Window - Run orainstRoot.sh

以“root”用户帐户打开一个新的操纵台窗口。转到/home/oracle/product/10.1.0/crs_1目录,运行root.sh。 返回 OUI 并确认此对话框窗口。

5)核实CRS安装 a)检查集群节点 [oracle@dbrac

oracle]$ product/10.1.0/crs_1/bin/olsnodes -n

dbrac 1

a)检查CRS自启动脚本

[oracle@dbrac oracle]$ ll /etc/init.d/init.*

-r-xr-xr-x 1 root root 1204 May 10 16:54 /etc/init.d/init.crs

-r-xr-xr-x 1 root root 54 May 10 16:54 /etc/init.d/init.crsd

-r-xr-xr-x 1 root root 18598 May 10 16:54 /etc/init.d/init.cssd

-r-xr-xr-x 1 root root 4550 May 10 16:54 /etc/init.d/init.evmd

35 / 63

4.6 安装 Oracle 10g数据库软件

1)上传ship.db.lnx32.cpio.gz至/home/oracle/install目录并解压

gzip -dv ship.db.lnx32.cpio.gz && cpio -idmv < ship.db.lnx32.cpio

2)更改oracle用户环境变量 unset ORA_CRS_HOME $ unset ORACLE_HOME $ unset ORA_NLS33 $ unset TNS_ADMIN

3)执行./runInstaller开始安装 屏幕名称 回应

Welcome Screen 选择高级安装

Specify File Locations Name: OraDb10g_home1

Location:/home/oracle/product/10.1.0/db_1 Specify Hardware Cluster Installation Mode

36 / 63

默认dbrac

Select Installation Type 选择Enterprise Edition 选项 Select Database Configuration

选择Do not create a starter database (必须选那个) Root Script Window - Run root.sh

以“root”用户帐户打开一个新的操纵台窗口。转到/home/oracle/product/10.1.0/db_1目录,运行root.sh程序。

当 VIPCA 出现时,请回应如下所示的屏幕提示: Welcome: 单击 Next

Network interfaces:选择接口 - eth0 Virtual IPs for cluster notes: Node Name:dbrac

IP Alias Name:vip-dbrac IP Address:192.168.22.244 Subnet Mask: 255.255.255.0

注意:假如在安装操作系统的时候选择了默认语言支持是简体中文,请在执行root.sh之前先取消root中文环境设置,命令export LANG=zh_CN.EUC

37 / 63

End of installation 安装结束时,退出 OUI 4.7 创建 TNS 进程

DBCA 需要在 RAC 集群的所有节点上配置并运行 Oracle TNS 进程,然后它才能创建集群化数据库。$export LANG=zh_CN.EUC $ netca & 屏幕名称 回应

Select the Type of Oracle Net Services Configuration 选择 Cluster Configuration Select the nodes to configure 选择节点dbrac

Listener Configuration - Next 6 Screens接下来全部选择默认,然后返回到Select the Type of Oracle Net Services Configuration

Type of Configuration

选择 Naming Methods configuration。

38 / 63

Naming Methods Configuration

Selected Naming Methods: Local Naming Type of Configuration 单击 Finish 退出 NETCA。 测试

[oracle@dbrac oracle]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'

LISTENER_DBRAC

4.8 创建oracle集群数据库

1)

DBCA

$ORACLE_BASE/product/10.1.0/db_1 环境正确设置了 $ORACLE_HOME 和 $PATH。

2)在试图开始创建集群化数据库之前,还应确保已安装的所有服务(Oracle TNS 、CRS 进程等)正在运行。

屏幕名称 回应

Welcome Screen

选择 Oracle Real Application Clusters database。 Operations

39 / 63

选择 Create a Database Node Selection 选择dbrac

Database Templates 选择 Custom Database Database Identification Global Database Name: orcl SID Prefix:orcl Management Option 保留默认

Database Credentials

选择 Use the Same Password for All Accounts,并输入两次密码

Storage Options 选择使用 ASM

Create ASM Instance 推举选择spfile ASM Disk Groups

单击 Create New创建ASM,在弹出的Create Disk Group窗

40 / 63

口中,Disk Group Name:orcl_data;选择“Select Member Disks”窗口中的ASM 卷ORCL:ORADATA,并确保状态为PROVISIONED,最后单击ok完成,假如不能格式化,请选择redundancy为external

Database File Locations

选择使用默认值Oracle Managed Files Database Area: +ORCL_DATA Recovery Configuration

选择默认Flash Recovery Area,假如要使用传统归档方式,请选择Enable Archiving

Database Content

本文为了加快安装速度,去掉了所有组件支持,仅保留了Enterprise Manager Repository

Database Services

单击 Add,输入 orcltest 作为“Service Name”。 TAF Policy选Basic

Initialization Parameters 保留默认

Database Storage 保留默认

41 / 63

Creation Options 选择默认

End of Database Creation 退出DBCA

3)完成DBCA后,一个单节点集群的oracle数据库服务器差不多成功创建了

4)核实orcltest服务

SQL>; show parameter service

NAME TYPE VALUE

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

service_names string orcl, orcltest

假如value只有一个值orcl,则需要手工添加orcltest SQL>; alter system set service_names ='orcl, orcltest' scope=spfile; 4.9 测试集群

先检查VIP是否差不多启动

42 / 63

-----------

[oracle@dbrac oracle]$ ifconfig eth0:1 eth0:1

Link

encap:Ethernet

HWaddr

00:0D:61:EB:01:66

inet

addr:192.168.22.244

Bcast:192.168.22.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Interrupt:11 Base address:0xc000 从外部客户端连接集群化数据库

在装有oracle 10g 客户端的pc上执行下面的命令进行连接测试,客户端需要配置TNS,配置的时候把服务名指定为orcltest,数据库服务器IP使用VIP(192.168.22.244)

C:\\Documents and Settings\\Administrator>;sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 5月 11 13:24:34 2005

Copyright (c) 1982, 2004, Oracle. All rights reserved.

SQL>; connect sys/racrac@orcltest as sysdba

43 / 63

已连接。

在服务器上执行下面的命令

[oracle@dbrac oracle]$ srvctl status database -d orcl 例程 orcl1 正在节点 dbrac 上运行

[oracle@dbrac oracle]$ srvctl status nodeapps -n dbrac VIP 正在运行的节点: dbrac GSD 正在运行的节点: dbrac 监听程序正在节点上运行: dbrac ONS 守护程序正在节点上运行:dbrac

[oracle@dbrac oracle]$ srvctl status asm -n dbrac ASM 例程 +ASM1 正在节点 dbrac 上运行。 显示数据库配置

[oracle@dbrac oracle]$ srvctl config database -d orcl dbrac orcl1 /home/oracle/product/10.1.0/db_1

scrctl命令还有专门多测试功能,那个地点不再一一介绍 4.10 启动和停止集群

1)停止 Oracle RAC 10g 环境

先停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭 ASM 实例。最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监

44 / 63

听器和 ONS)。

$ export ORACLE_SID=orcl1 $ emctl stop dbconsole

$ srvctl stop instance -d orcl -i orcl1 $ srvctl stop asm -n dbrac $ srvctl stop nodeapps -n dbrac 2)启动 Oracle RAC 10g 环境

第一步是启动节点应用程序(虚拟 IP、GSD、TNS 和 ONS)。当成功启动节点应用程序后,启动 ASM 实例。最后,启动 Oracle 实例(和相关服务)以及企业治理器数据库操纵台。

$ export ORACLE_SID=orcl1

$ srvctl start nodeapps -n dbrac $ srvctl start asm -n dbrac

$ srvctl start instance -d orcl -i orcl1 $ emctl start dbconsole

3)使用 SRVCTL 启动/停止所有实例 $ srvctl start database -d orcl $ srvctl stop database -d orcl 全中文数据库环境安装解决方法

45 / 63

更改oracle用户的环境变量export LANG=zh_CN并转到/home/oracle/install/Disk1目录下执行如下代码

cd

stage/Components/oracle.swd.jre/1.4.2.02.0/1/DataFiles && unzip all_except_bin.jar && cd jre/1.4.2/lib && mv -v font.properties

font.properties.bak

&&

cp

-v &&

font.properties.zh_CN.Redhat8.0 font.properties

cd ../../../;zip -r all_except_bin.jar.new jre/;mv all_except_bin.jar.new all_except_bin.jar && rm -rfv jre && cd ../../../../../../

cd

stage/Components/oracle.jdk/1.4.2.0.0/1/DataFiles

&&

unzip -d sol_bin sol_bin.1.1.jar && cd sol_bin;cp -v font.properties

font.properties.bak;cp

-v

font.properties.Redhat8.0 font.properties;zip

-r ../sol_bin.1.1.jar * && cd ..;rm -rfv sol_bin && cd ../../../../../../

5. Oracle RMAN实施方案

46 / 63

5.1 简介

RMAN是Recovery Manager的简称,也确实是恢复治理器,是ORACLE的备份恢复工具。我们上几章所讲的备份恢复,是用户治理的备份恢复。用户治理的备份恢复差不多能够完成各种备份恢复操作,什么缘故还要用RMAN呢?最重要的一点是,当数据文件比较多,而且有时新增数据文件、有时减少数据文件。备份的时刻一长,有时候我们自己都容易不记得谁被备份了,而谁还没有备份。假如我想让每个数据文件都有两份备份,那么哪个数据文件的备份数量还达不到要求。等等,这些问题,在用户治理的备份恢复下,因为你备份了谁,在ORACLE中并没有记录,你必须去操作系统中查阅磁盘文件,假如数据文件比较多,这将是一个特不繁锁的过程。而且,也专门容易出现遗漏。我见过一家企业,因为备份策略是往常就建好的,没有使用RMAN,运行了专门久,没有出过什么问题,因此也没有人敢提出升级到RMAN。数据库治理确实是如此,假如它运行的好好的,性能、安全性上都能满足需要,就没有必要动它。谁明白改变它会有什么后果呢。这家企业的备份策略使用了大量的操作系统Shell脚本、ORACLE中SQL*Plus脚本,自己建立了专门多表,每备份一次,都把备份的数据件名记进表中,需要明白数据文件、操纵文件的备份情

47 / 63

况时,就去统计表。事实上这差不多上实现了简单的RMAN的功能。然而方便用户治理备份,这只是RMAN诸多优点中的一项,RMAN的备份性能要高于用户治理的备份,RMAN能够实现块级恢复等等,这些功能就不要利用脚本自己就能够实现的了。总之,通过8i、9i、10G几代的进展,RMAN差不多成为了ORACLE中的最要的备份恢复工具,我们有什么备份恢复操作,要尽量使用RMAN来完成。好,下面,我们就开始介绍RMAN的使用。 5.2 目标数据库操纵文件与恢复目录

目标数据库,我们使用RMAN要对哪个数据库进行备份,哪个数据库确实是目标数据库。 RMAN有一项重要功能,确实是记录各种文件的备份信息,以便用户随时了解各个文件的备份情况。备份信息会被RMAN自动的记入目标数据库的操纵文件中。操纵文件中存储RMAN备份信息的区域是循环使用的,以初始化参数control_file_record_keep_time的值为准。那个参数的值默认是7天,也确实是讲操纵文件中的RMAN信息,最多保留7天就会被新的信息覆盖。那个参数的设置,也是阻碍操纵文件大小的重要因素之一。 然而,将RMAN的备份信息保留在目标数据库中,是特不不安全的。假如目标数据库的操纵文件损坏了,RMAN将因为读不出来备份信息,而无法进行恢复。通常建议将

48 / 63

信息再存储到另外一个数据库中,那个数据库一般被称为恢复目录。 作为恢复目录的数据库,事实上恢复目录在它里面只建一个表空间,那个数据库还能够像正常数据库一样另外存放其他信息。并不是只能用来存放另一个数据库RMAN的备份信息。 好了,我们讲了两个概念,目标数据库和恢复目录。目标数据库确实是我们要备份的数据库,而恢复目录是存放目标数据库备份信息的数据库。下面,我们讲一下恢复目录的配置。 5.3 配置恢复目录

第一步要有一个数据库了,我额外创建了一个RCAT数据库,下面我们用它来作恢复目录。在实际的情况下,恢复目录数据库最好是和目标数据库分不存在在不同的存储设备中。 下面,启动RCAT数据库。

步1:创建存储目标数据库备份信息的表空间 sid=25 pid=20>

create

tablespace

cattbs

size

datafile

20m;

'f:\\oracle\\oradata\\rcat\\cattbs_1.dbf'

Tablespace created. 那个表空间并不是专用的,它的名字你可随便定。它也能够存储其他信息。然而建议只用它存储目标数据库的备份信息。

步2:创建RCAT1用户 sid=22 pid=15> create user rcat1

49 / 63

identified by abcde default tablespace cattbs quota unlimited on cattbs; 用户已创建。 用户名因此也是随变定的。它的缺省表空间一定要是刚才创建的CATTBS。

3:授予权限: sid=22 pid=15> grant

connect,recovery_catalog_owner to rcat1; 授权成功。 恢复目录用户,一定要有recovery_catalog_owner角色。此角色是专门针对恢复目录的,它向用户授予了专门多。 步4:在RMAN中创建恢复目录 在RMAN中,连接到恢复目录数据库: RMAN> connect catalog rcat1/abcde@rcat; 连接到恢复目录数据库

5.4 启动RMAN

RMAN为交互式命令行处理界面,也能够从企业治理器中运行。

为了使用下面的实例,先检查环境符合:

the target database is called \"his\" and has the same TNS alias

user rman has been granted \"recovery_catalog_owner \"privileges

目标数据库的连接用户为internal帐号,或者以其他

50 / 63

SYSDBA类型帐号连接

the recovery catalog database is called \"rman\" and has the same TNS alias

the schema containing the recovery catalog is \"rman\" (same password)

在使用RMAN前,设置NLS_DATE_FORMAT 和NLS_LANG环境变量,专门多RMAN LIST命令的输出结果是与日期时刻相关的,这点在用户希望执行以时刻为基准的恢复工作也专门重要。

下例是环境变量的示范:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。 5.4.1 使用不带恢复目录的RMAN

设置目标数据库的 ORACLE_SID ,执行: % rman nocatalog RMAN> connect target

RMAN> connect target internal/@his

51 / 63

5.4.2 使用带恢复目录的RMAN

% rman rman_ts rman/rman@rman RMAN> connect target

% rman rman_ts rman/rman@rman target internal/@his 5.4.3 使用RMAN

一旦连接到目标数据库,能够通过交互界面或者事先存储的脚本执行指定RMAN命令,下面是一个使用RMAN交互界面的实例:

RMAN> resync catalog;

RMAN-03022:正在编译命令:resync RMAN-03023:正在执行命令:resync

RMAN-08002:正在启动全部恢复目录的 resync RMAN-08004:完成全部 resync使用脚本的实例:

RMAN> execute script alloc_1_disk;创建或者替代存储的脚本:

RMAN> replace script alloc_1_disk { 2> allocate channel d1 type disk; 3> }

5.5 在非归档模式下备份

恢复目录数据库需要打开,目标数据库必须启动(或者加

52 / 63

载)。因为目标数据库不在归档模式下,因此当进行备份恢复操作的时候数据库无法打开。不能够将表空间置于热备份模式上进行等同于文件系统级的拷贝,假如在非归档模式,数据库打开的状态下不能进行数据文件的备份。 5.5.1 数据库完全备份

RMAN> run {

2> # backup the complete database to disk 3> allocate channel dev1 type disk; 4> backup 5> full

6> tag full_db_backup

7> format \"/oracle/backups/db_t%t_s%s_p%p\" 8> (database);

9> release channel dev1; 10> }行#

2: 表明该行为注释行(#是注释符) 3&9: See section 15 - Channels通道定义

5: Full backup (default if full or incremental not specified)完全备份模式(缺省模式)

53 / 63

6: Meaningful string (<=30 chars)(备份集标识,<=30个字符)

7: Filename to use for backup pieces, including substitution variables. 备份片使用的文件名,能够包含代替变量。

8: Indicates all files including controlfiles are to be backed up表明备份所有数据文件包括操纵文件

通过下面的命令显示恢复目录中记载的备份集信息: RMAN> list backupset of database; 5.5.2 备份表空间

RMAN> run {

2> allocate channel dev1 type disk; 3> backup

4> tag tbs_users_read_only

5> format \"/oracle/backups/tbs_users_t%t_s%s\" 6> (tablespace users)

7> }使用下列命令来显示恢复目录中该表的备份信息: RMAN> list backupset of tablespace users;假设USERS表空间在备份后被置为READ ONLY表空间,以后的全库备份就能

54 / 63

够不用备份该表空间,为了达到那个目的,能够在以后的备份中指定\"skip readonly\"。

注意,目标数据库不需要一定打开,只要加载就能够,因为表空间的信息存储在操纵文件中。 5.5.3 备份单独数据文件

RMAN> run {

2> allocate channel dev1 type \"SBT_TAPE\"; 3> backup

4> format \"%d_%u\"

5> (datafile \"/oracle/dbs/sysbigdb.dbf\"); 6> release channel dev1; 7> }行#

2: 使用MML(media manager layer)分配磁带驱动器,必须指定类型为SBT_TAPE;

使用下面的命令显示恢复目录中备份的表空间: RMAN> list backupset of datafile 1; 5.5.4 备份数据文件

RMAN> run {

2> allocate channel dev1 type \"SBT_TAPE\";

55 / 63

3> copy datafile \"/oracle/dbs/temp.dbf\" to \"/oracle/backups/temp.dbf\";

4> release channel dev1;

5> }使用下面的命令显示恢复目录中的文件拷贝: RMAN> list copy of datafile \"/oracle/dbs/temp.dbf\";拷贝数据文件和备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像。文件的备份产生一个备份集。 5.5.5 7.5.备份操纵文件

RMAN> run {

2> allocate channel dev1 type \"SBT_TAPE\"; 3> backup

4> format \"cf_t%t_s%s_p%p\" 5> tag cf_monday_night 6> (current controlfile); 7> release channel dev1; 8> } 5.6 增量备份

N级不增量备份备份从最近的N级不或者更小级不以来的所有更改过的数据块内容。增量备份分为两种,一种是累积增量备

56 / 63

份,一种是非累积增量备份。

累积增量备份包括自最后一次在更低级不进行备份以来所有改动过的数据块。

非累积增量备份包括自前一次在同级或者更低级不进行备份以来改动过的数据块。

5.6.1 Level 0--增量备份策略的基础

Level 0 是增量备份策略的基础--the basis of incremental backup strategy

RMAN> run {

2> allocate channel dev1 type disk; 3> backup

4> incremental level 0 5> filesperset 4

6> format \"/oracle/backups/sunday_level0_%t\" 7> (database);

8> release channel dev1; 9> }Line# 4: 0级备份

5: 定义每个backupset 的最大文件数

57 / 63

the 使用LIST语句查看,数据库备份集的列表显示中, \"type\" 将显示 \"Incremental\",\"LV\"列将显示\"0\" 。

5.6.2 使用增量备份的案例

一个典型的增量备份案例如下:

星期天晚上 - level 0 backup performed 星期一晚上 - level 2 backup performed 星期二晚上 - level 2 backup performed 星期三晚上 - level 1 backup performed 星期四晚上 - level 2 backup performed 星期五晚上 - level 2 backup performed 星期六晚上 - level 2 backup performed 星期天晚上 - level 0 backup performed 5.7 恢复

5.7.1 Database open,datafile deleted 数据库打开时,文件

被删除

数据文件在数据库打开时被删除。有两种方法能够对打开的数据库进行恢复:还原数据文件或者表空间。下面两个实例显示了该方法:

58 / 63

(a) Datafile recovery 数据文件恢复 RMAN> run {

2> allocate channel dev1 type disk;

3> sql \"alter tablespace users offline immediate\"; 4> restore datafile 4; 5> recover datafile 4;

6> sql \"alter tablespace users online\"; 7> release channel dev1;

8> }(b) Tablespace recovery 表空间恢复 RMAN> run {

2> allocate channel dev1 type disk;

3> sql \"alter tablespace users offline immediate\"; 4> restore tablespace users; 5> recover tablespace users;

6> sql \"alter tablespace users online\"; 7> release channel dev1;

8> }注意:假如还原系统表空间文件,数据库必须关闭,因为系统表空间不能够脱机。

59 / 63

5.7.2 Complete restore (lost online redo) and rollforward

- database closed 完全还原(丢失联机日志)同时前滚 - 数据库关闭 RMAN> run {

2> allocate channel dev1 type disk; 3> set until logseq=105 thread=1; 4>

restore

controlfile

to

\"/oracle/dbs/ctrltargdb.ctl\";

5>

replicate

controlfile

from

\"/oracle/dbs/ctrltargdb.ctl\";

6> restore database;

7> sql \"alter database mount\"; 8> recover database;

9> sql \"alter database open resetlogs\"; 10> release channel dev1; 11> }Notes:

\"set until\" 命令指明恢复到指定的日志文件。这一点在数据文件恢复时专门重要,否则RMAN将试图恢复最近的数据文件,该数据文件可能在指定的日志往常。

60 / 63

\"replicate controlfile\" 复制还原的操纵文件到INIT.ORA指定的操纵文件。

假如数据库使用WITH RESETLOGS打开,则需要使用RESET DATABASE命令注册改变后的数据库。在使用RESETLOGS命令打开数据库后强烈建议做一个完全的数据库备份。 5.7.3 还原数据文件的子集,完全恢复

RMAN> run {

2> allocate channel dev1 type disk; 3> sql \"alter database mount\"; 4> restore datafile 2; 5> restore datafile 3; 6> restore archivelog all; 7> recover database;

8> sql \"alter database open\"; 9> release channel dev1; 10> }

6. 存储区域网络(SAN)架构

SAN(Storage Area Network,存储区域网络)是一个由存储设备和系统部件构成的网络。所有的通信都在一个与应用网络

61 / 63

隔离的单独的网络上完成,能够被用来集中和共享存储资源。SAN不但提供了对数据设备的高性能连接,提高了数据备份速度,还增加了对存储系统的冗余连接,提供了对高可用群集系统的支持。简单地讲,SAN是关联存储设备和服务器的网络。

SAN的优势

SAN网络具有出色的可扩展性,理论上最多能够连接1600万个设备;

SAN网络能够集中治理数据,从而降低总体拥有成本; 利用光纤通道技术,SAN能够有效地传输数据块; 开放的、标准化的光纤通道技术使得SAN特不灵活; SAN克服了传统上与SCSI相连的线缆,极大地拓展了服务器和存储之间的距离,从而增加了更多连接的可能性;

62 / 63

改进的扩展性还简化了服务器的部署和升级,爱护了原有硬件设备的投资。

依照利辛县国土资源局县级不动产登记信息治理基础平台建设需求,服务器与存储设备采纳通过光纤实现了高可用的FC SAN架构的连接方式进行设计,因此次存储系统采纳FC SAN架构存储。

63 / 63

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务