redhat6.3下安装ORACLE11.2.3RAC
主机环境:双节点,浪潮850
操作系统:REDHAT 6.3
内核版本:2.6.32-279.el6.x86_64
ORACLE数据库版本:11.2.0.3.0
网卡两块:bond0,bond0:1 均为多块eth网卡捆绑后的网卡
共享存储连光纤交换机
一 操作系统准备
1 系统软件包
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
# gcc-4.1.2
gcc-c++-4.1.2
# glibc-2.5-24
# glibc-common-2.5
# glibc-devel-2.5
# glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
# libgcc-4.1.2
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.2
numactl-devel
unixODBC
unixODBC-devel
安装gcc软件时需要上述“#”号后面软件包按一定顺序安装,否则在安装GI时(测试完成之后)会
报错:"error in inroking target 'mkldflags ntcontab.o nnfgt' of makefile ' /u01/app/11.2.0/grid/network/lib/ins-net-client.mk' "
安装顺序如下:
glibc-common-2
kernel-header-2
libgcc-4
glibc-2
libgomp-4
nscd-2
glib-headers-2
glibc-devel-2
mpfr-2.4
ppl-0.
cloop-ppl-0.
cpp-4
gcc-4
报错时上网查询,有给出CPP包没安的解释,但如果不按顺序把GCC按上的话仍然会报次错误。
( 配置操作系统参数 )
2 网络参数
由于不使用DNS,直接在/etc/host
#public
192.168.20.17 lc01 lc01.localdomain
192.168.20.18 lc02 lc02.localdomain
#private
10.10.10.17 lc01-priv lc01-priv.localdomain
10.10.10.18 lc02-priv lc02-priv.localdomain
#virtual
192.168.20.22 lc01-vip lc01-vip.localdomain
192.168.20.21 lc02-vip lc02-vip.localdomain
#scan
192.168.20.19 data-scan
3 修改操作系统内核
在/etc/sysctl.conf文件中添加修改
# 信息队列的最大值
kernel.msgmnb = 65536
# 一条信息的最大值
kernel.msgmax = 65536
# 用于定义单个共享内存的最大值,应能在一个共享内存段下容纳下整个SGA,设置过低会导致需创建多个共享导致系统性能下降
kernel.shmmax = 687194767360
# 可使用共享内存总页数,单位 pages,一般为shmmax/shmmin
kernel.shmall = 167772160
#共享内存段的最大数量,一般为4096
kernel.shmmni = 4096
#semaphores:semmsl,semmns,semopm,semmni
kernel.sem = 5200 665600 5200 128
#semmsl 信号量集合中能包含的信号量最大数目
#semmns 系统内可许可的信号量最大数目
#semopm 表示单个semopm()调用在一个信号集合上可以执行的操作数量
#semmni 表示系统信号量集合总数
#系统许可的文件句柄的最大数,linux系统中可以打开文件的数量
fs.file-max = 6815744
#同时可拥有异步IO请求数目
fs.aio-max-nr = 1048576
#套接字接收缓冲区大小的缺省值
net.core.rmem_default = 262144
#套接字接收缓冲区大小的最大值
net.core.rmem_max = 4194304
#套接字发送缓冲区大小的缺省值
net.core.wmem_default = 262144
#套接字发送缓冲区大小的最大值
net.core.wmem_max = 1048586
#应用程序可使用的ipv4端口范围
net.ipv4.ip_local_port_range = 9000 65500
修改完后使用/sbin/sysctl -p使参数生效
4 修改/etc/security/limits.conf
加入
#nproc 单个用户可用最大进程数量,nofile 可打开文件的最大数量
* soft nproc 6000
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
5 禁用selinux和firewall
在 /etc/selinux/config 文件中把SELINUX=enable改为SELINUX=disable
service iptables stop
chkconfig iptables off
#如果不按firewall安装GI时会报错
6 建立用户和组
groupadd -g 500 oninstall
groupadd -g 501 dba
groupadd -g 502 oper
useradd -u 600 -g oinstall -G dba,oper oracle
passwd oracle
7 创建文件夹
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle
chown -R root:dba /u01
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/grid
chmod -R 755 /U01
8 添加环境变量
su - oracle
在 .bash_profile中
#ORACLE_SETTING
export DIAPLAY=:0.0
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;export ORACLE_HOME
ORACLE_SID=db_1;export ORACLE_SID
export ORACLE_UNQNAME=db
ORA_CRS_HOME=$ORACLE_BASE/product/11.2.0/crs;export ORA_CRS_HOME
ORACLE_TERM=xterm;export ORACLE_TERM
PATH=/user/sbin/:$PATH;export PATH
PATH=$ORACLE_HOME/bin:$PATH;export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
su - grid
在.bash_profile
# for oracle
export DISPLAY=:0.0
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/11.2.0/grid;
export ORACLE_TERM=xterm;
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;
9 设置ssh互信
设置grid用户互信
在grid用户下 mkdir .ssh
chmod 755 .ssh
ssh-keygen -t rsa 在.ssh目录下生成id_rsa.pub,id_rsa
ssh-keyget -t dsa 在.ssh目录下生成id_dsa.pub,id_dsa
都在.ssh目录下
把节点1 的.pub文件全部拷贝到authorized_key文件中,cat id_rsa.pub>>authorized_key,cat id_dsa.pub>>authorized_key;
节点2的.pub文件全部拷贝到authorized_keys文件中, cat id_rsa.pub>>authorized_key,cat id_dsa.pub>>authorized_keys.
把节点1的authorized_key文件拷贝到节点2的.ssh目录下
scp authorized_key 节点2:.ssh/
在节点2 把authorized_key追加到authorized_keys文件中 cat authorized_key>>authorized_keys,
这时authorized_keys中包含所有节点的公钥。
把节点2下的authorized_keys拷贝回节点1.ssh目录下
scp authorized_keys 节点1:.ssh/
这时两个节点都有全部的公钥。
测试:ssh 节点1 date;
ssh 节点1-priv date;
ssh 节点1-vip date;
ssh 节点2 date;
ssh 节点2-priv date;
ssh 节点2-vip date;
测试在.ssh目录下生成known_hosts文件记录连接的主机信息,第一次连接选择yes即可。
同样步骤在oracle用户下设置互信
二 设置共享存储
共享存储是rac集群能够实现的关键,而网络上大部分都是用虚拟机环境设置的,在真实环境下设置有点胆战心惊。
首先请存储工程师挂载共享存储
挂在完成后在/dev下发现sd*等文件共70张。
第一个考虑的问题用不用向正常访问一样分区,格式化。
因为要使用ASM,考虑ASM的一个目的是绕过操作系统直接操作存储,如果格式化了又把磁盘的操作交给操作系统,一旦操作系统出了问题可能会影响读写性能,也可能成为性能瓶颈,最后决定不分区也不格式化直接用裸盘。
这时问题来了,通过redhat6.3的磁盘实用程序查看磁盘时,磁盘都有报警:“Warning:Several paths to this drive has been detected but no corresponding multipath device was found.You OS may be misconfigured.”
与存储工程师联系确认发现,那边只挂载了10块盘,而我这边却显示为70块这是怎么回事?
原来存储工程师在挂在存储时使用了多路劲技术,这种技术能实现:1 故障的切换和恢复 2 IO流量的负载均衡 3 磁盘虚拟化
测了一下磁盘的IO确实有巨大的提升
那多路径形成的sd*盘能否直接使用?感觉如果直接使用就可能失去故障切换恢复和IO流量负载均衡的优势,在挂载ASM磁盘时也不好挂在(70多张盘)。
最后决定使用linux下的多路径软件multipath解决
1 安装multipath
在操作系统光盘目录下安装以下软件
device-mapper-event-libs
device-mapper-multipath
device-mapper-libs
device-mapper-multipath-libs
device-mapperevent
device-mapper-persistent-data
device-mapper
2 加载
查看多路径状态 multipath -ll
返回结果有:DM multipath kernel driver not loaded 说明DM模块没有加载
初始化DM: modprobe dm-multipath
modprobe dm-round-robin
service multipath start
multipath -v2
这时再通过 multipath -ll 查看
返回 /etc/multipath.conf does not exist 说明多路径软件的配置文件还没有配置
3 配置文件
在/etc下建立文件multipath.conf加入
#默认策略
defaults {
udev_dir /dev #默认使用的目录
user_friendly_names yes
path_grouping_policy multibus #默认的路径组策略
failback immediae #故障恢复的模式
no_path_retry fail #在路径不可用下尝试失效路径的次数(不尝试)
getuid_callout "/sbin/scsi_id -g -u --whitelisted --device=/dev/%n"
#获得唯一设备号的默认程序,通过唯一设备号把同一个盘识别出来
}
#如果不想让某些磁盘被多路径软件识别出来而是作为虚拟磁盘使用可以加入
# blacklist { devnode "^sdh"}
#因为使用多路径挂载的每次重启系统后同一块盘的显示磁盘会发生变化,这样如果按名称来可能出错,因此按路径来
#使用multipath -v3 查询出每块磁盘的wwid
multipaths {
multipath {
wwid3600507680180870dd0000000000003d0
alias OCR01
}
multipath {
wwid 3600507680180870dd0000000000003d1
alias OCR02
}
multipath {
wwid 3600507680180870dd0000000000003cf
alias OCR03
}
multipath {
wwid 3600507680180870dd0000000000003ce
alias DG01
}
multipath {
wwid 3600507680180870dd0000000000003d7
alias DG02
}
multipath {
wwid 3600507680180870dd0000000000003d6
alias DG03
}
multipath {
wwid 3600507680180870dd0000000000003d5
alias ARCHDG01
}
multipath {
wwid 3600507680180870dd0000000000003d3
alias VOTE01
}
multipath {
wwid 3600507680180870dd0000000000003d4
alias VOTE02
}
multipath {
wwid 3600507680180870dd0000000000003d2
aliasVOTE03
}
}
#这时无论重启时某块磁盘在系统中显示是:/dev/sda,/dev/sdaa,/dev/sdab,
#还是/dev/sda,/dev/sds,/dev/sdj
#在/dev/mapper目录下都是DG1
4 使配置文件生效
每次修改配置文件都得重启,或重新加载服务
service multipathd restart/ service multipathd reload
重新配置策略 :multipath -F 清空以前的策略,这时在/dev/mapper下除了control文件外没有其他文件
multipath -v2 加载新的策略,这时在/dev/mapper下出现 OCR1,OCR2,OCR3等文件
使用设备时直接使用/dev/mapper/OCR1等就可以
5 权限
/dev下默认属主为:root,属组为 disk
在安装GI时会显示不出来磁盘,必须修改磁盘权限
但直接修改 /dev/mapper/OCR1等文件不会生效,该目录不能修改属主(可能因为都是link文件)
但该目录下的control文件可以修改,chown grid:oinstall /dev/mapper/control
修改完成后在安装GI时确实能显示磁盘/dev/mapper/*,但仍有报错,而且重启后权限又变回root:disk.
通过multipath -l 查询
查询结果处理说明 /dev/mapper/OCR*是由哪几块/dev/sd*组成,后面还显示了这时dm-*,
感觉dm-*为链接文件的真实文件,查找后发现dm-*就在/dev下
修改权限 chown grid:oinstall /dev/dm-*
修改后 GI运行没有报关于ASM存储的错误
三 安装GI
1 解压
将软件包p10404530_112030_Linux-x86-64_3of7.zip解压到节点rac01.
# unzip p10404530_112030_Linux-x86-64_3of7.zip
2 安装cvuadisk包
在Grid的安装包grid/rpm/cvuqdisk-1.0.9-1.rpm,以root用户安装
# export CVUQDISK_GRP=oinstall
# rpm -ivh cvuqdisk-1.0.9-1.rpm
3 以grid用户在grid目录下执行./runInstall名令
export LANG=C #这种语言变量,否则在出现的图形界面为乱码
./runInstall
如果使用./runInstall 出现错误:"无法使用命令 /usr/bin/xdpyinfo自动检查显示器颜色,是否设置DISPLAY"
解决办法:1 在root用户下执行:xhost +
返回信息为:"access control disabled,clients can connect from any host"
2 在 grid 用下,export DISPLAY=远程来源IP:0.0
即可
4 过程
安装选项: 安装和配置集群的网格基础结构.
安装类型: 高级安装
语言: 简体中文
网格即插即用: 集群名称: rac-cluster
SCAN名称: rac-scan (此名称应该与/ETC/HOSTS文件中sanip的对应名称一致)
SCAN端口: 1521
不配置GNS,如果需要自动生成虚拟IP,需配置GNS
GNS子域: racgrid
GNS VIP地址: 192.168.89.91
集群节点信息: 编辑和添加主机和虚拟IP名称
主机名 虚拟IP名
rac01 rac01v
rac02 rac02v
点ssh按钮配置节点ssh互信(需要输入grid用户密码)
注:第一次安装时肯能是缺少了某些包,出现一个小问题
当进行下一步时,提示错误"该主机名(节点-vip)已经被使用" 的错误,只有在两个节点的/etc/hosts文件中把vip的信息注释掉才能通过。如果在这之前注释掉vip仍然会报错,得把vip信息加上,再碰到错误"该主机名(节点-vip)已经被使用",才能进行下一步。怀疑是某个软件包(GCC等)没有安好。安装好后不会有次怪异的问题。
网络接口使用情况: 接口名称 子网 接口类型
PublicNet 192.168.20.0 公共
PrivateNet 10.10.10.0 专用
存储选项: 自动存储管理(ASM)
创建ASM磁盘组: 当选择存储选项:自动存储管理(ASM)后,需要创建ASM磁盘.
设置ASM磁盘搜索路径/dev/mapper/* #这时如果没有应注意/dev/dm*的权限
设置磁盘组名,使用normal,勾选出现的磁盘
#这时选择的磁盘作为OCR和vote盘使用
ASM口令: 设置SYS和ASMSNMP的口令,是用相同口令
故障隔离: 不使用智能平台管理接口(IPMI).
安装位置: 设置安装位置默认:Oracle基目录/u01/app/grid,软件位置/u01/app/11.2.0/grid
先决条件检查: 自动检查先决条件
/* 第一次检查时有几个报错 1 缺少包 cvuqdisk
(在grid/rpm目录下安装即可)
2 device check for asm
(应该是磁盘的顺序或权限有问题,顺序问题通过绑定wwid解决,权限问题修改/dev/dm*属主与属组)
3 NTP failed
NTP服务失败。因为两个节点都没做NTP服务,时间同步服务器在其他主机上,把/etc/ntp.conf改成/etc/ntp.conf.bak即可。
4 task resolv.conf Intergrity 因为没有使用DNS服务器,直接用/etc/hosts,该错误可以忽略。
*/
安装
/* 安装时报错
KFOD-070311
ORA-027472
都是因为共享磁盘权限的问题
OUI-10066
PRCI-1108
PRCI-1003
都是因为缺少包 libcap
*/
按提示在各节点上以root用户执行脚本.
/* 执行脚本时一定要先在第一个主机,即运行./runInstall程序的主机上执行,然后再在另一个上执行,否则会导致错误。
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/11.2.0/grid/root.sh
完成
检查: olsnodes
crsctl check crs (次命令只有root可以执行)
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
crs_stat -t -v
srvctl status listener
重新启动节点后,如果集群服务不能启动.crsctl check crs
需要检查设备权限的问题,重启后磁盘设备owner会被修改为root.
或者没有设置crs随系统启动.
/u01/app/11.2.0/grid/bin/crsctl stop crs # 停止CRS服务
/u01/app/11.2.0/grid/bin/crsctl start crs # 启动CRS服务
/u01/app/11.2.0/grid/bin/crsctl disable crs # 禁止随系统启动
/u01/app/11.2.0/grid/bin/crsctl enable crs # 允许随系统启动
/u01/app/11.2.0/grid/bin/crsctl stop cluster -all # 停止所有节点上运行的全部集群资源
/u01/app/11.2.0/grid/bin/crsctl start cluster -all # 启动所有节点上运行的全部集群资源
四 安装ORACLE软件
1 将oracle数据库软件解压到节点rac01.
unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip
2 以oracle登入系统,运行database下的runInstaller文件
配置安全更新 不需要接收更新
安装选项 选择仅安装数据库软件,后续再通过dbca创建数据库.
网格选项 Real Application Clusters数据库安装
节点全选 #如果CRS没有自动重启,就看不到节点,重新后得重新runInstall才能看到节点
点按钮SSH Connectivity.配置oracle下ssh互信.
产品语言 根据需要选择:英语、简体中文
数据库版本 企业版
安装位置 默认(根据.bash_profile中的全局变量设置)
Oracle基目录: /u01/app/oracle
软件位置: /u01/app/oracle/product/11.2.0/db_1
操作系统组 oinstall
先决条件检查 忽略警告
安装
按提示在每个节点上执行脚本/u01/app/oracle/product/11.2.0/db_1/root.sh
点OK完成安装
五 配置ASM
以grid用户运行asmca.
设置ASM磁盘搜索路径/dev/mapper/*,出现multipath配置的磁盘
创建磁盘时报错,因为每块磁盘不能超过两T,需要把超过2T的磁盘进行分区。
分区之后/dev/mapper下不会有变化,只有在fdisk -l 时能看到分区的盘,通过ASM也不会看到。
只有通过 multipath -F 清空多路径,再 multipath -v2 重新连接多路径才能看到,这时在ASM里也能选磁盘的分区了。
六 创建数据库
以oracle用户运行dbca.(为方便管理应该在第一个节点上执行,否则可能会出现sid_1在节点2上运行,sid_2在节点1上运行的情况)
数据库类型 Oracle Real Application Clusters数据库
操作 创建数据库
数据库模板 一般用途
数据库标识 设置全局数据库名和SID前缀,节点全选
管理选项 默认
数据库身份 设置密码
数据库文件位置 存储类型:自动存储管理,使用Oracle-Managed files,数据库区:设置之前创建的磁盘组+DATA
恢复区:+FLASH_AREA
字符集
安装
出现提示在节点rac02上启动database control出错,在节点rac02执行以下命令:
[oracle@rac02 ~]$ export ORACLE_UNQNAME=astt
[oracle@rac02 ~]$ /u01/app/oracle/product/11.2.0/db_1/bin/emctl start dbconsole
点OK安装完成.
安装后可能不能连接
如果出现错误ORA-12537: TNS:connection closed,可能是权限的问题,执行以下可以解决:
# chown -R oracle:oinstall /u01/app/oracle
# chown -R grid:oinstall /u01/app/grid
# chmod -R 755 /u01/app/oracle
# chmod -R 755 /u01/app/grid
七 测试数据库
运行sqlplus,以dba权限登录Oracle系统后执行以下语句查询集群节点状态:
$ ./crs_stat -t -v
$ sqlplus / as sysdba;
SQL> select instance_name,host_name,status from v$instance;
SQL> select instance_name,host_name,status from gv$instance;
$ srvctl stop database -d db -o immediate;
$ srvctl start database -d db;
转载于:https://blog.51cto.com/4445027/1659818
redhat6.3下安装ORACLE11.2.3RAC相关推荐
- fedora 安装oracle 12c,Fedora12下安装Oracle11客户端
目标:将oracle-client(v11)安装到rdquo;/opt/oracle/rdquo;下准备好如下三个安装包,放在某个目录下,如:/root/software/ora 目标:将Oracle ...
- Linux下安装oracle11.2.0.4
注意:#代表root用户下的操作: $代表oracle用户 Oracle安装包及rpm离线依赖包 rpm离线依赖包 1.关闭.防火墙 #vi /etc/selinux/config 设置SELINUX ...
- 在redhat6.4下安装 Oracle® Database 11g Release 2
OS版本: 安装过程的相关信息: pdksh 安装好后根据需要设置oracle开机自启动http://www.cnblogs.com/softidea/p/3761671.html 设置环境变量NLS ...
- redhat6.下安装配置hadoop环境--单实例版本
redhat6.4下(用作hadoop master :记录所有数据分布情况--namenode)--安装单实例计算机 1.修改hostname [root@hadoop01 ]# vim /etc/ ...
- 【Oracle】Redhat6.5环境下安装oracle11G R2
1)检查基本需求(对于牛逼的服务器来说,这个肯定是满足要求的,可以跳过) 内存大小 grep MemTotal/proc/meminfo 交换分区大小 grep SwapTotal/proc/memi ...
- Windows7下无法安装Oracle11.1.0问题
问题现象 Windows7下安装Oracle11G(11.1.0.6.0),提示如下信息 正在检查操作系统要求... 要求的结果:5.0,5.1,5.2,6.0之一 实际结果:6.1 检查完成.此次检 ...
- oracle11系统安装,Windows系统下安装Oracle 11g R2教程,oracle11g
Windows系统下安装Oracle 11g R2教程,oracle11g Windows系统下安装Oracle 11g R2教程 Oracle 11g 共有两个大的版本,一个R1(Release 1 ...
- Linux下安装ORACLE(一周成果、全是干货!)
文章目录 一.安装前言 1.闲聊 2.提前知道的事 二.安装准备 1.Linux发行版本:ret hat7.4(更换yum源[传送门](https://blog.csdn.net/qq_4295617 ...
- 安装Oracle11.2 RAC for Solaris10 sparc64(五)
简单记录一下Solaris 10上Oracle 11.2 RAC环境的安装过程. 这一篇继续描述另一个CLUSTER的问题. 安装Oracle11.2 RAC for Solaris10 sparc6 ...
最新文章
- flex和bison实例分析
- 随手拈来尽是折劲额事体
- 谷歌程序员犯低级错误?少打一个字符引发重大 Bug,致大量 Chromebook 无法解锁...
- python读取文件特定内容_python读取指定内存的内容
- python打不开怎么办-python为什么打不开
- 安装SQL2000,挂起无法安装问题
- python访问服务器注册表,如何在Python中使用写入权限打开Windows注册表
- 只等你来!OpenAtom XuperChain 开发者夏季论坛来啦
- BZOJ 3513: [MUTC2013]idiots [FFT]
- [C# 基础知识梳理系列]专题四:事件揭秘
- C语言:从键盘输入一个正整数,将该数倒序输出。
- 【渝粤教育】国家开放大学2018年秋季 1301T病理生理学 参考试题
- unistd.h的close(0)导致std::cout被关闭
- 65位高校教师接龙晒工资!给打算入高校的研究生们参考!
- altium designer(AD13)隐藏敷铜的方法
- 微信小程序图片设置成圆形
- 消防Linux软件图形显示系统,消防控制室图形显示装置
- 俱乐部/会所/协会在短信平台应用指南
- 一文带你读懂 Promise
- 目标码格式解析之DSP目标码Cinit段
热门文章
- 是逻辑运算符 java_跟我学java编程—Java逻辑运算符
- 18 个惊人的 GitHub 仓库
- authentication method mysql 8.0查询_mysql 索引整理
- java 组合 遍历 算法_java编程n个集合每次从每个集合里面取出一个元素组成一个字符串列出所有组合算法...
- mysql不带加密模式jar包_Spring boot jar包加密(防止放在客户端反编译)
- JS面向对象之封装自定义构造函数
- php读取西门子plc_AB PLC和西门子PLC之间需要交换数据
- java实验总结_Java实验总结——初学(上)
- python fortran混合编程_python fortran c 混合编程
- js字符串转换为json对象JSON.parse()及将json对象转为json字符串JSON.stringify()