1、 一. 从原库中备份出来数据集 使用数据泵把数据备份出来,下图是创立成一种sh文献导出。 备份脚本: #!/bin/sh #用于备份 #用于备份顾客顾客名 BACKUP_USER="username" #用于备份顾客名密码 BACKUP_PASSWORD="pwd" #用于备份和恢复目录 WORKDIR="exp2_dir" expdp $BACKUP_USER/$BACKUP_PASSWORD dumpfile=$BACKUP_USER+`date +%m.%d.%y`.dmp directory=$WORKDIR lo
2、gfile=$BACKUP_USER+`date +%m.%d.%y`.log parallel=8 job_name='exp_'+$BACKUP_USER+`date +%h%m%s` 由于金蝶VT暂时表不需要导出,在导出时候,可以使用下面参数来排除VT暂时表: --EXCLUDE 该选项用于指定执行操作时释放要排除对象类型或有关对象,EXCLUDE=STATISTICS (排除记录信息) EXCLUDE = table:like “‘VT%’”(排除easVT 暂时表) EXCLUDE=STATISTICS,table:like “‘VT%’”(VT暂时表
3、和 记录信息一起排除) 二.新建数据库进行同顾客名恢复 1、DBCA新建数据库 DBCA之前,要看看系统有无配备好了display,这样才干打开图形界面,可以使用xclock命令验证,如果浮现下图钟图,阐明就可以打开了。如果不能打开,需要设立display,如我下图红框一所示: Export DISPLAY=ip:0 (ip是你本机使用xmanager连上ip) 然后执行DBCA建立数据库,打开如下界面,点next下一步: 选取创立数据库create database 注意:这里字符集选取 UTF8,这里选取错误会很麻烦,后续修改
4、麻烦,金蝶默认就是使用UTF8字符数据库。图片选取错误了。 开始创立数据库 详细参照: · 需要注意这里 内存大小:典型,是按照比例来分派。我当前物理内存是3G,40%就是1G多。如果你只是用来练习,大概 给500MB 就足够了。 · 尚有 指定迅速回答区 新手最佳不要修改途径 ------------------------------------------------------------------------------------ 2、创立表空间(和原库同样) 1.创立表空间需要懂得原库表空间状况。 --
5、获取表空间使用率和剩余空间,可算数据库大小; 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(b
6、locks) 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) f Where d.tablespace_name = f.tablespace_name(+) ---如果采用了完全本地管理暂时表空间,就加入如下某些 Union All --if have tempfile Select d.tabl
7、espace_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 From dba_temp_files Group By tablespace_
8、name) d, (Select tablespace_name,round(Sum(bytes_used)/(1024*1024),2) used_space,round(Sum(bytes_free)/(1024*1024),2) free_space From v$temp_space_header Group By tablespace_name) f Where d.tablespace_name=f.tablespace_name(+) order by 5 desc; 和既有表空间对比;发现缺少表空间缺少表空间ROCKCHECK_T (temp表空间
9、) 和 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*3
10、约等于7 CREATE 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 3072
11、0M, '/backup/easdb/easdb/ROCKCHECK6.dbf' SIZE 30720M, '/backup/easdb/easdb/ROCKCHECK7.dbf' SIZE 30720M; 创立账套顾客username (1) 需要懂得原库这个顾客默认表空间和暂时表空间 懂得了原库顾客表空间状况,那么就安装下面语句在新库上面创立顾客rockcheck: CREATE USER username --创立一种顾客, IDENTIFIED BY pwd -- 密码为pwd DEFAULT TABLESPA
12、CE " ROCKCHECK" --默认表空间是 ROCKCHECK TEMPORARY TABLESPACE " ROCKCHECK_T" --暂时表空间是 ROCKCHECK_T ACCOUNT UNLOCK;帐号正常未锁定 分派权限给这个顾客: Grant dba to username; 3、准备导入数据。 (1)确认第一步备份出来备份集存储途径和备份集名字。 途径:/backup/xxx 备份集名字:xxxx.dmp 注意:这里只需确认存储备份集途径及其文献名 (2)在新库创立directory create directory exp2
13、dir as '/backup/'; grant read,write on directory exp2_dir to username; (3)导入语句 #!/bin/sh #用于恢复 #用于恢复顾客顾客名 BACKUP_USER="username" #用于恢复顾客名密码 BACKUP_PASSWORD="pwd" #用于备份和恢复目录 WORKDIR="exp2_dir" #指定好恢复数据库sid Export ORACLE_SID=EASDB---指定恢复数据库sid Impdp $BACKUP_USER/$BACKU
14、P_PASSWORD@easdb dumpfile=xx.dmp directory=$WORKDIR logfile=IMP0223.log parallel=4 schemas= username ; 4、按照账套顾客(schema)恢复 $chmod +x impdp.sh 执行导入脚本 $sh impdp.sh 监控导入进度 Select d.tablespace_name,Space Sum_space(M),Blocks sum_blocks,Space-nvl(free_space,0) Used_space(M),
15、 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 tablespace_name) d, (Select tablespace_name,round(Sum(bytes)/(1024*1024),2) free_space From dba_free_
16、space Group By tablespace_name) f Where d.tablespace_name = f.tablespace_name(+) ---如果采用了完全本地管理暂时表空间,就加入如下某些 Union All --if have tempfile Select 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_spa
17、ce,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_space,round(Sum(bytes_free)/(1024*1024),2) free_space From v$temp_space_head
18、er Group By tablespace_name) f Where d.tablespace_name=f.tablespace_name(+) order by 5 desc; 错误一:字符集选错,注册eas数据中心报错,需要修正字符集(尽量建库时候选对UTF8,改起来很麻烦)尽量别犯这个错。 服务端修改字符集有点麻烦,要使客户端字符集与之一致,尚有此前dmp文献也许作废, 最佳是修改client端会话字符集环境。 SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP MOUNT EXCLUSIVE; SQL>ALTER SYSTEM EN
19、ABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8; SQL>SHUTDOWN immediate; SQL>startup; 三、同一种数据库,不同顾客名恢复 1、创立新表空间 注意:表空间大小要和之前这个顾客所占用表空间
20、大小一致,要可以存储新恢复账套。 2、新建需要恢复新顾客名,并指定表空间 CREATE USER new_username --创立一种顾客, IDENTIFIED BY pwd -- 密码为pwd DEFAULT TABLESPACE new_data_tbs --默认表空间是 新建 TEMPORARY TABLESPACE " new_data_tbs_T" --暂时表空间是 新建_T ACCOUNT UNLOCK;帐号正常未锁定 分派权限给这个顾客: Grant dba to new_username; 3、导入 使用参数r
21、emap 需要另一种数据库顾客表导入到当前库中,但顾客名不相似,此前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
22、grant 几种重要参数阐明一下: 1、remap_user 重新映射顾客,格式: source_user1:target_user1,source_user2:target_user2 2、remap_tablespace 重新映射表空间 remap_tablespace=old_tablespace:new_tablespace,old_tablespace:new_tablespace 3、table_exists_action 表已经存在动作 有效核心字:(SKIP),APPEND,REPLACE 和 TRUNCATE。 4、exclude=object_grant 跳过对象授权 导入脚本:






