- 浏览: 1024309 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
CREATE OR REPLACE FUNCTION MASAMKt.fun_add_table_partitionst( v_table_owner in varchar2, v_table_name in varchar2, v_partition_name in varchar2, v_subpartition_name in varchar2, v_object_type in varchar2, v_value_type in varchar2, v_values in integer, v_tablespace in varchar2 ) ----/************************************************************ ----过 程 名: fun_add_table_partitions ----过程描述: 清空表或表分区,分区不存在的增加分区(适用于所有表、分区表) ----输入参数: 1、表的拥有者:masadw、masamk、masakr等 ---- 2、表名 ---- 3、分区名:带分区值的分区全名,例如sc_user_day_20071211 ---- 4、子分区名:同3 ---- 5、对象类型:仅限于三个值:table(表)、partition(分区表)、subpartition(带子分区的分区表) ---- 6、分区值的类型:仅限于三个值:integer(整型)、char(字符型)、date(日期型) ---- 7、分区值:整型的月份或日期(即使是日期型的分区值,也输入整型参数) ---- 8、表空间名称(不可以为空) ----输出参数: 执行状态(0、执功,-1、执行失败) ----调用的过程或函数: ----被哪些过程或函数调用: ----依赖的过程或函数: ----编写人员: ----************************************************************** RETURN integer AS vv_task_name varchar2(30):='fun_add_table_partitions'; vv_task_pos varchar2(100); vv_table_owner varchar2(30):=upper(trim(v_table_owner)); vv_table_name varchar2(30):=upper(trim(v_table_name)); vv_partition_name varchar2(30):=upper(trim(v_partition_name)); vv_subpartition_name varchar2(30):=upper(trim(v_subpartition_name)); vv_object_type varchar2(30):=upper(trim(v_object_type)); vv_value_type varchar2(30):=upper(trim(v_value_type)); vi_values integer:=v_values; vv_tablespace varchar2(30):=upper(trim(v_tablespace)); vv_last_partition varchar2(30); vi_result integer; exc_error exception; -- 程序出错返回自定义异常 vi_flag integer:=0; vv_sql varchar2(1000); BEGIN vv_task_pos := '参数有效性检验'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 1, vv_task_pos, null); --检查用户名 if vv_table_owner is null then vv_task_pos := '用户名不能为空'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; --检查表名 if vv_table_name is null then vv_task_pos := '表名不能为空'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; --检查对象类型 if vv_object_type is null then vv_task_pos := '对象类型不能为空'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; --检查表空间 if vv_tablespace is null then vv_task_pos := '表空间不能为空'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; --参数检查通过,进入函数主体 vv_task_pos := '进入函数主体'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 2, vv_task_pos, null); --对象类型是 TABLE 的表处理 if vv_object_type = 'TABLE' then vv_task_pos := '该对象类型是 TABLE'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 3, vv_task_pos, null); vi_flag := 0; select count('a') into vi_flag from all_tables t where t.owner=vv_table_owner and t.table_name=vv_table_name; --如果表不存在,退出 if vi_flag = 0 then vv_task_pos := '表 '||vv_table_owner||'.'||vv_table_name||' 不存在'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vi_result := 9; raise exc_error; else --如果表存在,则清空此表 vv_task_pos := '清空表 '||vv_table_owner||'.'||vv_table_name; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_sql := 'truncate table '||vv_table_owner||'.'||vv_table_name; execute immediate vv_sql; end if; end if; --对象类型是 PARTITION 的表处理 if vv_object_type = 'PARTITION' then vv_task_pos := '该对象类型是 PARTITION'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 3, vv_task_pos, null); --参数有效性检查 if vv_partition_name is null or vv_value_type is null or vi_values is null then vv_task_pos := '分区表参数不能为空:缺少分区名、分区值类型或分区值'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; vi_flag := 0; select count('a') into vi_flag from all_tab_partitions t where t.table_owner=vv_table_owner and t.table_name=vv_table_name and t.partition_name=vv_partition_name; --如果分区不存在,则建立该分区 if vi_flag = 0 then vv_task_pos := '分区 '||vv_partition_name||' 不存在,建立此分区'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_sql := 'alter table '||vv_table_owner||'.'||vv_table_name||' add partition ' ||vv_partition_name||' values('||case when vv_value_type='INTEGER' then '' ||vi_values||'' when vv_value_type='CHAR' then ''''||vi_values||'''' when vv_value_type='DATE' then 'to_date('||vi_values||',''yyyymmdd'')' end||') tablespace '||vv_tablespace; execute immediate vv_sql; else --如果分区存在,则情况此分区 vv_task_pos := '分区 '||vv_partition_name||' 存在,清空此分区'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_sql := 'alter table '||vv_table_owner||'.'||vv_table_name||' truncate partition ' ||vv_partition_name; execute immediate vv_sql; end if; end if; --对象类型是 SUBPARTITION 的表处理 if vv_object_type = 'SUBPARTITION' then vv_task_pos := '该对象类型是 SUBPARTITION'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 3, vv_task_pos, null); --参数有效性检验 if vv_partition_name is null or vv_subpartition_name is null or vv_value_type is null or vi_values is null then vv_task_pos := '分区表参数不能为空:缺少分区名、子分区名、子分区值类型或子分区值'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); raise exc_error; end if; --检查分区是否存在 vi_flag := 0; select count('a') into vi_flag from all_tab_partitions t where t.table_owner=vv_table_owner and t.table_name=vv_table_name and t.partition_name=vv_partition_name; --分区不存在的处理 if vi_flag = 0 then vv_task_pos := '分区 '||vv_partition_name||' 及其子分区不存在,建立此分区'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_last_partition := to_char(add_months(to_date(vi_values,'yyyymmdd'),1),'yyyymm'); vv_sql := 'alter table '||vv_table_owner||'.' ||vv_table_name||' add partition '||vv_partition_name ||' values less than('||vv_last_partition||') (subpartition '||vv_subpartition_name||' values(' ||case when vv_value_type='INTEGER' then ''||vi_values||'' when vv_value_type='CHAR' then ''''||vi_values||'''' when vv_value_type='DATE' then 'to_date('||vi_values||',''yyyymmdd'')' end||') tablespace ' ||vv_tablespace||')'; execute immediate vv_sql; else --分区存在,检查子分区是否存在 vi_flag := 0; select count('a') into vi_flag from all_tab_subpartitions t where t.table_owner=vv_table_owner and t.table_name=vv_table_name and t.partition_name=vv_partition_name and t.subpartition_name=vv_subpartition_name; if vi_flag = 0 then --子分区不存在的处理 vv_task_pos := '子分区 '||vv_subpartition_name||' 不存在,增加该子分区'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_sql := 'alter table '||vv_table_owner||'.'||vv_table_name||' modify partition ' ||vv_partition_name||' add subpartition '||vv_subpartition_name||' values(' ||case when vv_value_type='INTEGER' then ''||vi_values||'' when vv_value_type='CHAR' then ''''||vi_values||'''' when vv_value_type='DATE' then 'to_date('||vi_values||',''yyyymmdd'')' end||') tablespace ' ||vv_tablespace; execute immediate vv_sql; else --子分区存在的处理 vv_task_pos := '子分区 '||vv_subpartition_name||' 存在,清空此分区'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 4, vv_task_pos, null); vv_sql := 'alter table '||vv_table_owner||'.'||vv_table_name||' truncate subpartition ' ||vv_subpartition_name; execute immediate vv_sql; end if; end if; end if; vv_task_pos := '完成!'; vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, vv_task_pos, null); return(vi_result); /*EXCEPTION WHEN exc_error then vi_result:=0; WHEN OTHERS THEN vi_result := masamk.sf_write_proc_log(vv_task_name, vv_table_name, sysdate, 0, sqlcode, sqlerrm); return(vi_result);*/ END fun_add_table_partitions;
发表评论
-
数据库主键到底是用自增长(INT)好还是UUID好
2018-03-09 17:02 956之前在参加长沙互联 ... -
MySQL、Oracle和SQL Server的分页查询语句
2017-01-06 14:10 707假设当前是第PageNo页,每页有PageSize条记录,现 ... -
Oracle job为什么不能自动执行,手工执行可以
2016-02-26 10:11 1079用sysdba登录,执行show parameter jo ... -
oracle job 定时执行 存储过程
2016-02-26 10:10 6041oracle job 定时执行 存储过程 ... -
oracle查询表结构
2010-10-18 16:50 2615方法1 --按照表明查询 select * fr ... -
Oracle错误一览表(3)
2010-07-31 16:20 2287ORA-09751: pw_attachPorts: 服务器调 ... -
Oracle错误一览表(2)
2010-07-31 16:20 4557ORA-02201: 此处不允许序列(号) ORA-02202 ... -
Oracle错误一览表(1)
2010-07-31 16:19 2227ORA-00001: 违反唯一约束条件 (.) ORA-000 ... -
oracle中查看用户权限
2010-06-17 09:16 12421.查看所有用户: select * from dba_us ... -
oracle append 用法
2010-06-13 15:24 43871、今天PL/SQL导出数据时,忘将删除记录选项去除。结果,以 ... -
oracle删除重复记录
2010-06-11 11:50 1354比如现在有一人员表 (表名:peosons)若想将姓名、身份证 ... -
Oracle多行记录合并/连接/聚合字符串的几种方法
2010-06-11 11:37 6755怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL ... -
sqlplus中改变日期的输出格式
2010-06-08 13:04 1695工作中碰到用spool导出数据,其中有日期格式的字段,因为fo ... -
聚合字符串的几种方法
2010-05-26 16:18 1475怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL ... -
Oracle开发专题之:%TYPE 和 %ROWTYPE
2010-05-18 11:46 14211. 使用%TYPE 在许多情况下,PL/SQL变量可以用 ... -
Oracle过程快查询成条记录,以及如何编写游标
2010-05-18 11:29 1203Declare Cursor emp_cur is ... -
Oracle时间日期操作
2010-05-17 17:31 1159Oracle时间日期操作sysdate+(5/24/60/ ... -
ORACLE常用函数和SQL性能忧化
2010-05-12 22:33 1305NVL(eExpression1, eExpression2) ... -
[Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
2010-05-05 14:55 1265有时候报表上面需要显示该笔操作的上一步骤或者下一步骤的详细信息 ... -
[Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
2010-05-05 14:39 1660有些时候我们希望得到指定数据中的前n列,示例如下:得到每个部门 ...
相关推荐
Oracle的表空间、分区表及索引是数据库管理和性能优化的关键组成部分。通过合理设计和有效管理这些组件,可以确保数据库系统的高效运行和数据的安全存储。理解它们的原理和使用方法,对于任何Oracle数据库管理员来说...
范围分区是根据一个特定的范围值来分割表的一种方法,通常用于时间戳或者日期字段。示例SQL如下: ```sql CREATE TABLE SALES ( PRODUCT_ID NUMBER(2) PRIMARY KEY, SALE_DATE DATE NOT NULL, SALE_COST FLOAT )...
本篇将深入探讨Oracle表空间的创建命令,以及如何创建分区表和分区索引,这些都是管理大规模数据库的关键技术。 首先,我们来看Oracle表空间的创建命令。在Oracle中,表空间是用来存储数据库对象的空间,由一个或多...
DBMS_REDEFINITION方法是Oracle提供的一个工具包,用于在不锁定原表的情况下,将非分区表在线转换为分区表。通过DBMS_REDEFINITION包中的步骤和函数,可以实现分区表的在线重定义,这种方式对系统影响最小,但需要...
总的来说,过程时间记录和分区表是Oracle数据库管理中的重要工具,前者用于诊断和优化存储过程的执行效率,后者则是处理大数据量和提升查询性能的有效手段。在日常工作中,合理运用这两项技术,可以显著提高数据库...
本文将详细介绍Oracle表分区的概念、作用、优缺点,以及各种类型的分区和操作方法。 首先,理解表空间和分区表的概念至关重要。表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成,容纳了...
海思MTD分区表是针对海思半导体的HI3516C芯片设计的一种存储分区配置,主要用于管理和组织嵌入式设备的非易失性存储器(NAND Flash)。MTD,即Memory Technology Device,是Linux系统中用于驱动各种非易失性存储设备...
Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 ##### 分区的作用: 1. **...
1. 创建基础表`PART_T_MAINTENANCE`,用于记录需要维护的分区表的相关信息,如表拥有者、表名、分区名、表空间名和时间段等。这里还指定了表空间为`DMS_DEV_DAT`。 2. 插入分区表信息到基础表`PART_T_MAINTENANCE`...
分区表将逻辑上完整的表在物理上分割成多个部分,称为分区,每个分区存储在不同的表空间中。这样,查询时只需要扫描相关的分区,而不是整个表,从而提高查询速度。 2. **表分区的具体作用** - 性能提升:通过限制...
5. 分区表的扩容:随着时间推移,数据量增加,需要为分区表添加新的分区和表空间。本案例在2001年第三季度建立了一个新的表空间,并为表添加了新的分区。新分区的创建需要指定分区的名称、范围以及对应的表空间。 ...
- 物理属性可以不同,如PCTFREE(预留空间百分比)、PCTUSED(使用空间百分比)和表空间分配。 - 分区独立性保证即使部分分区不可用,其他分区仍可正常工作。 - 最大分区数量为64000,但LONG或LONG RAW列的表不...
### SQL Server 大表分区...通过合理的分区设计,可以显著提高数据库的查询和更新性能,尤其是在面对千万级别的大表时。在实际应用中,还需要根据具体业务需求和技术环境来调整分区策略,以达到最佳的性能优化效果。
7. **表分区和段压缩**:为了更有效地管理表空间,可以考虑对大表进行分区,根据日期或其他业务关键字段将数据分段存储。此外,Oracle还提供了压缩选项,如ROW STORE COMPRESSION和COLUMN STORE COMPRESSION,可以在...
1. **MBR分区表**:MBR分区表通常用于最多四个主分区或三个主分区加一个扩展分区的硬盘。MBR包含一个引导扇区,用于启动计算机,以及一个分区表,其中列出所有分区的信息。每个分区条目占用16个字节,限制了最多只能...
#### 四、表分区的类型及操作方法 1. **范围分区**:最常用的分区类型之一,根据分区键的范围将数据映射到各个分区。通常使用日期作为分区键。 - **创建示例**: ```sql CREATE TABLE CUSTOMER ( CUSTOMER_ID ...
Oracle支持多种分区类型,包括范围分区和列表分区。范围分区是根据列值的范围进行划分,适用于连续且有明显分界的数据,如日期或编号。而列表分区则适用于列值有限且已知的场景,可以明确指定哪些值属于哪个分区。 ...
SQL Server 分区表的建立和操作 SQL Server 分区表是一种高效的数据存储方式,能够帮助用户更好地管理和优化大量数据。分区表可以将大型表拆分成多个小的、独立的逻辑部分,从而提高数据的可访问性和可管理性。本文...
Oracle支持多种分区类型,包括范围分区、列表分区、散列分区和复合分区等。 2. **范围分区**:根据指定的列值范围划分分区,例如按照日期创建月度或季度分区。这种分区方式适用于历史数据归档,便于按时间区间查询...
MySQL表分区支持不同的分区策略,例如range分区、list分区和hash分区等。 **range分区**是根据数据范围来进行分区的一种方法。它允许数据根据列值的范围被分配到不同的分区中。例如,可以根据日期、数值或其他连续...