资源描述
一. 从原库中备份出来数据集
使用数据泵把数据备份出来,下图是创立成一种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 logfile=$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暂时表和 记录信息一起排除)
二.新建数据库进行同顾客名恢复
1、DBCA新建数据库
DBCA之前,要看看系统有无配备好了display,这样才干打开图形界面,可以使用xclock命令验证,如果浮现下图钟图,阐明就可以打开了。如果不能打开,需要设立display,如我下图红框一所示:
Export DISPLAY=ip:0 (ip是你本机使用xmanager连上ip)
然后执行DBCA建立数据库,打开如下界面,点next下一步:
选取创立数据库create database
注意:这里字符集选取 UTF8,这里选取错误会很麻烦,后续修改麻烦,金蝶默认就是使用UTF8字符数据库。图片选取错误了。
开始创立数据库
详细参照:
· 需要注意这里
内存大小:典型,是按照比例来分派。我当前物理内存是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)"
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_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_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_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表空间) 和 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 约等于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 30720M,
'/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 TABLESPACE " 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_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/$BACKUP_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),
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_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_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_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;
错误一:字符集选错,注册eas数据中心报错,需要修正字符集(尽量建库时候选对UTF8,改起来很麻烦)尽量别犯这个错。
服务端修改字符集有点麻烦,要使客户端字符集与之一致,尚有此前dmp文献也许作废,
最佳是修改client端会话字符集环境。
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
SQL>ALTER SYSTEM ENABLE 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、创立新表空间
注意:表空间大小要和之前这个顾客所占用表空间大小一致,要可以存储新恢复账套。
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、导入 使用参数remap
需要另一种数据库顾客表导入到当前库中,但顾客名不相似,此前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_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 跳过对象授权
导入脚本:
展开阅读全文