linux、oracle自我总结

时间:2019-05-12 11:46:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《linux、oracle自我总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《linux、oracle自我总结》。

第一篇:linux、oracle自我总结

Linux和oracle知识点总结

实现接口和方法的快捷键:ctrl+t activity生命周期: log类简单的使用方法 log.vdiwe ctrl+alt+上或下键复制光标以下部分并粘贴在下面 *** 汤学渊

rpm包编译:gcc

除了/之外。所有的符号命名方式都是合法的

有些符号做好是不用,如空格 制表符 退格符@#¥()-等

避免使用.作为普通文件名的第一个字符(.开头的文件将会被影藏)大小写敏感

ls list-a

all-l

long-d

directory-i inode i节点 b

binary drwxr-xr-x 2

root

root

4096

7-28 21:51

name

所有者

所属组

文件大

创建修改时间

文件名称

文件大小的表示:block数据块 512字节=0.5kb(存储数据的最小单位就是block)流媒体

(d文件类型rwx所有者的权限r-x组的权限r-x其他人的权限)

文件类型: d目录directory

-二进制文件

l软连接文件link

文件权限:r-read w-write x-execute执行

rex r-w r-w

用户:u-user 所有者

g-group所属组

o-other其他人

2硬链接数

cd change directory $cd / 切换回到根目录 $cd..回到上一级目录

pwd print working directory 查看当前目录

touch 创建空文件夹

mkdir make dir创建新目录

cp [原文件] [目的目录] copy 复制 复制目录为cp-R[原文件或目录] [目的目录]-p拷贝的时间和

ctril +c终止命令

mv [原文件或目录] [目的目录]移动文件或者是给文件改名 move

rm [文件] rm-R[目录] remove删除

cat concatenate and display files 整页显示文件内容

more 分页显示文件内容 属性:空格或者f显示下一业,回车显示下一行 q是 退出

head-num [文件名] 查看文件的前几行

tail-num [文件名] 查看文件后几行-f动态的显示文件信息(显示最新的信息)

ln-s[源文件][目标文件]创建软链接文件

ln [源文件][目标文件]创建硬链接文件

软链接文件的权限:lrwxrwxrwx 文件名不同(软链接就是相当于是windows快捷方式)跨文件系统生成(分区)

硬链接类似于cp但是不同的是同步更新(linux的内核处理问题都需要数字标识,硬链接文件和源文件具有相同的inode)不能跨文件系统操作

文件处理命令汇总:ls ln

权限处理处理命令

chmod {ugo}{+-=}{rwx}[文件名]给文件授权 r-4 w-2 x-1

su- 切换用户 chown change file owner ship 更改所有者

chgrp change file group ownership更改所属组

$adduser $passwd添加用户

umask 查看权限-s查看缺省权限(使用的是权限的掩码值)

0-特殊权限

022-用户权限位,权限掩码值

linux权限规则:缺省创建的文件不能授予可执行x权限

文件的搜索命令

which 显示系统命令所在的目录 whereis 显示系统命令的帮助文档

在linux中所有的东西都是当做文件来处理的

find [搜索的路径][搜索的文件]查找任何文件和目录

①-name根据文件名查找 *匹配任何字符 ?匹配单个字符

②-size根据文件大小查找 文件的大小的单位是数据块 +大于-小于-user根据文件的所有者查找

③根据时间查找:

1、天ctime atime mtime

2、分钟cmin amin mmin c-change(修改的事文件的属性ls-l)a-access(文件被查看浏览过)m-modify(修改文件的内容)-之内 +超过 ④连接符-a and逻辑与-o or逻辑或

⑤连接执行符示例:find.....-exec 命令 {};解释:{}find查找的结果,转义符(使一些特殊的符号能够使用它们本身的含义);命令结束符-ok命令累死-exec只是有一个确认的信息

⑥-type 根据文件类型查找 f二进制文件 l软链接文件 d目录 ⑦-inum根据文件节点查找

locate 在数据库中查找 但是需要使用updatadb命令定期的更新数据库

grep [指定字符串][源文件]

man 获得命令的帮助

man service 获得配置的帮助 info whatis 获得索引的简短信息 help 查看shell内置命令的帮助

压缩解压命令

gzip 选项

gnu zip 压缩后的文件格式.gz linux的压缩习惯在window上都能使用,反过来就不适用啊。①gzip不能压缩目录只能压缩文件 ②压缩之后源文件就不存在啦-gzip解压文件

tar 打包目录-c(create)产生tar打包文件-v显示详细信息-f指定压缩后的文件名-z打包同时压缩

压缩后的文件名.tar.gz-x 解压.tar的压缩包 实例:$tar-zcf 打包后的文件名 打包的对象 解答思路:先用tar打包然后再用gzip压缩

zip 默认window和linux都支持的解压方式可以压缩文件和目录但是压缩目录需要添加-r的属性压缩的时候能保留源文件

bzip2 压缩文件 压缩比相当惊人主要用来处理大型的数据文件-k就能保留源文件

网络通信的指令:write write <用户名> 内容(实时在线通信方式)

wall用于放松广播

ping测试网络连通性

网络测试的步骤;ping 127回环地址之后ping192本机之后ping对方主机

ifconfig 查看网络设备信息

shutdown关闭服务器

reboot 重新启动系统

shell命令解释器,内核和内核之上层之间的交互即使用户和内核之间的交互

ctrl+l清屏

ctrl+u清除光标之前 tab键自动载入存在的文件和命令 上下键能够找回执行过的命令

别名机制:

实例:alias copy=cp

alias delete=“rm-r” 带属性的命令需要用引号引起来

输入输出重定向

0(stain)标准出入、stand input 1(staout)标准输出、stand output 2(staerr)便准错误输出 stand error >或者>> 输出重定向 <输入重定向

2>错误输出重定向

管道:将一个命令的输出传送给另外一个命令,作为另一个命令的输出 使用方法:命令1|命令2|命令3|

命令连接符

用;间隔的各命令按顺序依次执行

&&只有&&前面的命令执行成功后,它后面的命令才能被执行 ||只有||之前的命令执行失败了,后面的命令才被执行

命令替换符:将一个命令的输出作为一个命令的参数

linux常用的辅助工具

PPP 适配器 宽带连接:

连接特定的 DNS 后缀.......:

IPv4 地址............: 221.205.51.148

子网掩码

............: 255.255.255.255

以太网适配器 VMware Network Adapter VMnet1:

连接特定的 DNS 后缀.......:

本地链接 IPv6 地址........: fe80::45a2:988d:2a8a:2171%18

IPv4 地址............: 192.168.234.1

子网掩码

............: 255.255.255.0

以太网适配器 VMware Network Adapter VMnet8:

连接特定的 DNS 后缀.......:

本地链接 IPv6 地址........: fe80::e9c0:b346:4c5c2%20

IPv4 地址............: 192.168.81.1

子网掩码

............: 255.255.255.0

linux引导流程

先是进行固件自检(常用的固件设置:安全设置->安全设置->可引导介质列表->课引导介质搜索->电源管理->启动细节显示)之后就是载入内核,内核的作用首先是驱动硬件,然后开始第一个进程ini,读取配置文件/etc/inittab文件的内容 inittab文件

