• oracle 12c迁移数据及遇到的问题


    因为要换服务器,重新安装oracle,就想着用下最新的12c。花了整整一天时间,记录过程与问题如下。

    一、下载oracle 12c:

    官网上的12.1.0.2.0有一半确实是下不了的,用百兆光纤下也是到一半失败。所以只能下载12.1.0.1.0.

    二、安装​oracle 12c:

    下载完成后解压第一部分,照以往经验,两个部分压缩包放在一起,是会一起解压出来的。所以我就没去检查,然后就悲催了,装了好久说找不到文件,失败了。。所以大家一定记得检查,不然浪费大把时间。如果发现第二部分没解压,就自己单独解压出来,然后剪切databasestageComponents目录下的几个文件夹到第一部分的对应目录下就可以了。中间安装选项就不介绍了,中文的,看自己需求选择。如果第一次像我一样装失败了,把安装到一半的目录全部干掉,不然后面不会覆盖安装的,浪费几g的空间。

    三、创建用户及赋予权限​

    安装完成了,cmd执行sqlplus登录system用户。然后create user username identitfied by password;创建用于导入旧数据的用户。grant create session,create table,unlimited tablespace to username;赋予新创建的用户创建session,创建表,使用任意表空间的权限。然后就可以等待旧数据库的dmp直接导入了。

    ​四、安装PL/SQL

    PL/SQL可视化管理数据库确实方便很多,必然要装一个。因为PL/SQL只有32位,需要做一些额外动作。下载instantclient-basic-nt-12.1.0.1.0.zip (一定得是32位的,不要下错了版本,Oracle官网有下载),将其解压至Oracle安装目录的Product下(我的是:E:apporclproduct)。拷贝数据库NETWORK/ADMIN目录下(E:apporclproduct12.1.0dbhome_2NETWORKADMIN)的tnsnames.ora和listener.ora文件到解压出来的instantclient_12_1目录下(E:apporclproductinstantclient_12_1)。下载PLSQL+Developer10.0.5.1710及其汉化补丁分别安装。找到你的PLSQL_Developer安装的目录(我的是:E:PLSQL Developer),新建一个start.txt文档,内容如下:@echo off 

    set path=E:apporclproductinstantclient_12_1

    set ORACLE_HOME=E:apporclproductinstantclient_12_1

    set TNS_ADMIN=E:apporclproductinstantclient_12_1

    set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

    start plsqldev.exe

    修改后缀名为bat,然后执行此start.bat,此bat会设置临时环境变量并启动plsqldev,如果不设系统环境变量的话,以后都需要从此bat启动。注意三个环境变量的值修改为自己电脑上对应的。这时有可能弹出说缺少某个dll的对话框,去网上下载那个dll放到目录下就可以了。打开PLSQL_Developer后,取消登陆,进入主界面。1.点击--工具--首选项--连接:

    2.把上面的注销改为提交

    3.OCI库改为带有instantclient_10_2的路径。

    4.应用--确定--关闭PLSQL_Developer重新运行就可以了。

    ​​​​​​​五、旧数据库导出

    停旧数据库的相关应用,关闭需要导出的表的外键关联(不关闭的话,在导入时因为找不到关联实体,会拒绝所有外键关联的行)cmd执行exp 后面就是中文交互式了,主要设置导出文件名,导出模式,是否导出数据等。​具体自己百度。

    六、新数据库导入

    将dmp文件拷贝到新服务器上,在新服务器上cmd执行imp,也是中文交互式,主要设置导入模式,导入的文件,是否导入数据等。我的模式是用户模式,导入整个用户数据,因为imp是insert方式导入,如果之前导入失败,一定要删除旧表或者旧记录。导入完成后,打开pl为旧数据库和新数据库都重新开启关联。

    七、迁移tomcat应用

    ​我的应用不知道为什么,用内网ip无法连接上数据库,报IO 异常:The Network Adapter could not establish the connection。所以只能换用localhost代替,但是这样就无法调试了,好坑。我的url串是:jdbc:oracle:thin:@localhost:1521:orcl。上面的异常解决后,又报:ORA-28040:No matching authentication protocol。网上的解决方式就两种,更新jdbc驱动和修改SQLNET.ALLOWED_LOGON_VERSION。

    我最后反正是通过在E:apporclproduct12.1.0dbhome_2NETWORKADMINsqlnet.ora中添加如下语句:

    ​SQLNET.ALLOWED_LOGON_VERSION=8

    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

    才解决,具体是不是只要其中一句,懒得试了,有知道的朋友可以说下。

    我之前是先试了更新jdbc驱动ojdbc6或者7都是不行,才开始修改SQLNET.ALLOWED_LOGON_VERSION。然后从12,11,10,9,8,7或者把所有都括号起来一个个试过来。修改SQLNET.ALLOWED_LOGON_VERSION不用重启数据库或者监听,也不用重启应用,开始应该先试这个的,哎。

    我最后整个app的状态是:app用的jdk1.6编译,用的ojdbc7,并在tomcat7.0下运行。我之前的jdbc版本是ojdbc14,是不是跟jdbc版本没关也不试了,有验证的朋友可以说下。网上还有说什么修改tnsnames.ora​和listener.ora里面的host的,然后还要重启监听,完全浪费我时间。

  • 相关阅读:
    公共服务领域英文译写规范
    [.NET Core]
    [WebAPI]
    [C#]
    [ES]
    [.Net Core]
    [SourceTree]
    如何使用一个库中不存在的函数
    在使用masm32 rc编译资源文件.rc出现的问题
    MSDN 2005 安装问题
  • 原文地址:https://www.cnblogs.com/swek/p/4337913.html
Copyright © 2020-2023  润新知