搜档网
当前位置:搜档网 › Oracle同义词详细介绍

Oracle同义词详细介绍

Oracle同义词详细介绍
Oracle同义词详细介绍

Oracle同义词

Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle 数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、函数、JAVA类、包等等,数据库管理员都可以根据实际情况为他们定义同义词。通过Oracle数据库同义词管理,可以给数据库管理员与应用程序开发人员带来不少惊喜。

惊喜一:应用程序开发可以不管数据库的具体对象名。

在应用程序中,要不断的调用Oracle数据库的对象,如表、视图、对象等等。为此,在管理软件开发的过程中,若应用程序已经完成了某部分功能的开发。此时,数据库管理员若一定需要更改某个数据库对象的命名。那么,此时应用程序也需要调整。这在实际工作中,会很不方便。特别是有些应用程序如果提供了功能自定义平台的话,会非常的麻烦。如在一个ERP软件中,有报表自定义功能。在系统中,原来就有一张供应商产品明细表。但是,用户觉得这张报表信息不够齐全。用户希望能够显示出某个零件所对应的成品。此时,用户可以更改原有的数据库对象来完成这个自定义。但是,这往往不被建议这么做。因为若不小心修改错误,那么就很难再修改回来。所以自定义平台中,若需要对原有报表进行比较大的变更时,往往建议用户另外建立一个视图,来收集自己所需要的信息。若这么做的话,那么用户不仅需要定义数据库对象,而且还要重新调整前台应用程序的报表格式。显然这工作量有多大。

而现在有了同义词功能的话,这一切都会变得方便。因为前台应用程序可以不用作调整,而只需把数据库对象同义词进行重新定义即可。这既保障了前台应用程序的可恢复性;同时也降低了工作量。这就是Oracle数据库同义词给我们带来的第一个惊喜。

惊喜二:避免应用程序直接访问数据库对象,提高数据库安全性。

在开发数据库应用程序的时候,应当普遍遵守的一个规则是尽量避免直接饮用数据库的表、视图、函数或者其他对象。因为这会在很大程度上破坏数据库的安全性。

如在前台应用程序中直接调用数据库对象,那么攻击者只需要对应用程序所引用的对象进行分析,就可以很容易的了解后台数据库的基本逻辑结构。这显然会为攻击者提供很大的便利。所以,为了保障数据库的安全,前台应用程序最好通过同义词来访问后台数据库。如此的话,攻击者就很难通过前台应用程序的调用,来分析后台数据库的对象,以及对象之间的关系。

惊喜三:简化数据库对象的访问。

有时候,我们某个数据库对象的名字可能会很长,如

AD_USER_ROLE_NAME_TRL。若每次调用这个数据库对象的时候,都要输入这么长的对象名,肯定会让数据库管理员很头疼。但是,若名字定义的太短了呢,可读性就不好。其他一些数据库,只有牺牲可读性,把数据库对象的名字尽量缩短。

不过在Oracle数据库中,则可以不用这个烦恼。因为我们可以给这个数据库对象设置一个同义词,就好像别名一样。如此的话,在访问的时候,只需要通过同义词访问即可,而不需要输入这么长的对象名。

除了上面三个应用之外,在分布式数据库系统中,为存储在远程数据库中的对象创建同义词,使用户可以像使用本地对象一样对远程对象进行操作,就不需要提供网络连接名进行限定了。显然,这也会给一些分布式数据库管理员带来很大的便利。

Oracle数据库同义词有两种类型,分别是公用同义词与方案同义词。

公用同义词由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。在引用这些对象时,并不需要在其前面添加一个Public所有者名字作为限定。否则的话,如果在一个公用同义词前加上一个Public,就是画蛇添足,系统反而会给出一个错误提示。不过在实际应用中,笔者不建议用户采用公用同义词。因为现在系统中,公用同义词已经有很多。若用户仍然为数据库定义公用同义词的话,不能够起到简化数据库对象访问的作用。

方案同义词是跟公用同义词所对应,他是由创建他的用户或者方案所有。故也被称为私有同义词。当然,这个同义词的创建者,可以控制其他用户是否有权使用属于自己的方案同义词。方案同义词经常在应用程序开发中使用,为应用开发提供命名上的解决方案。如当一个数据库对象,如一张表,被重命名或者被复制成新的表时,并且新名字与老名字都需要使用的情况下,数据库管理员就可以使用方案同义词,即为老名字和新名字都建立专用同义词,不过他们都同时指向同一个数据库对象。

其实创建方案同义词也很简单。不过其必须要有一个前期条件,就是必须要拥有一定的权限,如CREATE SYNONYM权限,若是要在他人的方案中建立同义词的话,则还必须拥有CREATE ANY SYNONYM权限等等。这些是必须遵循的首要条件。否则的话,就不能够建立同义词。

另外需要注意的是,即使在数据库对象不存在的情况下,也可以为预计要建立的数据库对象设置同义词。这个特性很好用,它可以帮助数据库开发团队或者应用程序开发团队进行更高的协作。如只要数据库管理员跟应用程序预先做好对象的命名与同义词的定义工作,那么即使数据库管理员还没有开发好某个数据库对象,前台应用程序开发人员也可以通过引用同义词的方式引用为建立的数据库对象。如此的话,就不会因为某一步工作没有完成而给其他人的工作带来什么负面影响。

在方案同义词使用的过程中,还需要注意以下几个问题。

一是要注意使用自己的方案与他人方案的同义词方法有一定的差别。当用户在自己的方案内建立同义词后,用户就有对象的所有权限。可以像使用原来的数据库对象那样,使用这个对象的同义词。如查询数据、插入修改删除纪录等等。但是,与公用同义词不同,无论是否给其他用户授予如何使用方案同义词所对应的对象的对象权限,都不能够使用方案同义词,因为同义词是私有的。也就是说,如果有一张USER表。用户A虽然有CREATE ANY SYNONYM权限,可以为这个数据库对象建立同义词。但是,其没有这张表的Select权限。则用户A仍然不能够利用这个同义词来访问这个数据库对象。否则的话,数据库会提示“表或者视图不存在”。若A用户想要通过同义词访问这个User表的话,则必须拥有这个表的Select等对应的权限,才能够利用同义词对这个表进行对应的操作。也就是说,通过自己的方案中创建指向其他方案中的对象的方案同义词,只有在被授予了如何访问对象的对象权限之后,才可以按对象权限访问对象。另外需要注意,由于方案同义词是私有的,所以,其他用户使用自己方案同义词的话,在任何情况下,即使拥有某个对象的相关权限,也无法进行访问。这就是方案同义词的私有本质。

二是要注意Oracle数据库中的名称解析顺序。如我们通过FROM user 这个子句访问某个表的时候,数据库是如何来查询数据库中是否存在这个对象呢?他是有一定的解析顺序的。当我们书写的程序代码中若引用了一个未限定的数据库对象,如表、视图、存储过程等等,数据库会根据一定的顺序去查询是否有被引用的对象。通常情况下,会按如下的顺序进行验证。首先是看看当前用户是否拥有这个对象;其次这个对象名是否是当前用户拥有的一个同义词;最后,才去判断公用同义词的情况。所以,在实际应用中,我们数据库管理员要尽量利用方案同义词,少用公用同义词。这对提高数据库的运行效率还是很有帮助的。

三是数据字典视图就是公用同义词的一个好例子。有时候,我们可以借鉴他的配置来管理我们的公用同义词与方案同义词。在实际工作中,我们也可以预先把所有的数据库对象名设计好,并配上所有的同义词。然后利用脚本进行一次性生成。若一个个去生成同义词的话,在其工作量还是蛮大的。

Oracle应用程序编程1_5章试题汇总

一、选择题(每题1分,共40分) 1、Oracle数据库存储数据的方式包括()A A、文件系统 B、网络存储 C、自动存储设备 D、裸设备 2、Oracle是一种()数据库。D A、文件型 B、层次型 C、网状模型 D、关系型 3、Oracle10g的新特性是()D A、支持grid网格计算 B、提供RAC功能 C、为internet而设计 D、提供基于浏览器的企业管理器 4、Oracle数据库启动时必须启动的服务是()A A、OracleService B、OracleJobSchedulerOrcl C、OracleDBConsole D、OracleOraDB10g_homeliSQL*Plus 5、Oracle服务器提供的安装类型不包括()D A、企业版 B、标准版 C、个人版 D、移动版 6、下面哪项信息不会保存在控制文件中(D) A、日志文件的名称及位置 B、数据库的名称 C、初始化参数文件的位置 D、数据文件的名称和位置 7、下列哪个组件不是Oracle例程的组成部分?()C A、系统全局区SGA B、PMON后台进程 C、控制文件 D、调度进程 8、下列哪一个后台进程和对应的数据库组件能够保证即使用户对数据库所做的修改没有写入数据文件,也不会发生修改内容丢失的情况?()D A、DBWN后台进程与数据库缓存 B、LGWR后台进程与重做日志文件 C、CKPT后台进程与控制文件 D、ARCn后台进程与归档重做日志文件 9、如果一个服务器进程非正常终止,Oracle系统将使用下列哪一个进程来释放它占用的资源()A A、SMON B、PMON C、CKPT D、DBWR 10、以下不属于Oracle的物理组成结构的是()D A、控制文件 B、日志文件 C、数据文件 D、安装文件 11、系统全局区(SGA)是一个庞大的共享内存结构,包含了一个数据库实例的数据或控制信息。SGA可以分为不同的池,以下池不属于SGA的是()C A、共享池 B、大池 C、数据池 D、Java池 12、在Oracle数据库中数据增长的基本单位是()B A、区 B、块 C、段 D、表空间

