Oracle基本知识复习总结

合集下载

Oracle数据库的启动和关闭方式电脑知识

Oracle数据库的启动和关闭方式电脑知识

一、几种启动方式:1、startup nomount非安装启动,这种方式启动下可执行:重建控制文件、重建数据库启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。

2、startup mount dbname安装启动,这种方式启动下可执行:数据库日志归档、数据库恢复、重新命名一些数据库文件执行“nomount”,然后打开控制文件。

3、startup open dbname先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。

4、startup,等于以下三个命令startup nomountalter database mountalter database open5、startup restrict约束方式启动这种方式能够启动数据库,但只允许具有一定特权的.用户访问非特权用户访问时,会出现以下提示:ERROR:6、startup force强制启动方式当不能关闭数据库时,可以用startup force来完成数据库的关闭先关闭数据库,再执行正常启动数据库命令7、startup pfile=参数文件名带初始化参数文件的启动方式先读取参数文件,再按参数文件中的设置启动数据库例:startup pfile=E:Oracleadminoradbpfileinit.ora8、startup EXCLUSIVE二、几种关闭方式:1、shutdown normal正常方式关闭数据库。

2、shutdown immediate立即方式关闭数据库。

在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

3、shutdown abort直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。

oracle的TM锁T锁知识完全普及

oracle的TM锁T锁知识完全普及

oracle的TM锁、TX锁知识完全普及锁概念基础数据库是一个多用户使用的共享资源;当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况;若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性;加锁是实现数据库并发控制的一个非常重要的技术;当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁;加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作;在数据库中有两种基本的锁类型:排它锁Exclusive Locks,即X锁和共享锁Share Locks,即S锁;当数据对象被加上排它锁时,其他的事务不能对它读取和修改;加了共享锁的数据对象可以被其他事务读取,但不能修改;数据库利用这两种基本的锁类型来对数据库的事务进行并发控制;Oracle数据库的锁类型根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁data locks,数据锁,用于保护数据的完整性;DDL锁dictionary locks,字典锁,用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩internal locks and latches,保护数据库的内部结构;DML锁的目的在于保证并发情况下的数据完整性,;在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁;当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁;当TM 锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位;这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率;TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示;不同的SQL操作产生不同类型的TM锁;在数据行上只有X锁排他锁;在 Oracle数据库中,当一个事务首次发起一个DML 语句时就获得一个TX锁,该锁保持到事务被提交或回滚;当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态;当第一个会话提交后,TX锁被释放,其他会话才可以加锁;当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误;这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等;悲观封锁和乐观封锁一、悲观封锁锁在用户修改之前就发挥作用:Select ..for updatenowaitSelect from tab1 for update用户发出这条命令之后,oracle将会对返回集中的数据建立行级封锁,以防止其他用户的修改;如果此时其他用户对上面返回结果集的数据进行dml或ddl操作都会返回一个错误信息或发生阻塞;1:对返回结果集进行update或delete操作会发生阻塞;2:对该表进行ddl操作将会报:Ora-00054:resource busy and acquire with nowait specified.原因分析此时Oracle已经对返回的结果集上加了排它的行级锁,所有其他对这些数据进行的修改或删除操作都必须等待这个锁的释放,产生的外在现象就是其他的操作将发生阻塞,这个这个操作commit或rollback.同样这个查询的事务将会对该表加表级锁,不允许对该表的任何ddl操作,否则将会报出ora-00054错误::resource busy and acquire with nowait specified.二、乐观封锁乐观的认为数据在select出来到update进取并提交的这段时间数据不会被更改;这里面有一种潜在的危险就是由于被选出的结果集并没有被锁定,是存在一种可能被其他用户更改的可能;因此Oracle仍然建议是用悲观封锁,因为这样会更安全;阻塞定义:当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞;被阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止;4个常见的dml语句会产生阻塞INSERTUPDATEDELETESELECT…FOR U PDATEINSERTInsert发生阻塞的唯一情况就是用户拥有一个建有主键约束的表;当2个的会话同时试图向表中插入相同的数据时,其中的一个会话将被阻塞,直到另外一个会话提交或会滚;一个会话提交时,另一个会话将收到主键重复的错误;回滚时,被阻塞的会话将继续执行;UPDATE 和DELETE当执行Update和delete操作的数据行已经被另外的会话锁定时,将会发生阻塞,直到另一个会话提交或会滚;Select …for update当一个用户发出select..for update的错作准备对返回的结果集进行修改时,如果结果集已经被另一个会话锁定,就是发生阻塞;需要等另一个会话结束之后才可继续执行;可以通过发出select… for update nowait的语句来避免发生阻塞,如果资源已经被另一个会话锁定,则会返回以下错误:Ora-00054:resource busy and acquire with nowait specified.死锁-deadlock定义:当两个用户希望持有对方的资源时就会发生死锁.即两个用户互相等待对方释放资源时,oracle认定为产生了死锁,在这种情况下,将以牺牲一个用户作为代价,另一个用户继续执行,牺牲的用户的事务将回滚.例子:1:用户1对A表进行Update,没有提交;2:用户2对B表进行Update,没有提交;此时双反不存在资源共享的问题;3:如果用户2此时对A表作update,则会发生阻塞,需要等到用户一的事物结束;4:如果此时用户1又对B表作update,则产生死锁;此时Oracle会选择其中一个用户进行会滚,使另一个用户继续执行操作;起因:Oracle的死锁问题实际上很少见,如果发生,基本上都是不正确的程序设计造成的,经过调整后,基本上都会避免死锁的发生;DML锁分类表1.关于V$lock表和相关视图的说明Lock mode in which the session holds the lock:0 - none1 - null NULL2 - row-S SS3 - row-X SX4 - share S5 - S/Row-X SSX6 - exclusive X--大于0时表示当前会话以某种模式占有该锁,等于0时表示当前会话正在等待该锁资源,即表示该会话被阻塞;--往往在发生TX锁时,伴随着TM锁,比如一个sid=9会话拥有一个TM锁,一般会拥有一个或几个TX锁,但他们的id1和id2是不同的,请注意Lock mode in which the process requests the lock:0 - none1 - null NULL2 - row-S SS3 - row-X SX4 - share S5 - S/Row-X SSX6 - exclusive X--大于0时,表示当前会话被阻塞,其它会话占有改锁的模式2.其它相关视图说明select from v$lock;select from v$lock where block=1;2.查询被锁的对象select from v$locked_object;3.查询阻塞查被阻塞的会话select from v$lock where lmode=0 and type in 'TM','TX';查阻塞别的会话锁select from v$lock where lmode>0 and type in 'TM','TX';4.查询数据库正在等待锁的进程select from v$session where lockwait is not null;5.查询会话之间锁等待的关系select holdsid, waitsid,,,, from v$lock a,v$lock bwhere = and = and =1and =0;6.查询锁等待事件select from v$session_wait where event='enqueue';。

