1、EAS账套备份恢复指导手册一.从原库中备份出来数据集使用数据泵把数据备份出来,下图的是创建成一个sh文件导出。备份脚本:#!/bin/sh#用于备份#用于备份的用户用户名BACKUP_USER=username#用于备份的用户名密码BACKUP_PASSWORD=pwd#用于备份和恢复的目录WORKDIR=exp2_direxpdp$BACKUP_USER/$BACKUP_PASSWORDdumpfile=$BACKUP_USER+date+%m.%d.%y.dmpdirectory=$WORKDIRlogfile=$BACKUP_USER+date+%m.%d.%y.logparallel=
2、8job_name=exp_+$BACKUP_USER+date+%h%m%s 由于金蝶的VT临时表不需要导出,在导出的时候,可以使用下面的参数来排除VT临时表:-EXCLUDE该选项用于指定执行操作时释放要排除对象类型或相关对象,EXCLUDE=STATISTICS (排除统计信息) EXCLUDE = table:like “VT%”(排除eas的VT 临时表)EXCLUDE=STATISTICS, table:like “VT%”(VT临时表和 统计信息一起排除)二.新建数据库进行同用户名恢复1、DBCA新建数据库DBCA之前,要看看系统有没有配置好了display,这样才能打开图形界面
3、,可以使用xclock命令验证,如果出现下图的钟图,说明就可以打开了。如果不能打开,需要设置display,如我下图红框一所示:Export DISPLAY=ip:0 (ip是你本机使用xmanager连上的ip)然后执行DBCA建立数据库,打开如下界面,点next下一步:选择创建数据库create database注意:这里字符集选择 UTF8,这里选择错误会很麻烦,后续修改麻烦,金蝶默认就是使用UTF8字符的数据库。图片选择错误了。开始创建数据库详细参考:jingyan.baidu./article/412cb0721b4ff.html需要注意这里存大小:典型,是按照比例来分配的。我现在的
4、物理存是3G,40%就是1G多。如果你只是用来练习,大概 给500MB 就足够了。还有 指定快速回复区新手最好不要修改路径-2、创建表空间(和原库一样)1创建表空间需要知道原库的表空间情况。-#获取表空间的使用率和剩余空间,可算数据库的大小;Select d.tablespace_name,Space Sum_space(M),Blocks sum_blocks,Space-nvl(free_space,0) Used_space(M), round(1-nvl(free_space,0)/Space)*100,2) Used_rate(%),free_space Free_space(M)F
5、rom (Select tablespace_name,round(Sum(bytes)/(1024*1024),2) Space,Sum(blocks) Blocks From dba_data_files Group By tablespace_name) d,(Select tablespace_name,round(Sum(bytes)/(1024*1024),2) free_space From dba_free_space Group By tablespace_name) fWhere d.tablespace_name = f.tablespace_name(+)-如果采用了完
6、全本地管理的临时表空间,就加入如下部分Union All -if have tempfileSelect d.tablespace_name,Space Sum_space(M),blocks sum_blocks,used_space Used_space(M), round(nvl(used_space,0)/Space*100,2) Used_rate(%),nvl(free_space,0) Free_space(M)From (Select tablespace_name,round(Sum(bytes)/(1024*1024),2) Space,Sum(blocks) blocks
7、 From dba_temp_files Group By tablespace_name) d,(Select tablespace_name,round(Sum(bytes_used)/(1024*1024),2) used_space,round(Sum(bytes_free)/(1024*1024),2) free_spaceFrom v$temp_space_header Group By tablespace_name) fWhere d.tablespace_name=f.tablespace_name(+) order by 5 desc;和现有的表空间对比;发现缺少表空间缺少
8、的表空间ROCKCHECK_T (temp表空间) 和 ROCKCHECK (207GB )注意:针对不同的客户环境名字不一样,请认真核对。创建下面缺少的表空间ROCKCHECK_T (temp表空间) 和 ROCKCHECK (207GB )create temporary tablespace ROCKCHECK_T tempfile /backup/easdb/easdb/ROCKCHECK_T.dbf SIZE 11100M;由于这个表空间有207GB才够存放,oracle数据库中,8KB的数据块的数据文件最大为 8K * 4194304 = 32G,最大的数据文件为32gb。 207
9、*3 约等于7CREATE TABLESPACE ROCKCHECK DATAFILE /backup/easdb/easdb/ROCKCHECK1.dbf SIZE 30720M,/backup/easdb/easdb/ROCKCHECK2.dbf SIZE 30720M,/backup/easdb/easdb/ROCKCHECK3.dbf SIZE 30720M,/backup/easdb/easdb/ROCKCHECK4.dbf SIZE 30720M,/backup/easdb/easdb/ROCKCHECK5.dbf SIZE 30720M,/backup/easdb/easdb/R
10、OCKCHECK6.dbf SIZE 30720M,/backup/easdb/easdb/ROCKCHECK7.dbf SIZE 30720M;创建账套用户username (1)需要知道原库的这个用户默认表空间和临时表空间知道了原库的用户表空间情况,那么就安装下面的语句在新库上面创建用户rockcheck:CREATE USER username -创建一个用户, IDENTIFIED BY pwd - 密码为pwdDEFAULT TABLESPACE ROCKCHECK -默认表空间是 ROCKCHECKTEMPORARY TABLESPACE ROCKCHECK_T -临时表空间是 R
11、OCKCHECK_T ACCOUNT UNLOCK; 正常未锁定分配权限给这个用户:Grant dba to username;3、准备导入数据。(1)确认第一步备份出来的备份集存放的路径和备份集名字。路径:/backup/xxx备份集名字:xxxx.dmp注意:这里只需确认存放备份集的路径及其文件名 (2)在新库创建directorycreate directory exp2_dir as /backup/;grant read,write on directory exp2_dir to username;(3)导入语句#!/bin/sh#用于恢复#用于恢复的用户用户名BACKUP_USE
12、R=username#用于恢复的用户名密码BACKUP_PASSWORD=pwd#用于备份和恢复的目录WORKDIR=exp2_dir#指定好恢复的数据库的sidExport ORACLE_SID=EASDB-指定恢复的数据库sidImpdp $BACKUP_USER/$BACKUP_PASSWORDeasdb dumpfile=xx.dmp directory=$WORKDIR logfile=IMP20160223.log parallel=4 schemas= username ;4、按照账套用户(schema)恢复$chmod +x impdp.sh执行导入脚本$sh impdp.sh
13、 监控导入进度Select d.tablespace_name,Space Sum_space(M),Blocks sum_blocks,Space-nvl(free_space,0) Used_space(M), round(1-nvl(free_space,0)/Space)*100,2) Used_rate(%),free_space Free_space(M)From (Select tablespace_name,round(Sum(bytes)/(1024*1024),2) Space,Sum(blocks) Blocks From dba_data_files Group By
14、tablespace_name) d,(Select tablespace_name,round(Sum(bytes)/(1024*1024),2) free_space From dba_free_space Group By tablespace_name) fWhere d.tablespace_name = f.tablespace_name(+)-如果采用了完全本地管理的临时表空间,就加入如下部分Union All -if have tempfileSelect d.tablespace_name,Space Sum_space(M),blocks sum_blocks,used_s
15、pace Used_space(M), round(nvl(used_space,0)/Space*100,2) Used_rate(%),nvl(free_space,0) Free_space(M)From (Select tablespace_name,round(Sum(bytes)/(1024*1024),2) Space,Sum(blocks) blocks From dba_temp_files Group By tablespace_name) d,(Select tablespace_name,round(Sum(bytes_used)/(1024*1024),2) used
16、_space,round(Sum(bytes_free)/(1024*1024),2) free_spaceFrom v$temp_space_header Group By tablespace_name) fWhere d.tablespace_name=f.tablespace_name(+) order by 5 desc;错误一:字符集选错,注册eas数据中心报错,需要修正字符集(尽量建库的时候选对UTF8,改起来很麻烦)尽量别犯这个错。服务端修改字符集有点麻烦,要使客户端字符集与之一致,还有以前的dmp文件可能作废,最好是修改client端的会话的字符集环境。SQLSHUTDOWN
17、 IMMEDIATE;SQLSTARTUP MOUNT EXCLUSIVE;SQLALTER SYSTEM ENABLE RESTRICTED SESSION;SQLALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQLALTER SYSTEM SET AQ_TM_PROCESSES=0;SQLALTER DATABASE OPEN;SQLALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;SQLSHUTDOWN immediate;SQLstartup;三、同一个数据库,不同用户名恢复1、创建新表空间
18、注意:表空间大小要和之前这个用户所占用的表空间大小一致,要能够存放新恢复的账套。2、新建需要恢复的新用户名,并指定表空间CREATE USER new_username -创建一个用户, IDENTIFIED BY pwd - 密码为pwdDEFAULT TABLESPACE new_data_tbs -默认表空间是 新建的TEMPORARY TABLESPACE new_data_tbs_T -临时表空间是 新建的_T ACCOUNT UNLOCK; 正常未锁定分配权限给这个用户:Grant dba to new_username;3、导入 使用参数remap需要另一个数据库的用户表导入到当
19、前库中,但用户名不相同,以前exp/imp时,可以指定fromuser和touser来解决,在expdp中也提供了类似的解决方法示例:impdp system/zlsoft dumpfile=expdp:EXPDP_ZLHIS.DMP nologfile=y remap_schema=zlhis:scott remap_tablespace=ZL9BASEITEM:users,zl9indexhis:users,zl9indexmtl:users table_exists_action=truncate exclude=object_grant几个重要参数的说明一下:1、remap_user 重新映射用户,格式:source_user1:target_user1,source_user2:target_user22、remap_tablespace 重新映射表空间remap_tablespace=old_tablespace:new_tablespace,old_tablespace:new_tablespace3、 table_exists_action 表已经存在的动作 有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。4、exclude=object_grant 跳过对象授权导入脚本:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1