昨天讲了物化视图了,今天讲一下同义词的这个概念

就是synonym,反正这个我叫习惯了,这个同义词了解过吗,这个可能了解的不多吧,MYSQL里面有同义词的概念吗,给我点反馈,你用MYSQL里面有同义词吗,比如说啊,那我举一个例子,MSYQL是不是可以指定不同的用户,比如张三这个用户,然后连一个DB,就是一台服务器,就是这是MYSQL,就是有一个MYSQL,有一个dyb,然后还有easyest,然后还有tmaven,还有这个test,这是一个CONNECTION,下面有好多数据库,有这么多个,那我是不是建立不同的用户,指定让他访问不同的数据库,能明白我说的意思吧,你们用MYSQL能这么去做吗,有一个t1数据库,这边在来个t2数据库,然后我能不能t1和t2,其实是一个服务器,这两个数据库的表能不能共享,说白了就是两个SCHEMA,SCHEMA1就是用户1,他所有的数据库可能是t1,用户2所指定的数据库是t2,然后这个库的表能不能共享,能不能跨片的做共享,这边一张表和这边一张表,想做一个join,join操作,或者是做其他操作,MYSQL可以吗,有用过的吗,能查另一个用户的表吗,不能吧,我印象中是不能,那肯定是不能,不要说不能跨库,那咱们的ORACLE是可以做这个事的,就是他可以指定不同的SCHEMA,就比如你这个scott,就是HR,就是其他的用户,或者是另外建一个用户,我就是一个tablespace,不同的空间,我可以做什么事啊,我建立一个这个东西,grant create synonym to scott,同义词就是synonym,同义词create出来,然后我就可以做什么事呢,两个SHCEMA之间做一个表的共享,同义词在ORACLE里面分两种,一种是公有同义词,一种是私有同义词,私有同义词就相当于你建立以后,这个表明叫做EMP,然后我可以说给这个表起一个别名,最后给他叫a,最后我就SELECT * FROMEMP就可以查出这个数据,我也可以SELECT * FROM a,也能查出来同样的数据,可以给他起个别名,但是咱们一般创建的是公有同义词,公有同义词一般是hi所有用户都可以使用的,就是你ORACLE里面所有的SCHEMA用户,都可以相互之间的访问,就是里面的表都是可以的,当然你要指定,创建的语法就是create public synonym,然后to什么什么,然后to scott,或者是create public synonym xyz for emp;这个是啥意思啊,这是起一个别名叫xyz,然后for一个emp,emp这个表,然后同义词的用法差不多就是咱们看到的这种形式,然后我可以创建两种,私有同义词

这里有一个例子,就是create synonym wyz for emp1,我把emp1给drop掉了,就是这个表被我删掉了,然后你去select * from wyz的时候它会说,已删除表,然后转换同义词不再有效,那证明什么啊,证明其实我们这个同义词还是存在的,就是这个意思,然后你又可以利用一个闪回,你把这个表drop掉了,你只要没有recycle bin,你这个表还是在垃圾箱里的,你还可以给他闪回回来,闪回回来是flashback table emp1 to before drop,emp1就是你刚才删的那个表,然后to before drop,这样的话又回来了,回来之后再去查这个wyz,还是有的,这个就是我刚才说的那个事,我们之前公司也是用了同义词,数据迁移这

就这些东西,这里面我是创建了好多的这个东西,我先把PL/SQL Developer打开,然后我建一个SQL Window,我们看一下以前我们是怎么去用的

当前要知道什么是SCHEMA,ZCDB这些都是SCHEMA,然后我首先要做的事是什么事啊,我要做的事情是先把同义词给创建出来,那你看我上面这几个方式,上面都是CREATE PUBLIC SYNONYM,然后这个是我自己写的同义词,这个名字是随便起的,然后是FOR YZXT这个用户,这个也是一个用户,也是一个用户SCHEMA,然后FOR YZXT这个对象点什么什么YZXT你可以理解为HR点什么什么的,可以这么去理解,然后你创建完这么一堆同义词以后呢,证明你这个同义词在全局范围内有效,整个ORACLE都有效,整个实例都有效,然后我可以做的事情就是你登陆我的HR用户也好,YZXT这个SCHEMA也好,然后去干什么事呢,把我刚才创建的名字,给另外一个SCHEMA,可以这么去转换,然后另外一个SCHEMA就可以查这张表,差不多就是这个用法,其实以前工作的时候大量的用到了同义词,就是做查询方便,就是简单的举个例子,实际操作一下你就明白了,比如现在我换一个用户,比如我换一个HR,还是ORCL,还是同一个实例,然后hr/tiger,现在我们已经换用户了,之前是scott,现在换成了hr了,hr里面肯定是表都不一样,表里面都有这么多,有一个EMPLOYEES,还有一个JOBS