init启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在unix中,init时第一个可以存在的进程pid恒为1,但是它必须想一个更高级别的功能负责:pid恒为0的内核调度器(kernel schuduler),从而获得cpu的时间

inittab文件的剖析

grep-v “^#” /etc/inittab 命令解读:选出etc目录下的inittab文件中排出含有#的文件; id:run-levels:action:process 查看运行级别:

run-leves:运行级别,可以指定多个 运行级的切换: init number

文件中条目格式:id:run-leves:action:process id:标识符;

run-leves:运行级可指多个 process:需要执行的脚本/命令

action常用取值:

initdefault:指定系统缺省启动的运行级别 sysinit:系统启动执行process中的指定的命令

wait:执行process中的命令并等其结束在运行其他的命 令

once:执行process中的命令,不等其结束

ctrlaltdel:按下ctrl+alt+del命令执行process中的命令

powerfail:当电源出现错误时执行process指定的指令,不等其结束 powerrokwait:当电源恢复是执行process指定的命令

respawn:一旦process指定的命令终止,便重新欲行该指令

设置自启动程序: ln-s chkconfig ntsysv

运行dmesg检查引导期间的错误

检查系统日志/var/log/messages查看可能被demesg忽略的应用和程序错误

linux的运行级别

0 1 2 3 4 5 6

linux启动服务管理 GRUB配置与应用

GRUB的默认的配置文件为 /book/grub/grub.conf grub默认

default定义默认的启动缺省项 timeout定义缺省等待的时间

aplashimage定义grub界面的图片 hiddenmenu隐藏菜单 titile定义菜单项

root设置grub的根设备即内核所在的分区 kernel定义内核文件的位置 initrd命令加载镜像文件

grub功能键

e:编辑当前的启动菜单项 c:进入grub的命令模式 b:启动当前的菜单项 d:删除当前行

esc:返回grub启动菜单界面,取消当前单项所做的任何修改 设置grub密码

1、使用grub自带的grub-md5-crypt命令

2、在grub交互命令行界面中使用md5crypt命令

同样的明文口令每次加密获得的md5密文口令也是不同的--md5参数表示口令是md5加密的 grub修复

当开机后进入grub界面但是没有菜单,只剩下一个grub>提示符,解决办法:grub>cat/grub/grub.conf(为查看参数)

启动故障分析与解决 linux修复模式:

1、把安装光盘放到驱动,然后重新启动机器,在bois中把系统设置为光驱引导。

2、等安装界面出来之后,按f5键进入linux rescue模式说明,然后在boot提示符下输入:linux rescue 然后回车进入修复模式

linux软件包管理

二进制包管理(rpm、yum)

卸载:#rpm-e 软件包名 注意:如果与其他软件包有依赖关系,卸载时会产生提示信息,可使用--nodeps强行卸载 安装:#rpm-ivh 软件名 挂载光盘:

mkdir/mnt/cdrom mount/dev/cdrom/mnt/cdrom 查询:

rpm-q 软件报名

rpm-qa | grep 软件包名 其他安装选项:

--excludedocs 不安装软件包中的我文档文件--prefix PATH 将软件安装到path指定的路径下--test

只对软件进行测试,并不实际安装--replacepkgs 将会覆盖已经安装的软件包

--replacefiles 将会忽略软件包中已经安装的部分文件--nodeps

忽略软件包需要安装的依赖(部分软件的安装需要安装其他的软件)软件包 软件包的升级:#rpm-Uvh 软件包名

yum包管理

yum包管理的好处:自动解决软件包的依赖关系,方便软件包升级 安装yum install 检测升级 yum check-update 升级

yum update 软件包查询 yum list 软件包信息 yum info 卸载软件包 yum remove 帮助 yum--help、man yum 查询的选项

-a 检查所有已经安装的软件包-f 检查所属的软包-p查询软件包

-i 显示软件包信息-l 显示软件包中的列表

-d显示被标注为文档的文件列表-c显示被标注为配置文件的文件列表 校验:#rpm-V 软件名称 5 文件的md5校验值 s 文件大小 l 链接文件

t 文件创建的时间 d 设备文件 u文件的用户 g文件的用户组 m文件的权限 软件包文件提取

源代码包安装

脚本安装(shell或者java脚本)

debian系列linux软件版管理介绍

apt包管理

用户管理

用户管理配置文件

用户信息文件:/etc/passwd 密码文件:/etc/shadow 用户组文件:/ect/group 用户组密码文件:/etc/gshadow 用户配置文件:/etc/login.defs或者/etc/default/useradd 新用户文件:/etc/ske1 登录信息:/etc/motd/etc/issue

/etc/passwd文件格式

用户名:用户登录系统时使用的用户名 密码:密码位 uid:用户标识符 gid:缺省组标识符

注释性描述:例如寻访用户全名等等信息 宿主目录:用户登录后缺省的目录

命令解释器:用户常用的shell命令,也就是bash

用户的类型:超级用户(root。uid=0)普通用户(uid 500-6000)伪用户(uid 1-499)

1、伪用户和系统(bin daemon shutdown halt)和进程(mail news games apache ftp mysql sshd)有关

2、伪用户通常不需要登录或者无法登录系统

3、伪用户没有宿主目录

用户组:

1、每一个用户至少有一个用户组

2、每一个用户组可以拥有多个用户

3、同一个用户组的用户享有该用户组共有的权限

/etc/shadow文件的格式 用户名:用户登录系统时使用的用户名 密码:加密的密码

最后一次修改的时间:用户最后一次修改密码的时间 最小时间间隔:两次修改密码之间的最小天数 最大时间间隔:密码保持有效的最大天数 警告时间:从系统开始警告密码失效的天数 账号闲置时间:账号闲置时间 失效时间:密码失效的绝对天数 标志:一般不使用

/ect/group文件格式

组名:用户登录时所属的组 组密码:一般不使用 gid:组标识号

组内用户列表:组内所有用户列表

用户管理命令 用户组管理命令 批量添加用户

手工添加用户

1、分别在用户信息件:/etc/passwd、/etc/shadow、/ect/group文件中添加一笔记录

2、创建用户宿主命令

3、在用户宿主目录中创建默认的配置文件

4、设置用户初始化密码

SetUID的定义:当一个可执行程序具有SetUID权限,当用户执行这个程序时,将也这个程序的所有者身份来执行 添加用户

useradd 设置选项-D 查看缺省参数 u:uid g:缺省所属用户组

G:指定用户所属多个组 d:宿主目录

s:命令编辑器shell c:描述信息

e:指定用户失效时间 passwd sam

用户组命令

添加用户组:groupadd 删除用户组:groupdel 修改用户组信息:groupmod 设置组密码及其管理组内成员:gpasswd 参数-a(添加用户到该组)-d(从用户组中删除组)-A(设置用户组管理员)-r(删除用户组密码)-R(禁止用户切换为改组成员)修改用户信息:usermod groups 查看用户隶属那个用户组 newgrp 切换用户组

grpck 用户组配置文件检测 chgrp 修改文件所属组 vigr 编辑/etc/group文件

用户管理

pwck 锁定/etc/passwd文件 vipw 编辑/etc/passwd文件 id 查看用户id和组信息 finger 查看用户详细信息 su 切换用户

passwd-S 查看用户密码状态 who 查看当前登录用户信息 禁用用户 usermod-L username 回复用户 usermod-U username 删除用户 userdel-r username 设置密码:chage

