oracle数据库的导入和导出(impdp,expdp)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Liveor_Die/article/details/81120552

数据库的导入导出

创建用户

常用的一些sql

-- 查询所有用户
SELECT * from dba_users;
-- 查询当前用户的权限
select * from session_privs;
-- 登录用户查看自己的角色
SELECT * FROM ROLE_SYS_PRIVS;

创建用户

create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,]on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
  • user_name:用户名,一般为字母数字型和“#”及“_”符号。
  • pass_word:用户口令,一般为字母数字型和“#”及“_”符号。
  • identified exeternally:表示用户名在操作系统下验证,这种情况下要求该用户必须与操作系统

中所定义的用户名相同。

  • identified globally as ‘CN=user’:表示用户名由 Oracle 安全域中心服务器验证,CN 名字表示用

户的外部名。

  • [default tablespace tablespace_default]:表示该用户在创建数据对象时使用的默认表空间
  • [temporary tablespace tablespace_temp]:表示该用户所使用的临时表空间
  • [quota [integer K[M]][unlimited]] on tablespace_specify1:表示该用户在指定表空间中允许占用

最大空间

  • [profiles profile_name]:资源文件的名称。
  • [account lock or account unlock]:用户是否被加锁,默认情况下是不加锁的。

例子:

-- 创建一个 mr 用户,口令为 mrsoft,并设置默认的表空间为 users,临时表空间为 temp的用户
create user mr identified by mrsoft
default tablespace users
temporary tablespace temp;

-- 给用户赋予权限
grant dba,connect,resource to mr;

DIRECTORY 对象

常用sql

  • 查看已创建的 DIRECTORY 对象

SELECT * FROM DBA_DIRECTORIES

  • 创建diretory 对象
    CREATE DIRECTORY dump_dir AS 'D:\work\Oracle\dmpLog';

  • 将directory的权限赋给scott用户,用户scott就也可以导入数据了
    GRANT READ,WRITE ON DIRECTORY dump_dir TO scott;

  • 删除directory对象
    DROP DIRECTORY dump_dir;

  • 修改directory对象
    create or replace directory DUMP_DIR as 'F:\SqlDmp'

导入

impdp 用户/密码@orcl schemas=用户 dumpfile=文件.DMP directory=dump_dir logfile=日志文件.log

impdp ProduceManager/merit@orcl schemas=ProduceManager dumpfile=PRODUCEMANAGER20180814.DMP directory=dump_dir logfile=PRODUCEMANAGER20180814.log

导入数据

导入表

  • 将表 dept、emp 导入到 SYSTEM 模式中
impdp SYSTEM/root directory=dump_dir dumpfile=tab.dmp tables=scott.dept,scott.emp remap_schema=scott:SYSTEM

导入模式

  • 将 SCOTT 模式中的所有对象导入到 SYSTEM 模式中
impdp system/root directory=dump_dir dumpfile=scott.dmp schemas=scott remap_schema=scott:system;

导入表空间

  • 将 tbsp 表空间中的所有对象都导入到当前数据库中
impdp system/root directory=dump_dir dumpfile=tablespace.dmp tablespaces=tbsp

导入全数据库

  • 从 fulldata.dmp 文件中导入全数据库
impdp SYSTEM/root directory=dump_dir dumpfile=fulldata.dmp full=y

参数

REMAP_SCHEMA

该参数用于将源模式中的所有对象转载到目标模式中,语法如下:

remap_schema=source_schema:target_schema

  • source_schema:源模式。
  • target_schema:目标模式。

REMAP_TABLESPACE

该参数用于指定导入时更改表空间名称。在 Oracle 10g 版本出现以前,这一操作非常复杂。首先,
因为没有写操作权限,必须移除原始表空间的限额,然后再设置表空间。在导入过程中,原始表空间
中的对象可以存储在设置后的表空间中。当任务完成后,必须将表空间恢复到原来的状态。在 Oracle 10g
中导入时,REMAP_TABLESPACE 参数的设置大大简化了该操作,这样只需要对目标表空间进行限额,
而不需要其他条件。语法如下:

remap_tablespace=source_tablespace:target_tablespace

  • source_tablespace:源表空间。
  • target_tablespace:目标表空间。

SQLFILE

在 IMPDP 中使用该参数时,可以从 DMP 文件中提取对象的 DDL 语句,以便之后使用。该参数
用于指定将导入的 DDL 操作写入到 SQL 脚本中。语法如下:

