关于oracle的笔记

Posted 牧野流冰87

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于oracle的笔记相关的知识,希望对你有一定的参考价值。

1、查看一个表暂用的表空间大小: SELECT bytes/1024/1024||‘MB‘,a.*FROM user_segments a WHERE a.segment_name =‘TL_SP_NONREAL_LIST_201505‘; //103查询错单表空间 SELECT segment_name,sum(bytes)/1024/1024 FROM User_Segments a WHERE a.tablespace_name=‘ZHJS_LIST_ERROR‘ AND a.segment_type=‘TABLE PARTITION‘ AND a.BYTES<>‘8388608‘ AND a.segment_name NOT LIKE ‘%200906‘ GROUP BY a.segment_name

2、查看一个表空间所占的实际大小: SELECT sum(bytes)/1024/1024||‘MB‘ FROM user_segments a WHERE a.tablespace_name =‘SETT_ANALYSE_LIST_201505‘;

3、查看一个表空间对应的数据文件: SELECT * FROM dba_data_files a WHERE a.tablespace_name =‘SETT_ANALYSE_LIST_201505‘;

4、查询表空间的总大小以及使用大小 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;

5、创建一个大数据量的表,占用表空间大小几个G,delete这张表的数据,此时只需查询发现很慢,查询的表数据为空, 其实就是其表空间没有释放的缘故。 执行alter table jk_test move 或 alter table jk_test move storage(initial 64k) 或alter table jk_test deallocate unused KEEP 0或 alter table jk_test shrink space. 这样操作后,会失去索引,这是可以将失效的索引重建 select index_name,table_name,tablespace_name,index_type,status  from dba_indexes  where table_owner=‘SETT_ANALYSE‘ ; 根据status的值,重建无效的就好了alter owner.index_name rebuild; ,再次查询就很小了 注意:drop...purge 和 truncate表时,其所占用的空间会得到释放,原因应该是不进入回收站,(单独drop会进入回收站的) 进回收站的数据可以通过flashback找回:具体方法如下: select original_name,dropscn from recyclebin where lower(original_name)=‘js_stat_sp_report_sec_1009‘; flashback table jianbiao_beifen to before drop;

6、不管是delete还是truncate相应的数据文件大小都不会改变,如果想改变数据文件占用的空间大小可执行: alter database datafile ‘filename‘ resize 8g,重定义文件大小 关于purge的补充: purge tablespace tablespace_name--清空表空间的recycle bin purge tablespace tablespace_name user username--指定表空间的recycle bin的指定对象 drop table table_name purge--永久删除,不能用flashback恢复

7、移动表空间 分区表:altrer table TL_Y_TOLL_XJJS_LIST_201603 move partition D_21 tablespace zhjs_dsyy; 非分区表:alter table TL_Y_TOLL_XJJS_LIST_201603 move tablespace zhjs_dsyy ;

8、查询哪张表被建索引:SELECT * FROM user_indexes; 判断哪张表的那个字段建了索引:select * from user_ind_columns;

9、如果是在已有的表空间中添加数据文件,则使用: alter tablespace 表空间名 add datafile ‘数据文件名称路径‘ size 50M; 如果是新建一个表空间则是: create tablespace 表空间名 datafile ‘数据文件名称路径‘ size 50M;

出库: P_EXPDB_COLLECT_LIST

move_list_data_to_szx

gdb跟踪命令: gdb 进程名 进程号 b *.cpp:行数 :打断点在哪一行 p 变量 :打印出变量的值 n :下一步 s :进方法 exit 退出

ppstdcdr--标准格式 wjjsct_ngn.h继承cdrbase.sh  #include "cdrbase.h"

truncate table 后,有可能表空间仍没有释放,可以使用如下语句: alter table 表名称 deallocate   UNUSED KEEP 0; 注意如果不加KEEP 0的话,表空间是不会释放的。  例如: alter table F_MINUTE_TD_NET_FHO_B7 deallocate   UNUSED KEEP 0; 或者: TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能释放表空间。  例如: truncate table  test1 DROP STORAGE; 三、查询分区表存在哪些分区:  查询分区表的情况,可以在USER_TAB_PARTITIONS中查询。例如: select ‘alter table ‘||t.table_name ||‘ truncate   partition ‘ || t.partition_name from USER_TAB_PARTITIONS t where t.table_name like ‘F_%‘ 查询各个分区暂用表空间

SELECT  TABLESPACE_NAME,partition_name,TO_CHAR(SUM(BYTES)/(1024*1024),‘999G999D999‘)   FROM   DBA_EXTENTS   WHERE    SEGMENT_NAME=‘TL_ERR_D_SMS‘   AND   SEGMENT_TYPE   LIKE   ‘TABLE%‘   GROUP   BY   TABLESPACE_NAME,partition_name;

 

清除指定某个分区表的分区数据: alter   table  表名称   truncate   partition   分区名称; 四、清除分区表占用的空间: alter table 表名称  DROP    partition 分区名称; 例如: alter table F_HOUR_TD_NET_MPVOICE  DROP    partition P_09121913         ;

 

    --查看单个表占用物理空间的大小 ---查询分区表 SELECT a.* FROM (   SELECT t.owner,t.tablespace_name,t.segment_name,sum(t.BYTES)/1024/1024/1024 total    FROM sys.sys_dba_segs t   WHERE t.partition_name IS NOT NULL   AND   t.segment_name NOT LIKE ‘%$%‘ /*  AND   lower(t.owner) = ‘zhjs_app‘ */   AND   UPPER(t.tablespace_name) = UPPER(‘ZHJS_ZDJS_0510‘)   GROUP by t.owner,t.tablespace_name,t.segment_name ) a /*WHERE a.total >= 2.5 */ ORDER BY a.total DESC ; --查询非分区表 SELECT a.* FROM (   SELECT t.owner,t.tablespace_name,t.segment_name,sum(t.BYTES)/1024/1024/1024 total    FROM sys.sys_dba_segs t   WHERE t.partition_name IS NULL   AND   t.segment_name NOT LIKE ‘%$%‘ /*  AND   lower(t.owner) = ‘zhjs_app‘ */   AND   UPPER(t.tablespace_name) = UPPER(‘ZHJS_ZDJS_0510‘)   GROUP by t.owner,t.tablespace_name,t.segment_name ) a /*WHERE a.total >= 2.5 */ ORDER BY a.total DESC ;

TRUNCATE TABLE  ter_510.BSS_ZSZH_COUPON_BACKUP; TRUNCATE TABLE   ter_510.TL_ERROR_LIST_ELSE; TRUNCATE TABLE  ter_510.TL_SETT_LIST_HIS; TRUNCATE TABLE   ter_510.BSS_TD_STORE_INOUT_CHANGE_BKP; TRUNCATE TABLE ter_510.BSS_CHANNEL_TEMP;

以上是关于关于oracle的笔记的主要内容,如果未能解决你的问题,请参考以下文章

关于Oracle job的笔记

关于Oracle job的笔记

关于Oracle job的笔记

关于ORACLE事务处理的一些笔记

关于安装Oracle 11.2.0.1 RAC的笔记

笔记:oracle关于使用代理主键还是逻辑主键的好?