2017oracle期末考试题及答案

5.10.15.20.25.30. 1、以下()内存区不属于SGA。A A.PGA B.日志缓冲区 C.数据缓冲区 D.共享池 2、()模式存储数据库中数据字典的表和视图。 B A.DBA B.SCOTT C.SYSTEM D.SYS 3、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字, 则Oracle就将()表空间分配给用户作为默认表空间。 C A.HR B.SCOTT C.SYSTEM D.SYS 4、()服务监听并按受来自客户端应用程序的连接请求。 A A.OracleHOME_NAMETNSListener B.OracleServiceSID C.OracleHOME_NAMEAgent D.OracleHOME_NAMEHTTPServer 5、()函数通常用来计算累计排名、移动平均数和报表聚合等。 B A.汇总 B.分析 C.分组 D.单行 6、()SQL语句将为计算列SAL*12生成别名Annual Salary D A.SELECT ename,sal*12 ‘Annual Salary’ FROM emp; B.SELECT ename,sal*12 “Annual Salary” FROM emp; C.SELECT ename,sal*12 AS Annual Salary FROM emp; D.SELECT ename,sal*12 AS INITCAP(“Annual Salary”) FROM emp; 7、锁用于提供( )。D

A.改进的性能 B.数据的完整性和一致性 C.可用性和易于维护 D.用户安全 8、( )锁用于锁定表,允许其他用户查询表中的行和锁定表,但不 允许插入、更新和删除行。 C A.行共享 B.行排他 C.共享 D.排他 9、带有( )子句的SELECT语句可以在表的一行或多行上放置排他锁。B A.FOR INSERT B.FOR UPDATE C.FOR DELETE D.FOR REFRESH 10、使用( )命令可以在已分区表的第一个分区之前添加新分区。 A.添加分区 B.截断分区 C.拆分分区 D.不能在第一个分区前添加分区 11、( )分区允许用户明确地控制无序行到分区的映射。 A.散列 B.范围 C.列表 D.复合 12、可以使用()伪列来访问序列。 A.CURRVAL和NEXTVAL B.NEXTVAL和PREVAL C.CACHE和NOCACHE D.MAXVALUE和MINVALUE 13、带有错误的视图可使用()选项来创建。 A.FORCE B.WITH CHECK OPTION

oracle数据字典详解

学习笔记:oracle数据字典详解 --- 本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图。然后列出一些附例。 数据字典系统表,保存在system表空间中。 由表和视图组成,由服务器在安装数据库时自动创建,用户不可以直接修改数据库字典,在执行DDL 语句时,oracle会自动修改。 记录一些表和视图(只读的),新建的表不要和这空间建在一起(9i以前的版本新用户建的表默认表空间为system,注意修改) --查询数据字典: select * from dictionary --数据字典导出方法: conn / as sysdba spool on spool c:\dic.txt select * from dictionary spool off 主要四部分: 1,内部RDBMS表:x$…… 2,数据字典表:……$ 3,动态性能视图:gv$……,v$…… 4,数据字典视图:user_……,all_……,dba_……

数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图) +++ 一,内部RDBMS表x$……,例如:x$kvit,x$bh,x$ksmsp,x$ksppi和x$ksppcv 核心部分,用于跟踪内部数据库信息,维持DB的正常运行。 是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。最好不要修改. x$kvit=Kernel Layer Performance Layer V Information tables Transitory Instance parameter 数据库启动时,动态创建x$…… +++ 二,数据字典表……$,如tab$,obj$,ts$…… --用来存储表、索引、约束以及其他数据库结构的信息。 --创建数据库时通过脚本sql.bsq来创建,脚本:$oracle_home/rdbms/admin/sql.bsq +++ 三,动态性能视图gv$……,v$……,如V$parameter --记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 --数据库创建时建立的。 --只有sysdba可以直接访问。 --查看表v$fixed_view_definition(***),可以查看GV$和V$视图的创建语句。(oracle提供一些特殊视图,用来记录其他视图的创建方式,v$fixed_view_definition就是其中之一) --select view_definition from v$fixed_view_definition where view_name='V$FIXED_TABLE'; --gv$……=Global V$,在X$……基础上创建,是为了满足OPS环境(多个实例)的需要面产生的,可以返回多个实例的信息。

几个Oracle的笔试题

Oracle笔试试题 1. SQL必备 <选择题每空 1 分共 14题> 1. 如果在where子句中有两个条件要同时满足,应该用以下哪个逻辑符来连接 ( ) A.OR B.NOT C.AND D.NONE 2. 外连接的条件可以放在以下的那一个子句中( ) A.FROM B.WEHRE C.SELECT D.HAVING E.GROUP BY F.ORDER BY 3. 在从两个表中查询数据时,连接条件要放在哪个子句中( ) A.FROM B.WHERE C.SELECT D.HAVING E.GROUP BY 4. 用以下哪个子句来限制分组统计结果信息的显示( ) A.FROM B.WEHRE C.SELECT D.HAVING E.GROUP BY F.ORDER BY 5. 以下需求中哪个需要用分组函数来实现( ) A.把ORDER表中的定单时间显示成 'DD MON YYYY' 格式 B.把字符串 'JANUARY 28, 2000' 转换成日期格式 C.显示PRODUCT 表中的COST 列值总量 D.把PRODUCT表中的DESCRIPTION列用小写形式显示 6. 以下那些命令可以暗含提交操作( )

A.GRANT B.UPDATE C.SELECT D.ROLLBACK 7.RDBMS是下列哪一项的缩写( ) A. Relational DataBase Management System(关系数据库管理系统) B. Relational DataBase Migration System(关系数据库移植系统) C. Relational Data Migration System(关系数据移植系统) D. Relational DataBase Manage System(关系数据库管理系统) 8.INSERT 是( ) A. DML语句 B. DDL语句 C. DCL语句 D. DTL语句 9.SELECT CHR(66) FROM DUAL的结果是( ) A. Z B. S C. B D. 都不是 10.函数返回一个值除以另一个值后的余数( ) A. MOD B. ABS C. CEIL D. 以上都不是 11. 什么锁用于锁定表,仅允许其他用户查询表中的行,行不允许插入,更新, 或删除行( ) A. 共享 B. 排他 C. 共享更新 D. 以上都不是 12.什么是oracle提供的一个对象,可以生成唯一的连续的整数( ) A. 同义词 B. 序列 C. 视图 D. 没有 13. 那种类型的约束可以自动创建索引( ) A.CHECK B.UNIQUE

Oracle同义词

相当于alias(别名),比如把user1.table1在user2中建一个同义词table1 create synonym table1 for user1.table1; 这样当你在user2中查select * from table1时就相当于查select * from user1.table1; 优点自己总结吧。 例如: 在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个同义词吧!这样我们就可以直接使用同义词来使用表了。 Oracle数据库对象—同义词 1 同义词的概念 Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。 2 同义词的分类 Oracle数据库同义词有两种类型,分别是公用同义词与私有同义词: 公用同义词由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。 私有同义词是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。 3 同义词的创建及删除 创建公有同义词的语法: Create [public] synonym 同义词名称for [username.]objectName; Drop [public] synonym 同义词名称 4同义词的作用 (1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。

oracle同义词

oracle同义词.txt30生命的美丽,永远展现在她的进取之中;就像大树的美丽,是展现在它负势向上高耸入云的蓬勃生机中;像雄鹰的美丽,是展现在它搏风击雨如苍天之魂的翱翔中;像江河的美丽,是展现在它波涛汹涌一泻千里的奔流中。Oracle同义词创建及其作用 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个Oracle同义词吧!这样我们就可以直接使用同义词来使用表了。 1.同义词的概念 Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。 2.Oracle同义词的分类 Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。 1)公用Oracle同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。 2)私有Oracle同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。 3.Oracle同义词创建及删除 创建公有Oracle同义词的语法:Create [public] synonym 同义词名称for [username.]objectName; Drop [public] synonym 同义词名称 4.Oracle同义词的作用 1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user 名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。 2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。 3)为分布式数据库的远程对象提供位置透明性。 5.Oracle同义词在数据库链中的作用 数据库链是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。 Create database link 数据库链名 connect to user名 identified by 口令 using ‘Oracle 连接串’; 访问对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位置透明性。

Oracle数据库应用

Oracle账户解锁 Oracle数据库自带了许多账户,但默认情况下,Oracle只对其中5个账户进行了解锁,分别是sys、system、dbsnmp、sysman和mgmt_view,而其他账户出于锁定状态,其中sys、system具有管理员权限。 查看Oracle账户的锁定状态: SQL>select username, account_status from dba_users; (expired)表示账户为过期状态(需要设置口令才能解除此状态) SQL>alter user scott account unlock; SQL>alter user scott identified by tiger; (为scott账户设置口令) SQL>select username, account_status from dba_users where username = 'SCOTT'; (通过数据字典dba_users查看scott账户的状态) Oracle数据库体系结构 一般Oracle数据库在物理上主要由3种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。还有参数文件、备份文件、归档重做日志文件,以及警告、跟踪日志文件等。

Oracle数据库从逻辑存储结构上来讲,主要包括表空间(tablespace)、段(segment)、区(extent)和数据块(block)。其中数据块都具有相同的结构:块头部、表目录、行目录、空闲空间、行空间。 Oracle进程结构: DBWn(Database Writer,数据库写入)进程 LGWR(Log Writer,日志写入)进程 CKPT(Check Point,检查点或检验点)进程 SMON(System Monitor,系统监控)进程 PMON(Process Monitor,进程监控)进程 ARCn(Archive Process,归档)进程 RECO(Recovery,恢复)进程 数据字典 Oracle数据字典的视图类型

创建使用Oracle同义词

设定同义词,方便使用 SQL select * from emp;等用于select * from abc; 建立共有的同义词 SQL 如果用户的等级不够建立public同义词,可以在system下授权: grant create any synonym to scott; grant create public synonym to scott; 取消授权: revoke create any synoym from scott; revoke create public synoym from scott; 取消同义词: drop public synonym abc; 授权取消同义词: grant dorp public synonym to scott; 取消授权: revoke drop public synonym to scott; 15.9 引入同义词(Synonym)的原因 在一些商业数据库中,有时信息系统的设计或开发者为了增加易读性,故意定义一些很长的表名(也可能是其它的对象)。这样虽然增加了易读性,但在引用这些表或对象时就不那么方便,也容易产生输入错误。另外在实际的商业公司里,一些用户觉得某一个对象名有意义也很好记,但另一些用户可能觉得另一个名字更有意义。 ORACLE系统提供的同义词(Synonym)就是用来解决以上的难题的。设想一下在您的日常工作中您每天都要使用supplier表许多次,而且您的英文打字的水平并不高。在这种情形下,您就可以借助于同义词(Synonym)来帮助您提高生产力。 15.10 怎样创建同义词(Synonym)

现在您就可以使用如下的CREA TE SYNONYM语句(例15-38)为表supplier建了一个同义词(别名)s。 例15-38 SQL> CREA TE SYNONYM s 2 FOR supplier; 例15-38结果 同义词已创建。 现在您就可以把同义词(别名)s当成supplier来使用。您可以使用如下的查寻语句(例15-39)来验证这一点。 例15-39 SQL> SELECT * 2 FROM s; 例15-39结果 S_CODE SNAME CONTACT PHONE FAX ---------- ------------------------- --------------- --------------- ------- 2000 仙客来百货张根发4444944 4444844 2010 心太软小商品石铁心1741741 1741742 2021 食为天餐具金元宝1671671 1671674 2032 食为先餐具陆合彩1681684 1681684 那您可能会问,您怎样才能知道您到底拥有哪些同义词(Synonym)呢? 还记得数据字典user_objects吗?既然同义词(Synonym)是对象,它们在这个数据字典中就一定有记载。因此您可以使用如下的查寻语句(例15-41)从数据字典user_objects中得到您所拥有的全部同义词(Synonym)的信息。当然为了使SQL*PLUS的显示输出更加清晰您应该先使用如下的SQL*PLUS格式化命令(例15-40)。 例15-40 SQL> col object_name for a20 例15-41 SQL> SELECT object_name, object_type, created, status 2 FROM user_objects 3 WHERE object_type LIKE 'SYN%'; 例15-41结果 OBJECT_NAME OBJECT_TYPE CREA TED STA TUS -------------------- ------------------ ---------- ------ S SYNONYM 28-4月-03 V ALID 例15-41显示的结果表明:在您的模式(用户)下只有一个同义词(Synonym),那就是您刚刚建立的同义词(Synonym)s。 但是例15-41显示的结果并没有告诉您这个同义词(Synonym)到底是基于那个表的及表的主

ORACLE建表样例

ORACLE数据库建表: ----------create table CREATE TABLE MMS_APP_ORDER_INFO ( ID_APP_ORDER_INFO VARCHAR2(50) DEFAULT SYS_GUID() NOT NULL, DEVICEID VARCHAR2(50) NOT NULL, LOGIN_APP_ORDER VAECHAR2(1000) NOT NULL, CREATED_BY VARCHAR2(100) NOT NULL , UPDATED_BY VARCHAR2(100) NOT NULL , DATE_CREATED DATE NOT NULL , DATE_UPDATED DATE NOT NULL ); --------ADD COMMENTS TO THE TABLE COMMENT ON TABLE MMS_APP_ORDER_INFO IS 'APP排序信息表'; --------ADD COMMENTS TO THE COLUMNS COMMENT ON COLUMN MMS_USER_APP_INFO.ID_APP_ORDER_INFO IS '编号'; COMMENT ON COLUMN MMS_USER_APP_INFO.DEVICEID IS '设备ID'; COMMENT ON COLUMN MMS_USER_APP_INFO.LOGIN_APP_ORDER IS '设备已登陆APP顺序(倒叙)'; COMMENT ON COLUMN MMS_USER_APP_INFO.DATE_CREATED IS '创建时间'; COMMENT ON COLUMN MMS_USER_APP_INFO.CREATED_BY IS '创建人'; COMMENT ON COLUMN MMS_USER_APP_INFO.DATE_UPDATED IS '更新时间'; COMMENT ON COLUMN MMS_USER_APP_INFO.UPDATED_BY IS '更新人'; ---------create index CREATE UNIQUE INDEX MAAMDATA.PK_MMS_APP_ORDER_INFO ON MAAMDATA.MAAM_APP_ORDER_INFO(ID_APP_LOGIN_INFO); ALTER TABLE MAAMDATA.MAAM_USER_APP_INFO ADD CONSTRAINT PK_MAAM_APP_ORDER_INFO PRIMARY KEY(ID_APP_LOGIN_INFO) USING INDEX PK_MAAM_APP_ORDER_INFO; --------create synonym(同义词) CREATE PUBLIC SYNONYM MAAM_APP_ORDER_INFO FOR MAAMDATA.MAAM_APP_ORDER_INFO; ------create privilege (权限) 使用GRANT命令 GRANT SELECT, INSERT, DELETE, UPDATE ON MAAMDATA.MMS_APP_ORDER_INFO TO DONGHAIHUA; GRANT SELECT ON HMRPTDATA.WIDETABLE_APPID_DEVICEID TO MAAMDATA,DONGHAIHUA;

Oracle复习题1

单选:1 Oracle 10g中的g表示(C)。 A 网络 B 数据库 C 网格计算 D 版本 2 Oracle 10g的管理工具中,(B)是一个非常重要的、在服务器端和客户端都可以使用的工具。主要功能有:输入、运行和调试SQL语句、PL/SQL块。 A OUI B SQL*PLUS C OEM D DBCA 3 Oracle数据库的例程由( D )组成。 A SGA和PGA B SGA和数据库 C 数据库和后台进程 D SGA(系统全局区)和后台进程 4 Oracle进程结构中完成更新控制文件与数据文件,使其同步并触发DBWR进程,使其将脏缓存块写入数据文件中的进程是(C)。 A 用户进程 B 服务进程 C 后台进程CKPT D 后台进程DBWR 5某用户想查看自己所能看到的表信息,那么应该看( D )视图。 A v$tables B dba_tables C all_tables D user_tables 6 可以在Oracle服务器的安装目录的(C)文件中查看Oracle的各种端口的使用情况。 A spfile.ora B initorcl.ora C portlist.ini D tnsname.ora 7相对于Oracle数据库的作用,类似于Windows操作系统中注册表的作用。这类数据库文件是( D ): A 参数文件 B 数据文件 C 重做日志文件 D 控制文件 8 Oracle的逻辑存储结构中由大到小的顺序是(B): A 表空间、区、段、块 B 表空间、段、区、块 C 表空间、块、段、区 D 段、区、表空间、块 9 下列哪种表空间可以被设置为脱机状态(B)。 A 系统表空间 B 用户表空间 C 临时表空间 D 撤销表空间 10 读下段程序: SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STA TUS ---------- ---------- ---------- ---------- ---------- --- ----------- 1 1 29 52428800 1 NO INACTIVE 2 1 30 52428800 1 NO CURRENT 3 1 28 52428800 1 NO INACTIVE SQL> alter system switch logfile; 系统已更改。 请问:当前使用的日志组和日志序列号分别是( C)。

如何创建同义词

如何创建同义词 导读:同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。下面就让我们来了解一下如何创建同义词! 如何创建同义词 Oracle的同义词有两种类型:公有同义词与私有同义词。 1:公有同义词由一个特殊的用户组Public所拥有。 2:私有同义词是由创建他的用户所有。 创建同义词的语法: create[public]synonym同义词名称for[username.]objectName 删除同义词的语法: Drop[public]synonym同义词名称 查看所有同义词: select*fromdba_synonyms 【Oracle同义词创建及其作用】 从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。 1.创建同义词语句: createpublicsynonymtable_nameforuser.table_name; 其中第一个user_table和第二个user_table可以不一样。此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个

DatabaseLink(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:createsynonymtable_namefortable_name@DB_Link;当然,你可能需要在user用户中给当前用户(user2)授权:grantselect//onuser2 2.删除同义词: droppublicsynonymtable_name; 3.查看所有同义词: select*fromdba_synonyms 同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。 Oracle数据库中提供了同义词管理的功能。Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。 AD: 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个Oracle同义词吧!这样我们就可以直接使用同义词来使用表了。

Oracle同义词赋权

--1)创建测试用户 user1,user2,user3,并给user2和user3赋创建同义词的权限----------------------------------dba -- Create the user create user user1 identified by user1; -- Grant/Revoke role privileges grant connect to user1 with admin option; grant resource to user1 with admin option; -- Create the user create user user2 identified by user2; -- Grant/Revoke role privileges grant connect to user2 with admin option; grant resource to user2 with admin option; -- Grant/Revoke system privileges grant create synonym to USER2 with admin option;--add -- Create the user create user user3 identified by user3; -- Grant/Revoke role privileges grant connect to user3 with admin option; grant resource to user3 with admin option; -- Grant/Revoke system privileges grant create synonym to USER3 with admin option;--add --2)登录user1,创建测试表,将查询权限赋给user2 ----------------------------------user1 create table syn_test(syn_test char(1)); grant select on syn_test to user2; --3)登录user2,创建同义词,测试查询权限 ----------------------------------user2 -- Create the synonym create or replace synonym syn_test for USER1.syn_test; select * from syn_test;--ok select * from user1.syn_test;--ok --4)登录user3,创建同义词,测试查询权限 ----------------------------------user3 -- Create the synonym create or replace synonym syn_test for USER2.syn_test; select * from syn_test;--ORA-00942:表或视图不存在 select * from user2.syn_test;--ORA-00942:表或视图不存在 --5)登录user2,给user3赋查询同义词权限 ---------------------------------user2 grant select on syn_test to user3;--ORA-01031:权限不足

oracle 实验-视图、序列、同义词的建立

实验七 名称:视图、序列、同义词的建立 姓名:学号:班级: 实验内容: 1.P192 2、3、4、5 2.P198 1、2 实验步骤和结果:(截图和步骤) P192: 2、利用scott.emp表创建视图并完成以下操作: (1)创建简单视图。 CONNECT scott/tiger; GRANT INSERT,UPDATE,DELETE on emp to system; CONNECT system/abc; CREATE OR REPLACE VIEW v_emp AS SELECT empno,ename,job,hiredate,deptno FROM scott.emp; 实验结果如下图所示:

(2)查看视图的结构。 DESC v_emp; 实验结果如下图所示: (3)从视图中查询数据。 SELECT*FROM v_emp WHERE deptno=10; 实验结果如下图所示:

(4)查看视图中各字段的可更新性。 SELECT*FROM USER_UPDATEBLE_COLUMNS WHERE table_name=‘V_EMP’; 实验结果如下图所示: (5)向视图中增加新数据。 INSERT INTO v_emp V ALUES(1234,'JACK','CLERK','29-4月-1963',10); 实验结果如下图所示:

(6)利用视图修改数据。 UPDATE v_emp SET ename='Mark' WHERE empno=1234; 实验结果如下图所示:

(7)利用视图删除数据。 DELETE FROM v_emp WHERE empno=1234; 实验结果如下图所示: 3、利用scott.emp创建只读视图: CREATE OR REPLACE VIEW v_emp_readonly AS SELECT empno,ename,job,hiredate,deptno FROM scott.emp WITH READ ONLY; 实验结果如下图所示:

Oracle期末考试复习题

oracle复习题 一、填空题: 1. Oracle EnterpriseManager是一个基于B/S的框架系统。 2.Oracle数据库的存储结构分为物理结构和逻辑结构。 3.在游标或者游标变量打开后还没有进行第一次提取时,%found属性为null。 4. 在oracle中已commit或rollback作为上一个事务的结束标志及下一个新事物开始的标志。 5. DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE. 6.索引的主要目标是提高访问的速度。 7.在Oracle database 10g 系统中,可以使用DBCA工具和CREATE DATEBASE命令两种方式创建数据库。 8. 命令Startup nomount只能启动数据库实例,但不能装载和打开数据库。 9.在输入URL进入Oracle Enterprice Manager Database Control 的时候,必须指出ip地址和端口号。 10.在登录Oracle Enterprice Manager Database Control时,连接身份有两种选择,分别为normal和sysdba。 二、选择题: 1.当Oracle服务器启动时,下列哪种文件不是必须装入内存的()。D A. 数据文件 B. 控制文件 C. 日志文件 D. 归档日志文件 2. 在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据()。B A.用户进程 B. 服务器进程 C. 日志写入进程(LGWR) D. 检查点进程(CKPT) 3. 在Oracle数据库的逻辑结构中有以下组件:A 表空间;B 数据块;C 区;D段;这些组件从大到小依次是()。B A. A→B→C→D B. A→D→C→B C. A→C→B→D D. D→A→C→B 4. (B )可以从过程返回多个值。 A. 使用IN参数 B. 使用OUT参数 C. 使用指针 D. 不能 5.PL/SQL为内存耗尽时,预定义了(C )异常。 A. NO_DATA_FOUND B. MEMORY_ERROR C. STORAGE_ERROR D. NO_MEMEORY_FOUND 6. 一下是同义词不具有的用途是(D )。 A. 简化SQL语句 B. 隐藏对象的名称和所有者 C. 提供对对象的公共访问 D. 显示对象的名称和所有者 7. 在Windows操作系统中,Oracle的( A )服务监听并接受来自客户端应用程序的连接请求。 A. OracleHOME_NAMETNSListener B. OracleServiceSID C. OracleHOME_NAMEAgent D. OracleHOME_NAMEHTTPServer 8. 在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将 (B )表空间分配给用户作为默认表空间。 A. USER B. SYSTEM C. SYS D. DEFAULT 9. 下列哪种Lob类型用来存储数据库以外的操作系统文件()。D A. CLOB B. BLOB C. CFILE D. BFile 10. Oracle的控制文件不包括以下哪些内容()。A A. 数据库名称 B. 数据文件和日志文件的名称和位置 C. 时间戳