那EMPLOYEEs里面的数据就多了,我记得以前也说过,首先列也多了,基本上考OCP的时候都是用这张表出题,让你去做,因为这张表数据多,那现在我想干什么啊,我想通过hr用户,把EMPLOYEES这张表变成公有的,别人可以去访问的这个东西,就是同义词吗,这个怎么去做啊,就是CREATE PUBLIC SYNONYM,这个表指代的是谁啊,原先叫EMPLOYEES,然后我这边可以随便取个名字,AAA,然后FOR谁,当前登陆的是HR,所以就是FOR HR点,就是HR用户下的哪张表,然后里面都是HR的表,FOR HR.EMPLOYEES,然后我去建立一下,CREATE PUBLIC SYNONYM AAA FRO HR.EMPLOYEES,他可能没有创建同义词的权限,这个用户,那你操作起来就有点麻烦了,首先你得使用system去登陆,coon system/tiger@orcl as sysdba,先登陆一下,然后grant create public synonym to hr

这回他就已经有了,已经有了我再创建行不行,这个时候就创建执行OK了,执行OK了以后

我之前SELECT * FROM EMPLOYEES,我能查到数据,由于是公有同义词,我就可以这样,SELECT * FROM aaa,同样,就相当于给他起个别名

接下来要做的是grant,就是GRANT SELECT权限,给他其他的选项都行,给他update的权限,给他更新的权限,给他DELETEdrop的权限,等等,先给他SELECT的权限,GRANT SELECT的权限怎么去写的,ON这个同义词表,TO一个SCHEMA,你之前这个表叫AAA,创建公有同义词,这是你HR用户下创建的同义词叫这个,然后咱们TO的是SCOTT,就这样去做,这样他也OK了,GRANT SELECT ON AAA TO SCOTT,OK以后我们换一个用户去登陆,换scott,那换scott之后,现在我登陆的人就是scott了,SCOTT数据库里面就这几张表,肯定是没有EMPLOYEES这张表,你看现在肯定是没有那张表的,然后我去做查询,随便来个query吧,咱们就直接来个SELECT * FROM AAA那就可以了

我就看到另外一个SCHEMA HR他里面的这张表了,但是现在只有查询权限,你说你要更新什么,比如我现在想做一个UPDATE,UPDATE AAA SET FIRSTNAME或者EMAIL,我随便给他一个EMAIL值,WHERE EMPLOYEE_ID等于198UPDAET AAA SET EMAIL = '1111' WHERE EMPLOYEE_ID = '198',我们这个执行,他说权限不足,肯定是权限不足的,因为你只给了SELECT 的权限,你没有给他其他的权限,能明白我的意思吧,同义词这个事没问题吧,就是可以这么去做,多个SCHEMA之间进行交互,这个其实还是非常好用的,有什么用你想一想呗,这个东西怎么说呢,你说的是SCHEMA是直接交互,你用用户点什么什么,但是我这个相当于是全局,全局所有的都能用,能理解我说的意思吧,而且我这个东西删了,他这个同义词依然存在,就是我把EMPLOYEES这张表删掉,这个同义词还是存在,我刚才不是又看过这个例子吗,就是有一个drop table,emp1删了以后,我照样可以闪退回来,还能闪回回来,这个我查一下,这个我还真不知道,没注意,不同实例的能进行查询吗,你如果两个实例都开起来,我搜一下,这个我也没注意,不同实例的同义词查询,可以的,那就证明同义词就很强大了,我记得也是可以的,但是我没试,那这块你想想吧,对应着你的数据库,两个数据库了,相当于两个实例了,同义词进行交互,咱们实验一下,这个非常简单,我记得也是可以的,咱们试一试,但是没敢说一定可以,好久不弄也就忘了,你不天天玩他也是真的不行,我现在又启动了一个实例,我记得也是可以的,刚才那个好像就是不同的实例,现在都进来了,一个是连接的实例不同了,刚才我们已经创建了一个同义词了,AAA,那我这里是不是SELECT * FROM AAA就行了呢,应该怎么去做来的,我记得行但是没这么简单,就是你现在是不同的实例,然后同义词公用,我想一想啊,SELECT * FROM AAA这是不行的,我换一下,应该权限也是有关,那我就conn system/tiger@bjtam AS SYSDBA,select * from aaa,那就是不行,咱们先不考虑这么多了,简单的知道同义词的用法就行了,然后咱们继续往下走,下一个例子就是DBLINK这一块

