如何定时创建基于时间点表,并且表内数据来源于其他数据库?
背景说明:在当前数据库中,每半个小时创建一张基于时间点的表,表内容来自于另一个数据库orcl中shall.Scott_Emp。
1.当前数据库准备TNS
----准备另一个数据库orcl的tns,后面好创建db_link
[oracle@zyx ~]$ vim $ORACLE_HOME/network/admin/tnsnames.ora
db_orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.22)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
2.创建DB_LINK
----当前数据库创建连接另一数据库的link
create public database link db_orcl_link connect to shall identified by shall using 'db_orcl';
----测试:
sys@ORCL>select count(*) from Scott_Emp@db_orcl_link;
COUNT(*)
----------
14
3.创建存储过程
----先创建一张表,用于存放我们每半个小时生成的表名,不然很难知道到底有哪些表
create table temp_table (tablename varchar2(100));
----基于时间点创建表名,内容来自于数据库orcl中shall.Scott_Emp
create or replace procedure p_Scott_Emp_bak is
v_date varchar2(16);
v_sql varchar2(2000);
v_tablename varchar2(20);
begin
select to_char(sysdate, 'yyyymmddhh24mi') into v_date from dual;
v_tablename := 't_' || v_date;
v_sql := 'create table '|| v_tablename ||' as select * from Scott_Emp@db_orcl_link';
dbms_output.put_line(v_sql);
execute immediate v_sql;
insert into temp_table values ('t_'||v_date);
commit;
end;/
----调用存储过程进行测试
sys@ORCL>set serveroutput on
sys@ORCL>exec p_Scott_Emp_bak;
create table t_201604251058 as select * from Scott_Emp@db_orcl_link
PL/SQL procedure successfully completed.
sys@ORCL>select * from temp_table;
TABLENAME
----------------------------------------------------------------------------------------------------
t_201604251058
sys@ORCL>select count(*) from t_201604251058;
COUNT(*)
----------
14
4.创建job
----创建JOB每30分钟执行一次
sys@ORCL>var job1 number
sys@ORCL>exec dbms_job.submit(:job1,'p_Scott_Emp_bak;',sysdate,'sysdate+30/1440');
PL/SQL procedure successfully completed.
----手动运行一次
sys@ORCL>exec dbms_job.run(:job1);
create table t_201604251111 as select * from Scott_Emp@db_orcl_link
PL/SQL procedure successfully completed.
sys@ORCL>select * from temp_table;
TABLENAME
----------------------------------------------------------------------------------------------------
t_201604251058
t_201604251111
sys@ORCL>select count(*) from t_201604251111;
COUNT(*)
----------
14
sys@ORCL>select JOB,LAST_DATE,NEXT_DATE,BROKEN,INTERVAL,WHAT from dba_jobs where what='p_Scott_Emp_bak;';
JOB LAST_DATE NEXT_DATE BROKEN INTERVAL WHAT
----- ----------------- ---------------------- ------------------ --------------------- -----------------
43 2016-04-25 11:11:46 2016-04-25 11:41:46 N sysdate+30/1440 p_Scott_Emp_bak;
----后续:
sys@ORCL>select sysdate from dual;
SYSDATE
-------------------
2016-04-25 11:17:19
——————————————————————>>>
sys@ORCL>select sysdate from dual;
SYSDATE
-------------------
2016-04-25 13:41:18
sys@ORCL>select * from temp_table;
TABLENAME
----------------------------------------------------------------------------------------------------
t_201604251058
t_201604251111
t_201604251141
t_201604251211
t_201604251241
t_201604251311
6 rows selected.
sys@ORCL>select count(*) from t_201604251311;
COUNT(*)
----------
14
sys@ORCL>select JOB,LAST_DATE,NEXT_DATE,BROKEN,INTERVAL,WHAT from dba_jobs where what='p_Scott_Emp_bak;';
JOB LAST_DATE NEXT_DATE BROKEN INTERVAL WHAT
----------------------------------------------------------------------------------------------------
43 2016-04-25 13:41:55 2016-04-25 14:11:55 N sysdate+30/1440 p_Scott_Emp_bak;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30130773/viewspace-2121802/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30130773/viewspace-2121802/
- BuildForge 删除了数据库数据后如何创建初始数据
- 如何修改数据库表的创建时间
- Oracle表误删、数据误删、默认数据库时间、用户创建、权限分配、DB2锁表
- 如何缩短SBS2008的监视数据库历史数据保存时间?
- Num43 oracle(子查询: 集合查询:处理数据:创建和管理表: 其他数据库对象)
- 基于ormlite创建数据库存储数据案例
- C#如何创建Windows服务并定时操作数据库的功能
- Oracle 同名字段的该行数据按照创建时间最新的隐藏其他
- android数据库版本升级,在onUpgrade方法如何写,防止跨级重新创建数据表而报错
- phpMyAdmin怎么创建数据库如何导入SQL数据文件
- asp.net core 系列 20 EF基于数据模型创建数据库
- 如何更改数据库表的创建时间
- 如何用C语言产生10000个不重复的随机整数?并且把它写入到一个文本文件中作为其他函数测试用的数据。
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
- java 把string数据转换成date数据存入mysql的问题,如何获取当前时间date存入数据库
- c#中动态创建textbox并且从数据库中获取表中数据添加到textbox中
- 【Oracle】Oracle如何实现创建数据库、备份数据库及数据导出导入
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- MySQL如何创建数据库并查询数据类型
- java XXXvo.java 主表调用其他表表的字段拼接///表中读取数据库里时间数据格式的修改