Oracle基本知识总结_第1页
Oracle基本知识总结_第2页
Oracle基本知识总结_第3页
Oracle基本知识总结_第4页
Oracle基本知识总结_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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 lo

2、g_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 temp default storage(pctincreas

3、e 1); 这样SMON便会将自由范围自动合并。也可以手工合并自由范围: alter tablespace temp coalesce; 2.段的碎片整理 段由范围组成。在有些情况下,有必要对段的碎片进行整理。要查看段的有关信息,可查看数据字典dba_segments,范围的信息可查看数据字典dba_extents。如果段的碎片过多, 将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。这个过程可以用Import/Export(输入/输出)工具来完成。 Export()命令有一个(压缩)标志,这个标志在读表时会引发Export确定该表

4、所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数-等于全部所分配空间。若这个表关闭, 则使用Import()工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如: exp user/password file=exp.dmp compress=Y grants=Y indexes=Y tables=(table1,table2); 若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表: imp user/password file=exp.dmp commit=Y buffer=64000 full=Y 这种方法可用于整个数据库。6.查询表空间信息:Sel

5、ect 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.运行

6、脚本脚本%oracle_home%rdbmsadminutlxplan.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 nu

7、ll值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语句

8、的效率。但是没有排序,输出也是没有排序的。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

9、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.Rou

10、nd2.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.

11、 如何在oracle中导入数据Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文 件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文 件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。执行环境:可以在SQLPLUS.E

12、XE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径,该目录下有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/managerTEST file=d:daoc

13、hu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/managerTEST file=d:daochu.dmp owner=(system,sys)3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannelTESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)4 将数据库中的表table1中的字段filed1以00打头的数据导出exp system/managerTEST file=d:

14、daochu.dmp tables=(table1) query= where filed1 like 00%上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。也可以在上面命令后面 加上 compress=y 来实现。数据的导入:1 将D:daochu.dmp 中的数据导入 TEST数据库中。imp system/managerTEST file=d:daochu.dmpimp aichannel/aichannelHUST full=y file=file= d:datanewsmgnt.dmp ignore=y上面可能有点问题,因为有的表已经存在,然后它就报错,对该表

15、就不进行导入。在后面加上 ignore=y 就可以了。2 将d:daochu.dmp中的表table1 导入imp system/managerTEST file=d:daochu.dmp tables=(table1)基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。注意:操作者要有足够的权限,权限不够它会提示。数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。附录一:给用户增加导入数据权限的操作第一,启动sql*puls第二,以system/manager登陆第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创

16、建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字第五, 运行-cmd-进入dmp文件所在的目录,imp userid=system/manager full=y file=*.dmp或者 imp userid=system/manager full=y file=filename.dmp执行示例:F:WorkOrac

17、le_Databackupimp userid=test/test full=y file=inner_notify.dmp屏幕显示Import: Release .0 - Production on 星期四 2月 16 16:50:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到: Oracle8i Enterprise Edition Release .0 - ProductionWith the Partitioning optionJServer Release 8.1

18、.7.0.0 - Production经由常规路径导出由EXPORT:V08.01.07创建的文件已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换). 正在将AICHANNEL的对象导入到 AICHANNEL. . 正在导入表 INNER_NOTIFY 4行被导入准备启用约束条件.成功终止导入,但出现警告。附录二:Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.先建立import9.par,然后,使用时命令如下:imp parfile=/filepath

19、/import9.par例 import9.par 内容如下:FROMUSER=TGPMSTOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)ROWS=YINDEXES=YGRANTS=YCONSTRAINTS=YBUFFER=409600file=/backup/ctgpc_20030623.dmplog=/backup/import_20030623.log导入数据:进到javadoc目录下 imp userid=scott/tiger full=y file=ill.dmp打印所有表名:select table_

20、name from user_tables;打印所有表关系 : select * from user_constraints打印某个表内的所有列名:select column_name,data_type from user_tab_columns where table_name = SZKB order by data_type 打印某个表的列数:select count(*) from user_tab_columns where table_name=USER_TAKE;分别打印某个数据库内所有表的列数:select table_name,count(*) from user_tab_

21、columns group by table_name;打印某个数据库内所有表名以及每个表名对应的列名:select table_name,column_name from user_tab_columns order by table_name;10.查找告警日志在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。这两份log文件的位置分别是V$DIAG_INFO中的Diag Alert 和Diag Trace 对应的目录。通过查询v$diag_info视图获得ADR相关的信息代码:sysora11gselect * from v

