如何将Oracle中的数据库模式导出到转储文件

Meg*_*rma 12 linux oracle export

我在Linux机器上安装了Oracle服务器上的数据库模式.我需要在转储文件中导出与架构相关的信息.

这该怎么做 ?

cod*_*eim 23

这取决于哪个版本的Oracle?旧版本需要exp(导出),较新版本需要expdp(数据泵); exp已被弃用,但大部分时间仍然有效.

在开始之前,请注意Data Pump导出到服务器端Oracle"目录",这是一个在数据库中映射到物理位置的Oracle符号位置.可能有一个默认目录(DATA_PUMP_DIR),通过查询DBA_DIRECTORIES进行检查:

  SQL> select * from dba_directories;
Run Code Online (Sandbox Code Playgroud)

......如果没有,请创建一个

  SQL> create directory DATA_PUMP_DIR as '/oracle/dumps';
  SQL> grant all on directory DATA_PUMP_DIR to myuser;    -- DBAs dont need this grant
Run Code Online (Sandbox Code Playgroud)

假设您可以作为SYSTEM用户或其他DBA进行连接,您可以将任何这样的模式导出到默认目录:

 $ expdp system/manager schemas=user1 dumpfile=user1.dpdmp
Run Code Online (Sandbox Code Playgroud)

或者指定特定目录,添加directory=<directory name>:

 C:\> expdp system/manager schemas=user1 dumpfile=user1.dpdmp directory=DUMPDIR
Run Code Online (Sandbox Code Playgroud)

使用较旧的导出实用程序,您可以使用以下命令导出到工作目录,甚至可以导出到远离服务器的客户端计算机:

 $ exp system/manager owner=user1 file=user1.dmp
Run Code Online (Sandbox Code Playgroud)

确保导出在正确的字符集中完成.如果您尚未设置环境,则Oracle客户端字符集可能与DB字符集不匹配,Oracle将执行字符集转换,这可能不是您想要的.您将看到警告,如果是这样,那么您将需要在设置NLS_LANG环境变量后重复导出,以便客户端字符集与数据库字符集匹配.这将导致Oracle跳过字符集转换.

美国UTF8(UNIX)的示例:

 $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
Run Code Online (Sandbox Code Playgroud)

Windows使用SET,例如使用日语UTF8:

 C:\> set NLS_LANG=Japanese_Japan.AL32UTF8
Run Code Online (Sandbox Code Playgroud)

有关Data Pump的更多信息,请访问:http: //docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#g1022624