oracle中转义字符串的方法

oracle中转义字符串的方法

oracle中转义字符串的方法Oracle中转义字符串的方法本文将详细介绍Oracle中转义字符串的基本知识和方法,希望能够帮助大家更好地掌握Oracle的开发技能。

一、基本概念在Oracle中,字符串是由一系列字符组成的序列。

在字符串中,有些字符可能会引起一些问题,比如说单引号、双引号、反斜杠等字符,这些字符在不同的场合下都有一些特殊的意义,如果不进行转义,在使用它们时就会出错。

需要对字符串中的这些特殊字符进行转义,使它们在使用时不产生错误。

二、转义字符串的方法在Oracle中,字符串的转义方式主要有两种:一种是使用单引号包含字符串,通过在单引号前加上另一个单引号来转义字符串中的单引号;另一种是使用Oracle关键字Q包含字符串,在字符串前加上特定的前缀,以指定字符串的结尾标识符。

下面将详细介绍这两种方式的使用方法。

1. 使用单引号转义字符串在Oracle中,使用单引号来包含字符串,如果字符串中包含有单引号,就需要在单引号前再添加一个单引号来进行转义。

例如:```sqlSELECT 'Tom''s book' FROM DUAL;```两个单引号表示一个单引号的转义。

执行以上语句后,输出结果为:```Tom's book```如果字符串中包含有双引号或反斜杠等特殊字符,也可以使用单引号进行转义。

例如:```sqlSELECT 'My "first" book' FROM DUAL;```输出结果为:```My "first" book``````sqlSELECT 'D:\Oracle\bin' FROM DUAL;```输出结果为:```D:\Oracle\bin```需要注意的是,当字符串中包含有回车符、换行符等特殊字符时,使用单引号来转义会变得非常麻烦。

这时候,建议使用Oracle关键字Q来包含字符串。

oracle explain 语句

oracle explain 语句

oracle explain 语句Oracle Explain语句的介绍与使用方法Oracle Explain语句是Oracle数据库中的一种SQL 调优工具,可以通过展示SQL语句的执行计划,帮助用户识别和优化慢查询。

