ORACLE数据库基础知识总结

Wesley13
• 阅读 485

1、RMAN全备备份文件的顺序 备份归档日志、所有的数据文件、控制文件、spfile、再次备份归档日志 2、redo日志丢失恢复 redo日志的三种状态是current、active、inactive inactive,可以重建 clear log active、current不能变成inactive,只能通过不完全恢复进行恢复,然后重建日志文件 3、口令文件丢失恢复 丢失可重建 orapwd file= password= enfries= 重建完成之后ORACLE正常使用 4、控制文件丢失恢复 a> rman 可以备份控制文件 b> 控制文件可以cp一份备用 c> 控制文件可以重建手写 5、体系结构 物理: ORACLE数据库包括instance、database两部分。 instance包括SGA(系统全局区)跟一些后台进程组成的。 SGA包括:share pool、db buffer cache、redo log buffer、流池、大型池、JAVA POOL、 share pool(共享池) : 库缓存:缓存最近执行的代码,同样的sql多次执行不需要频繁读取数据字典中得数据 数据字典缓存:存储oracle中得对象定义 PL/SQL区:缓存存储过程、函数触发器等数据库对象。 db buffer cache(数据库缓存区) redo log buffercache(日志缓存区) 常见的后台进程: DBWn:用于数据库缓存写入磁盘 LGWn:用于log日志写入磁盘 CKPT:检查点进程 SMON:实例维护进程,系统监视器 MMON:AWR主要进程 PMON:维护用户进程,进程监视器 ARCN:归档进程 database包括数据文件、控制文件、日志文件等。 逻辑: oracle数据块-区-段-表空间-数据库-方案 多个oracle数据块组成一个区,多个区组成一个段,多个段组成一个表空间,多个表空间组成一个数据库 表空间和数据文件的关系: 表空间是由一个或多个数据文件组成的,一个数据文件只属于一个表空间,表空间的大小是所有数据文件大小的总和。 数据文件和段的关系 一个段只能存在一个表空间上,但是可分布在属于这个表空间中得多个数据文件中。 一个段就是一张表 6、一条SQL语句的执行历程(UPDATE) 客户端发起一条update语句由服务进程提交到sga,这个服务进程占用的是pga的内存,首先对这条update语句进行语义解析跟语法解析 硬解析、软解析、软软解析,解析完成后判断无语法错误,然后会在共享池中查找是否有执行计划,如果有则意味着在缓存中有所需的 语句跟数据,若没有则会生成执行计划,然后将磁盘中的数据提出到缓存中,在此同时会更新undo日志文件,update语句在缓存中执行 先写入redo日志,然后修改过的数据会通过dbwr写入磁盘,最后通过服务器进程返回客户端,完成SQL执行历程。 7、redo log跟undo log 的作用 这两类日志文件作用是保持数据的完整性跟一致性 redo log 重做日志(用于前滚日志) undo log 撤销日志(用于回滚日志) 一条insert语句redo跟undo都会生成。 redo记录的是insert的状态 undo记录的是insert之前的状态 8、索引 a、索引是数据库对象之一,用于加快数据库的检索,类似于书籍的索引,在数据库中索引可以减少数据查询结果 时需要读取的数据量。 b、索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索的方式,从而提高检索效率。 c、索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表。 d、索引一旦建立,在表上进行DML操作时,oracle会自动管理索引,索引删除,不会产生影响。 e、索引对用户是透明的,无论表上是否有索引,sql语句的用法不变。 f、oracle创建主键时会自动在该列上创建索引 9、索引的基本操作 创建索引的基本语法 create index index_name on table_name; 重命名索引 alter index index_name rename to index_name2; 合并索引 alter index index_name coalesce; 创建索引 删除原索引,重建索引 alter index index_name rebuild; 删除索引 drop index index_name; 10、索引的种类 a、B树索引(默认索引):最常用的索引,是一颗二叉树;不管查询条件怎么样,查询速度基本相同;能够适应精确查询,模糊查询 和比较查询。 创建语句:create index index_name on EMP('name');适用于列基数(列不重复的个数)。 b、位图索引:建立位图索引时,oracle会扫描整张表,并为索引列的每个取值建立一个位图(要么0要么1)来标示该行是否包含该位图 的索引列的取值如果为1,表示对应的rowid所在的纪录包含该位图索引的列值,通过位图索引中的映射函数完成位到行的ROWID的转换 创建语句:create bitmap index index_name on EMP('name');适用于基数小,种类少的列(性别) c、单行索引和复合索引(基于多个列创建):如果索引建立在多个列上,只有它的第一个列贝where子句引用时,优化器才会适用该索引, 即至少要包含组合索引的第一列 d、函数索引:当要经常访问一些函数或者表达式时,可以将其存储在索引中,这样下次访问时,该值已经计算出来了可以加快查询速度 函数索引既可以适用B数索引,也可以适用位图索引;当函数结果不确定时采用B树索引,结果是固定的某个值时使用位图索引。寒暑索引中可以使用len、 trim、substr、upper(每行返回独立结果的)不能使用sum、max、min、avg等 创建语句:create index index_name on EMP(upper(name)); 此时使用函数索引 select * from student where upper(name) = 'swith'; 11、索引的一些特点 a、如果有两个或两以上的索引时其中有一个唯一性索引,而其他的是非唯一的则这种情况下会使用唯一性索引而完全忽略非唯一性索引。 b、带有索引的列不能进行函数计算以及隐式转换,否则会造成索引失效。 12、oracle启动过程 startup nomount 启动数据库实例,读取参数文件,不加在数据库; alter database mount 加载数据库,但数据库处于关闭状态,读取控制文件; alter databses open 加载并打开数据库,读取数据文件; 13、服务端连接不上服务器的原因 a、用户名密码错误 b、监听没启动 c、服务端文件配置错误 14、oracle中控制文件的作用 记录了:数据库名称和数据库唯一标识符(DBID)、创建数据库的时间戳、有关数据库文件、联机重做日志、归档日志的信息表空间信息、RMAN备份信息 指导数据库,找到数据文件,日志文件并将数据库启动到open状态。 15、oracle中参数文件的作用 参数文件在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息, 是进行数据库设计和性能调优的重要文件。 参数文件分为: pfile 可以手工修改 spfile 二进制文件,不能手工修改 16、oracle备份方式 a、RMAN备份(物理备份) 特点:数据库需要开启归档模式 ,支持增量备份,自动管理备份文件,自动化备份与恢复,不产生重做信息,支持映像复制 备份的数据文件支持压缩处理,备份文件有效性检查功能。 RMAN〉backup database;restore database;recover database b、exp/imp、expdp/impdp(导入导出逻辑备份) 四种模式:exp 全库导出full=y,用户到出owner=,表导出tables=,表空间导出tablespace= expdp 全库导出full=y,用户导出schemas=,按表导出TABLES=,按查询条件导出query='';按表空间导出TABLESPACES=,并行进程parallel=; c、冷备 直接打包复制,操作需要关库,最简单的,low