批量添加用户

newusers 导入用户信息文件

pwunconv 取消shadow password功能 chpasswd 导入密码文件

pwconv 将密码写入shadow文件中

进程管理 进程的概念:

进程是静态概念,本身作为一种软件资源长期存在,而进程是程序的执行过程,它是动态的概念,有一定的生命周期,是动态的产生好消亡的。程序和进程没有一一对应关系。一个程序可以由多个进程共用;一个进程在活动中有可顺序地执行若干个程序

父进程和子进程:

子进程是由一个进程产生的进程。在linux中系统调用fork创建进程,父进程复制付栈段以及进程环境。父进程终止子进程必将终止。

孤儿进程和僵尸进程

前台进程

在shell提示出打入命令之后,创建一个子进程,运行命令,shell等待命令退出,然后返回到对用户给出提示符。这条命令与shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令

后台进程

在shell提示出打入命令之后,若随后跟一个&,shell创建的子进程欲行次命令,但是不等待命令退出,而直接返回到对用户给出提示。这条命令与shell同步于行,即在后天运行,后天运行的进程必须是非交互式的

进程的状态:

等待:因某种事件而暂时不能运行的状态。

就绪:进程已经非配到资源,但是因为其他进程占用cpu,所以暂时不运行等待分配cpu的状态

运行:进程分配到cpu,正在处理器上运行 进程状态细化

用户态运行:在cpu上执行用户代码 内核态运行:在cpu上执行核心代码

在内存就绪:具备运行条件,只等调度程序为它分配cpu

查看用户的信息w w显示信息的含义:

load average:分别显示系统在过去1、5、15分钟内的平均负载程度

from:显示用户从何处登录系统,“:0”的玄冰山谷代表用户从x window下,打开文件模式窗口登录的

idle:用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器就会被重置

查看系统中的进程ps 常见的选项:

a:显示所有用户的进程

u:显示用户名和启动的时间 x:显示没有控制终端的进程

e:显示所有的进程,包含没有控制终端的进程 l:长格式显示

w:宽行显示,可以使用多个w进行加宽显示

ps常用输出信息的含义: pid:进程号 ppid:父进程号

tty:进程启动的端口 stat:进程当前状态

s休眠状态d不可中断的休眠状态,r运行状态,z僵死状态,t停止 ni:进程的优先级

time:进程自从启动以来启用cpu的总时间 command/cmd:进程的命令名 user:用户名

%cpu:占用cpu时间和总时间的百分比 %mem:占用内存与系统内存总量的百分比

kill 杀死进程 杀手进程的原因

该进程占用过多的cpu的时间;该进程锁住一个终端,其他前台进程无法运行;运行的时间过长,但是没有预期的效果;产生了过多到屏幕和磁盘的输出;无法正常的退出

关闭进程;kill 进程号

强行关闭进程:kill-9 进程号 重启进程:kill-1 进程号 关闭图形程序:xkill 结束所有的进程:killall 查找服务进程号:pgrep 服务名称 关闭进程:pkill 进程名称

进程的优先级:

nice:指定程序的运行优先级 格式;nice-n command renice:改变一个正在运行的进程的优先级 格式:renice-n pid 优先级的取值范围:(-20,19)

是进程在用户退出登录之后仍旧继续执行,nohup将执行后的数据信息和错误信息默认储存到文件nohup.out中

格式:nohup program &

进程的挂起:ctril+z 进程的终止:ctril+c 进程恢复到前台执行:fg 进程恢复到后台执行:bg 查看被挂起的进程:jobs top 常见的命令

u:查看指定用户的进程 k:终止执行中的进程 h or ?:获得帮助

r:重新设置进程优先级 s:改变刷新的时间间隔

w:将当前设置写入~/toprc文件中

计划任务

计划任务的命令

at:安排计划在某一时刻执行一次(计划:一个或者是多个指令)at命令的格式和参数: at [-f 文件名] 时间

at-d or atrm删除队列中的任务 at-l or atq 查看队列中的任务 时间得格式和计算方式略

at配置文件;/etc/at.allow或者/etc/at.deny 配置文件的作用:限制哪些用户可以使用at命令.如果/etc/at.allow文件存在,那么就只有列在此文件中的用户可以使用at命令;如果/etc/at.allow不存在,而/etc/at.deny存在,则再此文件中列出的用户不能只用at命令。如果两个文件都不存在的话就只有超级用户可以使用at命令。如果两个文件都存在而且均为空则所有的用户都可以使用at命令

batch:安排作业在系统负载在不重时执行一次。使用方法同at

cron:安排周期性运行的作业

作用;用于生成cron进程所需要的crontab文件 格式;crontab {-l|-r|-e};l显示当前的crontab,r删除当前的crontab,e使用编辑器编辑当前的crontab文件

书写注意事项:选项不能为空,必须填入,不知道的值使用通配符*表示任何时间;每个时间字段都可以指定多个值,不连续的用,号分开,连续的值用-间隔;命令应该给出绝对路径;用户必须具有运行锁对应的命令或者程序的权限 cron配置文件;限制哪些用户可以使用crontab命令 /etc/cron.deny或者/etc/cron.allow

进程的处理方式:standalone独立运行;xinetd进程托管;atd、crond计划任务

文件管理

文件系统构成及命令

/user/bin:存放所有用户可以执行的命令 /user/sbin:存放只有root能够执行的命令 /home:用户缺省宿主目录

/proc:虚拟文件,存放当前进程信息 /dev:存放设备文件

/lib:存放程序运行所需的共享文件库

/lost+fount:存放一些系统出错检查的结果 /tmp:存放临时文件 /etc:系统配置文件

/var:包含经常发生变动的文件,如邮件、日志、计划任务等 /user:存放所有的命令、库、手册页

/boot:内核程序和自举程序文件的存放点 /mnt:临时文件系统的安装点 特殊权限:粘着位t 粘着位的定义:当权限为777的命令被授予粘着位,用户只有在此目录下删除自己是所有者的文件

常见的命令:

查看分区的使用情况:df 查看文件和目录的大小:du 查看文件详细的时间参数:star 校验文件md5值:md5sum 检测修复文件系统:fsck e2fsck(单用户模式卸载文件系统后执行)

添加硬盘分区: 划分分区:fdisk 创建文件系统:mkfs 尝试挂载点:mount 写入配置文件:/etc/fstab

/etc/fstab挂在设置: ro 只读

noexec 可执行文件不可运行 nosuid SetUID命令不可执行 noauto 不自动挂栽 acl 启动ACL权限控制

命令:getfacl查看 setfacl设置

swapfile文件的实现

硬盘分区及管理磁盘配额 磁盘配额

1、开启分区配额功能

编辑/etc/fstab/文件,在挂载属性上加上标志usrquota或者grpquota

2、建立配额数据库(进入单用户模式)puotacheck-cvuga 会生成aquota.user、aquota.group两个文件

3、启动磁盘配额

quotaon 分区名称

quotaoff关闭配额

4、编辑用户配额

edquota 用户名 edquota-g 用户组名 复制用户配额

edquota-p 模板用户 复制用户1 复制用户2

quota命令查看用户的配额使用情况 管理员查看配额信息:repquota-a

创建配额的选项:

软限制(soft limit):定义用户可以占用的磁盘控件数。当用户超过该限制后会收到已超过配额的警告

