小技巧
现在工作有大量exp/imp工作,其中遇到过需要该表名的,恢复的时候也遇到过类似情况,之前都是把原表改名再让道给imp的表
现在有另一个方法可选择,思路如下:
1.复制现有表结构
2.在"另一用户"下简历一样的同义词,指向新表
3.使用"另一用户"imp
4.验收
5.drop同义词
实践:
table owner:asrs
原表:ttt2
新表:ttt2_new
另一用户:sys
新建立需要的原表:
conn asrs/password
SQL> create table ttt2 as select * from user_objects;
Table created.
SQL> select count(*) from ttt2;
COUNT(*)
----------
1971
简历新表,并复制表结构
SQL> create table ttt2_new as select * from ttt2 where rownum<1;
Table created.
SQL> select count(*) from ttt2_new;
COUNT(*)
----------
0
导出原表
[oracle@THWMSDB01 ~]$ exp asrs/password tables=ttt2 file=ttt2.dmp
Export: Release 10.2.0.3.0 - Production on Wed Mar 24 16:04:27 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
Export done in UTF8 character set and UTF8 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table TTT2 1971 rows exported
在另一用户下建立同义词:
[oracle@THWMSDB01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Mar 24 16:03:56 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> CREATE SYNONYM TTT2 FOR ASRS.TTT2_NEW;
Synonym created.
导入数据到同义词
[oracle@THWMSDB01 ~]$ imp \'sys/SINoracle10g as sysdba\' ignore=y file=ttt2.dmp commit=y full=y TOUSER=sys;
Import: Release 10.2.0.3.0 - Production on Wed Mar 24 16:05:26 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V10.02.01 via conventional path
Warning: the objects were exported by ASRS, not by you
import done in UTF8 character set and UTF8 NCHAR character set
. importing ASRS's objects into SYS
. . importing table "TTT2" 1971 rows imported
Import terminated successfully without warnings.
验收
[oracle@THWMSDB01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Mar 24 16:05:32 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> conn asrs/password;
Connected.
SQL> select count(*) from ttt2_new;
COUNT(*)
----------
1971
清理借用同义词
SQL> DROP SYNONYM TTT2;
Synonym dropped.
SQL> conn asrs/asrs123;
Connected.
SQL> select count(*) from ttt2_new;
COUNT(*)
----------
1971
SQL>
注意事项:
1.新表的表结构需要和dmp内的表结构一样
2."另一用户"需要有相应权限,这里使用了sys
3.导入时需要添加参数ignore=y避免重复建表
4.开始的时候建立了public的同义词失败,后来建立私有的就ok了
分享到:
相关推荐
ORACLE怎么修改表名呢? 1.在控制台中修改 2.用sql语句修改表名,更加方便、灵活
sql语句生成器for oracle(提供表名,自动获取列名)
主要介绍了oracle中修改表名的几种方式,需要的朋友可以参考下
获取oracle 表字段,表名,以及主键之类等等的信息,获取oracle 表字段,表名,以及主键之类等等的信息获取oracle 表字段,表名,以及主键之类等等的信息获取oracle
NULL 博文链接:https://javazhou.iteye.com/blog/645055
小编今天在建一个Oracle数据库表时,提示如下表名长度超过了最大值了。错误如下: 代码如下: 错误报告: SQL 错误: ORA-00972: 标识符过长 00972. 00000 – “identifier is too long” *Cause: An identifier ...
oracle下导出某用户所有表的方法,包含了所有到处的类型,很全,希望对大家有帮助
将此脚本复制,输入表名执行可直接获得所有本表字段。
Oracle获取用户下所有表名 获取表所有的列名及数据类型 两个SQL查询语句
可将oracle中表名 表注释 字段类型 字段长度 字段注释 导出为excel,生成的数据库表index sheet页面 可进行表sheet之间的跳转
1、备份Oracle数据库表时添加动态时间戳,解决了ORA-00922: missing or invalid option 错误。 2、备份表结构和数据,还备份索引、序列、触发器等对象,提高了备份速度。但需要手动备份原始表的序列。 3、备份策略是...
oracle异库同表名的两个数据库中数据合并或数据表结构的修改
获取ORACLE 表字段,表名,以及主键之类等等的信息 基本开发中要用的信息都能取到了.
搬移Oracle資料庫所用之Export. Import方法
SQL和Oracle中统计数据库中表个数及表名
1、行级触发器不支持 update 、select 、delete 对自身表的操作。 2、表级触发器 不支持 :new 和 :old对象 所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据...
如何在oracle中查询所有用户表的表名、主键名称、索引、外键等