1、oracle导出建库脚本(只导表结构,不包含数据时)
在pl/sql developer中操作(其他操作方式都没这个方便):
选择tools(工具)->import user object(导出用户对象),页面中不选“include storage”,在导出时不会导出表空间信息。不选“include owner”,表和视图、存储过程中不会包含用户信息。
如果包含数据,从一个用户导出数据,恢复到另一个用户:
使用命令行方式:imp命令
导出时使用owner=用户名,确保只导出一个用户的数据。
例:
exp 用户名/密码@ip地址/实例名 owner=用户名 file=路径/文件名.dmp
导入时使用fromuser=原用户名 touser=新用户名
例:
imp 用户名/密码@ip地址/实例名 fromuser=老用户名 touser=新用户名 file=路径/文件名.dmp ignore=y
两个用户名的表空间不同时:对新用户名设置默认表空间,导入时会默认导入到此用户的默认表空间里面。
-- 导出相关脚本
exp username@127.0.0.1/orcl file = D:\dmp.DMP owner = 用户名 grants=n indexes=n triggers=n constraints=n;
-- 导入相关脚本
imp username@127.0.0.1/orcl file = D:\dmp.DMP grants=n indexes=n constraints=n full=y tablespaces=TABLESPACES_NAME;
-- 只导入数据脚本
imp username@127.0.0.1/orcl file = D:\dmp.DMP grants=n indexes=n constraints=n full=y data_only=Y tablespaces=TABLESPACES_NAME;
-- 只导某张表脚本
imp username@127.0.0.1/orcl file = D:\dmp.DMP grants=n indexes=n constraints=n tables=(TABLES_NAME) data_only=Y tablespaces=TABLESPACES_NAME;
查询表空间名
select b.file_name 物理文件名,
b.tablespace_name 表空间,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;