oracle数据库: ORA-01775: 同义词的循环链问题

oracle数据库: ORA-01775: 同义词的循环链问题


        原因:  因为存在同义词,但同义词没有相应的对象(对应的表,等对象 被删了)。
                        删除数据库对象,但是忘记删除同义词。
                        删除一个用户,但忘记删除此用户中相关的同名。
                        创建同名时,同名对应的数据库对象已经被删掉了。
                        
       解决方法:                网上有很多解决方法。
                        1.一般同义词是和表名或者视图名一样的。这样方便使用。
                        select * from dba_synonyms where  table_owner='TEST' and synonym_name<>table_name;
                        这里table_owner是你的用户 synonym_name是同义词名称 table_name 是表名。先看一下是否有不一样的。
                        2.select * from dba_synonyms
                        where table_owner='HD40'
                        and
                        synonym_name in
                        (select a.synonym_name from dba_synonyms a where a.table_owner='HD40'
                        minus
                        select object_name from user_objects)

                        dba_synonyms是存储 同义词和表名等对象的关联表。
                        这条语句 查出,存在同义词,但是table_name对应的表或者对象已经被删了。
                        你会发现查询这些同义词都报同义词循环链错误。

                        一般就是这个原因。
                        网上说的查询结果,然后删除,其实就是删除这些数据。
                        或者你再创建出表等对象。
                        
                        
                解决方案:重新创建数据表!
                        oracle 建表语句:CREATE TABLE table_name(id  varchar2(32) not null,primary key (fu_id));
                        mysql 建表语句:CREATE TABLEtable_name(id int,name varchar(20) primary key(id));
                        sqlserver 建表语句:create tabletable_name (idint identity(1,1) primary key) go

你可能感兴趣的:(生命的意义)