Oracle-选择题题库只是分享

Oracle 选择题题库 1.以下命令哪个是 SQL*PLUS 命令?() A.UPDATE B.EDIT C.SELECT D.ALTER TABLE 2.用SQL*PLUS的_____命令可以查看表的结构信息,包括列的名称和数据类型 A.DESCRIPTION B.DESC C.SHOW TABLE D.SHOW USER 3.Oracle的前端工具是() A.SQL*PLUS B.C++ C.PL/SQL D.JAVA 4.在SQL*PLUS中,如何运行SQL脚本程序( ) A./ B.@脚本C.EXE 脚本D.不能在SQL*PLUS中直接运行脚本5.用命令将SQL*PLUS缓冲区中的内容保存到文件中,使用下列哪种方法( ) A.将缓冲区的内容Ctrl+C,然后再Ctrl+V到文件中即可 B.使用SAVE命令参数是文件路径 C.WRITE 方式,参数是文件路径 D.Oracle会自动保存 6.用来设置一行能够显示的字符长度的命令是( ) A.SET LINESIZE B.SET LINE C.SET LINEBUFFER D.SET SIZELINE 7.以下哪个命令用来设置查询显示结果的列宽 A.SET COLUMN SIZE B.COLUMN 列 FORMAT 长度 C.COLUMN 列长度D.长度 OF COLUMN 8.ORACLE用来判断列值是否为空的操作符是____ A.= NULL B.IS NULL C.AS NULL D.NULL IS 9.在客户定单表(CUSTOMER)中有一列为单价(PRICE),写一个SELECT命令显示所有单价 在500以上的查询语句。 A SELECT * FROM CUSTOMER WHERE PRICE>500; B SELECT * FROM CUSTOMER WHERE PRICE BETWEEN 500 AND *; C SELECT * FROM CUSTOMER WHERE PRICE LIKE '%500%'; D SELECT * FROM CUSTOMER WHER E PRICE>=500; 10.分析以下SQL 命令: SELECT price FROM inventory WHERE price BETWEEN 1 AND 50 AND (price IN(55, 30, 95); 命令执行后的输出结果是:() A 55 B 30 C 95 D NULL 11.分析以下的SQL 命令: SELECT manufacturer_id FROM inventory WHERE manufacturer_id LIKE '%N\%P\%O%' ESCAPE '\'; 命令执行的返回结果是() A 所有包含'NPO'的纪录 B 所有包含'N\P\O'的纪录 C 所有包含'N%P%O'的纪录

Oracle同义词详细介绍

Oracle同义词 Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle 数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、函数、JAVA类、包等等,数据库管理员都可以根据实际情况为他们定义同义词。通过Oracle数据库同义词管理,可以给数据库管理员与应用程序开发人员带来不少惊喜。 惊喜一:应用程序开发可以不管数据库的具体对象名。 在应用程序中,要不断的调用Oracle数据库的对象,如表、视图、对象等等。为此,在管理软件开发的过程中,若应用程序已经完成了某部分功能的开发。此时,数据库管理员若一定需要更改某个数据库对象的命名。那么,此时应用程序也需要调整。这在实际工作中,会很不方便。特别是有些应用程序如果提供了功能自定义平台的话,会非常的麻烦。如在一个ERP软件中,有报表自定义功能。在系统中,原来就有一张供应商产品明细表。但是,用户觉得这张报表信息不够齐全。用户希望能够显示出某个零件所对应的成品。此时,用户可以更改原有的数据库对象来完成这个自定义。但是,这往往不被建议这么做。因为若不小心修改错误,那么就很难再修改回来。所以自定义平台中,若需要对原有报表进行比较大的变更时,往往建议用户另外建立一个视图,来收集自己所需要的信息。若这么做的话,那么用户不仅需要定义数据库对象,而且还要重新调整前台应用程序的报表格式。显然这工作量有多大。 而现在有了同义词功能的话,这一切都会变得方便。因为前台应用程序可以不用作调整,而只需把数据库对象同义词进行重新定义即可。这既保障了前台应用程序的可恢复性;同时也降低了工作量。这就是Oracle数据库同义词给我们带来的第一个惊喜。 惊喜二:避免应用程序直接访问数据库对象,提高数据库安全性。 在开发数据库应用程序的时候,应当普遍遵守的一个规则是尽量避免直接饮用数据库的表、视图、函数或者其他对象。因为这会在很大程度上破坏数据库的安全性。 如在前台应用程序中直接调用数据库对象,那么攻击者只需要对应用程序所引用的对象进行分析,就可以很容易的了解后台数据库的基本逻辑结构。这显然会为攻击者提供很大的便利。所以,为了保障数据库的安全,前台应用程序最好通过同义词来访问后台数据库。如此的话,攻击者就很难通过前台应用程序的调用,来分析后台数据库的对象,以及对象之间的关系。 惊喜三:简化数据库对象的访问。

相关主题