怎么使用Oracle数据库的逻辑备份工具
这篇文章主要介绍“怎么使用Oracle数据库的逻辑备份工具”,在日常操作中,相信很多人在怎么使用Oracle数据库的逻辑备份工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Oracle数据库的逻辑备份工具”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Oracle数据库可以通过数据泵expdp工具进行数据的导出、导入。在介绍工具使用之前,先说个注意事项,在Oracle11g之后新创建的表在没有插入数据时,是不会分配segment的,也就是说不会分配空间,而使用expdp导出时,这类空表就不会被导出,导致数据库结构不完整(此情况不包含原先有数据后来被清空的表)。因此为了不会遗漏数据,在导出时先对空表进行一次处理(手动分配空间):
1.通过user_tables查询那些表时没有数据的(注意:为了提高准确性,可以先对用户下的所有表进行一次表分析analysis table),然后通过下面语句直接生成手动分配segment的语句:
select'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0;
PS:当然以上语句会把原先有数据后被清空的表也查询出来,但为了一个一个排除麻烦,就直接再从新分配一次segment。
2.批量执行生成的语句即可。
一、以上处理完成后,下面说一下expdp导出工具的使用:
1.expdp工具导出的文件只能存放在数据库服务器本地,是无法远程导出到其他服务器的(exp工具导出通过本地远程到数据库服务器,将导出文件直接放到本地:),只能导出存放到数据库服务器本地,然后才能传到你想存放的备份服务器。
expdp工具使用需要在数据库中创建directory映射到指定存放dmp文件的系统目录:
#创建dmp文件存放系统目录(当然创建的目录Oracle用户要有权限读写):[oracle@local~]$mkdir/data/dmpfile#使用sys用户(或者有DBA权限的用户)登录数据库[oracle@local~]$sqlplus/assysdba#查看当前实例是否是要进行用户导出的实例名SQL>selectinstance_namefromv$instance;#创建directory名称为expdp,映射目录是刚才创建的目录/data/dmpfileSQL>createdirectoryexpdpas'/data/dmpfile';#将该目录读写权限授予用户或者直接授予public,表示所有用户都可使用,不用每次不同用户都授权一次。SQL>Grantread,writeondirectoryexpdptoPUBLIC;#推出数据库SQL>exit#导出指定用户数据进行备份[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.log
2.impdp是数据泵的导入工具,要进行dmp文件导入时,需要将dmp文件放到执行导入操作的数据库服务器上,dmp存放的目录是导入directory映射的目录,当然系统Oracle用户要有读写权限:
#在导入数据库服务器上创建dmp文件存放系统目录(当然创建的目录Oracle用户要有权限读写):[oracle@localhost~]$mkdir/data/dmpfile2[oracle@localhost~]$mvorcl_full20200216.dmp/data/dmpfile2#使用sys用户(或者有DBA权限的用户)登录数据库[oracle@localhost~]$sqlplus/assysdba#查看当前实例是否是要进行导入的数据库SQL>selectinstance_namefromv$instance;#创建directory名称为expdp,映射目录是刚才创建的目录/data/dmpfile2SQL>createdirectoryexpdp2as'/data/dmpfile2';#将该目录读写权限授予用户或者直接授予public,表示所有用户都可使用,不用每次不同用户都授权一次。SQL>Grantread,writeondirectoryexpdp2toPUBLIC;#推出数据库SQL>exit#导出指定用户数据进行备份[oracle@localhost~]$impdpusername/userpassworddirectory=expdp2dumpfile=orcl_full20200216.dmploggile=orcl_full20200216.log
三、数据泵工具使用注意事项
1.expdp数据泵工具时向上兼容的,比如Oracle 11G使用expdp导出的dmp文件,可以直接导入Oracle 12C数据库中,但是Oracle 12C导出的dmp文件是不能直接导入Oracle 11G中的。在expdp导出时导出语句还要加一个参数,比如Oracle 12C导出dmp文件导入Oracle 11G数据库中,在导出语句后加上 VERSION=11.1.0.0.0.:
[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logVERSION=11.1.0.0.0
2.字符集要一致,数据库字符集导入的数据库要与导出的数据库一致,保证数据正常导入。
查询数据库字符集的方法:
selectuserenv('language')fromdual;
3.导出和导入前创建的存放dmp文件的目录,oracle系统用户必须有读写权限,为了避免此类错误,可记住一点,所有操作都在oracle系统用户下操作,如果使用了root用户来创建存放dmp文件的目录,在创建后一定要进行属主属组修改授权,例如:
[root@local~]#mkdir/data/dmpfile[root@local~]#chownoracle:oinstall/data[root@local~]#cd/data[root@local~]#chownoracle:oinstall/dmpfile
注意:不要轻易使用chown -R /data/dmpfile的方式进行授权,如果/data目录下有其他服务部署,此方法会导致/data下其他部署服务出现问题,为了防止这种错误,一步一步授权比较保险。
4.使用expdp进行数据迁移时,导入的数据库要创建与导出数据库相同表空间,尤其是一个表空间有多个数据文件的,必须要一致,防止导入时数据无法存入数据库报错。
5.从大数据量的库中导出一部分数据时候,虽然导出的数据量很小,但是在导入的时候经常报错表空间不足,原因是导出的数据中含有表空间的元数据(比如表占用的空间大小),
需要在导出的时加上compress 参数。
6.特殊的导出方式:
(1)按照查询语句导出:
[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logQUERY=employees:"WHEREdepartment_id>10"
(2)指定表名或者指定多个表导出:
#导出所有sys开头的表[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logtables=(username.sys%)#导出指定的多个表[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logtables=(BTRULES,CDRULES,CXRULES,DTBTRULES,HLXRULES)
(3)规定dmp大小方式导出:
#每个dmp大小为2G[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=full_xzxt_%U.dmpfilesize=2Gloggile=orcl_full20200216.log
(4)只导出表结构
[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logcontent=metadata_only
(5)只导出表结构
[oracle@local~]$expdpusername/userpassworddirectory=expdpdumpfile=orcl_full20200216.dmploggile=orcl_full20200216.logcontent=data_only
(6)导入不同用户,导出用户为scott,导入用户为zhang:
[oracle@local~]$impdpzhang/zhangdirectory=expdpdumpfile=scott.dmplogfile=scott.logschemas=scottremap_schema=scott:zhang
到此,关于“怎么使用Oracle数据库的逻辑备份工具”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。