恢复一个300G的oracle数据库

最近公司有个项目需要恢复一下一个300G的数据库
准备工作:使用Virtual box 创建一个windos 2003 的服务器 上面安装了oracle11g
1.首先需要查看创建virtual box的vdi的大小默认400G,300G备份文件至少需要1T的空间需要修改vdi的空间大小
我进入了Oracle VM VirtualBox安装目录:D:\Program Files\Oracle\VirtualBox,
VBoxManage list hdds,回车,查看需要扩容的虚拟硬盘的UUID,
输入命令:VBoxManage modifyhd be05c3ee-3f64-4564-a3e5-7a00bfc4e233 --resize 102400,102400代表要把虚拟硬盘改成多少M。
注意,在调整硬盘之前,一定要先关闭该虚拟机,要扩容的虚拟硬盘在以前创建时应该是动态增长的
VBoxManage modifyhd 4264aafa-a33c-4d25-9a97-f3ca24e8f72b --resize 2048576

2.出现了字符集问题,
原因在于我们的vdi里的oralcle字符集为 select userenv('language') from dual;   simplified chinese_china.al32utf8 应该设置成为 MERICAN _ AMERICA. ZHS16GBK
ORA-12899: value too large for column"JRGAZX"."DTLMB"."CC" (actual: 66,maximum: 50)
初步断定是字符集问题,中文在UTF-8里占3个字节,ZHS16GBK里占2个字节,而源dmp文件字符集是ZHS16GBK的库到出来的,
现在要导入到目标字符集为UFT-8的库里。
修改数据库字符集为:ZHS16GBK
修改:
sqlplus /nolog
SQL>conn / as sysdba;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
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 CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*ERROR at line 1:
ORA-12712: new character set must be a superset ofold character set
报字符集不兼容,此时下INTERNAL_USE指令不对字符集超集进行检查:
可以执行下一步  跳转错误操作
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
再次用imp导入,就没有问题了。
 
  
 
  
 
  
 
  
 
  
数据泵导入数据步骤:
cmd 登录  sqlplus / as sysdba
1. 创建表空间
CREATE TABLESPACE NNC_DATA01 DATAFILE 'C:\oraapp\oradata\orcl\nnc_data01.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX01 DATAFILE 'C:\oraapp\oradata\orcl\nnc_index01.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_DATA02 DATAFILE 'C:\oraapp\oradata\orcl\nnc_data02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX02 DATAFILE 'C:\oraapp\oradata\orcl\nnc_index02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_DATA03 DATAFILE 'C:\oraapp\oradata\orcl\nnc_data03.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX03 DATAFILE 'C:\oraapp\oradata\orcl\nnc_index03.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
2. 创建用户
CREATE USER HCM IDENTIFIED BY HCM DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp;
GRANT connect, dba to HCM;
3. 创建目录 并赋权限
Create directory ncdir1 as 'C:\Temp';
Grant read,write on directory ncdir1 to HCM;
4. 导入,并修改用户密码
impdp HCM/HCM DIRECTORY=ncdir1 DUMPFILE=CTGHR20160711PATCH.DMP  FULL=y;
alter user WATERNCDB identified by 1;
指定用户映射导入可能不需要修改密码
impdp HCM/HCM@orcl directory=ncdir1 dumpfile=CTGHR201608031628.DMP  REMAP_SCHEMA=CTGHR:HCM


你可能感兴趣的:(数据库导入)