硬限制(hard limit):当用户试图将文件存放在其已经超过该限制值目录时,报告文件系统错误。

宽限期(grace period):定义用户在软限制下可以使用文件系统的期限

备份与恢复

shell编程:

1、#!指定执行脚本的shell

2、#注释行

3、命令和控制结构

创建shell程序的步骤:

第一步:创建一个包含命令和控制结构的文件

第二步:修改这个文件的权限使它可以执行。chmod u+e 第三步:执行./example

shell变量:是shell传递数据的一种方式,用来代表每个取值的符号名。shell有两类变量:临时变量和永久变量

临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户定义变量、位置变量。永久变量就是环境变量,其值不随shell脚本的执行而消失

用户自定义变量是有字母或者是下划线开头,有字母、数字或者下划线序列组成,并且大小写字母意义不同。变量名长度没有限制。在使用变量时,需要在变量名前加上前缀“$” 设置和使用变量

设置变量:习惯用大写字母命名变量。变量名只能以字母表中的字母开头,不能用数字。变量赋值:赋值号=值;等号的两边应没有空格 列出所有的变量:#set 删除变量:#unset

位置变量:shell解释执行用户命令时,将命令行的第一个部分作为命令名,其他部分作为参数。由出现在命令行上的位置确定的参数称为位置参数 特殊变量:

$*这个程序所有的参数 $#这个程序的参数个数 $$这个程序的pid $!执行上一个后台命令的pid $?执行上一个命令的返回值

shell命令

read:从键盘读入数据赋值给变量 expr:对整数型变量进行算术运算

变量测试语句:用于测试变量是否相等、是否为空、文件类型等 格式:test 测试条件

测试范围:整数、字符串、文件

流程控制语句: exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出

if……then……fi语句:

if……then……elif……then……else……fi语句: for……done语句:for 变量 in 名字表

do

命令列表

done

-a:逻辑与,仅当两个条件成立时,结果为真

-o:逻辑或,有个条件只要有一个成立,结果为真

select 变量 in 关键字 do

command 1

……

command n done select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令

case 变量 in

命令列表1

……

命令列表n esac

while 条件 do

命令 done

until 条件 do

命令 done until类似while,但是until返回值为假时才能继续执行

break:跳出整个循环

continue:跳出本次循环,执行下次循环

shift:参数左移,每执行一次,参数序列顺次左移一个位置,$#的值减1,用于分别处理每个参数,移出去的参数不再可用 函数的定义: 函数名(){

命令序列 } 函数的调用:不带()函数名 参数1 参数2……

函数的变量:变量为全局变量,没有局部变量

函数中的参数:调用函数时,可以传递参数,在函数中用$

1、$2……来引用

shell脚本调试

sh-x scrip:执行该脚本并显示所有的变量的值

sh-n scrip:不执行脚本只是检查语法的模式,将返回所有语法错误

awk-F 域分隔符 '命令'

企业招聘要求:

一年以上的java web项目开发经验,必须熟练运用j2ee相关的技术开发项目

精通java编程及j2ee相关技术,jsp/serlet、javascript、spring、hibernate、ibatis、struts;至少一种以上mvc框架技术 熟练ajav技术及其相关框架 熟悉soap、web service。

熟练eclipse的开发环境,以及tomcat、jboss 熟悉常用的一些开源组件,对java设计模式有一定的了解 至少熟悉oracle、mysql、db2一种数据库的开发 熟悉linux、nuix操作系统

有良好的编程习惯,主动开朗,耐心和服务意识

有团队合作精神和良好的沟通,组织协调能力,擅长文档写作。

Oracle核心知识点

oracle的核心知识点在于SQL语句上,各个数据库也许命令不同,但是现在对于sql语句的使用都是一样的。

oracle的发展简介: oracle版本的介绍:oracle8、oracle8i、oracle9i、oracle10g、oracle11g、但是推荐使用是oracle9i(网格计算)

oracle数据库的安装和配置

安装之前需要做的工作:关闭网络同时关闭防火墙; 安装安装程序:*Oracle 10g/install/setup.exe;

途中将数据库的名称改为midn并将“创建样本方案的带数据库”选中,如果没有选中,则以后不会有大数据用户出现;

安装到最后将用户的密码全部设置为oracleadmin,并且字母全部小写,最好不要擅自修改; 直接选择安装“启动安装程序”,不要做任何的修改;

安装完成之后会进入口令管理界面:要使用oracle数据库,只要使用下面四个用户: 超级管理员:sys/change on install 普通管理员:system/manager 普通用户:scott/tiger 此用户默认是被锁定的,需要将√去掉 大数据用户:sh/sh 一切安装完成之后下面直接选择“退出”即可,退出之后oracle10g默认会为用户打开一个oem的管理界面。安装完成之后会自动在windows中为用户注册若干服务。这些服务默认为启动,这样的配置将会影响我们的电脑启动,需要我们将其设置为手工启动。(点击电脑右键选择管理,管理里面找到服务,双击修改)但是有两个服务时最为关键的: 监听服务:如果有程序要操作数据库或者是远程的客户端需要连接数据库就必须开启此项服务

数据库实例服务:保存数据库具体的信息,每一个数据库对应一个数据库实例(服务)。命名规则:Oracle ServiceXXX;XXX对应我们数据库名称(严格来讲我们的sid名称)。

oracle卸载步骤: 直接运行卸载程序

删除硬盘上残留的文件,如果删除不掉则先进入安全模式下删除 删除注册表中所有与oracle有关的配置项

如果是没有安装成功,直接运行二三部就可以啦,如果实在不行就只能从装系统啦

监听问题:

监听服务是oracle数据库中使用最主要的一个服务,但是服务经常出现错误,错误的解决方案

错误一:注册表使用了优化软件,删除了相关项(对于每一个系统服务在注册表中都会有所保留)

第二篇:ORACLE培训总结

篇一:oracle培训班总结(听课笔记)oracle北京培训

第一章 oracle10g的安装与基本设置

一、数据库基础部分。

oracle数据库应用系统结构与产品。

sql语言:操作数据库,同时用于数据库管理。(通用部分)sql*plus语言:对sql的扩充,主要增加一些报表。pl/sql语言:过程化语言。数据库分区存储技术。

1、oracle数据库应用系统结构与产品

oracle数据字典有4.2万个。数据字典只记录标识。

结构方面:sql与oracle完成不同,sql可建多个库,结构与oracle明显不同。i:代表internet.c语言结构性最好,计算能力最强。指纹识别系统只能用c.2、pl:procedural language:过程化语言,条件、判断、循环。sql属非过程化语言,只关心结果,不关心过程。

3、数据库分区存储技术(一个表存到多个表空间上)数据库存储数据的最小单位:表。

逻辑空间——>表空间(在物理上与磁盘对应)1 ——>多个磁盘。

一个表可以存在多个磁盘上,但不能存到多个表空间上。集中式存储:安全性不好,i/o不平衡。

数据库的分区存储技术:range、list(oracle 11自动增加)range:可以比大小。

list:不能比大小,例如:人口住址等。

4、数据库存取权限控制。

5、oracle 10g flashback:数据闪回。恢复前提:归档和备份。(1)基于时间的恢复:从5楼到4楼。必须从5楼下到一楼,再从1楼到4楼。逻辑备份: 物理备份:常说的备份点。

