oracle数据库插件库的迁移,Oracle 数据库迁移

1.1 linux 下导出

sqlplus >连接到dba

SQL> create directory data_dir as '/opt/oracle_dump';

SQL> grant read,write on directory DMPDIR to TAX;

SQL> expdp user/passwd@sid dumpfile=full.dmp DMPDIR =data_dir full=y;

最终导出文件为/oracle_dump/full.dmp.将他拷贝至 windows 下 E:/oracel_dump/full.dmp

导出的是pdb 名为TAX,用户名为TAX,表空间为TAX的数据库。

1.2 widnows下下载安装Oracle并配置

​  1.安装oracle12c,安装完成后默认是cdb和一个pdb.cdb与pdb的区别:Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图 :

7343e2f960d8662e98e01cd37da4a298.gif

CDB组件(Components of a CDB)一个CDB数据库容器包含了下面一些组件:

ROOT组件:ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。(创建时以C##开头)

SEED组件: Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。

PDBS: CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。

这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。

​  2. 利用开始菜单中Database Configuration Assistant 创建一个新的名仍然为导出时名【TAX】的pdb。

​  3. sys 登陆oracle后

​  (1)启动pdb,切换当前会话为TAX的pdb

SQL> alter pluggable database TAX open;

SQL> alter session set container=TAX;

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

SQL> alter pluggable database TAX save state; --保存状态,即开机可自启动

​  (2) 创建pdb的用户(TAX)、表空间(TAX),创建Directory并授予权限。与导出时相同。

SQL> create tablespace TAX datafile 'F:app表空间名称.dbf' size 5120M autoextend on next 150M maxsize unlimited --datafile 表空间数据存放位置 自动扩展

SQL> alter database datafile 'F:appTAX.dbf' AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED; --表空间过小时

SQL> create user 用户名(TAX) identified by 密码 default tablespace 表空间名称(TAX);

SQL> grant create user,drop user,alter user,create any view,connect,resource,dba,create session,create any sequence to 用户名(TAX);

SQL> CREATE OR REPLACE DIRECTORY DMPDIR AS 'E:oracle_dump';

SQL> grant read,write on directory DMPDIR to 用户(TAX);

​  (3)导入数据【各个表的导入】

SQL> impdp 用户名/密码@SID【TAX】 DIRECTORY=DMPDIR file=full.dmp TABLES=(lg_fr2,ABC_TEMP)

Attention:

当报错为:UDI-12541: 操作产生了 ORACLE 错误 12541

ORA-12541: TNS: 无监听程序

解决方案:从windows的开始菜单中“Net Configuration Assistance”重新配置监听程序。链接

当报错为:ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

解决方案:①先在oracle 中创建未完成的建表语句,再将数据append进去。

impdp [email protected] DIRECTORY=DMPDIR file=full.dmp TABLES=DJ_NSRXX TABLE_EXISTS_ACTION = APPEND

②创建表空间时设置大一点。 或者为表空间添加新的datafile.

alter tablespace TAX add datafile 'F:appTAX1.DBF' size 1000M;Resumable error: ORA-01653: 表 TAX.SB_ZZS_XGMNSR_2005 无法通过 8192 (在表空间 TAX 中) 扩展 Resumable stmt: BEGIN SYS.KUPW$WORKER.MAIN(‘SYS_IMPORT_TABLE_01’, ‘TAX’, 0); END; Resumable stmt status: SUSPENDED

解决方案:注意可能是导出的字符集与将导入的数据库的字符集不同。将数据的字符集设置为与导出的相同。方法链接

(4)开放windows下的1521端口。

windows防火墙——>高级设置——>入站规则——>新建规则——>端口——>1521——>允许连接。此时其他oracle客户端即可连接使用数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值