1.自动建表的存储过程
create or replace procedure sp_createtab_t_data_sensor
Authid Current_User
as
tabname varchar(200);
seqname varchar(200);
tabCount number;
seqCount number;
begin
select 'T_DATA_SENSOR_' || to_char(sysdate+1, 'yyyymm') into tabname from dual;
select 'SEQ_DATA_SENSOR_' || to_char(sysdate+1, 'yyyymm') into seqname from dual;
select count(1) into tabCount from user_tables where table_name=tabname;
SELECT count(1) into seqCount FROM All_Sequences where SEQUENCE_NAME=seqname;
--如果存在,则删除该表
if tabCount>0 then
-- dbms_output.put_line('表或视图不存在!');
execute immediate 'drop table '||tabname;
end if;
--创建
execute immediate 'create table '||tabname||'
(
SENSORID NUMBER(10) not null,
VALUE NUMBER(10,4),
UNIT VARCHAR2(50),
GASNAME VARCHAR2(50),
STATUS VARCHAR2(50),
REVDATE DATE not null,
ID NUMBER(30) not null,
AID NUMBER not null,
DATADATE DATE default SYSDATE not null
)';
--如果存在,则删除该序列
if seqCount>0 then
-- dbms_output.put_line('表或视图不存在!');
execute immediate 'drop SEQUENCE '|| seqname;
end if;
--tabCount := 0;
--seqCount := 0;
execute immediate'create sequence ' || seqname;
commit;
end;
2.job定时任务执行(每月最后一天的凌晨一点执行)
declare
-- Local variables here
v_jobnum number;
begin
-- Test statements here
dbms_job.submit(v_jobnum,'sp_createtab_t_data_sensor;',sysdate,'TRUNC(LAST_DAY(SYSDATE))+1/24');
dbms_output.put_line('job '||v_jobnum||' has been submitted.'|| to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss') );
dbms_job.run(v_jobnum,TRUE);
COMMIT;
end;
分享到:
相关推荐
- 每个表空间的数据文件大小均为50MB,并存储在指定路径下。 2. **创建分区表**: - 创建了一个名为 `dinya_test` 的分区表。 - 该表具有四个字段:`transaction_id`(主键)、`item_id`、`item_description` 和...
每个数据库系统有自己的语法和特性,因此在不同环境下创建日期维度表的脚本也会有所不同。例如,Oracle可能支持更复杂的函数和特性,而MySQL可能需要更简洁的解决方案。 总之,数据仓库中的日期维度表是数据分析的...
例如,可以先按年份范围分区,再对每个月进行散列分区。 5. **区间-散列分区**(Range-Hash Partitioning)和**列表-散列分区**(List-Hash Partitioning)也是复合分区的变种。 6. **全局索引分区**:当对分区表...
1. **计划备份**:用户可以根据自己的需求设置定时备份计划,比如每天、每周或每月的特定时间,这样就能确保在不影响业务运行的情况下完成备份。 2. **完整备份与增量备份**:提供完整的数据库备份,以及只备份自...
在IT领域,尤其是在数据库管理和系统自动化操作中,利用Linux下的Crontab实现Oracle SQL的定时自动执行是一项极为实用且高效的技术。本文将深入探讨如何在Linux环境下设置Crontab来定期执行Oracle SQL脚本,这一过程...
`40 */8 * * *`是crontab的时间格式,具体解释为:分钟(40),每小时的第X个(*/8,即每隔8小时),每天的任意时间(*),每个月的任意一天(*),每年的任意一天(*)。 通过以上步骤,我们就成功地在Linux系统中...
作者提出了一种方案,该方案利用Windows的任务计划功能和Oracle的Export工具,创建一个自动化备份流程,能够在特定时间执行数据库备份,并将备份数据传输到异地服务器。 在方案设计中,作者建议将数据中心设在新...
- `next_date`:设置 Job 的首次执行时间,例如 `TRUNC(LAST_DAY(SYSDATE))+2+6/24` 表示下个月的第2天凌晨6点。 - `interval`:定义 Job 的执行间隔,`TRUNC(LAST_DAY(SYSDATE))+2+6/24` 表示每个月的同一天凌晨6...
5. **保留策略**:保留最近两次全备和归档日志备份,以及至少保留最近一个月的EXP文件,确保数据的可恢复性。 #### 实施细节 在Windows 2000环境下,针对Oracle 8i/9i数据库,备份可以通过RMAN(Recovery Manager)...
为了存储自动气象站的数据,创建了两个主要的表:ASLEMENT用于存储观测数据,包括站号、年、月、日作为索引;STATION用于存储气象站的基本信息,如站号、纬度、经度、高度、级别和站名等。此外,还有一个DISTRICT表...
MyBatis Generator是一个强大的工具,它能够根据数据库表结构自动创建Java实体类、Mapper接口和对应的XML配置文件。下面我们将以MyBatis Generator为例进行介绍。 1. **MyBatis Generator配置**:MBG通过一个XML...
3. **触发器**:选择触发器的时间规则,如每天、每周或每月等,并设置具体的执行时间。 4. **操作**:选择“启动程序”,并浏览到之前创建的备份脚本的位置(如`C:\Scripts\dbbkup.bat`)。 5. **完成设置**:确认...
(6)在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器。 1. 实例讲解Oracle数据库自带的几个触发器 Oracle数据库自带的几个触发器(最简单触发器格式)...
- 每个季度第一个月的第1天上午11点执行:`'TRUNC(ADD_MONTHS(SYSDATE+2/24,3),'Q')-1/24'` - 每分钟执行一次:`'SYSDATE+1/1440'` #### 移除作业 移除一个作业可以通过`DBMS_JOB.REMOVE()`函数实现,只需传入作业...
例如,在提供的例子中,一个销售数据表(sale_data)被分区以每个月为单位存储销售记录。使用范围分区的SQL代码示例如下: ```sql CREATE TABLE sale_data ( sale_id NUMBER(5), salesman_name VARCHAR2(30), ...
- 在 Oracle 中,默认情况下字符数据类型的存储是以 ASCII 编码格式进行的。 - 字符串类型的长度单位是字节,而不是字符。这意味着如果存储多字节字符(如中文字符),则需要考虑到每个字符占用的字节数。 ##### ...
在Linux环境下,对Oracle数据库进行自动备份以及将备份文件拷贝至磁带机是一项关键的任务,确保数据的安全性和可恢复性。以下将详细介绍这个过程涉及的知识点。 首先,Oracle数据库的备份通常采用两种主要方法:...
例如,可以先按照年份进行Range分区,然后再对每个月的数据进行Hash分区。 - **适用场景**:当数据结构复杂,单一的分区策略难以满足需求时。 - **优点**:能够提供更精细的数据分布控制,进一步优化查询性能。 ###...