不完全恢复:向回倒,不可逆转,日志自动清0,有的数据要丢失。exp、import.(1)基于时间的恢复(2)基于中止(撤消)的恢复。(3)基于事务的恢复。完全恢复。

delete from,rollback能100%恢复。drop,flashback不一定能恢复。

二、程序设计

pl/sql程序设计。存储过程(procedure),函数(function),包(package),数据库触发器(data triggers(枪栓))。

三、系统管理(dba)

1、oracle核心软件安装与产品升级。sun solaris hp ux 国税 aix 银行 tru64 电力 数据库的排序:在临时表空间中进行。8i和9i排序完不释放。10g可自动释放。640万人无人居住,不发生电费。

命令行模式运行速度快,容易发现问题的存在。

oracle占用可用内在的55-57%,所以不要建两个以上的库,oracle按表空间划分用户,sql可建多个库,结构与oracle明显不同。

2、创建主要的数据库存储结构。

划分磁盘空间。

3、数据库权限与角色管理。角色:权限的组合。

4、监视与控制用户对于数据库的操作。

5、数据库的启动与关闭。

6、数据库性能优化与调整。

7、数据库的备份与恢复。

四、基于web应用开发(会话进程)。

会话数(在线数)< 用户数< 进程数在(windows称为服务)< 操作系统核心参数 如何查看修改连接数,进程数及用户数,三者之间有什么关系? show parameter session;最大session数 show parameter process;最大进程数

select count(1)from all_users;查看已安装数据库的用户数 select * from all_users;oracle自带的用户数如何查。

默认的情况下系统中的最大session = min(session ,process * 1.1 + 5)

1、我们把它称为一次对话,或者叫会话。同样,在我们用电脑工作时,打开的一个窗口或一个web页面,我们也可以把它叫做一个“会话”,扩展到一个局域网里面,所有用户要通过防火墙上网,要打开很多个窗口或web页面(即会话),那么,这个防火墙,所能处理的最大会话数量,就是“并发连接数”。

(1)查看oracle 10g数据库会话数 select * from v$session;当前总会话数:select count(*)from v$session;可用总会话数:在sqlplus里查询,show parameter session

2、查看已安装数据库的用户数:select count(1)from all_users;sql>select * from all_users;

3、查看进程数

使用sys,以sysdba权限登录:sql> show parameter processes;

4、$ps –ef | grep oracle 进程,在windows称为服务。实例包括一个内存和进程(在windows中为服务)

按我的理解来说session就等价与一个客户端,它是用户经过用户进程到oracle事例的特定连接.它从用户连接开始一直持续到用户断开连接或退出数据库为止.进程,笼统地认为一个程序有若干进程组成,从os角度讲程序是静态的,而进程是动态的罢了.进程可以分为user process和oracle process.说穿了,进程就是用来执行程序的时候产生的,是一个动态过程.第二章 oracle安装

一、asm(automatic storage management)自动存储管理。oracle10g 新内容。镜像:oracle 10g以后才支持。磁盘组:diskmap 逻辑设备

裸设备:只做分区,不做格式化。看不到文件,在磁盘管理器中才能看到设备,u盘拷贝不了。只能用逻辑手段拷贝:exp rman.二、oltp_数据仓库_全局数据库名_(nts适配器错误_在windows中清理oracle)

1、t----->oltp(on line transaction processing)在线事务处理。网上数据传输量比较大,数据库数据改动大,数据库负荷重,oracle 会设比较大的回退段(rollback segments)和空闲率(pctfree 10%)oracle的块为:8k.它使用了所有的所谓数据的操作 crud(创建、读取、更新、删除)。当数据存储达到一定量的时候,规模就会几乎保持不变,因为可以从存储中删除过期数据。

2、数据仓库

数据仓库改动少,主要为查询速度快服务,用于存历史数据,用来构造决策支持系统。他的回退段和空闲率留的比较少。

数据仓库就完全是一种不同种类的应用程序。它并不是用来运行当前的操作,例如发送邮件。它是用来分析数据并且从现有数据中发现新的价值,主要是用来预测未来的情况。数据仓库并不是解决所有问题的通用结构。它必须集中于某一问题领域,例如航空服务、顾客收益等。数据仓库也有有趣的一面,那就是本身是稳定增长的。数据没有被删除,也不发生变更。我们不需要将冗余数据置于数据库之外(因为加入仓库中的数据经过了数据净化的过程,该过程检查了数据的正确性)来减少复杂性同时增强读取操作的性能。

为了能够对数据仓库中的数据进行分析,数据存储于一个多维结构中,叫做星型模式。如果将星型模式扩展,就会得到雪花模式。

3、全局数据库名:以字母打头,不超过8个。

数据库名不能重名,否则复制数据和同步数据时会出麻烦,数据库安装完后,数据库名不能更改,起名时要慎重。

4、oracle字符集。zh16gbk.5、nts适配器错误。

d:oracleproduct10.2.0db_1networkadminsqlnet.ora 把sqlnet.ora文件中的(nts)改为none,再重新启动oracleconfigudration and mirdatabase config.6、在windows中清理oracle。(1)删除注册表:

regedit-> local machine--> software-->oracle(2)删除oracle服务

regedit-> local machine-->system?currentcontrolset?services?ora*(3)删除oracle事件日志

(4)删除windows安装磁盘中program filesoracle目录。(5)删除oracle菜单。(6)删除oracle环境变量。

控制面板—>系统——>高级——>环境变量。总共删除2项。(7)重新启动操作系统

(8)删除oracle磁盘文件。篇二:oracle数据库学习总结 oracle数据库学习总结 时间过的还真快,不知不觉中就在这里呆了半个月了。这段时间里都在学习oracle数据库的编程,毕竟这是家软件外包公司。像我们这样的新员工也就只能接触到些curd的操作。废话不多说,赶紧来梳理下这半月来学习的知识点.在来公司之前一直都是使用sql server数据库,用sql server也开发了3个小型项目。所以对sql语句以及在数据库中扮演重要作用的存储过程,触发器,视图,主键/外键约束都很熟。但oracle是一个全新的环境,记得刚装上oracle的时候,我都不知道在哪查看自己已经建立好的表格。还好有师傅的帮忙,要不然我还真没这么快就能入门oracle。

学习东西就要学习些能改变自己思维的东西,只有这样才能让自己的眼光比别人更独到,思维比别人更深邃,oracle就是这样的东西。当然做这样的事是要很大的驱动力的呀,如果公司不是都采用oracle来写程序的话,我估计也就懒得学啦。

对于一位程序员来说并不需要完全掌握oracle的所有知识,毕竟自己不是dba。在日常开发中也用不到那些命令和工具,但是有些知识点我们还是必须得熟练的掌握它们。比如:一些基本的ddl和dml语句,存储过程,函数,视图,触发器,序列,游标,自定义类型和包。下面我就把这段时间里学习oracle获得的知识点罗列出来,一是为了方便以后查阅,二是为了和搭档交流学习经验。要适应的一些细节

从sql server转到oracle进行数据库编程,第一道门槛就是语法问题。很多很多的问题都是因为语法而产生的,现将它们统统集合起来并将它们一网打尽之。pl结构。在sql server中,采用的是批处理执行任务的方式,所以可以将多条sql语句选中批量执行,而不用顾忌要在专门的地方声明变量,在专门的地方进行逻辑编码。在oracle中采用的是pl编程方式,必须在专门的地方声明变

