Linux平台Oracle 23c单实例 安装部署配置 快速参考

转眼间已经2023年,再有一周就要过年了,在这里先给大家拜个早年,祝大家新的一年万事顺利。
Oracle如今版本号也和年份挂钩,在前段时间的OCW上也宣布发布了beta版本的23c,因为23c是继19c之后的另一个长期支持版本,所以今天就下载安装测试尝尝鲜。
自己的测试环境目前剩余资源有限,就先装个单实例的23c体验下吧:

  • 1.准备系统环境
  • 2.安装介质上传
  • 3.安装23c软件并创建数据库
  • 4.番外:OEL8.7的环境准备

1.准备系统环境

直接依据db1克隆出一个机器供23c安装使用。 克隆后配置需要的内存8G,修改下主机名db23c、IP地址:192.168.1.23
[root@bogon ~]# virt-clone -o db1 -n 23c --auto-clone
[root@bogon ~]# virsh start db1
[root@bogon ~]# virsh setmem 8192000
[root@bogon ~]# virsh console 23c

[root@db01xx ~]# hostnamectl set-hostname db23c
[root@db01xx ~]# vi /etc/hosts
[root@db01xx ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@db01xx ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens9
[root@db01xx ~]# reboot

嗯,有虚拟机克隆起来真是太香了!

2.安装介质上传

因为模版中之前没上传23c的介质,所以需要拷贝上传下:
jingyuzhao@jingyuzhao-mac 23c % scp db_home.zip root@192.168.1.23:/u01/media
root@192.168.1.23's password: 
db_home.zip                                    40% 1520MB  11.1MB/s   03:24 ETA

无线网络直接传的,速度不快,但11MB/s的速度还可以接受,就不折腾去连千兆网线了。

3.安装23c软件并创建数据库

1) 安装Oracle用户、组、设置密码

groupadd -g 54321 oinstall  
groupadd -g 54322 dba  
  
useradd -u 54321 -g oinstall -G dba oracle  

echo oracle | passwd --stdin oracle

2) 创建$ORACLE_BASE目录并赋予上层目录oracle权限:

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app

3) 安装好Oracle需要的rpm包
先安装19c需要的rpm包,如果缺少再安装,整理后回填到这里,供下次安装参考。
等23c正式官方文档出来后,再按文档说明安装。

yum -y install oracle-database-preinstall-19c

4)修改配置文件 /etc/security/limits.conf

oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

5)修改配置文件 /etc/sysctl.conf

增加如下内容:

vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.shmmni = 4096  
kernel.shmall = 1073741824  
kernel.shmmax = 4398046511104
kernel.sem = 250 32000 100 128
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 = 1048576 
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.panic_on_oops = 1

然后 sysctl -p 生效。

6)Oracle用户环境变量配置

vi ~/.bash_profile

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/23.0.0/db_1
export ORACLE_SID=demo23
export PATH=$ORACLE_HOME/bin:$PATH

7)Oracle用户解压oracle软件安装包

mkdir -p /u01/app/oracle/product/23.0.0/db_1
cd $ORACLE_HOME
unzip /u01/media/db_home.zip

8)使用图形界面安装数据库软件,dbca建库,netca创建监听

export DISPLAY=192.168.1.9:0.0
./runInstaller

居然遇到错误了。。

[oracle@db23c db_1]$ ./runInstaller 
ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.
/u01/app/oracle/product/23.0.0/db_1/perl/bin/perl: error while loading shared libraries: libnsl.so.2: cannot open shared object file: No such file or directory

查看发现系统只有 libnsl.so.1 的链接指向:

[oracle@db23c db_1]$ ls -l /lib64/libnsl*
-rwxr-xr-x. 1 root root 115824 Sep 30  2020 /lib64/libnsl-2.17.so
lrwxrwxrwx. 1 root root     23 Jan  9 11:48 /lib64/libnsl.so -> ../../lib64/libnsl.so.1
lrwxrwxrwx. 1 root root     14 Jan  7 00:02 /lib64/libnsl.so.1 -> libnsl-2.17.so

