oracle积累

 1、查询当前用户表 占用的空间大小

   select t.segment_name,sum(t.bytes)/1024/1024
 from user_segments t
 where segment_name like 'TB%'
 group by t.segment_name
 order by sum(t.bytes)/1024/1024  desc


2、删除表分区
 
alter table  TB_CALL_CUST_DAY  drop partition PART_20110528;(普通分区名称)

alter table TB_ORDER_USER_DAY  drop partition PART_20110609_SUBPART_210001;(子分区名称)

 

3、查询表的子分区(当前数据用户)
select *
     from user_segments t
    where segment_name like 'TB_ORDER_USER_DAY%'
 
 手工增加子分区(分区必须大于当前分区日期)

alter table   tb_order_info_user_day  add  partition  part_20111002 values less than ('20111103');


 4、创建表的时候指定表分区
 create table  test
    tablespace tbs_test
as
  select  * from    user

 

 

5、alter table 增加多个字段
 alter table  tb_cust_view_day                                                                                     
 add  (total_pith_fee NUMBER(12,2),total_call_dur NUMBER(12),total_send_sms_cnt NUMBER(12),total_gprs_m NUMBER(17,2)) ;
                                                                                                                      
删除字段 alter table tb_cust_view_day drop column  total_pith_fee   

 

6、单表赋权,如果想把用户A下的table1的update权限赋予用户B
在用户A连接状态下执行:
grant update  on   table1 to   B;

grant select on  table1 to  B ; --查询权限

 

grant   select  on   tb_user_info_day  to   user   

 

7、统计一个月的上班时间点(包括周末)

select
substr(to_char(t.oper_time,'yyyymmddhh24miss'),-6)
from vgopqry.masa_operation t

where   substr(to_char(t.oper_time,'yyyymmddhh24miss'),-6) between '083000'  And '180000'
 and to_char(t.oper_time,'yyyymmdd')  like '201110%'
--and to_char(t.oper_time,'yyyymmdd')  ='20111030'
Order By t.f_time

 

8、截取用户邮箱前缀

 

select  substr(t.email,0,instr(t.email,'@')-1) as  befor_email  from user_test t

 

你可能感兴趣的:(oracle)