循环结构,要达到循环在oracle中有3种方式,各有各的好处,你懂的。它们分别如下: pl结构中的错误处理

就像c#中的try{} catch{}语句块 能捕获错误。写几个例子: helloworld级别的错误抛出例子record类型

oracle中的record类型类似于c语言中的结构体,主要用来接收select语句或游标中返回的数据,下面写个例子:ddl语句

这里的ddl语言主要是指能完成如下工作的ddl语言:创建表,创建表的主/外 键及级联效果,dml语句

select语句。oracle中的select语句的使用方法与sql server差不多,但还是有些不同之处。

篇三:oracle培训心得 oracle培训心得

2010年x月x日至x月x日,我有幸参加了工业和信息化部软件与集成电路促进中心主办的“oracle数据库高级实战培训班”学习交流。首先感谢学校领导给予了我这次学习机会。通过短暂的几天培训,我不仅对oracle知识有了部分的了解,也接受了很多最新的信息。在这次培训中,上课的老师有非常丰富dba经验,他结合他自身的dba工作经历,从oracle体系结构与网络配置、访问控制、事务处理与日志、闪回特性、数据库的备份与恢复和数据库性能监测与调整优化等几个方面对oracle进行了讲解。对课程讲解十分的详细。通过案例示范以及演示,指导我们一步步操作。

oracle主要以操作命令行为主,在学习的过程中,对老师的每一步操作都做好了记录。课堂上按照老师的要求一步步操作,课后按记录的操作步骤和命令反复多次的练习。以此到达了对oracle反复学习,熟悉掌握老师所传授的知识。

短短5天的高强度集中学习,我通过“xxxx”考试,取得了“xxxx”的认证。但是我知道依靠这几天的培训对oracle学习是不行的,还必须在实践中不断地努力,提升自身的专业技术能力。只有在不断的实践练习,才能够深刻了解它的原理和方法。在以后的工作中,我仍会继续学习各种关于oracle数据库的知识、持之以恒,在今后的工作中不断实践、总结、深入学习,全面掌握oracle知识。

第三篇:oracle日期格式总结

select to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||to_char(sysdate,'dd')||'日'||to_char(sysdate,'hh24')||'时'||to_char(sysdate,'mi')||'分'||to_char(sysdate,'ss')||'秒’from dual 在oracle中处理日期大全 TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated mar month spelled out march Year: yy two digits 98 yyyy four digits 1998 24小时格式下时间范围为: 0:00:0012:59:59....1.日期和字符转换函数用法(to_date,to_char)2.select to_char(to_date(222,'J'),'Jsp')from dual 显示Two Hundred Twenty-Two 3.求某天是星期几和设置语言格式

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day')from dual;星期一 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American')from dual;monday 设置日期语言

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样

TO_DATE('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4.两个日期间的天数

select floor(sysdateto_date('2002-02-01','yyyy-mm-dd')+1)where to_char(to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D')not in('1', '7')在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).9.select months_between(to_date('01-31-1999','MM-DD-YYYY'), to_date('12-31-1998','MM-DD-YYYY'))“MONTHS” FROM DUAL;1 select months_between(to_date('02-01-1999','MM-DD-YYYY'), to_date('12-31-1998','MM-DD-YYYY'))“MONTHS” FROM DUAL;1.03225806451613 10.Next_day的用法 Next_day(date, day)Monday-Sunday, for format code DAY Mon-Sun, for format code DY 1-7, for format code D 11 select to_char(sysdate,'hh:mi:ss')TIME from all_objects 注意:第一条记录的TIME 与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace function sys_date return date is begin return sysdate;end;select to_char(sys_date,'hh:mi:ss')from all_objects;12.获得小时数

SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40')from offer SQL> select sysdate ,to_char(sysdate,'hh')from dual;SYSDATE TO_CHAR(SYSDATE,'HH')-----------------------------------------2003-10-13 19:35:21 07 select sysdate ,to_char(sysdate,'hh24')from dual;SYSDATE TO_CHAR(SYSDATE,'HH24')-------------------------------------------2003-10-13 19:35:21 19 获取年月日与此类似 13.年月日的处理

select older_date, newer_date, years, months, abs(trunc(newer_date-add_months(older_date,years*12+months)))days from(select trunc(months_between(newer_date, older_date)/12)YEARS, mod(trunc(months_between(newer_date, older_date)), 12)MONTHS, newer_date, older_date from(select hiredate older_date,add_months(hiredate,rownum)+rownum newer_date from emp))14.处理月份天数不定的办法

select to_char(add_months(last_day(sysdate)+1,-2), 'yyyymmdd'),last_day(sysdate)from dual 16.找出今年的天数

select add_months(trunc(sysdate,'year'), 12)60*TRUNC(A*24))Minutes, TRUNC(A*24*60*60100*TRUNC(A*24*60*60))mSeconds from(select trunc(sysdate)Days, sysdate6 first_day from(select substr('2004-33', 1, 4)yy, to_number(substr('2004-33', 6))ww

from dual)

select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')last_day from dual

select max(v_date)from(select(to_date('200408','yyyymm')+ rownum)v_date from all_tables where rownum < 370)where to_char(v_date,'yyyy-iw')= '2004-33'

3.查询某周的日期

select min_date, to_char(min_date,'day')day from(select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd')min_date

from all_tables where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365)union

select to_date(substr('2004-33',1,4)-1||

decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd')min_date

from all_tables

where rownum <= 7 union select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd')min_date

from all_tables

where rownum <= 7)where to_char(min_date,'yyyy-iw')='2004-33'

oracle中时间运算

论坛中常常看到有对oracle中时间运算提问的问题,今天有时间,看了看以前各位兄弟的贴子,整理了一下,并作了个示例,希望会对大家有帮助。

首先感谢ern、eric.li及各版主还有热心的兄弟们

内容如下:

1、oracle支持对日期进行运算

2、日期运算时是以天为单位进行的

3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可

4、进行时间进制转换时注意加括号(见示例中红色括号),否则会出问题

SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';

会话已更改。

SQL> set serverout on SQL> declare 2 DateValue date;3 begin 4 select sysdate into DateValue from dual;5 dbms_output.put_line('源时间:'||to_char(DateValue));6 dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));7 dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));8 dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));9 dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6 0)));10 end;11 / 源时间:2003-12-29 11:53:41 源时间减1天:2003-12-28 11:53:41 源时间减1天1小时:2003-12-28 10:53:41 源时间减1天1小时1分:2003-12-28 10:52:41 源时间减1天1小时1分1秒:2003-12-28 10:52:40

第四篇:Oracle数据库总结范文

创建表及命名规则?

表名和列名:

必须以字母开头 必须在1–30个字符之间

必须只能包含A–Z, a–z, 0–9, _, $, 和# 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字 Oracle默认存储是都存为大写

增删改查语法?

增加: 例如:使用INSERT语句往customers表中插入数据,指定相关列和值 INSERT INTO customers(customer_id, first_name, last_name, dob, phone)VALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

如果为表所有列都指定值,那么可以忽略列清单

INSERT INTO customersVALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

可以使用NULL为某些列指定空值

