oracle怎样导出用户和表空间的创建语句

时间:2022-03-28 15:25:04
oracle怎样导出用户和表空间的创建语句
用exp或者expdp导出的是所有对象的,我现在只想导出用户和表空间的。
请问该怎样导出?
从数据字典dbs_users里导出可以导出,但是怕漏掉一些东西,主要包括权限,还有默认表空间,临时表空间那些的。

哪位有现成的语句或者其他办法。谢谢!

6 个解决方案

#1


你没有用pl/sql dev么?
有的话点击User,view一下,查看sql.
表空间类似操作,点击view,查看sql.

#2


--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.

#3


引用 2 楼 sjcss 的回复:
--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.
除了用户和表空间其他对象不是我需要的。另外我一个库有很多用户,有没有更方便的导出方法。这个已经可以满足需求了。

#4


引用 3 楼 xixi_168 的回复:
Quote: 引用 2 楼 sjcss 的回复:

--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.
除了用户和表空间其他对象不是我需要的。另外我一个库有很多用户,有没有更方便的导出方法。这个已经可以满足需求了。

类似select dbms_metadata.get_ddl('USER',username) from  dba_users where username in ('SCOTT','SYSTEM')就可以方便导出

#5


我推荐楼主用数据泵,也就是expdp的形式,需要先建立目录。具体的楼主可以在百度文库上搜搜

#6


引用 2 楼 sjcss 的回复:
--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.


这个不错。可以基于这种做法,写个存储过程,将相关的语句写到一个文件里

#1


你没有用pl/sql dev么?
有的话点击User,view一下,查看sql.
表空间类似操作,点击view,查看sql.

#2


--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.

#3


引用 2 楼 sjcss 的回复:
--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.
除了用户和表空间其他对象不是我需要的。另外我一个库有很多用户,有没有更方便的导出方法。这个已经可以满足需求了。

#4


引用 3 楼 xixi_168 的回复:
Quote: 引用 2 楼 sjcss 的回复:

--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.
除了用户和表空间其他对象不是我需要的。另外我一个库有很多用户,有没有更方便的导出方法。这个已经可以满足需求了。

类似select dbms_metadata.get_ddl('USER',username) from  dba_users where username in ('SCOTT','SYSTEM')就可以方便导出

#5


我推荐楼主用数据泵,也就是expdp的形式,需要先建立目录。具体的楼主可以在百度文库上搜搜

#6


引用 2 楼 sjcss 的回复:
--用户创建语句,权限语句
select dbms_metadata.get_ddl('USER','SCOTT') from  dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT','SCOTT') from   dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','SCOTT') from   dual;
--表空间创建语句
select dbms_metadata.get_ddl('TABLESPACE','EXAMPLE') from dual;
以上是例子,根据情况改.
你如果不是想查询用户和表空间的创建语句,只是为了导出的话,个人建议你还是用expdp,content=metadata_only就可以了.


这个不错。可以基于这种做法,写个存储过程,将相关的语句写到一个文件里