当前位置: 代码网 > it编程>数据库>Oracle > oracle导入线上数据的详细指南

oracle导入线上数据的详细指南

2024年11月22日 Oracle 我要评论
多租户架构允许oracle数据库成为一个多租户的容器数据库,也就是cdb,container database,与之相对应的,则是插入到这个容器里面的可插拔式数据库,pluggable databas

多租户架构允许oracle数据库成为一个多租户的容器数据库,也就是cdb,container database,与之相对应的,则是插入到这个容器里面的可插拔式数据库,pluggable database

一个cdb可以包含0,1或者多个用户创建的pdb。

一个pdb则是一个可插拔式的集合,它包含了用户,用户的对象,以及非用户的对象,它对外看起来就相当于一个non-cdb,也就是普通数据库。在12c之前的所有数据库都是non-cdb。

cdb里面的容器

一个容器既是一个pdb,也是一个root。

1、准备好数据库, 使用docker方式安装oracle数据库

docker run -d --name oracle  --privileged  -v /d/docker_env/oracle/db_data:/opt/oracle/oradata  -p 5050:5050 -p 5500:5500 -p 1521:1521 scalified/oracle-database:12.1.0.2-ee

注意第一次拉取镜像有点慢。

2、配置数据库

创建本地数据库用户名和密码,以及表空间,进入容器中

(2.1) docker exec -it bc261a5326c6  /bin/sh

(2.2) 修改tnsnames.ora文件, echo $oracle_home,找到文件位置

tnsnames.ora, $oracle_home\network\admin 下,

打开tnsnames.ora 查看默认数据库,配置环境变量,不然下面2.3代码无法生效

export oracle_sid=orclcdb

(2.3)输入以下代码

sqlplus sys/change_on_install as sysdba

(2.4)创建新的pdb aeolusoa, 注意路径是根据命令( select name from v$datafile;) 得出来,并非随意捏造。

create pluggable database aeolusoa  admin user db_oa_fz_fjjszx identified by ****** storage (maxsize 100g) default tablespace tbs_db_oa_fz_fjjszx  datafile '/opt/oracle/oradata/orclcdb/aeolusoa/aeolusoa01.dbf' size 150m autoextend on path_prefix = '/opt/oracle/oradata/orclcdb/aeolusoa/' file_name_convert = ('/opt/oracle/oradata/orclcdb/pdbseed/', '/opt/oracle/oradata/orclcdb/aeolusoa/');

(2.5)输入以下代码,启动pdb数据库: 

alter pluggable database aeolusoa open;  

(2.6)防止每次docker重新启动,需要多次配置

alter pluggable database aeolusoa save state;

(2.7)删除不要的pdb(可选)

drop pluggable database aeolusoa;

(2.8)启动pdb,以下步骤一定要在自己pdb操作

 alter session set container=aeolusoa ;

(2.9)授权用户

grant imp_full_database to db_oa_fz_fjjszx;
 
grant sysdba to db_oa_fz_fjjszx;
grant all privileges to db_oa_fz_fjjszx;
grant imp_full_database to db_oa_fz_fjjszx;

(2.10)创建表空间(可选),一定要跟线上一致不然,这步不做的话,默认是system的表空间,导入数据需要用vi,修改dmp文件

 create tablespace tbs_db_oa_fz_fjjszx_autoform logging datafile '/opt/oracle/oradata/orclcdb/aeolusoa/tbs_db_oa_fz_fjjszx_autoform
.dbf' size 10240m autoextend on next 100m maxsize unlimited   extent management local;
 
alter user db_oa_fz_fjjszx_autoform quota unlimited on tbs_db_oa_fz_fjjszx_autoform;

or

vi *.dmp
:1,$s/tbs_db_oa_fz_fjjszx/system/g

(2.11)配置tnsname.ora文件,将下面字复制到tnsname.ora文件中

aeolusoa =
  (description =
    (address_list =
      (address = (protocol = tcp)(host = 127.0.0.1)(port = 1521))
    )
    (connect_data =
      (service_name = aeolusoa)
    )
  )

(2.12)数据库迁移导入

线上备份

(1)、执行服务器的备份脚本,如

set mysid=jszxoa
 
set mypath=d:/data/%date%
 
set user1=db_oa_fz_fjjszx
set pass1=*******
 
set user2=db_oa_fz_fjjszx_autoform
set pass2=********
 
md "%mypath%"
 
 
exp '%user1%/%pass1%@%mysid%' file='%mypath%/%user1%.dmp' log='%mypath%/%user1%.log'
exp '%user2%/%pass2%@%mysid%' file='%mypath%/%user2%.dmp' log='%mypath%/%user2%.log'
 
 

(2)、数据在d:\data\{导出日期}\中。

(3)、复制到本地

(4)、dmp文件复制到启动的容器中,注意e6a787fccdf2,要使用docker ps命令查看当前docker启动的id

docker cp d:\data\2024-10-17\db_oa_fz_fjjszx.dmp  e6a787fccdf2:/opt/oracle

(5)数据导入

imp db_oa_fz_fjjszx/db_oa_fz_fjjszx@aeolusoa fromuser=db_oa_fz_fjjszx  touser=db_oa_fz_fjjszx file=/opt/oracle/db_oa_fz_fjjszx.dmp log=/opt/oracle/imp.log ignore=y

以上就是oracle导入线上数据的详细指南的详细内容,更多关于oracle导入线上数据的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com