INSERT INTO customersVALUES(8, 'Sophie', 'White', NULL, NULL);

查询:select * fromcustomers;或者select字段 fromcustomerswhere条件 删除:deletefromcustomerswhere条件

更改:update customersset name = 'xiaoming',age = ‘16’(更改多个字段时候用逗号隔开)where 条件

对查询结果进行排序?

语句:select * fromcustomersorderby字段 desc;

(asc(升序),desc(降序)如果不写,默认升序)

NULL值了解么?

NULL值表示未知的值。它是一个特殊的值,但并不是空字符串,NULL值表示该列是未知的。当某些查询语句在输出结果列上看不到值的时候,可能就是NULL值

NVL()和NVL2():

NULL值被查询出来的时候没有显示信息,如何告知用户这是空字符串还是NULL,这可以通过NVL()函数来进行处理

NVL(x,value)是有value显示本身,null显示为替换的value NVL2(x,value1,value2)是如果x不为NULL值,返回value1,否则返回value2 例程:

select name,nvl2(email,'已知','未知')from student;【代码含义:代表如果email字段中有值,则显示已知,null则显示未知,如果想显示本来的查询结果select name,nvl(email,'未知')from student;】 update student set name = replace(name,'小','大');【代码含义:代表将STUDENT表中NAME 字段中如果含有小字,那么就将小字替换为大字(操作的不是显示结果,而是将表中数据进行更改)】

Oracle中的简单函数?

字符串函数

 concat:将x和y拼接起来,并返回新字符串

例程:

select concat(first_name,'-'||last_name)姓名 from customers; Instr字符查找,从1开始。

select instr('asdbcrdbewqrbmde','b')from dual;select instr('asdbcrdbewqrbmde','b',5,2)from dual;【代表从第5个字符开始,第二个b所在的位置】

 Ltrim : LTRIM(x,[trim_string])从x字符串左侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除左侧空白字符

 Rtrim RTRIM(x,[trim_string])从x字符串右侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除右侧空白字符  Trim TRIM(trim_string FROM x)从x字符串两侧去除trim_string字符串

 Replace REPLACE(x, search_string, replace_string)从字符串x中搜索search_string字符串,并使用replace_string字符串替换。用select执行并不会修改数据库中原始值,但是用update执行可以修改。

 Substr SUBSTR(x, start,[length])返回字符串中的指定的字符,这些字符从字符串的第start个位置开始,长度为length个字符;如果start是负数,则从x字符串的末尾开始算起;如果length省略,则将返回一直到字符串末尾的所有字符

例程:

select substr('abcd月fg',4,2)from dual;(结果:d月)select substr('abcdefg',-2)from dual;(结果:fq)

日期函数

 Sysdate 例程:

Selectsysdatefromdual;

Select to_char(sysdate, 'yyyy-mm-dd-hh-mm-ss')from dual;

 Add_months(d1,n1) last_day():

转换函数

 To_char TO_CHAR(x,[ format])将x转化为字符串。format为转换的格式,可以为数字格式或日期格式

select to_char(sysdate,'yyyy-mm-dd')from dual;【一般在查询时候使用,使返回的值成为指定格式】

 to_date TO_DATE(x,[format])将x字符串转换为日期

insert into student values(seq_stu.nextval,'小明',to_date('1992-2-18','yyyy-mm-dd'),default,'北京',null);【一般在添加使用】 返回所查询的值中最后一个日期数据。

聚合函数

 Avg:平均数  Sum:求和  Max:最大值  Min:最小值  Count:返回统计的行数  Round:四舍五入

例程:

select round(avg(bid),1)from bug;分组了解么?

有时需要对表中的行进行分组,然后统计每组的信息,可以使用GROUP BY进行分组,然后再对每组进行统计。

(1)可以使用GROUP BY对多个列进行分组

例:

SELECT product_id, avg(customer_id)FROM purchases GROUP BY product_id;

(2)可以对分组后的行使用聚集函数,聚集函数会统计每组中的值,对于每组分别统计后返回一个值 例:

SELECT

product_type_id,BY

COUNT(ROWID)FROM

BY

productsGROUP product_type_id;注意:

product_type_idORDER a)如果查询中使用了聚集函数,被查询的列未使用聚集函数处理,那么这些列必须出现在GROUP BY子句后,否则,会提示ORA-00937错误

b)不能使用聚集函数作为WHERE子句的筛选条件,否则,会提示ORA-00934错误

c)可以使用HAVING子句过滤分组后的行

SELECT...FROM...WHERE GROUP BY...HAVING...ORDER BY...;(GROUP BY使用时可以不使用HAVING,但是使用HAVING时必须有GROUP BY才有意义)

(3)同时使用WHERE, GROUP BY和HAVING

a)首先,执行WHERE筛选掉不符合条件的行 b)然后,将符合条件的行使用GROUP BY进行分组 c)最后,使用HAVING对分组统计的结果进行再次筛选 例:

SELECT product_type_id, AVG(price)FROM products

WHERE price < 15

GROUP BY product_type_id HAVING AVG(price)> 13 ORDER BY product_type_id;

表的约束条件?

目的:

确保表中数据的完整性。

常用的约束类型: 主键约束(PRIMARY KEY):要求主键列数据唯一,并且不允许为空 非空约束(NOT NULL):指定的列的值不允许为空

唯一键约束(UNIQUE):要求该列唯一,允许为空,但只能出现一个空

检查约束(CHECK):指定表中一列或多列可以接受的数据值格式 默认约束(DEFAULT):指定某列的默认值

外键约束(FOREIGN KEY):用于建立和加强两个表数据之间连接的一

列或多列。通过将表中的主键列添加到另一个表中。可以创建两个表之间的连接。这个主键的列就称为第二个表的外键。外键约束就可以确保添加到外键表中的任何行都在主表中都存在相应的行

多表查询?

不同的数据存储在不同的表中,通常要查询多张表才能找到需要的数据

例程: SELECT products.name, product_types.name FROM products, product_types WHERE

products.product_type_id

= product_types.product_type_id AND products.product_id = 3;

products表和product_types表相关字段会用在SELECT语句及WHERE子句上,可以给表起别名,提高代码可读性、降低书写难度 例程:

SELECT p.name, pt.name FROM products p, product_types pt WHERE p.product_type_id = pt.product_type_id AND p.product_id = 3 注意:

如果查询两张表,并且没有定义连接条件,那么查询的结果集是两表相乘的结果,这样的情况称之为笛卡尔乘积。总结:多表查询WHERE时,连接次数=查询时连接表的数量-1

常见的三种连接类型:

内连接:

内连接返回的行只有满足连接条件才会返回。如果连接条件的列中有NULL值,那么该行则不会返回 外连接:

外连接返回的行满足连接条件,也包括在连接条件的列包含空值的行

自连接:

连接的表为同一张表

子查询?

子查询是嵌入到另一个SELECT语句中的一个SELECT语句。通过使用子查询,可以使用简单的语句组成强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。

单行子查询:(1)可以将另外一个查询作为WHERE子句的子查询

例:查询尾名是‘Brown’的首名和尾名

SELECT first_name, last_name FROM customers

WHERE customer_id =

(SELECT customer_id FROM customers WHERE last_name = 'Brown');(2)在单行子查询还可以使用其他比较运算符,如<>、<、>、<=和>= 例:查询价格大于平均价格的商品编号、名称及价格

