精华内容
下载资源
问答
  • oracle 自定义函数:CREATE OR REPLACE FUNCTION ConvertNumeric(rawData VARCHAR2)--用于返回转换科学计算法dhxRETURN VARCHAR2ISfinalData VARCHAR2();EIndex INT;BEGINEIndex := ;EIndex := instr(upper(rawData),...

    oracle 自定义函数:

    CREATE OR REPLACE FUNCTION ConvertNumeric(rawData VARCHAR2)

    --用于返回转换科学计算法dhx

    RETURN VARCHAR2

    IS

    finalData VARCHAR2();

    EIndex INT;

    BEGIN

    EIndex := ;

    EIndex := instr(upper(rawData),'E');

    if EIndex> then

    if (substr(rawData,EIndex+,)='+' and length(substr(rawData,,EIndex-))> and length(substr(rawData,EIndex+))>) then

    finalData:=to_char(to_number(substr(rawData,,EIndex-))*power(,to_number(substr(rawData,EIndex+))));

    elsif (substr(rawData,EIndex+,)='-' and length(substr(rawData,,EIndex-))> and length(substr(rawData,EIndex+))> )then

    finalData:=to_char(to_number(substr(rawData,,EIndex-))/power(,to_number(substr(rawData,EIndex+))),'fm99999999999999999999990.9999999999999999');

    else

    finalData:=rawData;

    end if;

    else

    finalData:=rawData;

    end if;

    RETURN finalData;

    EXCEPTION

    WHEN OTHERS THEN

    finalData:=rawData;

    RETURN finalData;

    END ConvertNumeric;

    用于返回转换科学计算法

    在javaScript中把非数值类型的数据自动转换为数值类型的两种方式

    一.使用Number()函数. 二.使用parseInt()/parseFloat()函数. 详情: 一.使用Number()函数将非数值类型的数据自动的转化为数组类型 Number()函数可以将任何 ...

    Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列

    Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列   前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE  T1.CODE  IN ( SEL ...

    SSAS 非重复计数

    在SSAS设计时,对商品编号列非重复计数:

    怎样将Oracle数据库设置为归档模式及非归档模式

    怎样将Oracle数据库设置为归档模式及非归档模式 1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo lo ...

    SSAS GUID 添加 行计数,非重复计数 等 遇到的莫名其妙的问题

    在基于某个GUID 进行非重复性计数时 需要对GUID 转换类型,如:CAST(ColumnName as varchar(36)) 可参考:http://stackoverflow.com/ques ...

    fsockopen 异步非阻塞式请求数据

    index.php <?php ini_set ( "max_execution_time", "0" ); // 要传递的数据 $form_data = ...

    ORACLE体系结构一 &lpar;逻辑结构&rpar;-表空间、段、区和数据块

    一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ...

    非正确使用浮点数据由项目产生BUG讨论的问题

    乘分配 当小学学会了乘法分配.详细乘法分配:并与多个两个数相乘的,他们能够把这个数字乘以,然后加入.由于一个恒定.乘法分配律也能够使用表达式的定义"(a+b)×c = a×c+b×c&quo ...

    Oracle笔记(1) 简单查询、限定查询、数据的排序

    Oracle笔记(四) 简单查询.限定查询.数据的排序   一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...

    随机推荐

    非正规方法处理AngulurJS模块管理问题

    1.起因 自己一直做winform,有幸从某个大神手里接了一个node.js,express,angulurJS等集众多开源框架的一个项目,赶鸭子上架,于是一边学习,一边用自己以往的思中去整理,重构代 ...

    MongoDB数据导入导出成csv或者json

    1. 从远程数据表拉取数据到本地json文件 mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据 ...

    Java for Mac 问题

    卸载jdk 1.7/1.8: sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.pluginsudo rm -fr /Library/P ...

    2016MBA排名

    2016全球商学院100强 2016上半年度最受欢迎的十大MBA排名 网上评选出上年度最受欢迎的十大MBA排名,有你想要报考的院校吗?快来一睹这些MBA院校的风采,选择好适合自己的院校项目. 第1名 ...

    Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

    DirectFB 之 实例图像不断右移

    /********************************************** * Author: younger.liucn@gmail.com * File name: imgro ...

    html 的 crossorigin 属性

    添加这个属性, 并且服务器允许跨域后,会得到精确的报错信息. 添加这个属性,但服务器不允许跨域,就会被同源策略阻止加载资源. 不添加这个属性,只能知道报错,不知道具体信息. https://www.j ...

    J - Abbott&&num;39&semi;s Revenge 搜索 寒假训练

    题目 题目大意:这个题目就是大小不超过9*9的迷宫,给你起点终点和起点的方向,让你进行移动移动特别之处是不一定上下左右都可以,只有根据方向确定可以走的方向.思路:需要写一个读入函数,这个需要读入起点, ...

    Echarts x轴文本内容太长的几种解决方案

    Echarts 标签中文本内容太长的时候怎么办 ? - 1对文本进行倾斜 在xAxis.axisLabe中修改rotate的值 xAxis: { data: ["衬衫11111", ...

    菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP

    .上节说的是单步跟踪法,这节讲的是利用堆栈平衡(ESP定律)来进行脱壳!想必大家都听说过ESP定律这个大名吧!ESP定律运用的就是堆栈平衡原理!一般的加壳软件在执行时,首先要初始化,保存环境(保存各个 ...

    展开全文
  •  现在,机构表数据中机构名称有重复数据,如何筛选出来? 2.分析  第一步:统计是否存在重复数据。  方式一:  方式二:  说明表中确实存在重复数据  第二步:统计重复次数及机构名称。  需要通过...
     

    1.情景展示

      现在,机构表数据中机构名称有重复数据,如何筛选出来? 

    2.分析

      第一步:统计是否存在重复数据。

      方式一:

      方式二:

      说明表中确实存在重复数据

      第二步:统计重复次数及机构名称。

      需要通过group by和having实现。

      第三步:查询出重复数据。

    SELECT *
      FROM ORG_ACCESS
     WHERE ORGNAME IN (SELECT ORGNAME
                         FROM ORG_ACCESS T
                        GROUP BY ORGNAME
                       HAVING COUNT(1) > 1)
    

     

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

     

     

    转载于:https://www.cnblogs.com/Marydon20170307/p/11011044.html

    展开全文
  • Oracle 用group by 去重计数还是用distinct 计数 Oracle 对去重计数的性能比较 --Oracle 聚合优化 --新建测试表 带索引 drop table student; CREATE TABLE student ( t_id number, t_name VARCHAR2(32), t_class...

    Oracle 用group by 去重计数还是用distinct 计数

    Oracle 对去重计数的性能比较

    --Oracle  聚合优化
    --新建测试表 带索引
    drop table student;
    CREATE  TABLE student
          (
            t_id number,
            t_name VARCHAR2(32),
            t_class VARCHAR2(32),
            t_num number,
            CONSTRAINT PK_student PRIMARY KEY (t_id) ENABLE
          ); 
    
    --创建索引
    create index t_student_name on student(t_name);
    

    初始化表结构后,插入测试数据(内容不重要)

    --插入测试数据
    INSERT INTO student(T_ID,t_Name,T_CLASS,T_NUM) 
    SELECT ROWNUM,
           decode(mod(ROWNUM,5),1,'小明',2,'小黄',3,'小绿',4,'小黑','其它') as t_Name,
           decode(mod(ROWNUM,5),1,'English',2,'PE',3,'CHINA',4,'MATH','other') as T_CLASS,
           rannum2 as T_NUM
    FROM (
    SELECT rownum ,round(dbms_random.value(1,5)) as rannum1,
           round(dbms_random.value(100,500)) as rannum2
            from dual connect by rownum<=100
    )
    
    COMMIT;
    

    在这里插入图片描述

    这边统计计数要测试两个方法,一个是通过嵌套group by,一个是count(distinct col)

    主要通过执行计划来观察他们的效率

    第一种:

    explain plan for  SELECT COUNT(DISTINCT t_Name) FROM student ; --生成执行计划
    
    commit;
    SELECT plan_table_output  from table(dbms_xplan.display('plan_table',null,'all')); --查看执行计划
    

    在这里插入图片描述

    可以看到count(distinct col 这个操作是走索引的)

    第二种:

    explain plan for SELECT count(1) FROM 
    (
    SELECT t_name FROM student group by t_name
    );
    
    commit;
    
    SELECT plan_table_output  from table(dbms_xplan.display('plan_table',null,'all'));
    

    在这里插入图片描述

    可以看到,按照第二种group by 的去重方法的话是不走索引的

    在这里插入图片描述

    可以看到,按照第二种group by 的去重方法的话是不走索引的,是通过全表扫描取值的

    因为走索引的效率>全表扫描,所以尽量避免全表扫描可以有效提高查询效率

    展开全文
  • 原标题:【干货】oracle常用命令大全一、Oracle数据库实例、用户、目录及session会话查看:1、ORACLE SID查看设置查看SID、用户名$ env|grep SID 、select * from v$instance、select instance_name,host_name from ...

    原标题:【干货】oracle常用命令大全

    一、Oracle数据库实例、用户、目录及session会话查看:

    1、ORACLE SID查看设置

    查看SID、用户名

    $ env|grep SID 、select * from v$instance、select instance_name,host_name from v$instance;

    查看数据库所有用户及用户状态:

    SQL> select usernames,account_status from dba_users;

    设置SID

    $ export ORACLE_SID=hisvhfs

    查看数据库DBID:

    SQL>select * from v$DBID

    2、查询、设置Oracle数据库实例最大进程数及最大会话数

    查看系统最大session:

    SQL>show parameter session

    查看当前连接数:

    SQL>select count(*) from v$bgprocess

    查看系统最大进程数:

    SQL>show parameter process

    查看当前连接到数据库的用户:

    SQL>select count(*) from v$session

    查看当前数据库建立的会话情况:

    SQL> select sid,serial#,username,program,machine,status from v$session;

    查询应用的连接数SQL:

    SQL> SELECT b.MACHINE, b.PROGRAM, COUNT (*)

    FROM v$process a, v$session b

    WHERE a.ADDR = b.PADDR AND b.USERNAME IS NOT NULL

    GROUP BY b.MACHINE, b.PROGRAM

    ORDER BY COUNT (*) DESC;

    查看当前数据库的并发连接数

    SQL> select count(*) from v$session where status='ACTIVE';

    查看当前有哪些用户正在使用数据:

    select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

    from v$session a,v$sqlarea b

    where a.sql_address = b.address

    order by cpu_time/executions desc;

    查看数据库指定用户的连接情况

    SQL> select sid,serial# from v$session where username='XX'; XX为用户

    例如:

    SQL> select sid,serial# from v$session where username='BSPDEV';

    SID SERIAL#

    ---------- ----------

    204 4609

    399 5841

    590 6041

    清除用户下连接进程

    SQL> alter system kill session '204,4609';

    SQL> alter system kill session '399,5841';

    SQL> alter system kill session '590,6041';

    修改processes和sessions值

    SQL> alter system set processes=300 scope=spfile;

    系统已更改。

    SQL> alter system set sessions=335 scope=spfile;

    系统已更改。

    修改processes和sessions值必须重启oracle服务器才能生效

    ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

    sessions=(1.1*process+5)

    3、查看数据库目录

    SQL> select * from all_directories;

    4、查看数据库现有模式、是否归档

    SQl>select name,log_mode from v$database;

    也可以用下面的语句

    archive log list;(该方法需要as sysdba)

    查看数据库的创建日期和归档方式

    SQL> Select Created, Log_Mode, Log_Mode From V$Database;

    5、配置用户密码过期时间

    alter profile "default" limit password_life_time unlimited; 配置用户密码永不过期

    alter profile "default" limit password_life_time 100; 配置用户密码100天过期

    6、创建、配置新用户及查看用户属性

    解锁新用户:

    SQL> alter user scott account unlock;

    SQL> alter user scott identified by tiger;

    删除oracle用户:

    SQL>drop user username cascade; (删除与用户相关的所有对象)

    这样该用户包括该用户下的表,试图,同义词,过程,索引,及相关的一切就删除了。

    创建用户并赋权限以及设置默认表空间。

    以sysdba用户登陆进行以下设置:

    -- Create the user

    create user VHFSM

    identified by vhnj1fsm

    default tablespace MGRVHFSTBSDEF 此处是设置默认表空间。

    temporary tablespace TEMP

    profile DEFAULT

    quota unlimited on mgrvhfstbs2010此处是设置可操作的其他表空间

    quota unlimited on mgrvhfstbsdef;

    -- Grant/Revoke role privileges

    grant connect to VHFSM;

    grant dba to VHFSM;

    -- Grant/Revoke system privileges

    grant unlimited tablespace to VHFSM;

    查看用户及角色权限

    --1.查看所有用户:

    select * from dba_users;

    select * from all_users;

    select * from user_users;

    --2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):

    select * from dba_sys_privs;

    select * from user_sys_privs;

    --3.查看角色(只能查看登陆用户拥有的角色)所包含的权限

    sql>select * from role_sys_privs;

    --4.查看用户对象权限:

    select * from dba_tab_privs;

    select * from all_tab_privs;

    select * from user_tab_privs;

    --5.查看所有角色:

    select * from dba_roles;

    --6.查看用户或角色所拥有的角色:

    select * from dba_role_privs;

    select * from user_role_privs;

    --7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)

    select * from V$PWFILE_USERS

    --注意:

    --1、以下语句可以查看Oracle提供的系统权限

    select name from sys.system_privilege_map

    --2、查看一个用户的所有系统权限(包含角色的系统权限)

    SELECT privilege

    FROM dba_sys_privs

    WHERE grantee = 'DATAUSER'

    UNION

    SELECT privilege

    FROM dba_sys_privs

    WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee = 'DATAUSER');

    二、创建、管理Oracle表空间

    1、先查询空闲空间

    select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space;

    2、增加Oracle表空间

    先查询数据文件名称、大小和路径的信息,语句如下:

    select tablespace_name,file_id,bytes,file_name from dba_data_files;

    3、修改文件大小语句如下

    alter database datafile

    '需要增加的数据文件路径,即上面查询出来的路径

    'resize 800M;

    4、创建Oracle表空间

    create tablespace test

    datafile '/home/app/oracle/oradata/oracle8i/test01.dbf' size 8M

    autoextend on

    next 5M

    maxsize 10M;

    create tablespace sales

    datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize unlimited

    maxsize unlimited 是大小不受限制

    create tablespace sales

    datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize 1000M

    extent management local uniform;

    unform表示区的大小相同,默认为1M

    create tablespace sales

    datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize 1000M

    extent management local uniform size 500K;

    unform size 500K表示区的大小相同,为500K

    create tablespace sales

    datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize 1000M

    extent management local autoallocate;

    autoallocate表示区的大小由随表的大小自动动态改变,大表使用大区小表使用小区

    create tablespace sales

    datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize 1000M

    temporary;

    temporary创建字典管理临时表空间 ,要创建本地管理临时表空间要加temporary tablespace关键字

    create temporary tablespace sales

    tempfile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M

    autoextend on

    next 50M

    maxsize 1000M

    创建本地管理临时表空间,如果是临时表空间,所有语句中的datafile都换为tempfile ,所有语句中的datafile都换为tempfile8i

    为表空间增加数据文件:

    alter tablespace sales add

    datafile '/home/app/oracle/oradata/oracle8i/sales02.dbf' size 800M

    autoextend on next 50M

    maxsize 1000M;

    5、查看表空间是否自动扩展

    SQL> select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc;

    更改自动扩展属性:

    alter database datafile

    '/home/app/oracle/oradata/oracle8i/sales01.dbf',

    '/home/app/oracle/oradata/oracle8i/sales02.dbf'

    '/home/app/oracle/oradata/oracle8i/sales01.dbf

    autoextend off;

    6、表空间的查看与修改

    查看用户默认表空间

    SQL> select username,default_tablespace from dba_users;查看所有用户的默认表空间

    SQL> select username,default_tablespace from user_users;查看某个用户的默认表空间,前提需要connect该用户。

    SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username = 'hr'; 查看用户对应的默认表空间

    修改用户默认表空间

    SQL> alter user zhanghr default tablespace test;

    设置数据库的默认临时表空间:

    SQL>Alter database default temporary tablespace temp_tbs_name;

    查看用户和默认表空间的关系:

    SQL>select username,default_tablespace from dba_users;

    查看临时表空间:

    SQL> select file_name,file_id,blocks,user_blocks from dba_temp_files;

    SQL> select tablespace_name,current_users,total_blocks,used_blocks,free_blocks from v$sort_segment;

    查看undo表空间

    SQL> show parameter undo;

    NAME TYPE VALUE

    ------------------------------------ ----------- ------------------------------

    undo_management string AUTO

    undo_retention integer 900

    undo_tablespace string UNDOTBS1

    查看undo表空间大小

    SQL> select sum(bytes)/1024/1024 "current undo size(M)" from dba_data_files where tablespace_name='UNDOTBS1';

    通过增加数据文件来改变undo表空间大小

    SQL> alter tablespace undotbs1

    add datafile '/oracle/oradata/orc6/undo02.dbf' size 10M;

    通过resize更改数据文件大小

    SQL> alter database datafile '/oracle/oradata/orc6/undo02.dbf' resize 100M;

    查看某个表空间的数据文件

    SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",maxbytes/1024/1024 "maxbytes MB" from dba_data_files where tablespace_name='ORA1TBS';指定表空间名要大写

    查看所有表空间大小

    SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files

    group by tablespace_name;

    查看已使用的表空间大小

    SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space

    group by tablespace_name;

    oracle查看表空间大小及使用率:

    方法一:

    SELECT UPPER(F.TABLESPACE_NAME),D.TOT_GROOTTE_MB,D.TOT_GROOTTE_MB,F.TOTAL_BYTES,TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2),'990.99'), F.TOTAL_BYTES, F.MAX_BYTES FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC;

    方法二:

    SELECT D.TABLESPACE_NAME,

    SPACE || 'M' "SUM_SPACE(M)",

    BLOCKS "SUM_BLOCKS",

    SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)",

    ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%'

    "USED_RATE(%)",

    FREE_SPACE || 'M' "FREE_SPACE(M)"

    FROM ( SELECT TABLESPACE_NAME,

    ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,

    SUM (BLOCKS) BLOCKS

    FROM DBA_DATA_FILES

    GROUP BY TABLESPACE_NAME) D,

    ( SELECT TABLESPACE_NAME,

    ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE

    FROM DBA_FREE_SPACE

    GROUP BY TABLESPACE_NAME) F

    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

    UNION ALL

    SELECT D.TABLESPACE_NAME,

    SPACE || 'M' "SUM_SPACE(M)",

    BLOCKS SUM_BLOCKS,

    USED_SPACE || 'M' "USED_SPACE(M)",

    ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)",

    NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)"

    FROM ( SELECT TABLESPACE_NAME,

    ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,

    SUM (BLOCKS) BLOCKS

    FROM DBA_TEMP_FILES

    GROUP BY TABLESPACE_NAME) D,

    ( SELECT TABLESPACE_NAME,

    ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,

    ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE

    FROM V$TEMP_SPACE_HEADER

    GROUP BY TABLESPACE_NAME) F

    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

    ORDER BY 1;

    方法三:

    SELECT *

    FROM (SELECT a.tablespace_name,

    to_char(a.bytes / 1024 / 1024, '99,999.999') total_bytes,

    to_char(b.bytes / 1024 / 1024, '99,999.999') free_bytes,

    to_char(a.bytes / 1024 / 1024 - b.bytes / 1024 / 1024,

    '99,999.999') use_bytes,

    to_char((1 - b.bytes / a.bytes) * 100, '99.99') || '%' USE

    FROM (SELECT tablespace_name, SUM(bytes) bytes

    FROM dba_data_files

    GROUP BY tablespace_name) a,

    (SELECT tablespace_name, SUM(bytes) bytes

    FROM dba_free_space

    GROUP BY tablespace_name) b

    WHERE a.tablespace_name = b.tablespace_name

    UNION ALL

    SELECT c.tablespace_name,

    to_char(c.bytes / 1024 / 1024, '99,999.999') total_bytes,

    to_char((c.bytes - d.bytes_used) / 1024 / 1024, '99,999.999') free_bytes,

    to_char(d.bytes_used / 1024 / 1024, '99,999.999') use_bytes,

    to_char(d.bytes_used * 100 / c.bytes, '99.99') || '%' USE

    FROM (SELECT tablespace_name, SUM(bytes) bytes

    FROM dba_temp_files

    GROUP BY tablespace_name) c,

    (SELECT tablespace_name, SUM(bytes_cached) bytes_used

    FROM v$temp_extent_pool

    GROUP BY tablespace_name) d

    WHERE c.tablespace_name = d.tablespace_name)

    ORDER BY tablespace_name;

    查看表空间使用大小情况一

    SQL> select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",

    b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"

    from

    (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,

    (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name ) b

    where a.tablespace_name=b.tablespace_name

    order by ((a.bytes-b.bytes)/a.bytes) desc

    ;

    TABLESPACE_NAME Sum MB used MB free MB percent_used

    ------------------------------ ---------- ---------- ---------- ------------

    SYSAUX 490 461.0625 28.9375 94.09

    UNDOTBS1 75 66.8125 8.1875 89.08

    USERS 5 1.3125 3.6875 26.25

    ORA1TBS 400 2 398 .5

    ORA2TBS 400 2 398 .5

    查看表空间使用大小情况二

    SQL> select a.tablespace_name,total,free,total-free used from

    2 ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files

    group by tablespace_name) a,

    ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space

    group by tablespace_name) b

    where a.tablespace_name=b.tablespace_name; 3 4 5 6

    TABLESPACE_NAME TOTAL FREE USED

    ------------------------------ ---------- ---------- ----------

    USERS 5 .9375 4.0625

    TESTTB 500 499 1

    SYSAUX 550 30 520

    EXAMPLE 100 20.75 79.25

    UNDOTBS1 110 96.625 13.375

    在SQL命令行情况下将结果输出到指定文件中。

    SQL> spool out.txt

    SQL> select * from v$database;

    SQL> spool off

    三、查看、管理ORACLE数据文件

    查看数据文件:

    SQL> select name from v$datafile;

    更改数据文件大小:

    SQL> alter database datafile '/oradata2/hisvhfs/undotbs01.dbf' resize 30G;

    查看用户所有表空间及对应的数据文件和数据文件大小

    SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

    查看数据文件状态及大小

    SQL> select name,BYTES,STATUS ,FILE# from v$datafile;

    查看所有数据文件

    SQL> select name from v$datafile;

    查看所有表空间对应的数据文件

    SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

    四、查看、管理ORACLE表

    查看所有segment的大小。

    Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

    查询表的大小和表空间的大小

    有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:

    当前实例以scott用户登录,并创建dept表的副本dept_copy2为例。

    SQL> select segment_name, bytes

    2 from user_segments

    3 where segment_type = 'TABLE';

    SEGMENT_NAME BYTES

    -------------------------------------------------------------------------------- ----------

    DEPT_COPY2 65536

    DEPT_COPY 65536

    BIN$7Sa/taXJEKHgQ2kFqMCxMQ==$0 65536

    ITEMS 65536

    SALGRADE 65536

    EMP 65536

    DEPT 65536

    7 rows selected

    或者

    SQL> Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name;

    SEGMENT_NAME SUM(BYTES)/1024/1024

    -------------------------------------------------------------------------------- --------------------

    DEPT 0.0625

    PK_DEPT 0.0625

    EMP 0.0625

    DEPT_COPY 0.0625

    DEPT_COPY2 0.0625

    ITEMS 0.0625

    PK_EMP 0.0625

    SALGRADE 0.0625

    8 rows selected

    另一种表实际使用的空间。这样查询:

    SQL> select table_name from user_tables;

    TABLE_NAME

    ------------------------------

    DEPT

    EMP

    BONUS

    SALGRADEanalyze table emp compute statistics;

    ITEMS

    DEPT_COPY

    DEPT_COPY2

    SQL> analyze table DEPT_COPY2 compute statistics;

    查看某个表属于哪个表空间:

    SQL> select tablespace_name from all_tables where table_name='SYS_EXPORT_FULL_01';

    创建表时指定表空间:

    SQL>create table a (name varchar(10)) tablespace test;

    查看数据库表结构:

    SQL> desc dept_copy2;

    Name Type Nullable Default Comments

    ------ ------------ -------- ------- --------

    DEPTNO NUMBER(2) Y

    DNAME VARCHAR2(14) Y

    LOC VARCHAR2(13) Y

    修改表的列名:

    SQL> alter table users rename column ID to PID;

    修改表的列的字符大小

    SQL> alter table student modify class varchar2(10);

    创建主键:

    SQL> alter table users add constraint pk_users primary key(name);

    修改表的列数据类型:

    SQL> select * from users;

    NAME AGE PID

    ---------- ---------- ----------

    赵霞 3.2012E+18

    李莉 3.2012E+18

    SQL> alter table users add(newColumn varchar2(20));

    SQL> update users set newColumn = PID;

    SQL> commit;

    SQL> alter table users drop column PID cascade constraints;

    SQL> alter table users rename column newColumn to PID;

    SQL> commit;

    SQL> desc users;

    名称 是否为空? 类型

    ----------------------------------------- -------- ----------------------------

    NAME NOT NULL VARCHAR2(10)

    AGE NUMBER

    PID VARCHAR2(20)

    SQL> select * from users;

    NAME AGE PID

    ---------- ---------- --------------------

    赵霞 3201231988001010101

    李莉 3201231988001010102

    创建序列:

    SQL> create sequence seq_PID

    start with 3201231988001010101

    maxvalue 3201231999999999999

    minvalue 3201231988001010101

    nocycle

    cache 100;

    创建触发器:

    SQL> create or replace trigger trigger_users

    before insert on users

    for each row

    begin

    select seq_PID.nextval into :new.PID from dual;

    end;

    /

    查看用户序列

    SQL> select sequence_name from USER_SEQUENCES;

    SEQUENCE_NAME

    ------------------------------

    SEQ_ID

    查看用户触发器

    SQL> select * from user_triggers where table_name = upper('job');

    通过group by 语句使用rollup运算符汇总ID列

    SQL> select ID,avg(age),sum(age),max(age),count(*)

    2 from job group by rollup(ID);

    ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)

    ---------- ---------- ---------- ---------- ----------

    1583 25 25 25 1

    1584 24 24 24 1

    1585 25 25 25 1

    1586 25 25 25 1

    1587 23 23 23 1

    1683 22 22 22 1

    1684 24 24 24 1

    1685 25 25 25 1

    1686 24 24 24 1

    1687 22 22 22 1

    1688 28 28 28 1

    ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)

    ---------- ---------- ---------- ---------- ----------

    1689 26 26 26 1

    1690 26 26 26 1

    1783 35 35 35 1

    1784 1

    1883 24 24 24 1

    1884 1

    25.2 378 35 17

    having子句与group by 子句一般一起使用,可以在汇总相关数据后进一步筛选汇总的数据。

    SQL> select ID,avg(age),sum(age),max(age),count(*)

    2 from job group by id having avg(age)>25;

    ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)

    ---------- ---------- ---------- ---------- ----------

    1690 26 26 26 1

    1783 35 35 35 1

    1689 26 26 26 1

    1688 28 28 28 1

    多表连接查询

    SQL> select job.name,job.id,job.job,job.age,users.name,users.age from job,users

    2 where job.name=users.name;

    NAME ID JOB AGE NAME AGE

    -------- ---------- ---------- ---------- ---------- ----------

    陈灵灵 1783 KTV服务员 35 陈灵灵 38

    李莉 1587 IT程序员 23 李莉

    赵霞 1683 空姐 22 赵霞

    desc 在oracle数据库里有两种用法,一是查询表的结构 格式:desc table_name

    二是在用排序时(order by)是降序的关键字 格式 :order by column_name desc;

    查看表的segment大小,即表实际占用的物理大小,无论是否使用。

    SQL> select segment_name,partition_name,bytes,blocks,extents from user_segments where segment_name='JOBS'; (segment名,即表明)

    SQL> select segment_name,partition_name,count(extent_id),sum(bytes),sum(blocks) from user_extents where segment_name='JOBS' group by segment_name,partition_name;

    五、查看、管理ORACLE常用的参数、配置等

    查看控制文件:

    SQL> select name from v$controlfile;

    查看重做日志文件,简称日志文件:

    SQL> select * from v$logfile;

    查看表的索引:

    SQL>select index_name,index_type,table_name from user_indexes where table_name='表名';

    修改oracle时间格式:

    SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

    指定开启某个监听:

    SQL>lsnrctl start orc5_lisenter(此处是当初建监听时创建的监听名)

    数据库SCN及时间查询。

    SQL> select sysdate from dual; 查看数据库时间

    SYSDATE

    -----------------

    20131216 23:52:55

    SQL> select dbms_flashback.get_system_change_number from dual; 查看当前数据库的SCN号

    GET_SYSTEM_CHANGE_NUMBER

    ------------------------

    1583042

    SQL> select to_char(scn_to_timestamp(1583042),'yyyy-mm-dd hh24:mi:ss') from dual; 根据数据库的SCN号查找对应的数据库时间

    TO_CHAR(SCN_TO_TIME

    -------------------

    2013-12-16 23:45:38

    SQL> select timestamp_to_scn(to_date('2013-12-16 15:30:19','yyyy-mm-dd hh24:mi:ss')) from dual; 根据数据库的时间查找对应的数据库SCN号

    TIMESTAMP_TO_SCN(TO_DATE('2013-12-1615:30:19','YYYY-MM-DDHH24:MI:SS'))

    ----------------------------------------------------------------------

    1519388

    SQL> select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<10;条件查找,查找rownum小于10的SCN以对应的时间。

    TIME_DP SCN

    ----------------- ----------

    20131216 15:53:02 1584574

    20131216 15:46:45 1583098

    20131216 15:45:20 1583022

    20131216 15:39:08 1582399

    20131216 15:37:01 1581998

    20131216 15:31:08 1579915

    20131216 14:46:02 1577210

    20131216 14:40:16 1576196

    20131216 14:35:12 1575597

    9 rows selected.

    数据库游标设置

    SQL> show parameter open_cursors; 查看游标参数

    SQL> select count(*) from v$open_cursor; 查看打开的游标

    SQL> select name,value from v$sysstat where name ='opened cursors current';查看当前打开的游标

    SQL> alter system set open_cursors=3000 scope=both; 修改默认游标数

    六、查看、配置ORACLE重做日志

    创建日志文件组:

    SQL> alter database add logfile group 4

    (

    '/oracle/oradata/orc6/redo04.log'

    )

    size 10M;

    查看日志文件组

    SQL> select group#,status,member from v$logfile;

    为日志文件组增加日志文件:

    SQL> alter database add logfile member '/oracle/oradata/orc6/redo05.log' to group 3;

    查看日志文件大小

    SQL> select GROUP#,BYTES,BLOCKSIZE,MEMBERS from v$log;

    七、desc的常用查询

    SQL> desc dba_temp_files; 查询临时表空间

    SQL> desc v$database; 查看数据库

    SQL> desc dba_data_files; 查看数据文件

    SQL> desc user_segments; 查看oracle segment(段)

    SQL> desc dba_segments; 查看ORACLE segment

    SQL> desc dba_tables; 查看表

    SQL> desc dba_objects 查看对象

    SQL> desc dba_users; 查看用户

    SQL> desc dba_tablespaces; 查看表空间

    SQL> desc user_segments; 查看数据段

    SQL> desc dba_jobs; 查看job

    SQL> desc dba_role_privs; 查看角色权限

    SQL> desc dba_constraints 查看约束

    SQL> desc dba_cons_columns 查看列约束

    SQL> show parameter log_archive_dest; 查看archive log所在位置

    SQL> archive log list; 查看归档目录以及log sequence

    SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; 查看flash_recovery_area 使用情况。

    SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 计算flash_recovery_area已经占用的空间。

    SQL> show parameter recover; 查找recovery目录

    SQL> desc v$process 通过v$process视图,我们获的是当前系统中所有进程信息,包括“后台进程”,也包括“服务器进程”。

    SQL> select addr, program from v$process;

    SQL> desc v$bgprocess 通过v$bgprocess视图,我们获得当前系统中启动的Oracle“后台进程”信息

    SQL> select paddr, name from v$bgprocess where paddr<>'00';

    通过v$bgprocess.paddr与v$process.addr关联起来的,关联后查询结果显而易见只会有Oracle“后台进程”的信息

    SQL> select a.paddr, a.name, a.deion from v$bgprocess a, v$process b where a.paddr=b.addr;

    八、查看ASM磁盘组信息

    SQL> desc v$asm_disk;

    SQL> desc v$asm_diskgroup;

    九、常用SQL命令行设置

    1、set

    set wrap on/off 查询返回的纪录每行超过默认宽度时,可选择换行(on )或不换行(off),默认为换行;

    set linesize N 设置查询返回的纪录每行的宽度,超过这个宽度则截掉,不过这个宽度则补空格。

    来源:CSDN

    4607faa53fe903da3c93732b2f112024.png

    0a760d6e90ce034340903dfa5df551f1.png

    责任编辑:

    展开全文
  • 一、背景  一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录。 二、解决 ...Oracle删除重复数据的SQL(删除所有): 删除重复数据的基本结构写法: 想要删除这些
  • ORACLE没有自增长序列,因此可以用以下方法来实现 1.建立表格: CREATE TABLE tb_user ( userid NUMBER(8) NOT NULL, Others VARCHAR2(20) ); 2.建立从1开始的序列: ...
  • Oracle连续相同数据的统计

    千次阅读 2018-12-23 19:31:44
    今天复习一下之前用到的连续相同数据的统计。 首先,创建一个简单的测试表,这里过程就略过了,直接上表(真的是以简单为主,哈哈…) 第一种写法row_number(): SELECT val,COUNT(*) FROM (SELECT ID,val, row_number() ...
  • [img]...Oracle相同数据连续统计 CREATE TABLE TEST( ID NUMBER(20), val NUMBER(20) ) INSERT INTO TEST VALUES...
  • Oracle查查询询表表里里的的重重复复数数据据方方法法 这篇文章主要介绍了Oracle查询表里的重复数据方法,需要的朋友可以参考下 一一背背景景 一张person表有id name的两个字段id是唯一的不允许重复id相同则认为是...
  • 当SSRQ1-6中任意两个字段有相同值时,取SSJB1-6中数值最大的,在对应的级别下计数+1; 当SSRQ1-6中存在不同值时,每个对应的SJJB都需要取,在对应的级别下计数+1 例如: ![图片说明]...
  • Oracle去重后再进行count()计数

    万次阅读 2018-05-21 22:03:06
    一般地:有意义的计数首先都需要去除重复,然后再进行count()计数! 这个时候就去重的逻辑就显得尤为重要! 一、首先说说我个人对以下两个函数的理解 sum()是基于分组,也就是说有sum()的SQL语句中必须要有group ...
  • oracle 数据类型

    2016-04-24 21:39:40
    oracle数据类型如下图所示: 主要类型有 1)字符类型: char 定长类型,不足添加空格来补全剩余空间。 varchar2 不定长类型。 nchar、nvarchar2 与 char、varchar2的区别: (1)前面一种分配长度的单位一定...
  • oracle数据类型

    2015-07-15 23:26:01
    oracle数据类型      有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍! ...
  • ORACLE数据库数据类型

    千次阅读 2019-11-28 17:51:42
    Oracle数据类型 Oracle数据类型分为标量(Scalar)类型、复合(Composite)类型、引用(Reference)类型和LOB(Large Object)类型4种类型。 因为标量类型没有内部组件,所以,它又分为四类:数值、字符、...
  • Oracle数据类型

    2013-12-24 00:36:51
    oracle数据类型      有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍! ...
  • Oracle数字格式化

    2020-05-26 22:04:49
    格式模型是描述存储在字符串中的日期时间或数字数据格式的字符文本。格式模型不会更改数据库中值的内部表示形式。将字符串转换为日期或数字时,格式模型将确定Oracle数据库如何解释字符串。
  • 一般来说,Oracle中的带有坐标的表(空间数据),可以直接把表的权限赋予SDE用户即可。如果不想直接给SDE赋予权限,可以直接把表导出为CSV格式,再通过ArcMap转换成ArcGIS的GDB或者SED. 1.CSV文件没有最大行数限制...
  • oracle数据类型详解

    2015-05-29 20:28:15
    oracle数据类型    转载自Defonds:http://blog.csdn.net/defonds/article/details/4302695   有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据...
  • Oracle数据类型详细解释

    千次阅读 2013-11-19 10:25:16
    Oracle数据类型详细解释 Oracle data type introduction

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,538
精华内容 8,215
关键字:

oracle相同数据计数