试着创建一个链接试试看(需要root用户权限):

# Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
[root@db23c ~]# ln -s /lib64/libnsl-2.17.so /lib64/libnsl.so.2

然后再尝试:

[oracle@db23c db_1]$ ./runInstaller 
/u01/app/oracle/product/23.0.0/db_1/perl/bin/perl: /lib64/libcrypt.so.1: version `XCRYPT_2.0' not found (required by /u01/app/oracle/product/23.0.0/db_1/perl/bin/perl)
/u01/app/oracle/product/23.0.0/db_1/perl/bin/perl: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /u01/app/oracle/product/23.0.0/db_1/perl/bin/perl)

额,看起来不行,库文件很多都不符合23c的要求看起来。当前系统是OEL 7.9,推测23c要适配OEL 8.*才可以,因为目前23c只是beta版,在MOS的Certifications里面还没有相关信息,等正式版出来,大家去参照官方说明即可。
根据经验,步骤都是OK的,就是系统要换新版本的系统,换了OEL 8.7 之后果然一切顺利。
来看下23c的安装启动画面~

开始图形配置23c的安装:

在这一步可以看到,23c这个下一代的长期支持版本,已不再提供non-cdb的选项:

另外注意,在预检查的部分,发现默认除了oinstall和dba组,还有oper组,可以执行脚本修复:

同时还发现还需要安装policycoreutils-python-utils这个rpm包,直接yum安装即可。

[root@db23c db_1]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
[root@db23c db_1]# /tmp/InstallActions2023-01-13_11-39-14AM/CVU_23_oracle_2023-01-13_11-39-17_17676/runfixup.sh
All Fix-up operations were completed successfully.
[root@db23c db_1]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54323(oper),54322(dba)

[root@db23c db_1]# yum install policycoreutils-python-utils

修复之后,就只剩下swap和kvm-clock两项不符合要求了,这个是我测试环境受限,可以忽略:

最后完成安装:

4.番外:OEL8.7的环境准备

去 edelivery.oracle.com 下载一个OEL 8.7,再次尝试。 发现介质变的好大,OEL 7.9才4G+大小的规模,OEL 8.7居然有12G大小。

1)KVM环境下安装OEL 8.7

virt-install \
--network bridge:br0 \
--name oel8 \
--ram=8192 \
--vcpus=2 \
--disk path=/flash/vm-images/oel8.img,size=20 \
--cdrom /flash/ISO/OracleLinux-R8-U7-Server-x86_64-dvd.iso

2)配置网络

配置网卡时,发现在OEL 8中,配置完熟悉的ifcfg-xxx文件,使用systemctl restart network已经不再有用。
使用 nmcli c reload 重载网络配置才可以生效网卡。

3)virsh console oel8 卡住问题
发现解决 virsh console oel8 卡住问题也和之前在OEL7配置不一样,针对ttyS0的几个文件,在OEL8中都没找到!

--这个/etc/securetty文件原来没有,直接生成了一个新的。
echo ttyS0 >> /etc/securetty

--在 `/etc/default/grub` 文件中的 `GRUB_CMDLINE_LINUX` 这一行的最后添加 `console=ttyS0,115200` (引号里面哦)
GRUB_CMDLINE_LINUX="resume=/dev/mapper/ol-swap rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet console=ttyS0,115200"

--生成配置文件
[root@bogon system]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done

--启动对应服务
systemctl status serial-getty@ttyS0
systemctl start serial-getty@ttyS0
systemctl enable serial-getty@ttyS0

--尝试virsh console oel8连接成功:
[root@bogon ~]# virsh console oel8
连接到域 oel8
换码符为 ^]


Oracle Linux Server 8.7
Kernel 5.15.0-3.60.5.1.el8uek.x86_64 on an x86_64

bogon login: root
Password:
Last login: Thu Jan 12 23:36:42 from 192.168.1.4

4)克隆oel8
和文章开头时的示例类似,来配置主机名db23c、IP地址:192.168.1.23

[root@bogon ~]# virt-clone -o oel8 -n 23c --auto-clone
[root@bogon ~]# virsh start 23c
[root@bogon ~]# virsh console 23c

[root@db01xx ~]# hostnamectl set-hostname db23c
[root@db01xx ~]# vi /etc/hosts
[root@db01xx ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens3
[root@db01xx ~]# nmcli c reload
[root@db01xx ~]# nmcli c up ens3 
[root@db01xx ~]# reboot

这次不用raw,试着添加一个动态增长的磁盘:

[root@bogon ~]# qemu-img create -f qcow2 -o preallocation=falloc /flash/vm-images/23c-lun1.qcow2 100G
Formatting '/flash/vm-images/23c-lun1.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 preallocation='falloc' lazy_refcounts=off
[root@bogon ~]# 
[root@bogon ~]# virsh attach-disk 23c /flash/vm-images/23c-lun1.qcow2 sdb
成功附加磁盘

然后登录到VM中,进行lvm配置操作,最终分好两个目录 /u01 和 /oradata

[root@db23c ~]# pvcreate /dev/sdb
[root@db23c ~]# vgcreate ora /dev/sdb
[root@db23c ~]# lvcreate -L 50G -n u01 ora
[root@db23c ~]# lvcreate -l 12803 -n oradata ora
[root@db23c ~]# mkfs.xfs /dev/mapper/ora-u01
[root@db23c ~]# mkfs.xfs /dev/mapper/ora-oradata
[root@db23c ~]# mkdir /u01
[root@db23c ~]# mkdir /oradata
[root@db23c ~]# vi /etc/fstab 		--末尾添加两行:
/dev/mapper/ora-u01	/u01			xfs	defaults	0 0
/dev/mapper/ora-oradata	/oradata		xfs	defaults	0 0
[root@db23c ~]# mount -a
[root@db23c ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  8.5M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/ol-root       17G  2.0G   16G  12% /
/dev/sda1               1014M  245M  770M  25% /boot
tmpfs                    794M     0  794M   0% /run/user/0
/dev/mapper/ora-u01       50G  390M   50G   1% /u01
/dev/mapper/ora-oradata   50G  390M   50G   1% /oradata
[root@db23c ~]# chown oracle:oinstall /oradata

至此,新的基础环境准备就绪,回到文章开头,开始体验安装23c数据库吧~

AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
本文转载于网络 如有侵权请联系删除

相关文章

  • 技术解码丨斗鱼同款的SRT技术是如何对抗推流抖动的?

    RT到底是一个什么样的推流协议呢?针对链路丢包,SRT是如何解决的呢?本周的技术解码,为您带来SRT推流技术解析随着互联网基础设施和硬件设备的不断发展,广大直播观众对于直播观看的清晰度,延时等方面的体验要求越来越高,直播也随之进入了低延时高码率的时代,直播传输技术面临着越来越高的要求和挑战。腾讯视频云为此在全链路上针对流媒体传输不断深入优化,使得在各大重要赛事上具备了高可靠、低延迟、高画质和音质的需求,同时我们也跟客户,比如斗鱼,进行了更深度的合作。不光在服务端,在APP端也进行了SRT的合作,和赛事一样从源头上保证稳定。2021年3月23日,斗鱼发布2020年第四季度财务报表“在技术和研发方面,第四季度斗鱼与腾讯达成合作,引入RTMPoverSRT技术对容易产生网络抖动的无线网络环境进行了优化。该技术极大缓解了因链路丢包造成的推流丢帧问题,即使网络在40%丢包的情况下,依然能流畅进行直播。”那么SRT具体是一个什么样的推流协议呢,我们可以通过以下的测试数据详细了解下。通常在直播过程中因网络丢包,会造成各种丢帧,会造成各端卡顿甚至花屏,给观众造成很不好的观看体验,针对链路丢包,SRT是

  • 快速学习-如何学习一门新语言

    程序员之道,万变不离其宗,说相声讲究的是说、学、逗、唱,学习程序最快也是最好的办法就是:过、抄、仿、改、调、看、练、创、悟: 过: 学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解——第一遍:无需了解太过深入的理论,大体知道这门语言是什么样的,主要面向哪些场合,一些基本的语法格式是什么样的就可以了。 抄代码: 刚开始写代码,没有多少人一上来就能立刻自己写一个很完善很强大的代码,甚至连基本的语法都会写错,这时候抄代码就很关键了,从书上抄,从例子里抄,边抄边想,边想边回忆语法。 模仿改: 自己会抄写一些简单的代码,熟悉了一遍此语言的简单语法后,但还不太清楚怎样下手写一个完整的代码模块,所以这一步要仿写了,仿照给出的代码写一个属于自己的代码 勤调试: 没有人能一下子写出完全正确的代码,自己试着写一些代码,通过不断调试来验证自己的一些想法,继续思考,再次验证,来回折腾。 熟悉一些基本的调试工具以及调试方法。 看n遍: 出错或遇到问题时,将代码从头看到尾,看了一遍又一遍,直到快全部记住时,总能找出问题原因,相信方法总会比问题多 练 重复2-5步三遍以上,不解释。 创

  • ES6 手写一个“辨色”小游戏

    1.前言依稀记得几年前朋友圈流行的辨色小游戏,找出颜色不同的矩形。前些天突发奇想,打算自己手写一个类似的游戏,话不多说,先上Demo.--项目源码本实例基于ES6实现,并兼容ie9及以上。2.项目结构index.htmlindex.cssindex.js本文主要讲述如何使用js实现功能,htmlcss不在此范围。直接上代码。<!--index.html--> <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <metahttp-equiv="X-UA-Compatible"content="ie=edge"> <linkrel="stylesheet"hr

  • 两个非常有意思的适合桌面使用的Linux task调度器: BFS和MuqSS

    大家都知道Linux内核task调度器经历了O(n),O(1)调度器,目前是CFS,期间也出现了几个优秀的候选调度器,但最终都没能并入内核,我们只能从一些零散的patch和文章中知道它们的存在。但Linux内核的世界乃是非常之宽广,在主线内核之外还有很多支线可供观摩。本文我来介绍Linux主线内核之外的两个非常有意思的适合桌面使用的task调度器BFS和MuqSS。Linux内核其实有很多支线分支,其中Linux-CK就是著名的一支: https://wiki.archlinux.org/index.php/Linux-ck 该支线由ConKolivas维护,所以称之为CK(并非内裤哦…)。ConKolivas的信仰是万事不能一刀切,没有放之四海而皆准的真理!所以,他主要关注Linux桌面,他不相信存在one-size-fits-all的调度器,所以他设计了专门适用于桌面交互的BFS。BFS不是一个普适的task调度器,相反,它仅仅适用于桌面交互的环境。所以,为你的水冷游戏机使用BFS,而不是在携带众核CPU嗡嗡作响的2U服务器上使用它。MuqSS则是BFS的改进版。MuqSS的全称是

  • 《统计学习方法》使用 Travis-CI 持续集成

    GitHub与持续集成Travis-CI的集成非常简单。travis.build.png构建Python项目BuildingaPythonProject指定Python版本使用python密钥指定python版本。当我们更新Python构建映像时,别名3.6会指向不同的确切版本或补丁级别。language:python python: -'3.5' -'3.6' -'3.7' install: -pipinstall-rrequirements.txt script: -pytestslmethod复制Python3.7及更高版本您需要添加dist:xenial到您的.travis.yml文件以使用Python3.7及更高版本。例如:dist:xenial#requiredforPython>=3.7 language:python python: -"3.7"复制travis.pngPyPI部署https://docs.travis-ci.com/user/deployment/pypi/成功构建后

  • 求职面试-HR会问什么问题?

    前言面试是程序员们经常探讨的话题,只要你通过前面的技术面,最后一面必然是HR面试,基本上到了这关你离Offer的距离应该不会太远了,但有的公司的HR是有刷入的权利,如果你并不能很好的应对HR的问题,觉得你并不适合这个岗位或者跟企业文化有相悖的地方,他/她就有可能不推荐你加入这家公司,所以我们在面试的时候这一关一定要认真对待,多准备一些HR可能会问到的问题,提前了解公司的文化和产品,对你求职面试过程中都是有很大帮助的。下面我产品网络整理了一下求职面试过程中HR可能会问到的问题及相应的回答策略,希望能帮助到大家。参考: http://article.job5156.com/mianshi/mianshizhidao/2011/1125/76628.htmlHR常问问题一、为什么会离职? 二、为什么会选择xx公司? 三、为什么选择这个职位? 四、在原来的单位主要做什么工作的? 五、在原来工作上有哪些创新? 六、原来工作上遭遇了哪些挫折? 七、在工作中你联系最紧密的关系单位是哪里?为什么? 八、在这个新平台上你如何面对新的挑战? 九、你原来的工资待遇是怎样构成的? 十、你原来的单位有没有相应的

  • Android窗口管理分析(1):View如何绘制到屏幕上的主观理解

    窗口管理可以说是Android系统中最复杂的一部分,主要是它涉及的模块比较多,虽然笼统的说是窗口管理,其实,除了WindowManagerService还包括SurfaceFlinger服务、Linux的共享内存及tmpfs文件系统、Binder通信、InputManagerService、动画、VSYNC同步技术等,一篇文章不可能分析完全,但是可以首先对于窗口的显示与管理有一个大概的轮廓,再分块分解,涉及的知识点大概如下:窗口管理知识图谱.pngWMS的作用是窗口管理不负责View绘制既然是概述,我们不妨直观的思考一个问题,Activity是如何呈现到屏幕上的,或者说View是如何被绘制到屏幕上来的?或多或少,开发者都知道WindowManagerService是负责Android的窗口管理,但是它其实只负责管理,比如窗口的添加、移除、调整顺序等,至于图像的绘制与合成之类的都不是WMS管理的范畴,WMS更像在更高的层面对于Android窗口的一个抽象,真正完成图像绘制的是APP端,而完成图层合成的是SurfaceFlinger服务。这里通过一个简单的悬浮窗口来探索一下大概流程:Tex

  • HDU 2034 人见人爱A-B

    人见人爱A-BTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others) TotalSubmission(s):77157    AcceptedSubmission(s):21509 ProblemDescription参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下) 呵呵,很简单吧?Input每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B.每个元素为不超出int范围的整数,元素之间有一个空格隔开. 如果n=0并且m=0表示输入的结束,不做处理。Output针对每组数据输出一行数据,表示A-B的结果,如果结果为空集

  • 1个AI,2年2千万用户,单月放贷25亿,这是他们的商业新范式

    李根发自凹非寺 量子位报道|公众号QbitAI这又是一个AI创造的商业范式。自2015年7月产品上线,截至2017年3月,用钱宝App及其运营主体智融集团,创造了下述运营数据:近2000万注册用户,单月交易笔数超150万笔,单月交易总额超25亿元,每笔小额贷款的常规机器审核速度平均只需8秒。用户都是那些传统银行不屑一顾的人,他们无央行征信报告、没公积金,甚至拿不出工资流水证明,却在机器的“法眼”下获得小额信贷。基于此,这家公司靠每一单的技术服务佣金而盈利、实现规模化正向营收,还因此被投资机构热捧,累计融资6.7亿元人民币,估值超过10亿美元。但这并不是又一个AI替代人类职位的故事。如果相同的事情交给人类完成。每月150万笔交易,单笔审核速度8秒——这不是想不想实现的问题,而是能不能实现的问题,难度堪称天方夜谭。更何况银行又怎会集中心思关照一群非“优质”呢?他们可能是餐厅服务员、快递员、蓝领、三四线无固定收入的青年人——他们在传统银行风险体系中,逾期风险看似更大。然而套用那句环保里的老话:一切可能只是被错置了的宝贝。用钱宝App的思路,正是为现有情况换个引擎,一切放到机器视角下。焦可,前

  • 【21天完虐Master】AlphaGo Zero横空出世,DeepMind Nature论文解密不使用人类知识掌握围棋

    【新智元导读】新智元AIWorld2017世界人工智能大会倒计时进入20天,DeepMind如约公布了他们最新版AlphaGo论文,也是他们最新的Nature论文,介绍了迄今最强最新的版本AlphaGoZero,使用纯强化学习,将价值网络和策略网络整合为一个架构,3天训练后就以100比0击败了上一版本的AlphaGo。AlphaGo已经退休,但技术永存。DeepMind已经完成围棋上的概念证明,接下来就是用强化学习创造改变世界的价值。今年5月乌镇围棋大赛时,DeepMindCEOHassabis表示,将在今年晚些时候公布战胜了柯洁的那版AlphaGo的技术细节。今天,这个承诺如约兑现,DeepMind在他们最新发表于Nature的一篇论文中,描述了迄今最强大的一版AlphaGo——AlphaGoZero的技术细节。AlphaGoZero完全不依赖于人类数据,因此,这一系统的成功也是朝向人工智能研究长期以来的目标——创造出在没有人类输入的条件下,在最具挑战性的领域实现超越人类能力的算法——迈进的一大步。作者在论文中写道,AlphaGoZero证明了即使在最具挑战的领域,纯强化学习的方法也

  • java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

    百度翻译就是:driverClassName需要jdbcUrl 在配置文件中的    改成:    就可以了。 spring.datasource.url数据库的JDBCURL。 spring.datasource.jdbc-url用来创建连接的JDBCURL。 官方文档的解释是: 因为连接池的实际类型没有被公开,所以在您的自定义数据源的元数据中没有生成密钥,而且在IDE中没有完成(因为DataSource接口没有暴露属性)。另外,如果您碰巧在类路径上有Hikari,那么这个基本设置就不起作用了,因为Hikari没有url属性(但是确实有一个jdbcUrl属性)。 每件事都需要坚持!

  • 【Go】go test

    gotest命令行参数 https://blog.csdn.net/qq_41767116/article/details/124090042 goget-ugithub.com/vakenbolt/go-test-report/ gotest-v-json./|go-test-report gotest-v-count=1-json./|go-test-report gotest-v-count=1-json-runTest_CurrentModeQuery-argsTEST_ARG_UATTEST_ARG_TW   作者:gtea 博客地址:https://www.cnblogs.com/gtea

  • MySQL 中 having 和 where 的区别

    区别一: where是数据从磁盘读入内存时候一条一条判断的 having是将所有数据读入内存,在分组统计前,根据having的条件再将不符合条件的数据删除 区别二: having子句可以使用字段别名,where不可以用 区别三: having可以使用统计函数,where不可用 having筛选必须是根据前面select字段的值进行筛选 本文参考地址:参考一、参考二 如需转载,请注明:https://www.cnblogs.com/zhuchenglin/p/9750882.html

  • Java18-黑马旅游网学习制作

    1.注册、登录、退出在此使用ajax异步提交表单数据,是为了获取服务器的数据,因为我们前台使用的是html作为视图层,不能够直接从servlet相关的域对象获取值,只能通过ajax获取响应数据传统同步提交方式 /** *校验逻辑 */ $(function(){ //当表单提交时,去调用所有的校验方法 $("#registerForm").submit(function(){ //如果这个方法没有返回值,或者返回为true,则表单提交,如果返回为false,则表单不提交 returncheckUsername()&&checkPassword()&&checkEmail()&&checkCheck()&&checkBirthday()&&checkTelephone(); }); //当某个组件鼠标失去焦点时,去调用校验方法失去焦点blur方法,内赋值方法名即可 $("#username").blur(checkUserna

  • linux直接启动到字符界面或从字符界面启动到图形化界面

    修改/etc/inittab文件 将内容为:"id:5:initdefault"的行的数字5改为3,保存重启即可直接进入字符界面 PS:3和5分别表示运行级别 从字符界面启动到图形化界面只需执行"startx"命令即可 *************************************************************** 以上看法或说法如有错误请指出 若本文档无意中侵犯到了你的版权或利益 请发消息或企鹅联系我 ***************************************************************

  • 递归评论

    一、表结构设计 //社区评论表 CREATETABLE`g_community_comment`( `id`bigint(11)NOTNULLAUTO_INCREMENTCOMMENT'id', `statement`varchar(5000)DEFAULTNULLCOMMENT'评论', `user_id`bigint(11)DEFAULTNULLCOMMENT'用户ID', `nick_name`varchar(64)COLLATEutf8_binDEFAULTNULLCOMMENT'昵称', `avatar`varchar(255)COLLATEutf8_binDEFAULTNULLCOMMENT'头像地址', `message_id`bigint(11)DEFAULTNULLCOMMENT'发帖ID(冗余),方便查询', `be_id`bigint(11)NOTNULLCOMMENT'跟帖ID或者发帖中朋友圈类型ID', `circle_type`tinyint(2)DEFAULT'0'COMMENT'1:基本面,2:技术面,3:朋友圈', `super_id`bigint(

  • ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

    oracle异常信息 ###Cause:org.springframework.jdbc.CannotGetJdbcConnectionException:CouldnotgetJDBCConnection;nestedexceptionisjava.sql.SQLRecoverableException:Listenerrefusedtheconnectionwiththefollowingerror: ORA-12514,TNS:listenerdoesnotcurrentlyknowofservicerequestedinconnectdescriptor atorg.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) atorg.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:122) atorg.apache.ibatis.session.def

  • Spring中NoUniqueBeanDefinitionException异常

    在Spring入门练习中,我配置了bean.xml同时也创建了配置类TxConfig。其中获取事务管理器的方式在2个文件中都有,测试的时候发现冲突了。 方法1:所以就把xml文件中的内容删除了,只留下了扫描的那一行即可 方法2:把配置文件中定义的获取DataSource、JDBCTemplate、事务等方法删除。 org.springframework.beans.factory.NoUniqueBeanDefinitionException:Noqualifyingbeanoftype'org.springframework.transaction.TransactionManager'available:expectedsinglematchingbeanbutfound2:transactionManager,getDataSourceTransactionManager    

  • 免费的论文查重网站

    给大家推荐一个免费的论文查重网站PaperTime:http://www.papertime.cc

  • 二叉搜索树C++实现

    1template<typenameElement> 2classBinarySearchTree 3{ 4public: 5BinarySearchTree():root(NULL){} 6BinarySearchTree(constBinarySearchTree&bst):root(NULL) 7{ 8operator=(bst); 9} 10virtual~BinarySearchTree() 11{clear(root);} 12 13voidinsert(constElement&e) 14{insert(root,e);} 15voidremove(constElement&e) 16{remove(root,e);} 17boolcontains(constElement&e)const 18{returncontains(root,e);} 19constElement&findMin()const 20{returnfindMin(root);} 21constElement&findMax()const

  • JavaWeb-05-Maven

    5.Maven 为什么要学习这个技术? 在javaweb开发中,需要使用大量的jar包,需要我们手动去导入; 如何能够让一个东西自动帮我导入和配置这个jar包。 因此,Maven诞生。 5.1Maven架构管理工具 目前使用就是了方便导入jar包 maven的核心思想:约定大于配置 不要违反约束 Maven会规定好我们该如何去编写我们的java代码,必须要按照这个规范来; 5.2下载安装Maven 官网:https://maven.apache.org/index.html 下载解压即可 5.3配置环境变量 在系统环境变量中,进行如下配置 M2_HOMEmaven目录下的bin目录 MAVEN_HOMEmaven的目录 在系统的path中配置MAVEN_HOME 测试maven配置成功 5.4阿里云镜像 镜像:mirrors 作用:加速下载 国内建议使用阿里云 <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓

相关推荐

推荐阅读