WHERE子句中使用>,以及子查询中使用AVG()聚集函数

SELECT product_id, name, price FROM products WHERE price >(SELECT AVG(price)FROM products);(3)在HAVING子句中使用子查询

HAVING是在分组统计后用于过滤行,同样在HAVING子句后面可以跟子查询。单行子查询将返回结果用于HAVING子句过滤分组统计的行

例如:查询平均价格小于最大平均值的商品编号及平均值

SELECT product_type_id, AVG(price)FROM products GROUP BY product_type_id HAVING AVG(price)<(SELECT MAX(AVG(price))FROM products GROUP BY product_type_id)ORDER BY product_type_id;

分页查询?

可以通过ROWNUM来实现。

序列?

序列是一个数据库对象,用于生成一系列的整数。

索引?

索引是与表关联的可选结构。可以创建索引以加快对表执行SQL语句的速度。就像书的索引可以帮助我们更快速的查找信息一样,Oracle中的索引也提供了一种更快地访问表数据的途径。

视图?

视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。数据库中只在数据字典中存储对视图的定义。

第五篇:oracle视图总结

oracle视图总结(转)

视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。

视图的优点:

1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。2.用户通过简单的查询可以从复杂查询中得到结果。3.维护数据的独立性,试图可从多个表检索数据。4.对于相同的数据可产生不同的视图。

视图的分类:

视图分为简单视图和复杂视图。

两者区别如下:

1.简单视图只从单表里获取数据,复杂视图从多表获取数据; 2.简单视图不包含函数和数据组,复杂视图包含; 3.简单视图可以实现DML操作,复杂视图不可以。

视图的创建:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中:

OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名;

subquery:一条完整的SELECT语句,可以在该语句中定义别名;

WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY : 该视图上不能进行任何DML操作。

例如: Sql代码

1.CREATE OR

REPLACE

VIEW dept_sum_vw

2.(name,minsal,maxsal,avgsal)

3.AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)

4.FROM

emp e,dept d

5.WHERE e.deptno=d.deptno

6.GROUP BY d.dname;

视图的定义原则:

1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询; 2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用 ORDER BY 子句;

3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授予对象权限。

查询视图:

视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。示例:

SQL>SELECT * FROM dept_sum_vw;

修改视图:

通过OR REPLACE 重新创建同名视图即可。

删除视图:

DROP VIEW VIEW_NAME语句删除视图。删除视图的定义不影响基表中的数据。

只有视图所有者和具备DROP VIEW权限的用户可以删除视图。视图被删除后,基于被删除视图的其他视图或应用将无效。

查询视图定义:

SELECT view_name,text from user_views;其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS 得到相关信息。

视图上的DML 操作: DML操作应遵循的原则:

1.简单视图可以执行DML操作; 2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行; 3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:

a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字; b.使用表达式定义的列; c.ROWNUM伪列。

d.基表中未在视图中选择的其他列定义为非空且无默认值。WITH CHECK OPTION 子句

通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。(也就是说在执行INSERTS、UPDATES时,WHERE条件中除需要INSERT、UPDATE本身的限制条件之外,还需要加上视图创建时的WHERE条件。)

例如:

CREATE OR REPLACE VIEW vw_emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION constraint vw_emp20_ck;视图 已建立。

查询结果:

SELECT empno,ename,job FROM vw_emp20;EMPNO

ENAME

JOB---------------------

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

-------------7369

SMITH

CLERK 7566

JONES

MANAGER 7902

FORD

ANALYST 修改:

UPDATE vw_emp20 SET

deptno=20 WHERE empno=7902;将产生错误:

UPDATE vw_emp20 * ERROR 位于第一行:

ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句”的异常。

2,联结视图:

create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.deptno in(10,30)and e.deptno = d.deptno; 将两个表的数据联结起来,看起来应该是一个内联结(Inner joint)。

对于联结视图(Joint view)的修改规则稍显复杂,设计到所谓key_preserved table的概念。通过联结视图来修改基表,只有那些key_preserved 的表才能被修改。上述创建视图语句中emp和dept通过deptno进行联结构成视图时,emp就是key_preserved 表,而dept不是。为什么?因为在dept1_staff 中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通过该视图来修改emp,而不能修改dept的数据。

3,Oracle视图非常强大的功能之一在于其可以创建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成视图里的该字段名称,那么视图马上就可以成为合法的。这个功能很有意思。例子:

创建基表: create table v_test(name varchar2(32),age number(12));创建带错误的视图:

create force view view_test as select name,age,address from v_test;(注意加上force选项)

由于address字段在v_test里不存在,所以会报warning: View created with compilation errors的警告,而且执行select * from view_test;时会报“ORA-04063: view “SCOTT.VIEW_TEST” 有错误”的异常。但是如果在v_test里加上address字段,那么视图就会合法。对基表进行修改:

alter table v_test add(address varchar2(128));

现在再执行select * from view_test;就会执行成功了。

from:http://www.blogjava.net/jinhualee/archive/2006/07/14/58115.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

其他问题总结:

1、视图上是否可以创建索引?

一般视图上不用建立索引,对视图的操作最终会转化为对表的操作。一个讨论:http://www.itpub.net/viewthread.php?tid=150019&extra=&page=1

下载linux、oracle自我总结word格式文档
下载linux、oracle自我总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    嵌入式linu学习心得(5篇范例)

    嵌入式Linux学习心得1、 Linux命令 ls:查看目录-l以列表方式查看;ls –l 与ll的功能一样 pwd: 查看当前的目录 cd:改变当前操作目录cd /直接跳到根目录 cd ..回到上一级目录......

    ORACLE服务器个人总结

    ORACLE服务器安装 以下如没有特殊声明 均使用默认设置。 安装时的2个重要文件 1:Oracle Net Services9.2.0.1.0->Oracle Net Listener9.2.0.1.0 监听端口 2:Oracle Managemen......

    Oracle 临时表总结===范文大全

    Oracle 临时表总结 什么是临时表? 临时表只存在于某个会话或事务,不产生redo 。 临时表主要用于一些需要缓存结果的应用中。例如,在一个学生选课系统中,学生暂时的选课表信息保......

    Oracle数据库学习总结

    Oracle数据库学习总结1.set linesize xx; 设置行间距,常用数值有100,200,300 2.set pagesize xx; 设置每页显示行数 3.ed x ; 表示新建一个x.sql文件,通过文件编辑SQL语句,然后用......

    Oracle之PLSQL总结

    基本数据类型变量 1.基本数据类型Number 数字型Int 整数型Pls_integer 整数型,产生溢出时出现错误Binary_integer 整数型,表示带符号的整数 Char 定长字符型,最大255个字符 Va......

    Oracle数据库 知识点总结

    1.constraint约束: alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键 alter table [table_name] drop constraint [pk_name];//删除主键......

    ORACLE数据库学习总结

    数据库学习总结-Marlon 目录 一、 二、 三、 四、 五、 六、 七、 八、 ORACLE_简介 ......................................................................................

    Oracle异常总结5篇

    Oracle异常总结 Oracle异常处理异常处理是考验一个应用程序健壮性的最好方式,开发人员必须考虑程序中可能出现的各种错误,并进行相应的处理。 Oracle中异常分为预定义异常,非预......