oracle 21c数据库导入dmp文件

前炎

      数据迁移,由oracle数据库导入到mysql数据库,只提供了oracle导出的dmp文件,因为数据的迁移还需要程序处理后才能放入mysql,所以下面是从oracle安装到导入dmp文件以及遇到的问题的全过程。

一.oracle数据库的安装

Oracle Database Express Edition | Oracle 中国 导入使用的是oracle的快速版,免费下载使用,进入官网界面如下:

点击下载选择对应版本,我是在本地window上跑的所以下载windowsx64

以管理员身份运行安装包,安装时不用多余选择默认下一步即可,一定要记住sys和system账号密码

        如果遇到需要重装,去控制面板里面卸载后重启电脑可能会出现删除不干净从而导致下一次安装报错,下面是需要删除的,挨个寻找如果存在就删除,删除后重启再次尝试安装

1.删除注册表:

  • HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE;
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有以Oracle或OraWeb开头的;
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,将Oracle删除;
  • HKEY_CLASSES_ROOT,将所有以Ora、Oracle、Orcl或EnumOra为前缀的都删除;
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs,将所有以Oracle开头的键都删除;
  • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI,将除Microsoft ODBC for Oracle以外的所有含有Oracle的键都删除;

其中有些注册表项可能在卸载Oracle产品的时候已经被删除;

2.查看环境变量:
        删除CLASSPATH和PATH中有关Oracle的设置;

二.文件导入

        写在开头,因为是在windows系统上进行的oracle操作,所以所有在打开命令行或者sqlplus的程序都是需要使用管理员权限去运行的。不然可能会出现权限不足导致命令执行失败的问题。

1.登录默认账户

首先打开SQL plus 以管理员身份运行

打开后登录默认用户  SYS 密码为上面安装时设置的密码  执行命令:SYS AS SYSDBA 

2.创建目录

创建目录,用来存放dmp文件用于导入   

命令:
        create directory DIR as 'D:\dir';     命令解释: 用来创建目录的命令,路径可以自己指定,这里我再d盘新建了一个dir文件夹,目录的名称也可以自己指定,注意后面执行命令时需要自己替换。
        select * from dba_directories;   命令解释:查询所有已经存在的目录

将dmp文件放入上面指定的目录

3.创建表空间

创建表空间以及临时表空间

命令:create tablespace DEPT_DATA datafile 'D:\dir\DEPT_DATA.ORA' size 800M autoextend on next 5M maxsize unlimited;

创建临时表空间

命令:create smallfile temporary tablespace DEPT_TEMP tempfile 'D:\dir\DEPT_TEMP.dbf' size 800M autoextend on next 5M maxsize unlimited;

 4.创建用户并指定表空间(包括遇到的问题及解决方式)

创建用户并且指定表空间为刚刚创建的表空间

命令解释:

create user 账号 identified by 密码 default tablespace 表空间名称 temporary tablespace 临时表空间名称;   

创建账号在cdb模式下需要加上C##

执行命令:create user depttest01 identified by depttest01 default tablespace DEPT_DATA temporary tablespace DEPT_TEMP;

        第一次执行后报错,查询后发现需要在户名前面加上C##,上图中我执行的命令里连密码也加了C##,密码不加也没事。更改后的命令为

create user C##depttest01 identified by C##depttest01 default tablespace DEPT_DATA temporary tablespace DEPT_TEMP;

        执行后又开始报错,提示刚刚创建的表空间不存在,查询后发现在CDB下给用户分配表空间时,此表空间必须在没有pdb的情况或者pdb下有相同表空间名称的时候才能成功。所以接下来就是查看是否有pdb,如果有pdb就也去新建一下表空间

 查看当前处于cdb还是pdb

命令解释:

        show con_name       --显示cdb还是pdb

        show pdbs;   -- 展示所有pdb

执行命令后看到存在一个pdb名称叫XEPDB1,上面的PDB$SEED不需要管,直接去XEPDB1里去创建表空间,切换到pdb,创建表空间

命令:

alter session set container=XEPDB1  -- 切换到pdb

create tablespace DEPT_DATA datafile 'D:\dir\DEPT_DATA_01.ORA' size 2m;  -- 创建表空间

create smallfile temporary tablespace DEPT_TEMP tempfile 'D:\dir\DEPT_TEMP_01.dbf' size 2M ; -- 创建临时表空间

ps:除了PDB$SEED以外的每一个pdb都需要创建表空间,因为我只有一个,所以我就只执行一次下面的,如果存在多个,重复下发操作即可

切换回CDB 容器,再次执行创建用户的命令

命令:alter session set container=cdb$root; --回到CDB容器

create user C##depttest01 identified by C##depttest01 default tablespace DEPT_DATA temporary tablespace DEPT_TEMP;  --创建用户

5.用户授权及测试

创建完成后,给用户授权,可以切换到创建的用户查看

命令:

grant connect,resource,dba to C##depttest01;   -- 授权

conn C##depttest01/C##depttest01 --连接用户

show user   -- 查看当前用户

6.导入dmp文件(包括遇到的问题和解决方式)

导入dmp文件有两个命令分别是impdp 和imp,区别是:如果使用的是较新的 Oracle 版本,并且希望更高效、更灵活地控制导入过程,那么 impdp 是更推荐的导入工具。但是,如果正在使用较旧的 Oracle 版本或需要进行简单的导入操作,那么只能使用 imp。

因为我使用过impdp后报错:ORA-39143: 转储文件 “/dir/BackUp2023.dmp” 可能是原始的导出转储文件,所以最终使用了imp,命令如下:

imp C##depttest01/C##depttest01@127.0.0.1:1521 file='D:\dir\Backup2024.dmp' full=y;