22、$diag_info;其中alter日志在Diag Trace /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace Diag Alert /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/alert我们一般式查看trace文件中的告警日志。2.在oracle10g中 在oracle目录下面的 admin 中的实例名下面的bdump11 更改实例登录$ bashbash-3.00$ export ORACLE_SID=ytsj12.三个比较重要的角色Connect dba resource(允许

23、在所有的表空间中建表)13配置监听 Netca 14 修改参数文件,指定内存所有session使用内存总数PGA_aggregate_target Alter system set pga_aggregate_target=value scope=spfile scope=both scope=memory;15 oracle创建用户与表空间1.创建用户的时候定义默认表空间SQLcreate user username identified by password default tablespace tablespace_name;2.修改用户默认表空间SQLalter user usern

24、ame default tablespace tablespace_name;3.拥有unlimited tablespace权限的用户可在任意表空间上操作。4.没有unlimited tablespace权限的用户要在非默认表空间上操作需要在目标表空间有一定的配额,即在目标表空间分配一定的空间给用户。SQLalter user username quota 100m on tablespace_name2;16 修改归档位置 查看归档位置show parameter db_recovery_file_destSQL alter system set log_archive_dest_1=lo

25、cation=/ scope =both;Oracle 错误1. oracle ora-0027错误:归档日志大小超过最大值。2.ora-01103错误,参数文件中的DB_NAME与控制文件中的数据库名不一致。3.数据类型不匹配. ORA-01722: invalid numberOracle功能1. 闪回区1.1 什么是闪回区:自动的基于磁盘的备份与恢复( Automatic Disk-Based Backup and Recovery )。实现该功能的基础为本文要讲述的闪回恢复区( Flash Recovery Area )。闪回恢复区是 Oracle 10g 中的新事物。简单的说,闪回恢

26、复区是一块用以存储恢复相关的文件的存储空间。1.2 重新设定返回区:有三个初始化参数来设置和管理:db_recovery_file_dest:指定闪回恢复区的位置。db_recovery_file_dest_size:指定闪回恢复区的可用空间大小。db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,一般制定为1440分钟。为24小时。SQL ALTER SYSTEM SET db_recovery_file_dest_size=2g SCOPE=BOTH; System altered. SQL SQL ALTER SYSTEM SET db_re

27、covery_file_dest=/u01/app/oracle/flash_recovery_area 2 SCOPE=BOTH; System altered. SQL然后查看修改的值是否有效SQL SHOW parameter db_recovery_file_dest NAME TYPE VALUE - db_recovery_file_dest string /u01/app/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G SQLOracle概念数据库名、实例名、数据库域名、全局数据库名、服务名

28、 ,一、数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:DB_NAME=myorcl.在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件

29、中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。数据库名的作用数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。有很多Oracle安装文件目录是与数据库名相关的,如:winnt: d:oracleproduct10.1.0oradataDB_NAME.Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/.pfile:winnt: d:oracleproduct10.1.0adminDB_NAMEpfileini.oraUnix: /home/app/oracl

30、e/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora跟踪文件目录:winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/.另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create contro

31、lfile命令创建控制文件,当然这个命令中也是指指DB_NAME。还有在备份或恢复数据库时,都需要用到数据库名。总之,数据库名很重要,要准确理解它的作用。查询当前数据名方法一:select name from v$database;方法二:show parameter db方法三:查看参数文件。修改数据库名前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:1.关闭数据库。2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。3.以NOMOUNT方式启动实例,修建控制

32、文件(有关创建控制文件的命令语法,请参考oracle文档)二、数据库实例名什么是数据库实例名?数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。这一点在第一篇中已有图例说明。查询当前数据库实例名方法一:select instance_name from v$ins

33、tance;方法二:show parameter instance方法三:在参数文件中查询。数据库实例名与ORACLE_SID虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。 ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台, ORACLE_SID还需存在于注册表中。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在w

34、innt平台,是“TNS:协议适配器错误”。数据库实例名与网络连接数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明 。三、数据库域名什么是数据库域名?在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。举例说明如:全国交通运政系统的分布式数据库,其中:福建节点: fj.jtyz福建厦门节

35、点: xm.fj.jtyz江西: jx.jtyz江西上饶:sr.jx.jtyz这就是数据库域名。数据库域名在存在于参数文件中,他的参数是db_domain.查询数据库域名方法一:select value from v$parameter where name = db_domain;方法二:show parameter domain方法三:在参数文件中查询。全局数据库名全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz四、数据库服务名(经常是orcl)什么是数据库服务名?从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERV

36、ICE_NAME。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。查询数据库服务名方法一:select value from v$parameter where name = service_name;方法二:show parameter service_name方法三:在参数文件中查询。 二表空间2.1 什么是表空间?一个数据库有一个或多个表空间构成,不同表空间用于存放不同应用的数据,表空间的大小决定了数据库的大小。一个表空间对应了一个或多个数据文件。一个数据文件只能从属于一个表空间。o 合理规划表空间,可以控制数据库在磁盘上的分配,提高数据库的I/O性能

37、。o 通过表空间配额设置,可以控制用户所占用的存储空间的大小。注意:一个数据库对象只能存储在一个表空间中,但可以存储在一个表空间的多个数据文件中。2.2 表空间分类表空间分为系统表空间和非系统表空间之分。系统表空间为:system,sysaux表空间。非系统表空间为:撤销表空间和临时表空间。2.2.1系统表空间System表空间:l 存储数据库中的数据字典l PL/SQL程序的源代码和解释代码,包括存储过程、函数、包、触发器等。l 数据库对象的定义,如表、视图、序列、同义词等。Sysaux表空间:是辅助系统表空间,主要用于存储数据库组件等信息,减小system表空间的负荷。三 物理数据库结构构

38、成数据库文件可以分为o 控制文件:包含数据库本身的数据。o 数据文件:包含数据库中的用户数据或应用程序数据o 联机重做日志文件:可以实现数据库实例恢复,但是在数据文件没有丢失的前提下。o 参数文件:定义启动实例时如何配置实例o 口令文件:允许用户远程连接到数据库并执行管理任务。o 备份文件:用于恢复数据库。o 归档日志文件:实例生成的数据更改的实时历史记录。可以恢复丢失的数据文件。预警日志文件:按照时间顺序列出的消息日志和预警日志。四 SGA结构Oracle内存结构是oracle数据库系统的重要组成部分。主要有SGA组成。SGA是一组为系统分配的内存结构,可以包含一个数据库实例的数据或控制信息

39、,当数据库实例启动时,SGA的内存被自动分配,当数据库实例关闭时,SGA内存被收回,SGA占用内存最大的一个区域,同时也是影响数据库性能的重要因素。SGA区是可读写的,所有登录到实例的用户都能读取SGA中的信息,服务进程会将修改的信息写入SGA区。SGA主要包括以下的数据结构。数据缓冲(buffer cache)重做日志缓冲(redo log buffer)共享池(chared pool)Java池(java pool)流池(streams pool)数据字典缓存(data dictionary cache)其他信息(数据库和实例的状态信息)1. SQL show sga 2. 3. Tota

40、l System Global Area 612368384 bytes 4. 5. Fixed Size 1250428 bytes 6. 7. Variable Size 192940932 bytes 8. 9. Database Buffers 411041792 bytes 10. 11. Redo Buffers 7135232 bytes SGA中的数据字典缓存和其他信息,会被实例的后台进程所访问,在实例启动后就固定在SGA中,而且不会改变,这部分又称为SGA,这部门区域的大小一般小于100k.五Library cachelibrary cache 这里简单发表下对库告诉缓存的认

41、识,大家知道共享池是有library cache和data dictionary cache和控制部分组成,首先sql执行的过程显示语法分析阶段,然后是语意分析阶段,也就是验证下对象权限等一些列的东西,再下面就是SQL进行hash运算,运算后匹配library cache里的hash桶,再匹配hash桶上面的handle,也就是句柄,如果匹配成功,那么去找子游标,如果不成功,那么就生成一个handle,这里也就是硬解析,挂载hash桶上。 这里如果是不同用户或者,期间对象权限更改,就算是SQL文本一样,也是无法共享子游标的,生成handle,其实就是要想共享池申请空闲的内存,期间获得share

42、d pool latch ,那么很容易产生冲突。handle其实就是存放的父游标,真正的执行计划是存放在子游标上的,也就是heap6上,一个父游标可能对应多个子游标,比如,不同用户下的相同SQL,就会造成1个父对多个子游标,这种父游标存在,而要重新生成子游标,就是relaod,需要耗硬件资源,数据库性能也就十分低下,所以我们要避免硬解析和reload,解析过程中很消耗资源,而且容易造成 latch的冲突,父游标里主要包含SQL文本,父游标打开时,是被锁住的,也就是不能交换出library cache ,子游标主要包含执行计划和绑定变量,这个就很重要。这里再介绍下软解析,其实只要在hash桶里可