本文将介绍Oracle Explain语句的基本知识和使用方法。

1. 什么是Oracle Explain语句?Oracle Explain语句是一种用户用于查看SQL语句的执行计划的工具,由Oracle提供。

执行计划是数据库在执行具体的SQL语句时所选择的路线、使用的索引、加锁方式以及连接方式等的描述,用户可以通过查看执行计划了解该SQL语句的执行情况,优化SQL语句,提高查询效率。

执行计划由Oracle数值优化器(CBO)生成,它会在许多可能的执行计划中选择最优方案。

用户可以使用Oracle Explain语句来检查优化器选项是如何影响SQL语句的执行计划的。

2. Oracle Explain语句的用处和优点Oracle Explain语句可以帮助用户了解SQL语句何时创建索引、使用锁和连接表等操作,并可以评估这些操作的效率和成本。

因此,Oracle Explain语句的使用可以提高数据库的性能,并使用户更容易优化已有的SQL语句。

具体的用处和优点如下:1)允许用户检查哪个操作使用了索引或全表扫描,从而确定CPU开销和I/O成本;2)允许用户评估SQL语句的效率和成本,以识别需要优化的查询;3)允许用户评估哪些表需要重建索引;4)提高了查询效率,使数据库更加高效。

3. 使用Oracle Explain语句的基本步骤使用Oracle Explain语句的基本步骤如下:1)打开SQL*Plus或可视化工具,连接到Oracle数据库;2)输入待分析的SQL语句,用“explain plan for”语句包装,注意前后要有分号(;),如下所示:explain plan for select * from employee;3)执行上述语句,将执行计划保存到表PLAN_TABLE 中:execute plan_table;4)撤消正在获取的执行计划,以避免干扰建议的计划:unwatch;5)检查表PLAN_TABLE以获取执行计划,如下所示:select * from table(dbms_xplan.display);执行上述语句后,Oracle将返回一组执行计划信息,其中包括查询操作的执行计划和执行计划的成本估计等信息。

oracle数据库面试题

oracle数据库面试题

oracle数据库面试题一、数据库基础知识1. 什么是数据库?数据库是指存储数据的集合,能够进行高效管理和访问的系统。

2. 请简述关系型数据库和非关系型数据库的区别。

关系型数据库是基于关系模型的数据库,数据以表格的形式组织,具有固定的表结构和事先定义的关系。

而非关系型数据库则没有固定的表结构和关系,通常使用键值对、文档、列族等方式存储数据。

3. 请介绍一下Oracle数据库。

Oracle数据库是一种关系型数据库管理系统,由Oracle公司开发和维护。

它具有稳定性高、安全性好、扩展性强等特点,广泛应用于各个行业。

二、SQL语言1. 请解释一下SQL语句中的DML和DDL分别是什么含义。

DML(Data Manipulation Language)是用于操作数据库中数据的语言,如SELECT、INSERT、UPDATE、DELETE等。

DDL(Data Definition Language)则是用于定义数据库对象的语言,如CREATE、ALTER、DROP等。

2. 如何查询一张表中的所有记录?可以使用SELECT语句来查询一张表中的所有记录,例如:SELECT * FROM 表名;3. 如何查询一张表中的指定列?可以使用SELECT语句并指定需要查询的列名,例如:SELECT列1, 列2 FROM 表名;4. 如何对一张表进行排序?可以使用SELECT语句并使用ORDER BY子句来对表进行排序,例如:SELECT * FROM 表名 ORDER BY 列名 ASC;三、索引和优化1. 请解释一下什么是数据库索引?数据库索引是一种数据结构,用于加快对数据库中数据的检索速度。

它可以使数据库快速定位到存储在特定列中的数据。

2. Oracle数据库中有哪些类型的索引?Oracle数据库中常见的索引类型包括B树索引、位图索引和哈希索引。

3. 怎样优化SQL查询?优化SQL查询可以通过以下方法:- 创建合适的索引,提高查询效率;- 编写优化的WHERE子句,避免全表扫描;- 使用合适的连接方式,减少数据的读取量;- 避免使用SELECT *,仅查询所需的列;- 创建合适的表结构,以提高SQL执行效率。

oracle 083题库解析

oracle 083题库解析

oracle 083题库解析摘要:1.题目背景介绍2.Oracle 083题库解析概述3.试题内容分析4.解题思路与技巧5.备考建议正文:【题目背景介绍】Oracle认证是全球公认的IT专业认证,为广大IT从业者提供了专业的技能评估和认可。

