oracle数据抽取步骤
Database links:
1、 在本地计算机上,新建一个连接远程数据库的连接,并记住这个连接的服务名(例如:jzfx_remote);
2、 返回远程数据库的GLOBAL_NAME:
执行:SELECT * FROM GLOBAL_NAME;
记住此值;
3、 查看本地Global_name参数是true还是False
执行:SQL> show parameter global_name;
修改本地Global_name的参数:
alter system set global_names = false;--慎重
4、 创建Database link:
create database link [remote_global_name]connect to remote_username identified by remote_password using 'jzfx_remote';
参数介绍:
remote_global_name:远程数据库global_name;
remote_username:连接远程数据库的帐号;
remote_password:连接远程数据库的密码;
5、 如果不能创建,需要修改本地的global_name为false:
alter system set global_names = false;
6、 测试连接是否成功:
select * from dual@[remote_global_name];
如果返回结果如下则表示连接成功了。
DUMMY
-----
X
二、 创建存储过程:
7、 CREATEORREPLACEPROCEDUREUSER_INFO_TEMP_TEST
IS
BEGIN
--插入数据(此SQL语句为示例)
INSERTINTOUSER_INFO_TEMP
SELECT *FROMUSER_INFO@ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM.TEMP
WhereUSER_INFO.USERID@ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM.TEMPNOTIN (SELECTUSERIDFROMUSER_INFO_TEMP);
END USER_INFO_TEMP_TEST;
三、 创建job:
8、 使用sys,给本地用户赋予job的权限:
grantexecuteondbms_jobto[本地用户的帐号:xjgzmk];
9、 SQL> variablejobnonumber;
SQL >begin
dbms_job.submit(job => :jobno,
what =>'DATA_T_INFO_CRMNLCSSLV_PRO;',
next_date =>sysdate,
interval =>'sysdate+1/1440*10'
);
commit;
end;
/
此写法(sysdate+1/1440)代表,每分钟执行一次job;
10、 运行job:
1: 命令方式:
SQL >begin
dbms_job.run(:jobno)
end;
/
2: 快捷方式:
在需要运行的job上,点击右键,再点击“run”即可;
11、 job各时间段介绍:
1: 每分钟执行
Interval=> TRUNC(sysdate,'mi') + 1/ (24*60)
或
Interval=> sysdate+1/1440
2: 每天定时执行
例如:每天的凌晨1点执行
Interval=> TRUNC(sysdate) + 1 +1/ (24)
3: 每周定时执行
例如:每周一凌晨1点执行
Interval=> TRUNC(next_day(sysdate,'星期一'))+1/24
4: 每月定时执行
例如:每月1日凌晨1点执行
Interval=>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5: 每季度定时执行
例如每季度的第一天凌晨1点执行
Interval=> TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
6: 每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval=> ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
7: 每年定时执行
例如:每年1月1日凌晨1点执行
Interval=>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24