DBLINK干什么事呢,他可以用于不同数据库,不同的数据库实例,或者是远程连接,这个肯定行的,这个不用想,同义词这个我还真不知道行不行,反正我是知道他是基于SCHEMA进行区分的,但是DBLINK是可以不同的数据库,不同的实例可以去相连的,然后有了这个DBLINK以后,然后你就可以去查,查不同实例的表,然后可以做一系列的操作,这个DBLINK没问题吧,应该都听过这个东西,DBLINK,DBLINK不就是这个东西,多简答啊,刚才我们是两个实例了,其实我也可以两个数据库,当然这个我不浪费时间了,我现在这个是SCOTT,我去怎么做呢,就是create public database link,然后随便取个名字,然后connect to bjsxt,identified by PASSWD,这个就是bjsxt的实例,然后identified by,这个是什么啊,PASSWORD我这边也是bjsxt,using是什么啊,描述DESCRIPTION,ADDRESS地址是哪儿,我的地址是192.168.2.200,或者是你本地的地址都行,ORACLE的PORT都是1521,然后你这块的实例名称是什么,SERVICE_NAME是bjsxt,因为我要link的是bjsxt这块,然后create出来,这个名字就叫bjsxt_link,就叫link1吧,随便起个名字,但是他有创建link的权限吗,权限不足,那怎么办啊,我用DBA创建一个权限吧,conn system/tiger@orcl as sysdba,就是这个语句,然后我们回车

这里就直接create dblink,就创建好了,创建好了以后就可以直接去做了,bjsxt里面有什么表呢,换一个实例,bjsxt用户名是bjsxt,密码也是bjsxt,你进去看到这个实例用户里边,他有什么对应的表,Tables有这么多

咱们有SYS_USERS表吗,SELECT * FROM SYS_USER@LINK1,就把另个数据已经查出来了

这里又两条记录,一个admin,一个xiaoxiao,我可以去查SELECT * FROM SYS_FILE@LINK1;这个实例里面也应该有SYS_FILE文件的,SYS_FILE不行,我再换一个,这个表里有数据,就是SYS_FUNC,SELECT * FROM SYS_FUNC@LINK1,这些都是可以查

具体那个为什么不能查,这也是要告诉你的一个原因,就是这个实例,SYS_FILE这个表为什么不能查,观察一下这个数据结构你就知道了,你会发现这个表里有什么啊

有二进制文件,有BLOB文件,有BLOB文件允许查吗,SELECT * FROM SYS_FILE@LINK1,里面不能够查带二进制的数据

就是说有一个问题,这个东西虽然也能做,但是不能够查带有BLOB,CLOB的这种东西,他觉得这个东西太费事了,DBLINK查这个够呛,因为那样的话交互量太大了,现在两个库之间可以做这个事情了,两个数据库之间可以做这个事情了,这个就方便了很多,咱们就把同义词和DBLINK说一下然后这块有PL/SQL的编程,这个在很久以前就说了,咱们这个后期肯定会讲的,就会直接去用的,之前的例子也发给你了,所以这个也就不说了

接下来你可以看一下,我就不写了,因为我觉得太麻烦了,就是你在ORACLE里面创建一个正常的表空间,它是怎么去做的呢,就是一个create,创建临时表空间,create temporary tablespace,然后起个名字,临时表空间的数据文件放在哪里,自己指定一个文件,然后大小随便写了一个G,然后可扩展,后面还可以加很多的东西,比如每次扩展50M,最大闲置是两个G,或者是20个G这都行,然后是其他的东西,这是临时表空间创建的时候,然后创建正式的表空间就是create tablespace,就不用那个temporary了,然后也是随便取个名字,创建一个数据文件,指定数据文件的大小,还可以扩展,每次扩展是多大,最大的限度是多大,然后继承management local,你说你这个数据文件,一个已经满了,怎么办,我local里面还可以添加数据文件,一个文件不够我再加一个,这里指定的是maxsize,这是20个G,20G指的是什么啊,指的是你整个dbf,一个表空间的一个,他的最大大小,但是如果你在给我加一个数据文件的话,那这就是另外一个数据文件了,那你可以给另外一个数据文件指定多大,这都是可以的,就是垂直的,按库的,一个ORACLE实例的增加表空间,可以这么去做,创建完表空间以后,create user随便取个名,然后给一个密码,然后default tablespace是什么,就是我上面创建的数据表空间,然后指定他的临时表空间是什么,如果正常生产环境中你要是就使用这一个用户,如果都使用这一个用户去操作,grant dba to 你创建好的用户就完事了,怎么做都行,表空间的使用,简单的使用,还有一些查看表空间的使用率,这都可以去做的

然后还有一些查看表空间的使用率,这都是可以去做的,ORACLE里面有些SQL都是好长好长的

就直接能看到,先不用管查询语句是什么意思,反正就是1024*1024,取出来的就是多少兆了,我们现在有这么多的tablespace,BJSXT,EB,以前在做ACTIVITY的时候,工作流,他给我分配了一个表空间,然后还有很多,这就不说了,可以去看的,数据库实例名称,select instance_name from v$instance,你看到当前数据库实例,其实你对ORACLE如果没兴趣的话,你可能就真没兴趣了