17、开启归档模式 shutdown immediate; startup nomount; alter database archivelog ; alter database open;

18、查锁表sql select l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name, s.machine, s.terminal, a.sql_text, a.action from v$sqlarea a, v$session s, v$locked_object l where l.session_id = s.sid and s.prev_sql_addr = a.address order by sid, s.serial#; 19、exp/imp、expdp/impdp区别 a、使用expdp要先在数据库中创建directory,并给相应的用户read、write权限。 b、常用导出方法有一些参数不一样例如按用户导出exp:user=,expdp:schemas=,owner=。有些参数也相同比如全库导出full=y c、expdp可以通过parallel参数增加线程来显著的加速作业。 d、expdp/impdp只能在DB服务器上运行,exp/imp可以再客户端上运行,expdp/impdp所支持的参数类型更多,功能更强大。 20、oracle的客户端 : PL\SQL、toad for oracle 21、数据库迁移的方式 a、exp/imp、expdp/impdp 数据库导出工具导出dump文件实现数据库迁移。 b、rac集群架构能够实现数据库迁移。 c、DG高可用主备库同步,能够实现数据库迁移。 d、rman备份能够迁移。 e、冷备,打包发走能够实现数据库迁移。 f、某些工具能够实现数据库迁移PL\SQL 22、

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这