其中,Oracle 083题库是Oracle Database 12c OCP (Oracle认证专家)考试的一部分。

通过该考试,考生可以证明自己具备Oracle Database 12c的熟练技能和专业知识。

本文将对Oracle 083题库进行详细解析,以帮助考生更好地备考和应对考试。

【Oracle 083题库解析】Oracle 083题库共有100道题目,分为两部分:基础知识(50题)和实验操作(50题)。

试题内容涵盖了Oracle Database 12c的各个方面,包括表空间管理、数据泵、自动化管理、备份与恢复、性能优化等。

【试题内容分析】1.基础知识部分:这部分试题主要考察考生对Oracle Database 12c基本概念和操作的掌握。

例如,表空间的管理、数据文件的创建、撤销与恢复、用户与权限管理等。

2.实验操作部分:这部分试题要求考生通过实际操作来展示自己对Oracle Database 12c的理解。

例如,创建表空间、创建用户、设置权限、创建数据库等。

【解题思路与技巧】1.熟悉考试大纲:认真研究Oracle 083题库的考试大纲,了解试题范围和知识点,有针对性地进行复习。

2.深入理解概念:对于基础知识题,要深入理解相关概念,掌握操作要领。

如表空间管理,要了解各种表空间类型的特点和适用场景。

3.动手实践:对于实验操作题,要加强动手实践,熟练掌握各种操作命令和语法。

如创建表空间,要掌握SPACE、ASSIGN、QUOTA等关键概念。

4.总结经验:在做题过程中,要总结经验,形成自己的解题技巧。

如通过排除法快速判断正确答案。

【备考建议】1.制定学习计划:合理安排学习时间,按照考试大纲逐步学习相关知识点。

学习总结_ORA


2.文件配置:C:\oracle\ora92\network\admin\
tnsnames.ora
) ) 通过监听程序监听客户端进入,创建连接,通过端口监听 监听程序 oracle 监听程序的作用1、监听程序就是在服务端等客户端连接的程序2、 简单地说,要和数据库服务器通讯,必须要和服务器连接, 建立连接时, 服务器要知道有客服端连接进来了,而监听器就是干这个活的,对于专用连 接来说, 它负责建立 一个与客户端对应的服务器进程来为其服务。监听器 是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务 器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据 库服务器端,进行监听器的设置也是在数据库服务器端完成的。就是用于监 控是否有连接请求访问数据库,并创建数据库连接。
也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
用户管理
oracle用户管理: 创建用户
概述:在oracle中要创建用户一般是具有dba(数据库管理员)的权限。
create user QL identified by QL default tablespace QLBMOBILE temporary tablespace temp; grant dba to QL; grant resource to QL; grant connect to QL; grant unlimited tablespace to QL; 给用户修改密码 alter user 用户名 identified by 新密码 删除用户 一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。 比如 drop user ql 【cascade】; 在删除用户时,注意: 如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

oracle append insert 知识点

/*+append*/ 知识点:
/*+append*/
1. append 属于direct insert。

归档模式下append+table nologging会大量减少日志,
非归档模式append会大量减少日志,append方式插入只会产生很少的undo
2.综合一下吧:一是减少对空间的搜索;二是有可能减少redolog的产生。

所以append方式会快很多,一般用于大数据量的处理
3. 建议不要经常使用append,这样表空间会一直在高水位上,除非你这个表只插不删
4. oracle append有什么作用?
请教一下,oracle中append是做什么用的。

insert /*+append*/ into table1 select * from table2
在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。

使用append会增加数据插入的速度。

/*+APPEND*/的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间append 属于direct insert,归档模式下append+table nologging会大量减少日志,非归档模式append会大量减少日志,append方式插入只会产生很少的undo
不去寻找freelist 中的free block , 直接在table HWM 上面加入数据。

结论:非归档模式下,非归档模式append会大量减少日志,append方式插入只会产生很少的undo
结论:归档模式下append+table nologging会大量减少日志
这个eample实例示例:。

OracleTNS协议分析——1、系列开篇:方法论及基础知识

OracleTNS协议分析——1、系列开篇:⽅法论及基础知识前⾔Oracle 客户端与服务端采⽤TNS作为其数据交换协议。

TNS全称Transparent Network Substrate,是与Oracle数据库服务器通讯的专有协议,该协议为Oracle内部协议,不向外界公开,在此之前,已经有⼀些反向⼯程的实践对各个版本的TNS进⾏解析,⽐如wireshark就有专门的TNS分析⼯具,中⽂的协议解析可参见本系列基础介绍中关于TNS包基础格式,及连接包等均沿⽤wireshark提供的格式。

