Oracle创建DBlink、定时器、同义词、锁表问题、查看执行计划

DBLINK

创建DBlink脚本

含义:

在大数据时代,数据整合变得异常频繁,如果没有做数库,优先 使用的就是通过oracle自带的功能达到数据处理与需要目的

create database LINK xxxx
  connect TO xxxx  identified by “xxxxx”
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = xxxx))
    )
    (CONNECT_DATA =   
      (SERVICE_NAME = xxxxx)
    )
  )';	

各个空位解释:

create database LINK DNLINK名称
  connect TO  数据库账户 identified by “数据库密码”
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 端口))
    )
    (CONNECT_DATA =   
      (SERVICE_NAME = 数据库实例名称)
    )
  )';

查看是否创建成功

select count(1) from dual@dblink名称

dblink常用sql

1、删除dblink:
drop database link dblink名称
2、查询不同被连接数据库中的表:
select * from table@dblink名称
3、修改,就直接删除,重新创建

定时器

含义:

定时器Job来让数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等

实例

1、创建对应的存储过程
2、创建定时器根据需求规则定时执行

begin
  sys.dbms_scheduler.create_job(job_name            => 'JOB_xxxx',
                                job_type            => 'STORED_PROCEDURE',
                                job_action          => 'xxxxx',
                                start_date          => sysdate,
                                repeat_interval     => 'Freq=DAILY;BYHOUR=1;MINUTE=35',--每天凌晨一点35分
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                                auto_drop           => true,
                                comments            => 'xxxxxx');
end;
/

job_name :定时器名称
job_type :定时器类型
job_action:需要执行的存储过程
start_date :开始时间
repeat_interval :执行周期
end_date :就输时间
job_class :资源分组管理——默认即可
enabled :默认为true
auto_drop :暂不知道_有知道的,可以互相学习指导
comments:定时器备注

参数详解

INTERVAL:执行周期_有两种方式
第一种FREQ指定:

YEARLY(年), MONTHLY(月), WEEKLY(周), DAILY(日), HOURLY(时), MINUTELY(分),
SECONDLY(秒)等单位

列子:

repeat_interval => 'FREQ=HOURLY; INTERVAL=2'
每隔2小时运行一次job

repeat_interval => 'FREQ=DAILY'
每天运行一次job

repeat_interval => 'FREQ=WEEKLY; BYDAY=MON,WED,FRI"

第二种通过时间表达式指定:

Interval => trunc(sysdate,’mi’) + 1 / (24*60)--每分钟执行

Interval => trunc(sysdate) + 1 +2 / (24)--每天定时执行:每天的凌晨2点执行

Interval => trunc(next_day(sysdate,2))+2/24   --每周定时执行:每周一凌晨2点执行(周一为一周的第二天)

Interval =>trunc(LAST_DAY(SYSDATE))+1+2/24; --每月定时执行:每月1日凌晨2点执行

Interval => trunc(ADD_MONTHS(SYSDATE,3),‘Q’) + 2/24;  --每季度定时执行:每季度的第一天凌晨2点执行

Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+2/24;  --每半年定时执行:每年7月1日和1月1日凌晨2点

Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+2/24;  --每年定时执行:每年1月1日凌晨2点执行

相关命令

dbms_job.remove(id); --根据id删除某个定时器

dbms_job.run(id); --启动定时器

dbms_job.broken(id,true) --true Y 定时器状态停止 ;false N 定时器状态运行。数据库存N,Y如下图

dbms_job.next_date(id,to_date(2020-08-03 22:00:00,‘yyyy-mm-dd hh24:mi:ss’)) --修改定时器的下次执行时间

dbms_job.interval(id,‘sysdate+1/24) --修改定时器的间隔时间

dbms_job.what(id,‘AUTO_INSERT_TIMESTAMP ;) --修改定时器的存储过程

同义词

含义:

从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。

实例:

给一个用户访问 另外一个用户下的表权限

给需要访问的用户进行授权(增删查改等权限):被访问方
1GRANT SELECT(权限) ON 用户名.表名[被访问方] TO 用户名[访问方];
在访问方下创建同义词
2CREATE SYNONYM 表名 FOR 用户名.表名[被访问方];

默认是私有同义词
加入 PUBLIC 就是共有同义词

相关命令:

1、使用同义词
SELECT * FROM 同义词名称;
2、删除同义词
drop SYNONYM 同义词名称;
3、修改同义词[当同义词的元对象被重新建立是,需要重新编译]
alter synonym 同义词名称

锁表问题

查看执行计划

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知青先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值