本帖最后由 lldtk 于 2020-3-11 11:59 编辑
逻辑备份导出、导入数据详细过程:
一:导出数据
1:在准备要备份的数据库服务器上创建备份目录(在后面使用sql命令创建的逻辑目录并不是在OS上创建目录,所以我们先要在服务器上创建一个目录)。
su - oracle mkdir /home/oracle/oracle_bak
2:以管理员身份登录到sql,并创建逻辑目录。
$ sqlplus /nolog
sql> conn sys/oracle as sysdba
sql> create directory data_dir as '/home/oracle/oracle_bak';
3: 使用管理员用户给指定的用户赋予在该目录的操作权限(比如该用户需要备份自己的数据,如用户user)。
sql> grant read,write on directory data_dir to user;
4:导出有五种方式。
4.1 “full=y”,全量导出数据库
$ expdp sys/oracle@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log
4.2 schemas 按用户导出
$ expdp user/passwd@orcl schemas=user dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
4.3 按表空间导出
$ expdp sys/passwd@orcl tablespace=tbs1,tbs2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
4.4 按表导出
$ expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
4.5 按表导出
$ expdp user/passwd@orcl tables=table1='where number=123' dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
二:导入数据
首先将需要导入的数据文件存放到需要导入的数据库服务器上
参照导出的时候的建立目录方式建立物理目录和逻辑目录(只是建目录即可,如果需要给用户权限则加上给用户权限的那步)
使用命令导入,同时,导入方式也可以分为五种,分别对应着导出的五种方式
1:“full=y”,全量导入数据库;
impdp user/passwd directory=data_dir dumpfile=expdp.dmp full=y
2:同名用户导入,从用户A导入到用户A;
impdp A/passwd schemas=A directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
3:
①从A用户中把表table1和table2导入到B用户中;
impdp B/passwdtables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
②将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突;
impdp A/passwd remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
4:导入表空间;
impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
5:追加数据;
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log; --table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE
|