ORACLE学习笔记--性能优化2
5.怎么样根据OS进程快速获得DB进程信息与正在执行的语句
有些时候,我们在OS上操作,象TOP之后我们得到的OS进程,怎么快速根据OS信息获得DB信息呢?
我们可以编写如下脚本:
$more whoit.sh
#!/bin/sh
sqlplus /nolog 100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
这是对命令与工具包的一些总结
<1>、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
<2>、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
<3>、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。
6.怎么样快速重整索引
通过rebuild语句,可以快速重整或移动索引到别的表空间
rebuild有重建整个索引数的功能,可以在不删除原始索引的情况下改变索引的存储参数
语法为
alter index index_name rebuild tablespace ts_name
storage(......);
如果要快速重建整个用户下的索引,可以用如下脚本,当然,需要根据你自己的情况做相应修改
SQL> set heading off
SQL> set feedback off
SQL> spool d:\index.sql
SQL> SELECT 'alter index ' || index_name || ' rebuild '
||'tablespace INDEXES storage(initial 256K next 256K pctincrease 0);'
FROM all_indexes
WHERE ( tablespace_name != 'INDEXES'
OR next_extent != ( 256 * 1024 )
)
AND owner = USER
SQL>spool off
另外一个合并索引的语句是
alter index index_name coalesce
这个语句仅仅是合并索引中同一级的leaf block,消耗不大,对于有些索引中存在大量空间浪费的情况下,有一些作用。
7.如何使用Hint提示
在select/delete/update后写/*+ hint */
如 select /*+ index(TABLE_NAME INDEX_NAME) */ col1...
注意/*和+之间不能有空格,如用hint指定使用某个索引
select /*+ index(cbotab) */ col1 from cbotab;
select /*+ index(cbotab cbotab1) */ col1 from cbotab;
select /*+ index(a cbotab1) */ col1 from cbotab a;
其中
TABLE_NAME是必须要写的,且如果在查询中使用了表的别名,在hint也要用表的别名来代替表名;
INDEX_NAME可以不必写,Oracle会根据统计值选一个索引;
如果索引名或表名写错了,那这个hint就会被忽略;
8.怎么样快速复制表或者是插入数据
快速复制表可以指定Nologging选项
如:Create table t1 nologging
as select * from t2;
快速插入数据可以指定append提示,但是需要注意noarchivelog模式下,默认用了append就是nologging模式的。 在archivelog下,需要把表设置程Nologging模式。
如insert /*+ append */ into t1
select * from t2
注意:如果在9i环境中并设置了FORCE LOGGING,则以上操作是无效的,并不会加快,当然,可以通过如下语句设置为NO FORCE LOGGING。
Alter database no force logging;
是否开启了FORCE LOGGING,可以用如下语句查看
SQL> select force_logging from v$database;
ORACLE学习笔记--性能优化2相关推荐
- ORACLE学习笔记--性能优化3
9.怎么避免使用特定索引 在很多时候,Oracle会错误的使用索引而导致效率的明显下降,我们可以使用一点点技巧而避免使用不该使用的索引,如: 表test,有字段a,b,c,d,在a,b,c上建立联合索 ...
- oracle并行收集统计信息慢,Oracle 学习之性能优化(四)收集统计信息
emp表有如下数据.SQL> select ename,deptno from emp; ENAME DEPTNO ------------------------------ ------ ...
- 【Unity】学习笔记 | 性能优化(一)—— 渲染
Unity中,每一帧的渲染CPU和GPU都做了些什么 1. CPU检查场景中每个对象,判读他们是否应该被渲染.CPU收集即将被渲染的对象信息,并把这些信息分类为渲染指令(即draw calls) 2. ...
- oracle死锁trace,Oracle 学习之性能优化(十)锁
锁(lock)是用于防止在访问相同的资源(包括用户对象.系统对象.内存.Oralce数据字典中的共享数据结构,最常见的是数据库表Table对象)时 ,事务之间的有害性 交互(存.取)的一种机制. 不同 ...
- Oracle 数据库的性能优化
oracle数据库的性能优化 对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整, ...
- oracle学习笔记 Oracle体系结构概述
oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...
- Oracle学习笔记 字符集概述
Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...
- oracle学习笔记 参数文件及数据库的启动和关闭
oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记:优化方法总结 深度学习笔记(四):循环神经 ...
最新文章
- [Bjoi2014]大融合
- golang字符串处理
- android led灯框架_LED面板灯的特点:应用领域、产品结构与产品分类
- 项目疑难杂症记录(二):焦点移动不了
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
- delphi OleVariant转换RecordSet
- 02 ZooKeeper分布式集群安装
- YYYY-mm-dd HH:MM:SS大小写解释
- python 谷歌翻译_Python:谷歌翻译20次的程序如何实现?
- 绘制函数z = x2 + y2所表示的三维网格图
- 关于深度学习的研究综述
- 关于sql连接语句中的Integrated Security=SSPI
- Eclipse官网查找历史版本Eclipse
- JAVA计算机毕业设计房屋租赁管理系统Mybatis+系统+数据库+调试部署
- C程序员必须知道的内存知识【英】
- Feign传输MultipartFile 报错 Error converting request body
- 搭建8086汇编语言学习环境——dosbox
- 嵌入式linux开发ubuntu下常用操作
- Visual Studio 2019 Extensions
- Lotus Notes登录后无法进入邮件,一直处于“正在加载,请稍候” 解决办法!!!