命令解释:imp 账号/密码@地址加端口 file=‘dmp文件所在的路径’ full=y;

执行后命令 后可以能出现报错,ORA-12899: 列 "JACKEYJ"."JK_REGISTER"."OPNAME" 的值太大 (实际值: 21, 最大值: 20),这个可以打开SQL plus登录后执行下列操作

查看服务器端字符集SQL > select * from V$NLS_PARAMETERS
修改:$sqlplus /nolog
SQL>conn / as sysdba  (ps: 在cmd中可以直接粘贴)
若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,
然后执行以下命令:
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;

接下来可能出现两种情况:

ERROR at line 1  RA-12721: operation cannot execute when other sessions are active
1、若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:
2、结果报错,提示新字符集必须是老字符集的超集。
于是强制转换
>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

最后步骤:
>shutdown immediate;
>STARTUP;

导入时还有可能会提示表空间不存在这个问题,同样打开SQL plus 登录后执行下面命令

select username, default_tablespace from dba_users where username='C##DEPTTEST01'
需要注意虽然创建用户的时候用户名称是小写,但是上面查询的时候需要所有英文字母大写,也就是由C##depttest01变为C##DEPTTEST01

修改以前先记住查询出的表空间名称,导入完以后还要改回去。

修改表空间名称命令:

alter tablespace 原空间名称 rename to 新空间名称;
假如导入后提示DATA_WEB表空间不存在 我们就执行 

alter tablespace DEPT_DATA rename to DATA_WEB

修改完成后,以管理员身份运行cmd再次执行导入语句

imp C##depttest01/C##depttest01@127.0.0.1:1521 file='D:\dir\Backup2024.dmp' full=y;

导入完成后记得再把表空间名字改回去,还是使用这个命令

alter tablespace 新空间名称 rename to 原空间名称;

提示,如果存在多个空间不存就重复修改和导入这两个过程,直到所有的表空间不存在问题都不见了以后再改回原来的表空间名称,重复执行导入语句不会重复导入已存在的数据,只会有提醒,是正常的,放心执行即可。提醒如下ORA-39151: Table "SOP2"."SYS_EXPORT_SCHEMA_01" exists. All dependent metadata and data will be skipped due to table_exists_action of skip;属于正常

三.navicat连接及查看

1.查看服务名及端口号

开始->所有应用   找到  Net Manager  打开,如下图

打开后 找到 本地->服务命名如下图,记住服务名和端口号,下面连接的时候需要用。

2.连接到oracle

打开navicat新建连接,如下图

然后填写连接名称,还有第一步查看的服务名和端口号,oracle默认端口号是1521,如下图

都填写完成后点击测试连接,连接成功

说一个我遇到的问题,我第二次链接的时候提示我监听什么的,我就去任务管理器把所有的oracle开头的服务重启了一遍,然后链接就可以了

 测试成功后确定打开刚刚创建的链接,就可以看到刚刚导入的数据库和数据了

四.数据传输

        使用navicat的数据传输工具,可以实现不同的数据库之间的数据传输,下面是oracle导入到mysql导入过程。

        首先要把需要导入的数据库也使用navicat连接上,就像上面新建oracle数据库连接一样,在新建链接的时候选择好自己对应的数据库类型就可以了。

        搞定好这些以后在navicat里找到工具->数据传输如下图

打开后选择好源和目标链接

然后选择好具体的数据库以后,下一步

然后选择需要传输的表然后下一步,可以全选

点击开始,完成数据的传输,然后就可以去目标库的链接里面查看有没有传输过去了

五.总结

        在windows上装oracle还是挺麻烦的,如果条件的允许,服务器或者别人电脑上已经装好了,直接在他人的电脑上或服务器上导入数据,然后用navicat去链接可以省去很多麻烦的问题,还有上面可能写的比较乱,有错误欢迎评论区指出。

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows10系统中,安装Oracle21c数据库并进行配置可以按照以下步骤进行: 1. 首先,确保你已经下载了Oracle21c的安装文件,并解压缩到一个目录中。 2. 打开解压缩后的目录,在其中找到“setup.exe”文件,并运行该文件。 3. 选择“单击此处以安装数据库”,然后点击“下一步”。 4. 在“选择安装选项”页面上,选择“创建和配置数据库”,然后点击“下一步”。 5. 在“系统类别”页面上,选择“服务器类”以便安装完整的数据库软件。 6. 在“数据库类型”页面上,选择“单实例数据库安装”,然后点击“下一步”。 7. 在“软件位置”页面上,选择你想要安装Oracle软件的目录,并点击“下一步”。 8. 在“数据库配置”页面上,选择“创建数据库”选项,并填写数据库的名称、字符集、管理员密码等信息。 9. 接下来,你可以选择数据库的存储选项、网络配置选项以及其他高级选项。根据你的需求进行选择,并点击“下一步”。 10. 在“配置操作系统组”页面上,你可以选择是否将数据库用户添加到操作系统组中。根据需要进行选择,并点击“下一步”。 11. 在“安装选项”页面上,选择你想要安装的组件和语言,并点击“下一步”。 12. 在“检查”页面上,系统会自动检查系统环境是否满足安装要求。如果没有问题,点击“下一步”。 13. 在“摘要”页面上,确认你的安装选项,并点击“安装”按钮。 14. 安装过程需要一些时间,请耐心等待。 15. 当安装完成后,点击“关闭”按钮。 至此,Oracle21c数据库的安装和配置完成了。你可以根据需要进行进一步的优化和配置,例如配置环境变量、优化服务等。同时,如果你想要卸载Oracle21c数据库,可以参考先前提到的中的方法或者在控制面板中使用卸载程序进行卸载。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值