“3+1” 文书python3 构造函数?

&&&&&&&&&&&
Linux系统目录结构官方参考:http://www.pathname.com/fhs/
1:Linux树状目录结构图
下面目录中标红的是必须要掌握的!
2:根目录&
第一层次结构的根、整个文件系统层次结构的根目录。
需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:cat、ls、cp,和/usr/bin类似。
引导程序文件,例如:kernel、initrd;时常是一个单独的分区
设备目录。必要设备, 例如:, /dev/null.
系统配置及服务配置文件,启动命令的目录。
特定主机,系统范围内的配置文件。关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为/etcetra 目录,这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。
/opt/的配置文件
X_Window系统(版本11)的配置文件
/etc/sgml/
SGML的配置文件
XML的配置文件
用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。
/bin/ and /sbin/中二进制文件必要的库文件。
可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。
/lost+found/
在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。
临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用
可选应用软件包。
显示内核及进程信息的虚拟文件系统。
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
超级用户的家目录
必要的系统二进制文件,例如: init、 ip、 mount。sbin目录下的命令,普通用户都执行不了。
站点的具体数据,由系统提供。
临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。
用户程序,及数据,帮助文件,二进制命令等的目录。
默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的(多)用户工具和应用程序。
变化的目录,一般是日志文件,cache的目录。
变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。
根目录下的重点目录:
/dev/  设备目录
/etc/  系统配置及服务配置文件,启动命令的目录
/proc  显示内核及进程信息的虚拟文件系统
/tmp  临时文件目录,公共厕所,客厅
/home  普通用户家目录,大臣的家
/root  超级管理员的家目录,皇宫
/var  变化的目录,一般是日志文件,cache的目录
/usr  用户程序,及数据,帮助文件,二进制命令等的目录
/bin,/sbin,/usr/sbin  用户命令的目录
3:/etc/目录
/etc/rc.local
用于存放开机自启动程序命令的文件(chkconfig常用来管理yum/rpm安装的程序的服务的开机自启动)。系统开机时会把/etc/rc.local里的内容执行一遍。
让一个程序开机自启动的两种办法:
1)chkconfig (/etc/init.d/sshd)
2)放入/etc/rc.local
一般在工作中,一台服务器上跑了些什么程序,会记录在此文件中,并且注释!方便其他运维人员快速掌握该机器上运行的程序!
/etc/hosts
本地域名解析文件!最好把本机的IP与本机的主机名也写入到该文件中!
hosts企业里的应用:
1:开发,产品,测试等人员,用于通过正式的域名测试产品
2:服务器之间的调用可以用域名(内部的DNS),方便迁移
/etc/sysconfig/network
主机名的配置文件!
该文件在启动过程中,会被/etc/init.d/network文件调用
更改主机名:
1:vi /etc/sysconfig/network
2:hostname 主机名
3:vi /etc/hosts
上面三个文件同时修改
/etc/resolv.conf
DNS服务器配置!这里注意网卡里的DNS配置优先于此文件的DNS配置!面试的时候注意下这个地方,工作中如果需要配置DNS,就在网卡文件配置即可!
/etc/fstab
开机自动挂载系统,所有分区开机都会自动挂载。
生产场景的应用,文件参数详细解释见:http://www.cnblogs.com/ginvip/p/6351740.html
/etc/inittab
设定系统启动时Init进程将把系统设置成什么样的runlevel运行级别及加载相关的启动文件配置
/etc/exports
设置NFS系统用的配置文件路径
/etc/init.d
这个目录用来存放系统启动脚本
/etc/profile
系统全局环境变量永久生效的配置文件
定义别名以及PATH变量等
用户的环境变量:~/.bash_profile , ~/.bashrc
/etc/profile.d
加载系统登录程序的一个目录,命令或文件独立存在!
以文件的形式存在(.sh为扩展名),但要可执行
[root@Gin ~]# cat /etc/profile.d/gin.sh #!/bin/bashecho "welcome to Gin linux blog from /etc/profile.d"
退出当前终端,再次登录,该脚本就会自动执行,屏幕上就会显示上面的内容
/etc/profile.d &登录后执行的脚本所在地
/etc/motd &登录后显示的字符串
/etc/issue
记录用户登录前显示的系统版本信息
安全优化: &/etc/issue
设置认证后的输出信息,
当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令
/etc/group
类似/etc/passwd ,但要说明的不是用户而是组.
/etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/shadow
在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.
/etc/sudoers
可以执行使用sudo命令的配置文件
/etc/syslog.conf
系统日志参数配置
/etc/login.defs
设置用户帐号限制的文件
/etc/securetty
确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
/etc/printcap
类似/etc/termcap ,但针对打印机.语法不同.
/etc/shells
列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
/etc/xinet.d
如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。
/opt/的配置文件
X_Window系统(版本11)的配置文件
/etc/sgml/
SGML的配置文件
XML的配置文件
/etc/skel/
默认创建用户时,把该目录下的所有文件拷贝到家目录下
/etc/sysconfig/network-scripts/ifcfg-eth0
ifup eth0 启动第一块网卡
ifdown eth0 关闭第一块网卡
ip a 或 ip add 查看网卡ip
&该文件的详细内容见:http://www.cnblogs.com/ginvip/p/6351740.html
4:/usr/目录
/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,x,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。
/usr/games
曾经包含游戏等文件,现在很少用到;
文档。实际是 /usr/share/doc 的软链接;
/usr/include
各种头文件,编译文件等时需要使用; /usr/include/’package-name’ : 程序特定的头文件;
一个极少用到的配置文件存放地;
man 手册,已经移至 /usr/share/man;
linux 内核的源码和说明文档等; /usr/src/linux : linux 源代码;
非必要可执行文件 (在单用户模式中不需要);面向所有用户。
所有可执行文件所需要的库文件;
/usr/sbin/
类似 /sbin,root 可以执行。但此目录不包含在环境变量 $PATH 中,它包含的程序类似于 chroot, useradd, in.tftpd and pppconfig;
/usr/share/
&它包含了各种程序间的共享文件,如字体,图标,文档等。(/usr/local 对应的目录是 &/usr/loca/share); /usr/share/doc : 类似应用程序的 man 手册。它包含程序的说明文件,默认配置文件等;
/usr/X11R6
x 系统的二进制文件,库文件,文档,字体等。它不等同于 /usr 的作用,只有 x 才能调用这些库文件等,其他程序不读取或者使用。因为 linux 没有原生图形界面,而且 linux 大部分情况下是 for server 的,所以图形界面没有意义;其中 X11R6 代表 version 11 release 6; /usr/X11R6/bin : x 的二进制文件,包含运行 x 的必须文件;
/usr/local/
/usr 通常只包含系统发行时自带的程序,而 /usr/local 则是本地系统管理员用来自由添加程序的目录;相当于windowns下的c:\Programe files目录
5:/var/目录
/var 包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.
/var/log/message
系统日志信息,按周自动轮询(系统硬件,软件出故障都会记录。另外还有一个dmesg命令记录系统硬件故障)
/var/spool/cron/
定时器配置文件目录,默认按用户命名
/var/log/secure
安全日志信息。记录登陆系统存取信息的文件,不管认证成功还是认证失败都会记录(如SSH连接日志,有人扫描你的端口等)
/var/log/wtmp
记录登陆者信息的文件,last,who,w命令信息来源于此
/var/spool/clientmqueue
当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此
/var/spoo/mail/
邮件目录&mail -& spool/mail
比/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)
系统正常运行时要改变的文件.&&
/var/local
/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .&&
锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.
各种程序的Log文件,特别是login& &(/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.&&
保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.
/var/cache/
应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
6:/proc/目录
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。
例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
/proc/meminfo
查看内存信息
/proc/loadavg
还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/uptime
就是用 uptime 的时候,会出现的资讯!
/proc/cpuinto
关于处理器的信息,如类型、厂家、型号和性能等。
/proc/cmdline
加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!
/proc/filesystems
目前系统已经加载的文件系统!
/proc/interrups
目前系统上面的 IRQ 分配状态。
/proc/ioports
目前系统上面各个装置所配置的 I/O 位址。
/proc/kcore
这个就是内存的大小啦!好大对吧!但是不要读他啦!
/proc/modules
目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
/proc/mounts
设备的挂载信息!与 dh -hT类似
/proc/swaps
到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions
使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
/proc/version
核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/*
一些汇流排的装置,还有 U盘的装置也记录在此喔!
7:/dev/目录
设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备文件一般存放在/dev目录下,
对常见设备文件作如下说明:
/dev/hd[a-t]
/dev/sd[a-z]
/dev/fd[0-7]
/dev/md[0-31]
软raid设备
/dev/loop[0-7]
本地回环设备
/dev/ram[0-15]
无限数据接收设备,相当于黑洞
无限零资源
/dev/tty[0-63]
/dev/ttyS[0-3]
/dev/lp[0-3]
/dev/console
/dev/fb[0-31]
framebuffer
/dev/cdrom
=& /dev/hdc
/dev/modem
=& /dev/ttyS[0-9]
/dev/pilot
=& /dev/ttyS[0-9]
/dev/random
随机数设备
/dev/urandom
随机数设备
word文档下载地址:
阅读(...) 评论()新 常用办案文书格式_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
新 常用办案文书格式
&&行政处罚文书
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩62页未读,
定制HR最喜欢的简历
你可能喜欢怎样才能写好留学文书呢? - 知乎925被浏览<strong class="NumberBoard-itemValue" title="5分享邀请回答1205 条评论分享收藏感谢收起16添加评论分享收藏感谢收起系统架构设计(通用型),推荐给苦于写文档的同学们,干货分享!系统架构设计(通用型),推荐给苦于写文档的同学们,干货分享!技术论百家号系统架构图:系统采用四层架构设计一、展现层Web前端基于HTML/HTML5/Vue/CSS3开发web前端页面,兼容主流浏览器。展现层和数据层完全分离,通过跨域实现前后端数据通信。APPandroid,ios 基于原生开发。在app端实现https链路请求优化,做防盗链和DNS劫持处理。微信公众号/微信小程序更新业务需要,将部分数据以微信公众号+H5的方式展现;涉及硬件设备控制功能的系统部分模块采用微信小程序,增加用户操作体验和访问便捷性。Restful接口基于特定业务,采用Restful标准接口,对外提供数据服务。二、通讯层基于阿里云CDN实现静态数据加速;基于阿里云SLB,实现服务器负载均衡;基于TCP/HTTP/HTTPS 三种通信方式,实现前后端数据通信。其中,TCP基于Netty实现;三、服务层核心业务基于Spring Cloud 架构实现微服务化。Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务。相关的组件包括如下:1、Netflix Eureka:服务中心,云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移2、Netflix Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。3、Netflix Zuul:是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门,具有拦截和路由功能。4、Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。可以实现动态获取配置,原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修改了配置文件后不需要重启服务就可以使修改后的内容生效,前提使用archaius的API来读取。5、Spring Cloud Config:俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。6、Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。7、Spring Cloud Sleuth:日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。8、Spring Cloud Task:主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。四、数据层mongodb:存储非结构化、关联性弱的业务数据。如,控制器下发的指令数据,监测设备收集的传感器数据,mysql:存储事务性数据,以及关联性将强的数据。如,订单、资金、交易数据;HDSF:存储监控设备上传的图片和视频,以及报表文件;ElasticSearch:实现ELK,存储日志数据;其他:1、认证系统:采用双token的方式完成jwt。其中accessToken 用于用户身份认证。refreshToken用于当accessToken失效时重新生成。用户登录:token认证访问(accessToken有效)token认证访问(accessToken失效,refreshToken有效):accessToken和refreshToken 都失效2、日志系统:日志集中化管理,采用ELK解决方案。Elasticsearch:是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash :主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。Kibana :也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。3、会话治理此处的会话是指Netty 会话管理。实现Channel自定义会话管理,如会话监控、会话超时、会话重建等。4、DNS劫持处理移动端产品在实际用户环境下会面临 DNS 劫持、耗时波动等问题,这些 DNS 环节的不稳定因素,导致后续网络请求被劫持或是直接失败, 对产品的用户体验产生不好的影响。DNS 有 LocalDNS VS HTTP DNS之分在长期的实践中,互联网公司发现 LocalDNS 会存在如下几个问题:域名缓存: 运营商 DNS 缓存域名解析结果,将用户导向网内缓存服务器;解析转发 & 出口 NAT: 运营商 DNS 转发查询请求或是出口 NAT 导致流量调度策略失效;为了解决 LocalDNS 的这些问题,业内也催生了 HTTP DNS 的概念,它的基本原理如下:原本用户进行 DNS 解析是向运营商的 DNS 服务器发起 UDP 报文进行查询,而在 HTTP DNS 下,我们修改为用户带上待查询的域名和本机 IP 地址直接向 HTTP WEB 服务器发起 HTTP 请求,这个 HTTP WEB 将返回域名解析后的 IP 地址。比如 DNSPod 的实现原理如下:相比 LocalDNS, HTTP DNS 会具备如下优势:根治域名解析异常: 绕过运营商的 DNS,向具备 DNS 解析功能的 HTTP WEB 服务器发起查询;调度精准: HTTP DNS 能够直接获取到用户的 IP 地址,从而实现准确导流;扩展性强: 本身基于 HTTP 协议,可以实现更强大的功能扩展;完。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。技术论百家号最近更新:简介:地球没有新奇科学,全部都在火星一号。作者最新文章相关文章博客访问: 3192912
博文数量: 193
注册时间:
认证徽章:
刘盛,网名leonarding,the first ACEA in china,
Oracle OCM10g&11g RHCE,
ACOUG Core Member Blogger,
DATAGURU Oracle数据库版主,
ITPUB HADOOP版版主,
DB2中国专家组成员,
专注于&Oracle&Hadoop&Nosql&SAS,
提倡“分享技术~成就梦想”,
新浪微博:@itpub_leonarding
分类: Linux操作系统 09:53:03
第一篇 《oracle等待事件1分别用表和索引上数据的访问来产生db file scattered read等待事件》第二篇 《oracle等待事件2构造一个DB File Sequential Read等待事件和构造一个Direct Path Read等待事件》第三篇 《oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件》
Dear All:& && && && &历经5天的oracle等待事件系列大功告成,不容易a多少个不眠之夜,多少次无尽猜想,在此做首打油诗留念 & && && && && && && && && && && && && && && && &
& && && && && && && && && && && && && && && && && &《2012终日有感》
& && && && && && && && && && && && && && && && && & 壮志未酬oracle
& && && && && && && && && && && && && && && && && & 夜点明灯苦用功
& && && && && && && && && && && && && && && && && & 只为不白少年头
& && && && && && && && && && && && && && && && && & 报答老师抱mm
五 构造一个Direct Path write等待事件,等待事件需要在v$session_wait和10046 trace文件中显示出来,贴出整个演示过程。
Direct path write 等待事件:发生在“写入磁盘”的时候,因为写也是一种中间状态,只要是中间状态数据就没有必要共享给其他用户,所以这些数据也不会放在SGA中共享,从PGA中 -> 直接写入 -> 磁盘。
场景: append方式插入数据,这种方式插入数据的时候会跳过SGA的data_buffer_cache,直接插入数据文件,并且还不会扫描数据文件中的空闲空间直接插入到文件尾所以效率较高
& && & 当数据排序时候,如果PGA被装满,就会被写入到磁盘的temp表空间里,因为排序的数据是中间状态也不会经过SGA,所以会产生“direct path write”等待事件
LEO1@LEO1> select table_name,index_name from user_indexes where table_name='LEO1';&&利用leo1表
TABLE_NAME& && && && && && && &INDEX_NAME
------------------------------ -------------------------------------------
LEO1& && && && && && && && && &IDX_LEO1
LEO1@LEO1> select count(*) from leo1;& && && && && && && && && && && && && && &&&有71959行记录
&&COUNT(*)
------------------
& &&&71959
LEO1@LEO1> execute dbms_stats.gather_table_stats(ownname=>'LEO1',tabname=>'LEO1',cascade=>TRUE);
PL/SQL procedure successfully completed.&&统计分析
v$session_wait视图中显示出来
LEO1@LEO1> set serveroutput on
LEO1@LEO1> create or replace procedure p4
& &&&for i in 1..8
& && && &insert /*+ append */ into leo1 select * from leo1;
& &&&dbms_output.put_line('successfully');
&&2& & 3& & 4& & 5& & 6& & 7& & 8& & 9& &10& &11&&
Procedure created.创建存储过程p4循环8次,添加了append&&hint执行直接插入,在这个期间会发生“direct path write”等待事件
Append 注意事项
Append方式叫做直接路径加载,使用这种方式是因为oracle不会在扫描freelist链表中的空闲块,直接在高水线之后插入数据,所以速度比较快。
(1)append方式不记录redo,一旦在插入的过程中没有保存到磁盘或者发生掉电情况那么插入的数据不能恢复
(2)由于不在利用表的空闲空间,那么这种方式比较浪费存储空间,就是以空间换时间
(3)insert /*+ append */ into leo1 select * from leo1;会对这个表添加一个6级锁,意味着在没有commit/rollback前提下任何会话 insert&&update&&delete&&select 等操作都不允许,否则会报错
ORA-12838: cannot read/modify an object after modifying it in parallel
解释如下:
ORA-12838 cannot read/modify an object after modifying it in parallelCause: Within the same transaction, an attempt was made to add read or modification statements on a table after it had been modified in parallel or with direct load. This is not permitted.Action: Rewrite the transaction, or break it up into two transactions: one containing the initial modification and the second containing the parallel modification operation
LEO1@LEO1> execute p4;& && && && && && && && && && && & 当看到“successfully”表明这个p4执行完毕
successfully
PL/SQL procedure successfully completed.
LEO1@LEO1> select sid,event,wait_class,p1,p1text,p2,p2text,p3,p3text from v$session_wait where event like '%direct%';
SID& &EVENT& && && &&&WAIT_CLASS& && &P1 P1TEXT& && && &P2& & P2TEXT& && && &P3&&P3TEXT
---------- ---------------------------------------------------------------- ---------- ---------- ---------- ---------- --------------- ---------- ---------------
133& &direct path write& &User I/O& && && & 5 file numbe& && &10528&&first dba& && &&&32&&block cnt
133& &direct path write& &User I/O& && && & 5 file numbe& && &11232&&first dba& && &&&32&&block cnt
P1:写入的数据文件& && && && & 即 5号数据文件
P2:写入起始数据块号& && &&&即 10528& &&&11232号数据块
P3:写入了多少个数据块& &即 32个数据块
LEO1@LEO1> create or replace procedure p5
& &&&for i in 1..5
& && && &insert /*+ append */ into leo1 select * from leo1 order by object_
& &&&dbms_output.put_line('successfully');
&&2& & 3& & 4& & 5& & 6& & 7& & 8& & 9& &10& &11&&
Procedure created.
创建存储过程p5循环5次,先进行order by操作在插入,这会就有更多的“direct path write”等待事件
LEO1@LEO1> execute p5;& && && && && && && && && && &&&当看到“successfully”表明这个p5执行完毕
successfully
PL/SQL procedure successfully completed.
LEO1@LEO1> select sid,event,wait_class,p1,p1text,p2,p2text,p3,p3text from v$session_wait where event like '%direct%';
SID& &EVENT& && && &&&WAIT_CLASS& && &P1 P1TEXT& && && &P2& & P2TEXT& && && &P3&&P3TEXT
---------- ---------------------------------------------------------------- ---------- ---------- ---------- ---------- --------------- ---------- ---------------
133& &direct path write& &User I/O& && && & 5 file numbe& && &18816&&first dba& && &&&32&&block cnt
133& &direct path write& &User I/O& && && & 5 file numbe& && &17984&&first dba& && &&&32&&block cnt
133& &direct path write& &User I/O& && && & 5 file numbe& && &17856&&first dba& && &&&32&&block cnt
产生的密度大
10046 trace文件中显示出来
LEO1@LEO1> select name,value from v$diag_info where name='Default Trace File';&&当前会话写入trace文件名
NAME& && && && &VALUE
--------------------------------------------------------------------------------
Default Trace File& &/u01/app/oracle/diag/rdbms/leo1/LEO1/trace/LEO1_ora_19807.trc
[oracle@leonarding1 trace]$ > LEO1_ora_19807.trc
先把这个19807trace文件清空,方便看新生成的内容
LEO1@LEO1> alter session set events '10046 trace name context forever,level 12';& && &&&启动10046事件
Session altered.
LEO1@LEO1> insert /*+ append */ into leo1 select * from leo1;& && && && && && && && && && && && && && &&&直接路径加载
143918 rows created.
LEO1@LEO1>& && &回滚
Rollback complete.
LEO1@LEO1> insert /*+ append */ into leo1 select * from leo1 order by object_& &&&先排序在加载
143918 rows created.
LEO1@LEO1>& && &再回滚
Rollback complete.
LEO1@LEO1> alter session set events '10046 trace name context off';& && && && && && && && & 关闭10046事件
Session altered.
LEO1@LEO1> select name,value from v$diag_info where name='Default Trace File';
NAME& && && && && && &&&VALUE
-------------------------------------------------------------------------------------------------------------------------------------------------
Default Trace File& && && &&&/u01/app/oracle/diag/rdbms/leo1/LEO1/trace/LEO1_ora_19807.trc
LEO1@LEO1> !vim /u01/app/oracle/diag/rdbms/leo1/LEO1/trace/LEO1_ora_19807.trc& &&&查看trace文件内容
====================================================================================================
insert /*+ append */ into leo1 select * from leo1& && && && && && && && && && && && && && && && && && && &直接路径加载
END OF STMT
PARSE #4:c=3999,e=76261,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=,tim=0566
WAIT #4: nam='direct path write' ela= 207 file number=5 first dba=17028 block cnt=28 obj#=-1 tim=9828
WAIT #4: nam='direct path write' ela= 160 file number=5 first dba=17056 block cnt=32 obj#=-1 tim=5744
WAIT #4: nam='direct path write' ela= 166 file number=5 first dba=17088 block cnt=32 obj#=-1 tim=0674
WAIT #4: nam='direct path write' ela= 392 file number=5 first dba=17120 block cnt=32 obj#=-1 tim=5561
====================================================================================================
insert /*+ append */ into leo1 select * from leo1 order by object_name& && && && && & 先排序在加载
END OF STMT
PARSE #13:c=1000,e=945,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=,tim=4803
WAIT #13: nam='db file sequential read' ela= 29628 file#=5 block#=9334 blocks=1 obj#=73717 tim=2078
WAIT #13: nam='db file sequential read' ela= 1211 file#=5 block#=9336 blocks=1 obj#=73717 tim=3541
WAIT #13: nam='db file scattered read' ela= 1015 file#=5 block#=9338 blocks=6 obj#=73717 tim=4811
WAIT #13: nam='db file scattered read' ela= 6766 file#=5 block#=9346 blocks=77 obj#=73717 tim=2608
WAIT #13: nam='db file scattered read' ela= 2076 file#=5 block#=9423 blocks=49 obj#=73717 tim=1133
WAIT #13: nam='db file scattered read' ela= 4840 file#=5 block#=9474 blocks=77 obj#=73717 tim=0205
WAIT #13: nam='db file scattered read' ela= 1960 file#=5 block#=9551 blocks=49 obj#=73717 tim=8629
WAIT #13: nam='db file scattered read' ela= 5017 file#=5 block#=9602 blocks=77 obj#=73717 tim=6948
WAIT #13: nam='db file scattered read' ela= 2079 file#=5 block#=9679 blocks=49 obj#=73717 tim=4742
WAIT #13: nam='db file scattered read' ela= 4975 file#=5 block#=9730 blocks=77 obj#=73717 tim=4911
WAIT #13: nam='db file scattered read' ela= 4289 file#=5 block#=9807 blocks=49 obj#=73717 tim=5146
WAIT #13: nam='db file scattered read' ela= 29 file#=5 block#=9858 blocks=4 obj#=73717 tim=9596
WAIT #13: nam='direct path write' ela= 177 file number=5 first dba=17028 block cnt=28 obj#=73717 tim=1160
WAIT #13: nam='direct path write' ela= 300 file number=5 first dba=17056 block cnt=32 obj#=73717 tim=9767
WAIT #13: nam='direct path write' ela= 116 file number=5 first dba=17088 block cnt=32 obj#=73717 tim=8466
WAIT #13: nam='direct path write' ela= 1237 file number=5 first dba=17120 block cnt=32 obj#=73717 tim=7435
WAIT #13: nam='direct path write' ela= 358 file number=5 first dba=17152 block cnt=32 obj#=73717 tim=5653
WAIT #13: nam='direct path write' ela= 174 file number=5 first dba=17184 block cnt=32 obj#=73717 tim=3262
WAIT #13: nam='direct path write' ela= 187 file number=5 first dba=17216 block cnt=32 obj#=73717 tim=3053
WAIT #13: nam='direct path write' ela= 180 file number=5 first dba=17248 block cnt=32 obj#=73717 tim=0071
WAIT #13: nam='direct path write' ela= 166 file number=5 first dba=17280 block cnt=32 obj#=73717 tim=6193
小结:trace文件中也能看到db file sequential read和db file scattered read,当然更多的是direct path write事件!
六 构造一个Log File Sync等待事件,并从相关视图中找到等待事件的信息,贴出整个演示过程。
Log File Sync等待事件:发生在“写入redo log file”的时候,既然要写入文件那么就会有磁盘I/O,有磁盘I/O就需要时间,有时间就会发生等待。
场景: commit/rollback 操作会做2个动作
& && &(1)触发LGWR进程把log_buffer中重做日志数据写入到log_file中。
& && &(2)然后会同步在线日志文件与控制文件的scn号,此时会发生“log file sync”等待事件
注:commit一次就会发生一次“log file sync”事件
我们还是利用Leo1表来实验,都是现成的,比较方便了,有个表有个索引
LEO1@LEO1> select table_name,index_name from user_indexes where table_name='LEO1';& &
TABLE_NAME& && && && && && && &INDEX_NAME
------------------------------------------------------------------------
LEO1& && && && && && && && && & IDX_LEO1
我们先做个小实验,修改数据块(就会产生redo数据)然后commit提交看看v$session_event视图的统计值是不是根据commit一次提交-> log file sync的值增加了一个
LEO1@LEO1> select sid,event,total_waits,time_waited from v$session_event where event like '%log file sync%';
& && & SID&&EVENT& && && && && &TOTAL_WAITS&&TIME_WAITED
-------------------------------------------------------------------------------------------------------------------------------------------------------
& && & 133&&log file sync& && && &&&45& && && &&&206
删除11220行 -> 修改了数据块内容 -> 也就产生了redo数据
LEO1@LEO1> delete from leo1 where object_type='leonarding';& &
11220 rows deleted.
LEO1@LEO1>& && && && &&&提交
Commit complete.
LEO1@LEO1> select sid,event,total_waits,time_waited from v$session_event where event like '%log file sync%';
& && & SID&&EVENT& && && && && &TOTAL_WAITS&&TIME_WAITED
-------------------------------------------------------------------------------------------------------------------------------------------------------
& && & 133&&log file sync& && && &&&46& && && &&&209
log file sync总次数增加了1次,等待时间增加了3秒
LEO1@LEO1> update leo1 set object_type='leonarding' where object_type='VIEW';&&修改了表内容也当然于修改数据块
20112 rows updated.
LEO1@LEO1>& && && && && &提交
Commit complete.
LEO1@LEO1> select sid,event,total_waits,time_waited from v$session_event where event like '%log file sync%';
& && & SID&&EVENT& && && && && &TOTAL_WAITS&&TIME_WAITED
-------------------------------------------------------------------------------------------------------------------------------------------------------
& && & 133&&log file sync& && && &&&47& && && &&&209
总次数又增加了1次,由于很快所以时间没有变
注:有时update一次不一定会增加TOTAL_WAITS次数,可以多操作几遍就会有反应的(因为1次数据量太少oracle的LGWR进程立刻就处理完了还来不及生成log file sync等待事件,所以总次数没有变化)
LEO1@LEO1> insert into leo1 select * from leo1;& && && &&&插入记录改变数据块内容
276616 rows created.
LEO1@LEO1>& && && && && &提交
Commit complete.
LEO1@LEO1> select sid,event,total_waits,time_waited from v$session_event where event like '%log file sync%';
& && & SID&&EVENT& && && && && &TOTAL_WAITS&&TIME_WAITED
-------------------------------------------------------------------------------------------------------------------------------------------------------
& && & 133&&log file sync& && && & 48& && && &&&215
log file sync总次数增加了1次,等待时间增加了6秒,这次时间长了一点
如果有频繁的DML操作而且伴随着频繁的commit动作,LGWR进程处理不过来,等待事件就会经常发生。
会话133& &测试rollback动作产生log file sync事件
LEO1@LEO1> insert into leo1 select * from leo1;
553232 rows created.
LEO1@LEO1>
Rollback complete.
LEO1@LEO1> select sid,event,total_waits,time_waited from v$session_event where event like '%log file sync%';
& && & SID&&EVENT& && && && && &TOTAL_WAITS&&TIME_WAITED
-------------------------------------------------------------------------------------------------------------------------------------------------------
& && & 133&&log file sync& && && &&&49& && && &&&550
我们看到在v$session_event视图中TOTAL_WAITS又增加了1次,等待时间累加到550
====================================================================================================
END OF STMT
PARSE #11:c=0,e=190,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,plh=0,tim=3590
XCTEND rlbk=1, rd_only=0, tim=3691
WAIT #11: nam='db file sequential read' ela= 33 file#=201 block#=3329 blocks=1 obj#=-1 tim=8534
EXEC #11:c=71989,e=105375,p=1,cr=35,cu=8914,mis=0,r=0,dep=0,og=0,plh=0,tim=9035
WAIT #11: nam='log file sync' ela= 18162 buffer#=6808 sync scn==0 obj#=73718 tim=7237
WAIT #11: nam='SQL*Net message to client' ela= 10 driver id= #bytes=1 p3=0 obj#=73718 tim=7390
WAIT #11: nam='SQL*Net message from client' ela= 652 driver id= #bytes=1 p3=0 obj#=73718 tim=8072
小结:10046的trace文件中我们也看到rollback操作导致的log file sync等待事件,完结!如有建议务必提,共同学习共进步
天津&winter分享技术~成就梦想Blog:
阅读(2612) | 评论(2) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
能把博主的这些文章消化一下,也能不错了,感谢感谢啊
请登录后评论。}

我要回帖

更多关于 建筑构造作业3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信