oracle积累

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 01:06   112   0

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP