zoukankan      html  css  js  c++  java
  • 迁移整个数据库

    1)迁移整个数据库,然后再进行挂库升级

    第一步:先把数据库正常停库,然后重启数据库为只读模式

    Startup mount

    Alter database open read only;

     

    第二步:RMAN状态下运行脚本,把源库数据进行备分导出。

    关于转换的问题:在传输表空间我们说过都是小字节不用转换也可以,但是现在是库,小字节的也要进行转换,因为它是库,如果一个是高字节一个小字节这个是没有办法转换成功的。就是说两个字节类型必须一样

    run

    {

    allocate channel c1 type disk;

    allocate channel c2 type disk;

     CONVERT DATABASE NEW DATABASE 'test'                                                     

     transport script '/home/oracle/transportdb.sql'                                        

     to platform 'Microsoft Windows IA (64-bit)'                                            

     db_file_name_convert '/oradata/miao' '/oracle/orabak/';

    }

     转换完成后可以在/oracle/orabak可以看到转换后的文件

    第三步:然后我们把这引起文件全部传到windows下的E:ORABAK目录下面

     第四步:在目标机上建立参数文件和控制文件

      |--参数文件内容如下:

    *.audit_file_dest='e:appAdministratoradminsenhaoadump'

    *.audit_trail='NONE'

    *.compatible='11.2.0.0.0'

    *.control_files='e:orabakcontrol01.ctl','e:orabakcontrol02.ctl'

    *.db_block_size=8192

    *.db_domain=''

    *.db_name='test'

    *.deferred_segment_creation=FALSE

    *.diagnostic_dest='e:appAdministrator'

    *.memory_target=837812224

    *.nls_language='SIMPLIFIED CHINESE'

    *.nls_territory='CHINA'

    *.open_cursors=300

    *.processes=150

    *.remote_login_passwordfile='EXCLUSIVE'

    *.undo_tablespace='UNDOTBS1'

     

    |--控制文件内容如下:

    CREATE CONTROLFILE REUSE SET DATABASE "TEST" RESETLOGS ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXINSTANCES 8

    MAXLOGHISTORY 292

    LOGFILE

    GROUP 1 'E:orabak edo01.log' size 50M,

    GROUP 2 'E:orabak edo02.log' size 50M,

    GROUP 3 'E:orabak edo03.log' size 50M

    DATAFILE

    'E:orabaksystem01.dbf',

    'E:orabakundotbs01.dbf',

    'E:orabaksysaux01.dbf',

    'E:orabakusers01.dbf',

    'E:orabakexample01.dbf'

    CHARACTER SET ZHS16GBK

    ;

     

    第五步:创建实例名,在WIN下用ORADIM命令

    >>oradim -NEW -SID test

     

    第六步:启动数据库到NOMOUNT状态,并且创建控制文件

    SQL> startup nomount pfile=e:orabakinittest.ora

    SQL> @e:orabakctl.sh.txt

     第七步:在这里我们要特别注意:因为我们现在的库是11g的,但是传过来的是10g的库,所以我们在打开库的时候,一定要以升级的方式打开。否则库就会损坏

    SQL> alter database open resetlogs upgrade;

    第八步:现在我们来做挂库升级,用的脚本都是通用的

    @?/rdbms/admin/catupgrd.sql

     

    我们可以看到出了一个ORA-00904错误,我们通过meatlink查看可以是因为有一个表 10的进修少一行,我们可以把它加上。如果没有,我们直接创建

    那么,我们怎么解决呢?我们先看一下我们这个里面的表是几行?

    通过上图我们可以看到我们的这个表只有三行,所以我们现在要加一行进行,或者把这三行全删除了,再重新插入四行。语法如下:

    1) If the registry$database table does not get created by the Pre-Upgrade Script,then it may be created using the below SQL statement:

    SQL> 'CREATE TABLE registry$database(
    platform_id NUMBER,
    platform_name VARCHAR2(101),
    edition VARCHAR2(30),
    tz_version NUMBER
    )';

    2) Then manually insert the Platform DST Patch information using the below SQL statement:

    SQL> 'INSERT into registry$database
    (platform_id, platform_name, edition, tz_version)
    VALUES ((select platform_id from v$database),
    (select platform_name from v$database),
    NULL,
    (select version from v$timezone_file))';

     

    现在我们直接加入一列就可以了

    Alter table registry$database add tz_version NUMBER;

     

    第九步:在这里我们还要注意一点:那就我们要给现在这个库添加一个临时表空间,生产中好多都是没有加这个,导致出了问题的。所以我们要查看一下如果没有,这个一定要加的

    SQL> select file_name from dba_temp_files;

    SQL> alter tablespace temp add tempfile 'e:orabak emp01.dbf' size 1000m;

     第十步:现在我们再来跑那个脚本,在这之前,我们一定要开SPOOL,因为它闪屏太快,有没有成功,有什么错误我们都看不到,所以我们要做一个日志来记录这些东西

    SQL> spool e:catpatch.log

    SQL> @?/rdbms/admin/catupgrd.sql

     

     





  • 相关阅读:
    WINDOWS XP启用远程桌面
    Qt 局域网聊天软件
    SpringCloud 学习笔记(2)项目搭建
    SpringCloud 学习笔记(3)注册中心Eureka
    工作一周的经验
    Servlet支持上传多张图片
    区别前端的首次加载
    Java中String类型的部分用法
    前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例
    python线程池、自定义异常、请求伪装
  • 原文地址:https://www.cnblogs.com/miaoxg/p/5165272.html
Copyright © 2011-2022 走看看