本系列重点分析TNS 314下的客户端与服务端之间的通讯,通过抓包分析,查看在不同客户端,不同服务端情况下传输⽅式的不同,尝试还原其协议细节,实现对协议中⼀些关键内容的解析,如登录⽤户名,协议版本,oracle版本,sql命令,同时给出⽰例LUA代码。

为了分析不同客户端架构,本系列使⽤了两类客户端32位与64位客户端进⾏测试,同时重点使⽤了多个⼚商的不同客户端(Navicat、PLSQL、SQLPlus)同时也兼顾分析了OJDBC Thin Client的情况。

服务端采⽤11g和12c两个版本。

本⽂主要分析连接建⽴,⾝份验证、命令传输和返回、以及错误信息返回的过程。

⽅法及⼯具主要采⽤wireshark对客户端与Oracle间的通讯进⾏抓包分析。

客户端:服务端Navicat Premium 15 64bitOracle 11g 64bit LinuxNavicat Premius 12 32bit Oracle 12c 64bit windowsPLSQL 11.2 64bit SQLPlus 11.2 64bit OJDBC8(Thin Client) 分析过程中关于包类型定义等参考wireshark的tns 解析器代码。

代码⽰例说明代码⽰例⽤lua写成,可以在openresty15 64bit window或linux版本下运⾏其中从socket流中解码⽤到了string.unpack 和pack ⽅法是纯lua开源实现,是对c语⾔ lua 扩展lpack 的纯lua模拟系列⽬录协议介绍Transparent Network Substrate顾名思义是对传输层协议⽆关,根据Oracle的介绍:TNS底层⽀持TCP,SSL TP,SDP,named pipeline 等协议。

ORACLE 关于监听listener所有知识点涵盖文档

三个文件、位置$ORACLE_HOME/network/adminsqlnet.ora tnsnames.ora listener.ora监听类型:静态注册、动态注册监听器里的服务的状态ready:此状态的服务是由PMON进程注册的,由于PMON进程所在的实例是打开的,这些服务名所对应的实例已经准备(ready)好接受用户的连接请求了。

unknown:此状态的服务时静态注册的,监听器并不确定该服务名所对应的实例名是否已经打开,所以状态时未知的。

异机监听:利用remote_listener参数,使数据库服务与监听服务分离。

条件:远程服务器(即监听所在服务器)安装数据库软件,监听进程正常状态。

服务器说明:远程服务器为:192.168.10.12数据库服务器:192.168.10.15步骤:(1)配置数据库服务器中tnsnames.ora文件、remote_listener 参数tnsnames.oraremote12 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))alter system set remote_listener='remote12' scope=spfile/memory/both;alter system register;(2)查看远程服务器中对应端口监听状态,并配置tnsnames.ora文件lsnrctl status <listener_name>tnsnames.oraremote15 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))(3)测试是否正确监听sqlplus xxx/xxx@remote15文件作用:sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,例如我们客户端输入sqlplus sys/oracle@orcl假如我的sqlnet.ora是下面这个样子SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名如果我是这个样子NAMES.DIRECTORY_PATH= (TNSNAMES)那么客户端就只会从tnsnames.ora查找orcl的记录括号中还有其他选项,如LDAP等并不常用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oralce基本操作。

1.创建用户,修改密码:Create user 用户名identified by 密码;Alter user 用户名identified by 密码;若删除用户为drop user 用户名(cascade)2.修改归档模式和非归档模式:查看归档模式:archive log list首先关闭数据库:shutdown immediate然后在mount 数据库startup mount改变归档模式:alter database archivelog最后启动数据文件:alter database open如果设置路径的话为:alter system set log_archive_dest_1="location=/oradata5/arch/ytsj";此在改变归档模式之前的一步做。

120816-0001383.查看oracle版本:select banner from sys.v_$version;4.查看oracle闪回区信息:select * from v$recovery_file_dest;5.整理表空间1.自由范围的碎片整理表空间的pctincrease值为非0可以将表空间的缺省存储参数pctincrease改为非0。

一般将其设为1,如:alter tablespace tempdefault storage(pctincrease 1);这样SMON便会将自由范围自动合并。

也可以手工合并自由范围:alter tablespace temp coalesce;2.段的碎片整理段由范围组成。

在有些情况下,有必要对段的碎片进行整理。

