赞
踩
本文以VMware虚拟机作为测试环境,搭建包含两个节点的RAC集群。VMware虚拟磁盘作为共享存储盘,磁盘分配容量大小仅供参考。
由于安装过程以大量截图方式进行说明,建议在PC端浏览。
搭建RAC集群需要共享空间作为注册盘和投票盘及数据文件的存储,使用添加VMware硬盘的方式创建共享磁盘。
1. 添加硬盘
2. 选择磁盘类型
3. 创建新的虚拟磁盘
4. 指定磁盘容量
勾选立即分配所有磁盘空间,并存储为单个文件。
5. 指定磁盘文件存放位置
6. 硬盘高级设置
选择创建的磁盘,并打开高级设置,勾选“独立”模式和“永久”属性。
分别创建其他磁盘后,磁盘文件如下图所示:
配置完毕后的虚拟机设备信息如下:
这里创建了两个1GB的注册盘(orc),一个1GB的投票盘(votingdisk),一个5GB的数据盘(data),一个2GB的备份盘(backup)。
虚拟设备节点分别是:SCSI1:0/SCSI1:1/SCSI1:2/SCSI1:3/SCSI1:4
在虚拟机的vmx文件中添加配置信息。
scsi1.sharedBus= "virtual"
disk.locking= "false"
diskLib.dataCacheMaxSize= "0"
diskLib.dataCacheMaxReadAheadSize= "0"
diskLib.DataCacheMinReadAheadSize= "0"
diskLib.dataCachePageSize= "4096"
diskLib.maxUnsyncedWrites= "0"
为虚拟机添加两个网络适配器。一个网卡用于对外提供服务(Public NIC),另一个网卡用于集群内部通信(Private NIC)。所以,第一个网络适配器选择桥接模式,第二个网络适配器选择仅主机模式。
配置项 | 主机节点1 | 主机节点2 |
---|---|---|
主机名 | rac1 | rac2 |
Public 网卡名称 | eth2 | |
Public IP | 192.168.6.101 | 192.168.6.102 |
Private 网卡名称 | eth3 | |
Private IP | 192.168.80.101 | 192.168.80.102 |
Virtual IP | 192.168.6.201 | 192.168.6.202 |
Scan IP | 192.168.6.105 |
下载并在虚拟机中安装OracleLinux 6.10
,安装过程略。
操作系统安装完成后,需要进行一些必要的设置,以顺利安装Oracle软件。
1. 关闭防火墙
service iptables stop
2. 禁止防火墙开机启动
chkconfig iptables off
3. 关闭SELinux
setenforce 0
4. 禁用SELinux
修改/etc/sysconfig/selinux
文件,并设置SELINUX=disabled
。
/usr/sbin/groupadd -g 1010 oinstall
/usr/sbin/groupadd -g 1020 asmadmin
/usr/sbin/groupadd -g 1021 asmdba
/usr/sbin/groupadd -g 1022 asmoper
/usr/sbin/groupadd -g 1031 dba
/usr/sbin/groupadd -g 1032 oper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
在配置文件/etc/sysctl.conf
添加以下内容:
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
修改/etc/security/limits.conf
配置文件,对grid和oracle用户分别设置。
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在/etc/pam.d/login
文件最后添加一行内容:
session required pam_limits.so
1. 挂载操作系统安装光盘
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
2. 添加安装源
vi /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
3. 重新生成元数据缓存
yum clean all
yum makecache
如果无法连接官方安装源,可禁用。
yum-config-manager --disable public_ol6_UEKR4
yum-config-manager --disable public_ol6_latest
4. 安装需要的软件包
yum install gcc gcc-c++ glibc* glibc-devel* ksh libgcc* libstdc++* libstdc++-devel* make sysstat
1. 安装ASM软件包
rpm -ivh kmod-oracleasm-2.0.8-16.el6_10.x86_64.rpm
rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
2. 配置ASM
[root@rac1 rpm]# oracleasm configure -i
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
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
配置完成后,确认已经为启用状态。
[root@rac1 rpm]# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=grid
ORACLEASM_GID=asmadmin
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
3. 创建磁盘分区
[root@rac1 rpm]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-130, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): Using default value 130 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
重复上述步骤,对其他磁盘进行分区。
全部执行完成后,查看分区。
[root@rac1 ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1 /dev/sdd /dev/sdd1 /dev/sde /dev/sde1 /dev/sdf /dev/sdf1
4. 创建ASM磁盘
[root@rac1 rpm]# oracleasm createdisk OCR1 /dev/sdb1
Writing disk header: done
Instantiating disk: failed
Clearing disk header: done
创建失败时,需重启系统后重试。
其他sdc,sdd,sde,sdf以相同方式执行。
[root@rac1 ~]# oracleasm createdisk OCR2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk VOTINGDISK /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DATA /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk BACKUP /dev/sdf1
Writing disk header: done
Instantiating disk: done
5. 查看磁盘信息
[root@rac2 rpm]# oracleasm listdisks
BACKUP
DATA
OCR1
OCR11
VOTINGDISK
将虚拟机目录进行复制,得到第二个主机后,启动第二台虚拟主机再进行后续配置。
复制虚拟机后,需要为第二个主机网络适配器重新生成MAC地址,并且将系统网络配置中的网卡地址修改为新生成的MAC地址。
两台主机的IP和主机名,参照前文网络规划中的内容进行配置。
1. 修改IP地址
修改/etc/sysconfig/network-scripts/ifcfg-Auto_eth2
配置文件,对Public IP
进行配置。
IPADDR=192.168.6.101
PREFIX=24
GATEWAY=192.168.6.203
IPADDR=192.168.6.102
PREFIX=24
GATEWAY=192.168.6.203
修改/etc/sysconfig/network-scripts/ifcfg-Auto_eth3
配置文件,对Private IP
进行配置。
IPADDR=192.168.80.101
PREFIX=24
IPADDR=192.168.80.102
PREFIX=24
rac2设置IP后仍不能与宿主机通信,需修改
/etc/udev/rules.d/70-persistent-net.rules
文件。将多余的网口配置删除,只保留MAC和ifcfg-Auto_eth2和ifcfg-Auto_eth3文件中MAC相同两条记录。并确保各网卡的MAC地址与虚拟机网络适配器中生成的MAC地址相同。
2. 配置hostname
调整两台主机的主机名。
hostname rac1
hostname rac2
修改/etc/sysconfig/network
配置文件。
NETWORKING=yes
HOSTNAME=rac1
GATEWAY=192.168.80.101
NOZEROCONF=yes
NETWORKING=yes
HOSTNAME=rac2
GATEWAY=192.168.80.102
NOZEROCONF=yes
3. 配置hosts
修改/etc/hosts
文件。
192.168.6.101 rac1
192.168.6.102 rac2
192.168.6.201 rac1-vip
192.168.6.202 rac2-vip
192.168.80.101 rac1-priv
192.168.80.102 rac2-priv
192.168.6.105 scan-ip
rac1和rac2主机均需添加。
1. grid用户
[root@localhost sysconfig]# su - grid
[grid@localhost ~]$ vi .bash_profile
增加以下内容:
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1 # RAC1
export ORACLE_SID=+ASM2 # RAC2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
其中ORACLE_SID
变量在不同节点分别配置。
2. oracle用户
[root@localhost sysconfig]# su - oracle
[oracle@localhost ~]$ vi .bash_profile
增加以下内容:
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl1 # RAC1
export ORACLE_SID=orcl2 # RAC2
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
其中ORACLE_SID
变量在不同节点分别配置。
执行source .bash_profile
命令使配置生效。
1. oracle用户
切换至oracle用户,在两个主机上生成密钥文件,生成过程中全部回车:
ssh-keygen -t rsa
ssh-keygen -t dsa
在rac1主机执行,以下命令需逐行执行:
ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh rac1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:~/.ssh/
chmod 600 ~/.ssh/authorized_keys
在rac2主机执行:
chmod 600 ~/.ssh/authorized_keys
2. grid用户
切换至oracle用户,以grid用户相同的方式进行配置。
虽然这里配置了主机互信,但是在安装过程中仍然有可能会提示错误,可跳过此步骤通过安装程序进行主机互信设置。
通过官网下载地址下载database和grid安装程序,得到压缩包。
将压缩包上传至rac1主机并解压,其中database上传至oracle用户目录下,grid上传至grid用户目录下。
在Oracle RAC两个节点上安装cvuqdisk,否则,集群验证时程序就无法发现共享磁盘。
[root@rac1 ~]# cd /home/grid/grid/rpm/
[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.7-1.rpm
准备中... ################################# [100%]
Using default group oinstall to install package
正在升级/安装...
1:cvuqdisk-1.0.7-1 ################################# [100%]
登录grid用户,切换目录至grid的安装程序目录,并执行以下命令:
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
如果提示文件权限不足,请为相应的文件添加可执行权限。
chmod u+x filename
根据输出内容,安装缺失的软件包。其中部分软件包在操作系统的ISO文件中可以找到。
i386的版本在Linux 6已经变更为i686,如果已经安装了对应的版本,可忽略检查结果。
设置DISPLAY变量
[root@localhost ~]# export DISPLAY=:0.0
[root@localhost ~]# xhost +
执行安装程序
./runInstaller
安装图形界面乱码问题解决:在
/home/grid/grid/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles
目录下找到all.jar
文件,并用文件打包器打开,在/jdk/jre/lib/fonts/
目录下添加fallback
目录,并将zysong.ttf
添加到该目录下。重新执行runInstaller安装程序后,界面以支持中文显示。
1.png
安装集群
选择高级安装
选择语言
填写SCAN信息。SCAN名称为/etc/hosts文件中配置的scan-ip,SCAN端口为默认的1521。去掉GNS配置勾选。
点击下一步,对SCAN进行验证。
如果提示scan ip已经分配,则修改/etc/hosts文件,为scan-ip分配一个未使用的IP地址。退出安装程序并重启。
配置集群节点信息,这里添加第二个节点的主机名和虚IP名称。
点击下一步时,提示INS-06006错误。需要进一步配置SSH连接。
填写操作系统口令,并勾选“重用用户主目录中存在的私有密钥和公共密钥”,点击设置开始建立连接。
建立连接时,由于网卡接口名称不一致提示INS-40927警告信息。
解决办法:修改/etc/udev/rules.d/70-persistent-net.rules文件,使得两个主机的网卡名称对应,并将其中多余的网卡接口删除。确保两台主机eth2在同一网段,eth3在同一网段。
指定网络接口
选择ASM自动存储管理
通过前面的配置,这里安装程序已经可以正确的识别到共享磁盘了。选择OCR1、OCR2、VOTINGDISK,并指定磁盘组名称为OCR,冗余方式为外部。
指定ASM口令,测试环境为方便记忆,对所有账户使用同一口令,实际生产环境建议使用不同口令。
故障隔离选择不使用IPMI
操作系统组设置
安装程序使用之前在环境变量中配置的路径作为安装目录。
产品清单目录
执行安装前检查
查看检查结果并执行修复脚本,这里会列出不满足的安装条件,以及缺失的软件包。
即使在/etc/sysctl.conf
中配置了kernel.sem
内核参数,安装程序还是认为不满足条件。其中的原因有待确认,这里选择了忽略。
生成概要,保存响应文件。
开始安装。
执行远程操作时,可能耗时较长,请耐心等待。
执行远程操作结束后,准备执行Root脚本。
按照提示顺序,分别在两台主机上执行对应的脚本。
执行脚本时,可能遇到的问题及解决方法如下:
执行root.sh脚本时,提示找不到libcap.so.1文件。
/u01/app/11.2.0/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory
[root@rac2 lib64]# ln -s /lib64/libcap.so.2.16 /lib64/libcap.so.1
重新执行sh root.sh
前,需要先执行/u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force
进行撤销配置操作。
执行root.sh脚本时,输出到Adding daemon to inittab时,等待时间很长或者出现下面的错误。
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
执行/u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose
,重新执行sh root.sh脚本,在显示Adding daemon to inittab的时候,同时再打开一个终端并执行:
dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
在两台节点上执行完配置脚本后,点击确定,安装程序继续完成剩余安装。
安装即将结束时,提示INS-20802错误,查看详细资料和日志。
选择跳过完成安装。
集群安装完成。
执行检查命令前需将grid的程序路径添加到环境变量中。
export PATH=/u01/app/11.2.0/grid/bin:${PATH}
检查crs状态
[grid@rac1 ~]$ 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
检查Clusterware资源
[grid@rac1 ~]$ crs_stat -t -v Name Type R/RA F/FT Target State Host ---------------------------------------------------------------------- ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE rac1 ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac1 ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1 ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac1 ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE rac1 ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac1 ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac1 ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1 ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1 ora.rac1.gsd application 0/5 0/0 OFFLINE OFFLINE ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1 ora.rac1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac1 ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2 ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2 ora.rac2.gsd application 0/5 0/0 OFFLINE OFFLINE ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2 ora.rac2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac2 ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
检查集群节点
[grid@rac1 ~]$ olsnodes -n
rac1 1
rac2 2
检查监听器进程
[grid@rac1 ~]$ ps -ef|grep lsnr|grep -v 'grep'
grid 16577 1 0 01:54 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 16988 1 0 01:59 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
查看ASM状态
[grid@rac1 ~]$ srvctl status asm -a
ASM 正在 rac1,rac2 上运行
ASM 已启用。
运行/u01/app/11.2.0/grid/bin/asmca
程序。
查看Disk Groups选项卡,可以看到执行安装程序时添加的OCR磁盘组。
点击Create创建DATA磁盘组。
创建闪回恢复区磁盘组。
添加后的磁盘组情况:
完成ASM磁盘组配置后,接下来开始安装database软件。安装前,确保已经添加了DISPLAY
变量,配置方法见前文。
启动安装程序
[root@rac1 grid]# su - oracle
[oracle@rac1 database]$ ./runInstaller -ignoreInternalDriverError
如果安装程序界面出现乱码,处理方式与安装grid时的处理方式相同,参见前文。
因为仅作测试,这里取消接收安全更新勾选。
仅安装数据库软件。
RAC数据库安装
配置SSH连接
选择语言
选择企业版数据库
忽略INS-20702错误
配置操作系统组
开始安装
按照提示顺序,在两个节点上执行对应的脚本。
完成安装
切换为oracle用户,并执行dbca
命令创建集群数据库。
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ dbca
选择RAC数据库。
创建一个新的数据库。
自定义数据库创建过程。
填写全局数据库名和SID,并选择所有节点。
配置企业管理器和磁盘备份计划。
为账户设置口令。
选择存储位置。
在选择磁盘组界面发现DATA和FRA磁盘组尚未挂载。
此时,切换至grid用户并连接至数据库,进行磁盘组挂载。
[grid@rac1 ~]$ sqlplus / as sysdba
查看当前磁盘组状态,其中DATA和FRA处于为DISMOUNTED状态。
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
OCR MOUNTED
FRA DISMOUNTED
DATA DISMOUNTED
以sysasm角色连接数据库。
SQL> conn / as sysasm
执行挂载磁盘组操作
SQL> alter diskgroup DATA mount;
Diskgroup altered.
SQL> alter diskgroup FRA mount;
Diskgroup altered.
此时,再次查看磁盘组状态均为MOUNTED状态。
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
OCR MOUNTED
FRA MOUNTED
DATA MOUNTED
回到界面后,可重新选择DATA磁盘组。
指定Flash Recovery Area,选择FRA磁盘组。
数据库组件配置。
设置字符集。
设置数据库存储,这里直接点Next。
勾选生成数据库创建脚本选项,点击Finish开始创建过程。
查看并保存摘要。
接下来会生成创建脚本。
然后开始数据库创建过程,此过程非常耗时,请耐心等待。
安装过程中,可以在界面上显示的路径下,查看安装日志。
创建完成后,会显示数据库的关键信息,包含企业管理器的访问地址。
至此,Oracle 11gR2 RAC集群安装结束。
客户端使用scan-ip
连接数据库时,如果遇到ORA-12545
错误,可通过以下方式处理:
1. 用管理员身份连接数据库
sqlplus / as sysdba
2. 查看监听参数
SQL> show parameter listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=rac1
-vip)(PORT=1521))))
remote_listener string scan-ip:1521
3. 修改listener参数
其中HOST分别为两台主机的vip,与/etc/hosts
文件中的一致。
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.6.201)(PORT=1521))))' sid='orcl1';
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.6.202)(PORT=1521))))' sid='orcl2';
4. 客户端连接测试
C:\Users\Administrator>sqlplus sys/oracle@scan-ip/orcl as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 11月 27 15:59:26 2019
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL>
客户端已经可以通过scan-ip连接到数据库了。
如果这篇文章对你有帮助,可否留下一个赞,谢谢!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。