Oracle怎么看离散度 怎么看数据的离散程度
怎么查看数据库表空间足不足?oracle
这个方法很多吧,可以使用语句查询,也可以使用oracle数据库工具查看,还可以用EM。
10年积累的成都做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有涡阳免费网站建设让你可以放心的选择与我们合作。
我这有个自己写的sql脚本,是平时自己看公司数据库表空间状态时用的。你可以参考下:
.查看所有表空间的碎片程度(值在30以下表示碎片很多)
select tablespace_name,sum(bytes),sum(free),sum(free)*100/sum(bytes) from (select
b.file_id file_ID,
b.tablespace_name tablespace_name,
b.bytes Bytes,
(b.bytes-sum(nvl(a.bytes,0))) used,
sum(nvl(a.bytes,0)) free,
sum(nvl(a.bytes,0))/(b.bytes)*100 Percent
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id) group by tablespace_name order by sum(free)*100/sum(bytes);
查看表空间是否自动扩展
select file_name,autoextensible,increment_by from dba_data_files;
表空间自动扩展
alter database datafile 'path:\datafile name' autoextend on next 1M maxsize 100M;
表空间大小
select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
from dba_data_files
group by tablespace_name;
使用情况
select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;
oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间)
这样SELECT TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME
FROM USER_TAB_PARTITIONS
注:
USER_TAB_PARTITIONS:可查看分区表的名字、归属表空间以及表的详细分区情况。
USER_PART_TABLES:可查看用户所有的分区表,以及分区方式。
扩展资料:
分区表的作用
Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。
分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。
但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。
oracle表分区和索引分区
一 分区表技术概述
二 分区索引技术概述
⑴ 本地前缀分区索引
适用场景:
如果历史数据整理非常频繁、而且不能承受全局分区索引重建的长时间带来的索引不可用
同时、日常交易性能尚能接受、则建议设计为本地非前缀分区索引
注意:本地分区索引不能保证唯一性(除非分区键是约束的一部分)
缺点:
主要体现在数据的高可用性方面
当DROP分区后、全局分区索引则全部INVALID、除非REBULID
但数据量越大、重建索引的时间越长
一般来讲,如果需要将数据按照某个值逻辑聚集,多采用范围分区。如基于时间数据的按“年”、“月”等分区就是很典型的例子。在许多情况下,范围分区都能利用到分区消除特性( = = = between…and 等筛选条件下)。
如果在表里无法找到一个合适的属性来按这个属性完成范围分区,但你又想享受分区带来的性能与可用性的提升,则可以考虑使用散列分区。(适合使用 = IN 等筛选条件)
如果数据中有一列或有一组离散值,且按这一列进行分区很有意义,则这样的数据就很适合采用列表分区。
如果某些数据逻辑上可以进行范围分区,但是得到的范围分区还是太大,不能有效管理,则可以考虑使用组合分区(范围分区+hash 或范围分区+列表分区)。
create table products_table
(
id number(2),
name varchar2(50),
sale_date date
)
partition by range(sale_date)
interval (numtoyminterval(1,'month'))
(
partition p_month_1 values less than (to_date('2016-01-01','yyyy-mm-dd'))
)
如图,取 products_table 中的 sale_date 列作为分区键创建按月自增分区;
所有销售时间在 ‘2016-01-01’之前的记录都会被放入 p_month_1 分区;
销售时间在‘2016-01-01’之后的记录在插入时Oracle会自动创建记录所属月的分区;
比如当有销售时间分别为 2016年1月20日 与 2016年2月20日 的两条记录插入时,Oracle会分别创建一个上限值为 ‘2016-01-31’的分区和一个上限值为‘2016-02-29’的分区来存储这两条记录
oracle数据库中SID到底什么意思?怎么用?
SID的意思是oracle数据库的唯一标识符是你在建立一个数据库时系统自动赋予的一个初始ID。
SID主要用于在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE SID,且它在注册表中也是存在的。
扩展资料
如何查询当前用户的SID:
1、按【Win + R】快捷键,在弹出的运行对话框中输入【cmd】后按回车键
2、在命令提示符窗口中输入"whoami /user",按回车键
3、然后就查出我当前的用户名和对应的SID
ORACLE 查询问题~~
以下比较笨的方法,期待好一些方法:
select * from (select 姓名,成绩 from 学生 order by 成绩 desc) C where rownum=10;
对补充的说明:我在8.0.5.0.0做了测试,结果是OK的。测试假设学生是唯一的,
成绩是可能有重复的。
1.创建新测试表:
create table student(sno varchar2(10),score number)
2.新增测试记录:
insert into student (sno,score) values('1001',20);
insert into student (sno,score) values('1002',30);
insert into student (sno,score) values('1003',40);
insert into student (sno,score) values('1004',50);
insert into student (sno,score) values('1005',60);
insert into student (sno,score) values('1006',60);
insert into student (sno,score) values('1007',75);
insert into student (sno,score) values('1008',75);
insert into student (sno,score) values('1009',80);
insert into student (sno,score) values('1010',80);
insert into student (sno,score) values('1011',85);
insert into student (sno,score) values('1012',85);
insert into student (sno,score) values('1013',85);
insert into student (sno,score) values('1014',90);
insert into student (sno,score) values('1015',90);
commit
select * from student order by 1
3.运行如下查询:
select aa.sno,aa.score
from student aa,
(select a.sno
from student a,student b
where a.score=b.score
group by a.sno
having count(a.sno)=(select min(cnt) from
(
select sno,count(*) as cnt
from
(
select a.sno
from student a,student b
where a.score=b.score
)
group by sno
) where ceil(cnt)=10)
) bb
where aa.sno=bb.sno
order by aa.score desc
结果显示是OK的,但如果第10名成绩有重复的,会一起显示出来,也就结果可能显示有11行。也可强行生成前10行,那么,程序就要改一下,把values这个值改为9,然后,再取下一个值为11的一行(大致意思:where count(*)=11 and rownum=1,当然这个值11可能也不是固定的,要分析处理),然后union一下,但这种做法,运算的复杂性已经比较大了,建议用oracle临时表或是游标之类的来处理
附查询说明:
1.select a.sno
from student a,student b
where a.score=b.score
group by a.sno
having count(a.sno)=value
查询是通过对student进行对比,产生对比的记录,成绩越小就会产生越多的记录,使用having count(a.sno)=values来过滤出前10名,如果成绩不重复的话,这个values就可以直接写上10了.但实际上成绩是可能重复的,看下一步说明
2.values=(select min(cnt) from
(
select sno,count(*) as cnt
from
(
select a.sno
from student a,student b
where a.score=b.score
)
group by sno
) where ceil(cnt)=10)
在student的两表对比中,有此规律,重复行数就是排名的前几名数(这个一定要明白,可以先分析一下).所以我们两表关联后,就可以count(*)一下行数,取
ceil(cnt)=10,就可以得到values的阈值,这样就可以把这个值传给上一个查询条件(因为count(*)值是离散的,所以前10名的这个值10,可能会不存在的)
其它应该比较好理解了。
希望对你有所帮助,谢谢!
oracle 离散任务是什么意思
可变提前期与产量相关,一般在加工过程;固定提前期与产量无关,一般指工序准备阶段。
对于成品或半成品你是不是应该在工艺路线上设置标准时间为10分钟每道工序,而不是在ITEM设置可变提前期。
名称栏目:Oracle怎么看离散度 怎么看数据的离散程度
文章地址:http://pwwzsj.com/article/hphegh.html