实例,从远程机器上导出nxgy用户的所有对象和数据,然后导入到本机数据库的nxgy用户里(用户名可自定义)
如果本机nxgy用户已经存在(数据没用,可以删除),级联删除用户所有对象
首先,从远程机器上导出nxgy用户的数据和对象
两种方式:
- 使用exp命令,逐步根据提示操作(因为导出用户,用该用户登录即可),在填写完导出文件路径后,选择U(即(2)U(用户)可以导出用户的所有数据),以后选择默认,填写导出用户时填写:nxgy。
- 使用exp命令:exp user_name/password owner=导出用户 file=导出地址
exp nxgy/nxgy owner=nxgy file=D:\dmp\user_nxgy.dmp
如导出成功,会给出提示:成功终止导出,没有出现警告。
另需要做的检查:
1.在远程机器上查看用户默认空间,以便导入时创建一样的空间。
SQL> select username,default_tablespace from dba_users where username='NXGY';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
NXGY USERS
2.查看用户使用的表空间
SQL> select DISTINCT owner,tablespace_name from dba_extents where owner like 'NX
GY';
OWNER TABLESPACE_NAME
------------------------------ ------------------------------
NXGY SYSTEM
NXGY USERS
NXGY GTZY_DATA
3.查看表空间对应的数据文件,以便在本机上创建大小合适的数据文件
SQL> select file_name,tablespace_name,bytes from dba_data_files where tablespace
_name in ('SYSTEM','USERS','GTZY_DATA');
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME BYTES
------------------------------ ----------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
USERS 9175040
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM 534773760
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\GTZY_DATA
GTZY_DATA 146800640
4.检查本机的表空间,是否存在SYSTEM,USERS,GTZY_DATA
SQL> select name from v$tablespace where name in ('SYSTEM','USERS','GTZY_DATA');
NAME
------------------------------
SYSTEM
USERS
没有表空间gtzy_data,需要创建
5.查询本机是否存在nxgy用户
SQL> select username from dba_users where username='NXGY';
6.创建表空间,和用户
--删除表空间,删除gtzy_data时,磁盘上的文件没有删除,要手动删除
--drop tablespace gtzy_data including contents and datafiles;
--drop tablespace gtzy_temp including contents and datafiles;
/*第1步:创建临时表空间 */
create temporary tablespace gtzy_temp
tempfile 'D:\java\oracle\oradata\orcl\gtzy_temp.dbf'
size 50m
autoextend on
next 50m maxsize 1024m
extent management local;
/*第2步:创建数据表空间 */
create tablespace gtzy_data
logging
datafile 'D:\java\oracle\oradata\orcl\gtzy_data.dbf'
size 50m
autoextend on
next 50m maxsize 1024m
extent management local;
--删除用户
--drop user nxgy cascade;
/*第3步:创建用户并指定表空间 */
create user nxgy identified by nxgy
default tablespace gtzy_data
temporary tablespace gtzy_temp;
/*第4步:给用户授予权限 */
grant connect,resource,dba to nxgy;
在本机测试用,表空间给小点也无所谓,区别是远程服务器上默认表空间为USERS,而在本机,我把默认表空间改成了GTZY_DATA
最后导入数据库文件
使用imp命令:imp user_name/password fromuser=导出的用户 touser=导入的用户 file=文件路径
C:\Users\administrator>imp nxgy/nxgy fromuser=nxgy touser=nxgy file=d:/dmp/user_nxgy.dmp
或者使用imp命令逐步进行,只需要注意在提示输入用户名是,输入的是导入的用户名,其它均为默认。
即用sys as sysdba登录,用户名填写nxgy,则会把nxgy的数据导入到sys中
如导入成功,会给出提示:成功终止导入,没有出现警告。
导出用户和导入用户不同,会出现警告