sqlfile=[directory_object:]file_name

  • file_name 表示包含 DDL 语句的文件。实际上,IMPDP 只是从 DMP 文件中提取对象的 DDL 语句,
    这样 IMPDP 并不把数据导入数据库中,只是创建 DDL 语句文件,下面来看一个例子。
    向 SCOTT 模式中导入 test.sql 文件中的 DDL 语句,代码及运行结果如下。

impdp scott/root directory=dump_dir dumpfile=sqlfile.dmp sqlfile=test.sql

TABLE_EXISTS_ACTION

该参数用于指定当表已经存在时导入作业要执行的操作,默认为 SKIP。

table_exists_action={skip | append | truncate | replace}

  • skip:导入作业会跳过已存在表处理下一个对象。
  • append:会追加数据。
  • truncate:导入作业会截断表,然后为其追加新数据。
  • replace:导入作业会删除已存在表,然后重建表追加数据。

TRANSPORT_DATAFILES

该参数用于指定移动空间时要被导入到目标数据库的数据文件。语法如下:

transport_datafiles=datafile_name
datafile_name 用于指定被复制到目标数据库的数据文件,下面来看一个例子。

  • 向当前数据库中导入 test.dbf 数据文件,代码及运行结果如下。

impdp system/root directory=dump dumpfile=tran_datafiles.dmp transport_datafiles='d:\OracleData\test.dbf'

导出数据

导出表

将scott用户的两张表导出

expdp scott/root DIRECTORY= dump_dir dumpfile=scott.dmp TABLES=emp,dept

导出模式

将用户scott和hr的全部内容导出

expdp SYSTEM/root DIRECTORY= dump_dir dumpfile=schema.dmp schemas= scott,hr

导出表空间

导出表空间tbsp

expdp SYSTEM/root DIRECTORY= dump_dir dumpfile=tablespace.dmp tablespaces= tbsp

导出整个数据库

expdp SYSTEM/root DIRECTORY= dump_dir dumpfile=fulldata.dmp FULL=y

参数

CONTENT

该参数用于指定要导出的内容,默认值为 ALL,语法如下:

content={all | data_only | metadata_only}
  • all:将导出对象定义及其所有数据。
  • data_only:只导出对象数据。
  • metadata_only:只导出对象定义。
    下面来看一个例子。
    只导出 SCOTT 模式中对象数据,代码及运行结果如下。
expdp scott/1qaz2wsx directory=dump_dir dumpfile=content.dmp content=data_only

QUERY

该参数用于指定过滤导出数据的 WHERE 条件。语法如下:

query=[schema.] [table_name:] query_clause
  • schema:用于指定模式名。
  • table_name:用于指定表名。
  • query_clause:用于指定条件限制子句。
    需要注意,query 参数不能与 connect=metadata_only、extimate_only、transprot_tablespaces 等参数
    同时使用,下面来看一个例子。

在 dept 表中,导出部门编号为 10 的数据,代码及运行结果如下。

expdp scott/1qaz2wsx directory=dump_dir dumpfile=query.dmp tables=dept query='where deptno=10'

DIRECTORY

该参数指定转储文件和日志文件所在的目录。语法如下:

directory=directory_object

其中,directory_object 用于指定目录对象的名称。需要注意:目录对象是使用 create directory 语句
建立的对象,而不是普通的磁盘目录。

DUMPFILE

该参数用于指定转储文件的名称,默认名称为 expdat.dmp。语法如下:

dumpfile=[directory_object:]file_name[,]
  • director_object:用于指定目录对象名。
  • file_name:用于指定转储文件名。
    如果不指定 directory_object,导出工具会自动使用 driectory 选项指定的目录对象。

FULL

该参数用于指定数据库模式导出,默认为 n。语法如下:

full={y | n}

当设置该选项为 y 时,表示执行数据库导出。
执行数据库导出时,数据库用户必须具有 EXP_FULL_DATABASE 角色或 DBA 角色。

LOGFILE

该参数用于指定导出日志文件的名称,默认名称为 export.log。语法如下:
logfile=[directory_object:]file_name

STATUS

该参数用于指定显示导出作业进程的详细状态,默认值为 0。语法如下:
status=integer
integer 用于指定显示导出作业状态的时间间隔,单位为秒。指定该参数后,每隔特定时间间隔会
显示作业完成的百分比。

TABLES

该参数用于指定表模式导出。语法如下:

Tables=[schema_name.]table_name[:partition_name][,]
  • schema_name:用于指定模式名。
  • table_name:用于指定要导出的表名。
  • partition_name:用于指定要导出的分区名。

TABLESPACES

该参数用于指定要导出表空间列表

猜你喜欢

转载自blog.csdn.net/Liveor_Die/article/details/81120552
今日推荐