43、以匹配对应的SQL文本,那么就是软解析,说明之前运行过该sql,其实sql执行期间只要步骤可以跳过,那么我们就可以定位为软解析。这里还有软软解析,这个是最好性能,session_cached_cursors,当会话相同的CURSOR第三次访问是,那么会话会在PGA里做个标记,就算会话结束,cursor也不会从library cache交换出去,这里不需要访问library cache,只和PGA有关联,共享的东西这里我们没去访问,也就是不争用资源,性能得到提升。六SGA与共享池的联系Oracle server主要包括两部分:例程与数据库。例程(Instance)后台进程SMON,PMONDBW

44、R,LGWRCKPTARCH内存结构数据cache统称SGA(Systme Global Area)重做日志缓冲区共享池数据库(Database)数据文件控制文件重做日志运行的基本步骤是:1. 启动例程,系统会自动分配SGA。关闭例程时系统会收回SGA。2. 共享池的尺寸由参数SHARE_POOL_SIZE初始化,但Library Cache和Dictionary Cache的尺寸是动态变化的。3. 共享池用来存放最近执行SQL语句和字典信息;这些SQL语句是存放于Library Cache中的。4. Library Cache里包含许多ContextArea(共享游标),每个CA都包含相应S

45、QL语句执行计划。开发时注意应该使用相同的SQL语句。语句文本相同(多空格也视为不同) 大小写相同 赋值变量相同共享池中的字典Cache,它里边存放着字典信息,包括表,列的定义和权限信息。七归档与非归档的区别处于归档模式下会自动对rodo log files进行备份,而处于非归档模式下会覆盖以前的rodo log filesOracle 调优1.1 oracle group by 语句的应用,可以先分组,或者是聚合后分组SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = PRESIDENT OR JOB = MANAGER 高效: SEL

46、ECT JOB , AVG(SAL) FROM EMP WHERE JOB = PRESIDENT OR JOB = MANAGER GROUP JOBHAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。Having包含聚合函数。提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多.1.2 数据库管理Oracle 连接池信息的修改最近项目中用到的Oracle数据库在服务器上是建了多个表空间供不同系统使用,两个系统同时在使用过程中,正在

47、开发的一个项目在测试运行时,时不时就出现连接池满了,连接不上的问题,为此查了下怎么修改Oracle连接池配置的修改方式,特记录下来备查。目前Oracle只支持一个连接池,pool name为“SYS_DEFAULT_CONNECTION_POOL”,管理连接池信息的也就一个包“DBMS_CONNECTION_POOL”。先看看包的相关说明:SQL desc DBMS_CONNECTION_POOLElement Type- -ALTER_PARAM PROCEDURECONFIGURE_POOL PROCEDURERESTORE_DEFAULTS PROCEDURESTART_POOL PRO

48、CEDURESTOP_POOL PROCEDURE包里面有5个存储过程。默认Oracle是包含一个缺省的连接池SYS_DEFAULT_CONNECTION_POOL,但是并没有被打开,需要显示的开启连接池,第一步当然就是开启连接池:exec DBMS_CONNECTION_POOL.START_POOL(SYS_DEFAULT_CONNECTION_POOL);这个操作只需要做一次,下次数据库重启了之后连接池会自动开启的。打开了连接池之后可以通过系统视图dba_cpool_info进行查询:SQL select connection_pool,status from dba_cpool_inf

49、o;CONNECTION_POOL STATUS- -SYS_DEFAULT_CONNECTION_POOL ACTIVE当连接池启动了之后,可以通过DBMS_CONNECTION_POOL.CONFIGURE_POOL来查看连接池的相关配置项。SQL desc DBMS_CONNECTION_POOL.CONFIGURE_POOLParameter Type Mode Default?- - - -POOL_NAME VARCHAR2 IN YMINSIZE BINARY_INTEGER IN YMAXSIZE BINARY_INTEGER IN YINCRSIZE BINARY_INTEGER IN YSESSION_CACHED_CURSORS BINARY_INTEGER IN YINACTIVITY_TIMEOUT BINARY_INTEGER IN YMAX_THINK_TIME BINARY_INTEGER IN YMAX_USE_SESSION BINARY_INTEGER IN YMAX_LIFETIME_SESSION BINARY_INTEGER IN Y参数说明:参数 说明MINSIZE 在pool中最小数量的pooled servers,缺省为4。MAXSIZE 在p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论