orcl就是我们当前的实例,这些都是很基础的,表空间就不说了,咱们就稍微停一下

Oracle之同义词,DBLINK,表空间相关推荐

  1. oracle创建数据库、表空间、用户并授权

    oracle创建数据库.表空间.用户并授权 在安装完Oracle数据库软件之后可以使用默认的数据库orcl,也可以根据需要创建自定义的数据库.表空间用于对数据库中的资源进行分类,每个用户都有默认的表空 ...

  2. oracle数据库解决system表空间已爆满的问题

    oracle数据库解决system表空间已爆满的问题 参考文章: (1)oracle数据库解决system表空间已爆满的问题 (2)https://www.cnblogs.com/chxmtl/p/1 ...

  3. oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复

    示例一:表空间的数据文件被误删除 open状态下删除表空间对应的所有数据文件. 在open状态下使用alter tablespace ... offline for recover 脱机表空间. 使用 ...

  4. Oracle bigfile 大文件表空间会影响rman等备份效率

    Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成.表空间内的逻辑存储单位为段(segment),段又可以继续划分为数据扩展(extent).而数据扩展是由一组连续 ...

  5. 数据库-Oracle【Oracle数据库设置默认表空间问题及Oracle,SQL,MySQL的自增变量设置】...

    一. Oracle数据库设置默认表空间问题 DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间-- ...

  6. oracle查看表空间的内容,学习笔记:Oracle查看object对象 表空间 表 索引 数据文件的使用空间...

    天萃荷净 运维DBA咨询想要查看Oracle的object对象的使用空间大小,包括表空间 表 索引 数据文件的使用空间 1.查看Oracle表空间大小 Select Tablespace_Name,S ...

  7. Oracle删除用户和表空间

    Oracle删除用户和表空间 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop user ×× cascade 说明: 删除了user,只是 ...

  8. oracle的表空间的检查,oracle数据库检查所有表空间使用率的脚本

    oracle数据库检查所有表空间使用率的脚本 REM tablespace report set linesize 200 select a.tablespace_name, round(a.byte ...

  9. oracle创建表空间工具,使用sqlplus命令行工具为oracle创建用户和表空间

    这篇文章主要介绍了使用sqlplus为oracle创建用户和表空间的方法,本文介绍的是使用Oracle 9i所带的命令行工具:SQLPLUS,需要的朋友可以参考下 用Oracle10g自带的企业管理器 ...

  10. Oracle数据库空间突然增大,oracle BUG 5890312导致表空间瞬间暴涨

    oracle BUG 5890312导致表空间瞬间暴涨 据悉,最近某些同行出现oracle数据库BUG(5890312),对业务造成影响.bug发作后,如果是在system表空间上,可能造成整个数据库 ...

最新文章

  1. Android之加载外部dex
  2. AI:大力出奇迹?Bigger is better?AI下一代浪潮?—人工智能的大语言模型(LLMs)的简介、发展以及未来趋势
  3. 2020-11-10(service入门)
  4. HBase总结(七)LSM理解
  5. PyCharm入门教程——在编辑器中选择文本
  6. Flask爱家租房--发布新房源(保存房屋基本信息)
  7. 智能手机前景 光芒万丈
  8. sql 获取第10到20个记录
  9. Burpsuite工具使用
  10. mysql+win10+64位安装步骤_win10 安装 mysql解压版安装步骤
  11. winpcap java封装_利 用jnetpcap 封装libpcap
  12. .NET基础示例系列之十五:操作Excel
  13. 计算机组成原理第六版课后答案第五章答案,第五章 计算机组成原理习题答案6.doc...
  14. h桥控制电机刹车_一种电机H桥制动电路的制作方法
  15. 为什么有些网站域名不以www开头?什么是二级域名?
  16. LOD原理及相关实现方式
  17. U盘中文件消失但仍占用空间
  18. 【python 笔记/小白快速入门python】python浅谈(一)犹抱琵琶半遮面
  19. 全面 一文理解微服务高可用的常用手段
  20. AD转换中知道数字量计算模拟量或温度

热门文章

  1. SYBASE里面出现客户端和服务器端字符集不匹配的情况解决方法
  2. 学javascript 必须了解 typeof 和 instanceof
  3. 【PL/SQL】Excel批量往数据库中插入数据:
  4. 解决阿里云postfix无法发送邮件问题
  5. CentOS7 命令行变成-bash-4.2$
  6. 回归分析---线性回归原理和Python实现
  7. 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点
  8. 【图文详细教程】maven3安装配置+eclipse离线安装maven3插件《《唯一成功的教程~~~2018-01-09》》...
  9. 黑客还是间谍?让你惊出一身冷汗的10个社会工程学黑客攻击手段
  10. 优化安卓应用内存的神奇方法以及背后的原理,一般人我不告诉他