要查看段的有关信息,可查看数据字典dba_segments,范围的信息可查看数据字典dba_extents。

如果段的碎片过多,将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。

这个过程可以用Import/Export(输入/输出)工具来完成。

Export()命令有一个(压缩)标志,这个标志在读表时会引发Export确定该表所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数--等于全部所分配空间。

若这个表关闭,则使用Import()工具重新生成。

这样,它的数据会放入一个新的、较大的初始段中。

例如:exp user/password file=exp.dmp compress=Y grants=Y indexes=Ytables=(table1,table2);若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:imp user/password file=exp.dmp commit=Y buffer=64000 full=Y这种方法可用于整个数据库。

6.查询表空间信息:Select tablespace_name from dba_tablespaces;查询系统中存在的表空间。

Select tablespace_name,sum(bytes) from dba_data_files group by tablespace_name;7.sqlplus的用法7.1 spool的用法Spool命令是将屏幕的显示输入到文本文件内,以便查看,有点象屏幕转存。

Spool c:\1.txtSelect * from emp;Spool offSpool c:/1.txt appendSelect * from emp;Spool off 在1.txt后面加入内容。

7.2.运行脚本@脚本@%oracle_home%\rdbms\admin\utlxplan.sql该句话的含义为运行指定的脚本。

@@为运行相对路径下的脚本,一般是在大脚本调用小脚本的时候使用。

7.3 save,get,editsave将当前sqlplus缓冲区中的内容保存到指定文件中。

get将文件中的sql语句调入到sqlplus缓冲区。

edit编辑当前SQLPLUS缓冲区内的SQL语句如ed--是注释当前行/* */是注释多行7.4 登录oracleSysdba登录:conn /as sysdbaSystem用户登录:conn system /密码as (sysdba、sysoper、sysasm)7.5 null值Null值是未赋值的值,不入索引。

是空值。

当查询null时要注意,空值不是空值。

他不是一个值。

Select enmae from emp where ename=null;Select ename from emp where ename=’null’;都是错误的Select ename from emp where ename is null;7.6 去掉重复行Distinct关键字Select distinct deptno from emp;在oracle10g以前办法,该语句需要排序才能去掉重复的行,而在10g数据库不需要排序。

而是使用HASH算法来去掉重复行,极大的提高了sql语句的效率。

但是没有排序,输出也是没有排序的。

7.7 穷举含上下界Select deptno ,ename,sal from emp where deptno in(10,20);穷举如果超过1000,建议修改sql;7.8 通配符- 通配一个,仅匹配一个字符,% 通配没有或多个字符。

当遇到当你想查询_,%特殊字符时,请用escape.Select ename from emp where ename like ‘%s_%’escape ‘s ’;我们并不想查找S后必须有一个字符以上的员工,而是要剔除S,S出现的目的就是转义,将_转义了,这里的_不是通配符,而是实际意义的_。

Select ename from emp where ename like ‘%/_%’escape ‘/’;一般我们使用/来转义,以免产生歧异。

7.9 and or not 等运算And 两个条件的并集Or 两个条件的交集Not 补集7.10 order by默认是升序:asc默认是降序:desc隐式排序,虽然结果中不显示,但是按照其另一个成分显示出来。

Select ename from emp order by sal;7.11 操作字符串常用函数Lower 字符显示为小写upper 字符显示为大写initcap 字符显示为首字母大写。

Concat:将两个字符连接在一起。

7.12 oracle操作数字函数1.Round2.trunc3.ceilROUND是四舍五入,TRUNC是截断,全部舍弃。

Select round(45.211,2) from dual;7.13 改变在sqlplus中列的宽度Col value for a10.7.14 设置其日期Alter session set nls_date_format=’yyyy/mm/dd:hh24:mi:ss’;7.15 数据类型的隐式转换,显示转换7.16 表的连接查询8.查看实例名Conn /as sysdbashow parameter service_name;或者是:select instance_name from v$instance;9. 如何在oracle中导入数据Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。

exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。

利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用……Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。

exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp 文件从本地导入到远处的数据库服务器中。

利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。

SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。

下面介绍的是导入导出的实例。

数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmptables=(inner_notify,notify_staff_relat)4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。

也可以在上面命令后面加上 compress=y 来实现。

数据的导入:1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

imp system/manager@TEST file=d:\daochu.dmpimp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。

2 将d:\daochu.dmp中的表table1 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。

不少情况要先是将表彻底删除,然后导入。

注意:操作者要有足够的权限,权限不够它会提示。

相关文档
最新文档