精华内容
下载资源
问答
  • 会成功,本来想授权来着,但一看这种情况也不用授权了,今天又遇到问题,我通过一张测试表,建立了一个私有的同义词,结果竟然删除不了,查看报错信息,啥也没有,想修改DB_LINK的名字修改不了,一改就挂死,查看锁...
           最近公司有一个想法,就是把老数据库的业务数据迁移到新的库里,老库的架构是AIX下的双节点RAC,新库是一个单机的linux oracle 10G,想法很简单,就是在新的库里,创建一个跟老库架构一模一样的数据库,一开始是想把一些总查的东西按任务分配导入到新库,分担老库查询的负担,第二步的测试方法就是利用DB_LINK,oracle的同义词,首先建立DB_LINK,然后创建同义词,注意这个同义词和老库的表名是相同的,意在以后用户在查老库或者修改老库的数据就通过db_link直接指到新的库里,进行修改和查询,也是为了减轻老库的性能,但做了3天了,遇到了诸多问题,首先,建立同义词和DB_LINK后,用户查表,可以指到新的表里,但是应用程序似乎并不认这个同义词,插入数据会失败,当然不会报错,但在数据库里进行insert操作,会成功,本来想授权来着,但一看这种情况也不用授权了,今天又遇到问题,我通过一张测试表,建立了一个私有的同义词,结果竟然删除不了,查看报错信息,啥也没有,想修改DB_LINK的名字修改不了,一改就挂死,查看锁的相关信息,也没有这张表的,通过sql_trace来跟踪,发现删除同义词的时候里面也没有什么阻碍的信息,全是系统里表的各种查询之类的,实在非常犯愁。把DB_LINK删除,再删还是删不了,改名也不行,明天再研究....


    待续。。。。。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25116248/viewspace-1123654/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/25116248/viewspace-1123654/

    展开全文
  • 删除共有同义词: drop public sysnonym 同义词名; 共有同义词的创建和删除,一般建议由管理员来操作。 PLSQL: 对SQL进行编程 开发工具 plsql developer oracle sql developer plsql: declare 变量、常量、光标...

    序列:

    模拟自增,本质就是内存中的数组

    创建格式:

    	create sequence 序列名;
    	increment by 步长;		默认是1
    	start with 起始值;		默认是1
    	maxvalue	nomaxvalue
    	minvalue	nominvalue
    	cycle		nocycle
    	cache		nocache
    

    两个属性: currval 当前值, nextval 下一个值
    序列会接着上一次的值继续使用,不会归零

    查看序列

    	select *from user_sequences;
    

    示例:

    新建一个表
    	create table person(pid number primary key,pname varchar2(10));
    插入数据
    	insert into person values(myseq.nextval,'zs');
    	insert into person values(myseq.nextval,'ls');
    	insert into person values(myseq.nextval,'ww');
    创建自定义序列
    	create sequence myseq1
    	increment by 2
    	start with 1
    	maxvalue 9
    	minvalue 1
    	cycle
    	cache 3;
    	cache元素的个数 <= 循环元素
    	1 3 5 7 1 3 5 7 ....
    

    循环序列不能用于给 主键/唯一约束的键 赋值

    裂缝:

    	[1,2,3,4,.....20]
    	出现断电、异常、回滚、多表使用同一个序列...
    	使用过属性nextval,但是没有存入数据,下次再次使用时,中间有裂缝 
    

    修改序列

    	alter sequence myseq
    	increment by 2;
    	只对修改以后的操作有效
    

    删除序列:

    	drop sequence myseq;
    

    索引:

    类似于书的目录

    索引类型: 默认B树索引(默认) 位图索引

    创建索引:

    	create index 索引名;
    	注意: 主键默认就是索引
    单层:create index myindex on emp(deptno);
    多层:create index myindex1 on emp(deptno,sal);
    

    什么时候适合建立索引?

    	数据集中的列,经常在where中使用的列,数据量比较大
    	数据集中的列:主键列,不集中,但是因为需要频繁使用, 也适合建索引。
    

    删除索引:

    	drop index myindex;
    

    同义词(别名)

    数据库对象(表 视图 索引 …) 起别名 (默认是私有/专用的)

    查看hr: employees;

    查看其他用户的表,报错“表或视图不存在”  也可能是权限不足导致的
    去sys账户授权:  
    	grant xxx to 用户名;		grant select on he.employees to scott;
    	revoke xxx from 用户名;
    

    查询:

    	select count(*) from hr.employees;		名字太长
    

    起别名:

    		create synonym hremp for hr.employees;
    

    再查询时可以

    	select count(*) from hremp;
    

    创建共有同义词:

    	create public synonym hremp2 for hr.employees;
    

    删除同义词: drop sysnonym 同义词名;
    删除共有同义词: drop public sysnonym 同义词名;
    共有同义词的创建和删除,一般建议由管理员来操作。

    PLSQL: 对SQL进行编程

    开发工具

    plsql developer
    oracle sql developer
    

    plsql:

    declare
    	变量、常量、光标(游标)、例外(自定义异常)
    begin
    	写代码
    	exception
    		捕获异常
    end;
    

    引用型变量:

    	pname emp.ename%type;		能保存一个值
    

    记录型变量:(相当于java中的对象,同时保存多个变量值)

    	emp_info emp%rowtype;			能保存一行值
    	SELECT * into emp_info FROM emp where empno = 7788;
    

    打印:

    	dbms_output.put_line(emp_info.empno ||'--'|| emp_info.ename ||'--'|| emp_info.job); 
    

    条件语句if:

    1.
    	if 条件 then...
    	end if;
    2.
    	if 条件 then...
    	else ....
    	end if;
    3.
    	if 条件 then...
    	elsif 条件 then...
    	else ...
    	end if;
    

    循环结构 while do…while for

    1.
    	while 条件 
    	loop
    	...
    	end loop;
    2.
    	loop
    	...
    	exit when 退出条件;
    	end loop;
    3.
    	for i in 1..10
    	loop
    	...
    	end loop;
    

    计算 1-5之和

    set SERVEROUTPUT ON;
    declare
    		pnum number:=1;
    		psum number :=0;
    begin
    	loop
    		exit when pnum>5;
    		psum := psum+pnum;
    		pnum := pnum +1;
    	end loop; 
    	dbms_output.put_line(psum);
    end;
    

    游标(光标) cursor:集合

    定义语法:
    		cursor 光标名(参数列表)
    		is
    		select ...
    
    光标的属性
    		%isopen				判断光标是否打开
    		%rowcount			读取的个数
    		%found				判断下一行是否存在数据
    		%notfound
    
    查询并打印全部员工的姓名、薪水
    setSERVEROUTPUT ON;
    declare
    		cursor cemp is select ename,sal from emp;
    		pename emp.ename%type;
    		psal emp.sal%type;
    begin
    	open cemp;  						--1.打开光标
    	loop        						--2.定义循环,准备获取每一行数据
    		fetch cemp into pename,psal; 	--3.一行一行的获取光标的值
    		exit when cemp%notfound;		--4.使用数据,写跳出循环条件
    		dbms_output.put_line(pename||'的工资是'||psal);--
    	end loop;
    	close cemp; 						--5.关闭光标
    end;
    
    涨工资: president 1000,manger 800 其他 400
    set SERVEROUTPUT ON;
    declare
    		cursor cemp is select empno,job from emp;
    		pempno emp.empno%type;
    		pjob emp.job%type;
    begin
    	open cemp;  
    	loop        
    		fetch cemp into pempno,pjob; 
    		exit when cemp%notfound;
    		if pjob = 'PRESIDENT' then 
    			update emp set sal = sal+1000 where empno = pempno;
    		elsif pjob = 'MANAGER' then 
    			update emp set sal = sal+800 where empno = pempno; 
    		else update emp set sal = sal+400 where empno = pempno;
    		end if;
    	end loop;
    	dbms_output.put_line('成功');
    	close cemp; --5.关闭光标
    	commit; --ACID  oracle read commit,  一边不提交,另一边访问不到
    end;
    
    查询某个部门的员工姓名,用带参数的光标来做
    	set serveroutput on;
    	declare
    		cursor cename(dno number) is select ename from emp where deptno = dno;
    		pename emp.ename%type;
    	begin
    		open cename(30);
    		loop
    			fetch cename into pename;
    			exit when cename%notfound;
    			dbms_output.put_line(pename);
    		end loop;
    		close cename;
    	end;
    

    例外(异常):

    系统例外;
    no_data_found			没有数据错误
    Too_many_rows			行数过多
    Value_error	:			算术或转换错误
    TimeOut_on_resource:	资源等待超时
    
    系统例外的使用
    setserveroutput on;
    declare
    	pnum number;
    begin
       pnum := 1/0;
       exception
    		when zero_divide then dbms_output.put_line('0不能作为除数');
    		when Too_many_rows then dbms_output.put_line('行数太多');
    		when others then dbms_output.put_line('其他例外。。');
    end;
    
    自定义例外:
    set serveroutput on;
    declare
    	myexc exception;
    	pnum number:=1;
    begin
    	if pnum = 1 then raise myexc;
    	end if;
    	exception
    		when myexc then dbms_output.put_line('自定义例外');
    end;
    
    是否存在编号50部门,如果不存在 抛出异常,如果存在,将该部门的员工姓名打印
    setserveroutput on;
    declare
    	cursor cemp(dno number) is select ename from emp where deptno = dno;
    	pename  emp.ename%type;
    	no_emp_found exception;
    begin
    	open cemp(50);
    	fetch cemp into pename;
    	if cemp%notfound then raise no_emp_found;
    	else
    		loop
    			exit when cemp%notfound;
    			fetch cemp into pename;
    		end loop;
    	end if;
    	exception
    		when no_emp_found then dbms_output.put_line('没有此号部门');
    	close cemp;
    end;
    
    展开全文
  • (1)--授权某个用户crate synonym的权限,若用户名为scott grant create synonym to scott(2)--创建同义词 create [or replace] synonym syn_name from table_name;(3)--撤销scott创建同义词的权限 revoke ...

    (1)--授权某个用户crate synonym的权限,若用户名为scott
    grant create synonym to scott
    (2)--创建同义词
    create [or replace] synonym syn_name from table_name;
    (3)--撤销scott创建同义词的权限
    revoke create synonym from scott;
    (4)--删除同义词
    Drop synonym syn_name

    注:在副表上创建同义词

    create or replace synonym JC_GROUP1(对应副表中的组织机构表)
    for wlmqpb.ZHPT_DEPT(主表的数据库名.主表的组织机构表);

    这样创建成功后就可以直接在副表select

    转载于:https://www.cnblogs.com/xinxin1994/p/5276738.html

    展开全文
  • Oracle中创建,删除同义词 Synonym

    万次阅读 2011-01-14 17:28:00
    对另一个数据对象而言同义词是一个别名。public同义词是针对所有用户的,相对而言private同义词则只针对对象拥有者或被授予权限的账户。  在本地数据库中同义词可以表示表、视图、序列、程序、函数或...

    对另一个数据对象而言同义词是一个别名。public同义词是针对所有用户的,相对而言private同义词则只针对对象拥有者或被授予权限的账户。
       在本地数据库中同义词可以表示表、视图、序列、程序、函数或包等数据对象,也可以通过链接表示另一个数据库的对象。

      创建同义词语法如下:

    1 CREATE [ PUBLIC ] SYNONYM synonym_name FOR [ schema .] object[@db_link];


      
      例:

    1 CREATE PUBLIC SYNONYM policies FOR poladm.policies@prod;
    2  
    3 CREATE SYNONYM plan_table FOR system.plan_table;



    问题描述:
    有两个oralce实例 SID分别为 A B
    A中a用户下含有表objects
    B中有b用户
    使在B中用b用户登录后执行
    select * from objects
    能显示出A中a.objects的全部内容

    问题解答:
    用b用户登录到B中,执行:

    1 create public synonym objects for a.objects@A


    此时执行select * from objects 就能显示出a.objects的全部内容

    需要注意的一点:
    B中不能含有table b.objects否则语句可以执行,但是执行select操作时显示的仍然为b.objects的内容,需要先把.objects删除掉,重新建立synonym即可。

    删除同义词

    使用DROP SYNONYM语句删除不再需要的同义词 要想删除私有同义词 就省略 PUBLIC 关键字;

    要想删除公共同义词 就要包括PUBLIC 关键字

    1 DROP SYNONYM emp;  删除名为emp 的私有同义词
    2  
    3 DROP PUBLIC SYNONYM public_emp;  删除名为public_emp的公有同义词


     原文地址 http://hi.baidu.com/mcj0127/blog/item/352af451bdd8801f367abe9e.html

    展开全文
  • Oracle数据库中同义词的创建及使用

    千次阅读 2019-09-18 09:33:32
    这里写自定义目录标题同义词的概念同义词的作用同义词的创建-sql指令模式同义词的创建-plsql窗口模式同义词的使用及删除 同义词的概念 同义词的概念 : 同义词是一个计算机术语,英文(synonym)是指向其它...
  • 同义词 synonym

    2013-05-30 17:21:29
    http://oracle.chinaitlab.com/PLSQL/920910.html  同义词是基表的别名、只在数据字典里有其定义、没有存储  同义词为分布式数据库提供... 私有同义词就是普通用户所创建的同义词,之所以说它是私有,是因为只有创
  • Oracle同义词(Synonym)创建删除

    千次阅读 2016-08-17 11:11:03
    Oracle对象知识:同义词(Synonym)创建删除同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、函数、程序包等指定一个别名。同义词有两种类型: `私有同义词:拥有CREATE SYNONYM...
  • Oracle出现ORA-01775: 同义词的循环链问题 ...1、 当用程序连接或者用plsql查询同义词时,如果出现ora-01775:同义词的循环链这样的问题。 一般是因为存在同义词,但同义词没有相应的对象。 2、 先查有...
  • 1、 当用程序连接或者用plsql查询同义词时,如果出现ora-01775:同义词的循环链这样的问题。 一般是因为存在同义词,但同义词没有相应的对象。 2、 先查有没有循环的同义词。 select * from ...
  • oracle 同义词 synonym 创建与删除

    万次阅读 2018-11-13 18:30:13
     删除同义表tableB:drop synonym tablenameB  最近工作遇到这样一个问题,我们本来的数据库在A里面,但是新开的项目想在数据库A下面的一个子用户B里面。A里面存在我们部门用到的所有表,但是新开的项目想在B...
  • --同义词创建的语法 /* CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema .] synonym  FOR [schema .] object [@ dblink]; */ --同义词的优点 --1.安全,隐藏了数据库对象的名称和所有者 --2.提供了对象的公共访问 --...
  • Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。[@more@] oracle的同义词总结: 从字面上理解就...
  • oracle-synonym(同义词)

    2014-03-28 14:02:38
    同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接...
  • Oracle数据库之同义词(SYNONYM)使用

    万次阅读 2014-12-31 21:18:39
    实例讲解Oracle数据库同义词的创建、删除
  • PLSQL

    2019-10-02 11:12:46
    Oracle的同义词(synonyms)详解 从字面上理解就是别名的意思,和视图的功能类似。就是一种映射关系。 同义词语法:CREATE [PUBLIC] SYNONYM synonym FOR object; 1.创建同义词语句:  create public ...
  • oracle同义词创建(synonym)

    万次阅读 2015-06-12 12:12:32
    在现在的项目中会有很多接口,数据...同义词的语法是:CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同义词名称 FOR [ schema.] object [ @dblink ]; 创建同义词的时候还需要赋值相关的权限: 首先是:用sys账号
  • Oracle 创建 DBLink 和 同义词 的方法 【 ----区别---- dblink:当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地...
  • Day59-Oracle03 - 创建表空间、创建表(子查询创建表)、表的约束、事务、数据库对象(视图、序列、索引、同义词)、PLSQL编程、(if,循环)、数据的导入导出备份
  • 一般情况下创建同义词时名称即使是小写字母,创建出来后名称也会转换为大写字母,可是我在用PL/SQL Developer工具导出创建语句,修改名称时输入的是小写字母,因为名称加了引号,结果创建出来的同义词名称也是小写...
  • Oracle同义词循环链问题解决

    千次阅读 2013-08-09 14:46:36
    1、先查有没有循环的同义词: select * from dba_synonyms where table_owner='test' and synonym_name <>table_name;没有记录 2、再查同义词没有对象的数据库对象: select * from dba_synonyms where ...
  • 今天遇见了一个问题,在建立数据库表中发现,如果有两个不同的用户,其中一个用户创建了一个表,在代码中永另一个用户去访问的话,会就提示表或视图不存在,那么就需要建立同义词了...本文介绍如何创建同义词语句,删除
  • plsql

    2020-05-24 21:35:24
    1 ORA-00001: 违反唯一约束条件 (.) 2 ORA-00017: 请求会话以设置跟踪事件 3 ORA-00018: 超出最大会话数 4 ORA-00019: 超出最大会话许可数 5 ORA-00020: 超出最大进程数 () 6 ORA-00021: 会话附属于其它某些进程;...
  • 当用户A进入Oracle后,其所创建的数据库对象可以称为A方案对象,为了让B方案用户可以访问,除了为B用户分配权限外,B用户访问A用户的对象必须使用“方案名....删除同义词 如: DROP PUBLIC SYNONYM scottemp;
  • sql同义词 连其他服务器

    千次阅读 2016-01-08 22:04:31
    -----以下两条命令是来删除链接服务器的-------  Exec sp_droplinkedsrvlogin sheory1,Null  Exec sp_dropserver sheory1 ---------创建链接服务器--------- EXEC sp_addlinkedserver @server='sheory1...
  • PLSql

    2017-07-10 17:18:17
    对象类型可以是表,视图,同义词,存储过程和函数等。根据对象类型的不同,弹出的菜单也有区别。表和视图有View, Edit, Rename, Drop, Query data 和Edit data等功能。View和Edit分别是查看和修改表的结构信息,如...
  • 目录 1.视图对象 1.1创建视图 1)简单视图 2)建立只读视图 3)复杂视图 1.2管理视图 1)查看视图定义 2)修改视图定义 3)重新编译视图 4)删除视图 2.索引 2.1索引概述 ...2.4删除索...
  • plsql_sentence; [exception] [dowith_sentence;] end [pro_name]; 备注: parameter1是存储过程被调用时候的参数 输入参数则其后必须指定in关键字 输出参数则其后必须指定out关键字 in...
  • PL/SQL:ORA-00980同义词转换不再有效

    万次阅读 2014-01-07 19:01:22
    昨天下午已合作伙伴公司的开发人员打电话来求救,说他的存储编译出错,还截了图给我: ...其中接口数据库访问hr数据库是通过创建同义词的方式,用dblink来连接的,他们自己数据库也是通过dblink来访

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,902
精华内容 760
关键字:

plsql删除同义词