windows 下oracle 10G  数据库移植到 linux平台 (通过文件直接复制方法)

最近学习了一下oracle数据库启动原理,于是,就把在windows创建起来做测试的数据库

移植到linux下使用,前几天把linux移植到windows成功,但windows移植到linux碰到问题会多,

在windows用习惯人会不区分大小写,但在linux是区分的,这点务必请大家注意,下面让我们一起去这过程吧!

还是和上面讲的一样,我直接通过文件复制,把原来在windows下使用的数据库移植到linux下,

而不需要通过其他工具。

虽然此移植在实际生产用途不大,但对一个刚oracle来说,确实能从中学到很多东西,所以写

下此文以供大家参考,欢迎提出宝贵介意。

系统环境:linux 下是32位x86平台,linux内存,CPU等硬件条件和windows是一样。

如果硬件条件不一至,下面讲的数据迁移可能会碰到其他问题。

如果从x86平台移植到little endian模式移真到 Big Endian 模式下的CPU(如PowerPC系列),

这样复制会有问题,因为字节序不同。

软件环境:linux平台和windows平台装的oracle软件版本是

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

都是以企业版安装。

如果两边版本不一至,还没有实验过。

我粗略讲一下过程,把windows下的数据文件,控制文件,重做日志组文件,

参数文件,复到到linux下,然后把参数文件里的控制文件改成linux目录

下结构,同时使数据重新生成控制文件。详细步骤如下:

linux平台下的数据库配制如下

数据库是以文件系统管理

实例名:orcl

数据库名:orcl

ORACLE_BASE=/u01/app/oracle/

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

数据库文件存放位置:/u02/oradata/orcl

windows平台下的数据库配制如下

数据库是以文件系统管理

实例名:orcl

数据库名:orcl  由于数据库是从windows文件直接复制过来,所以数据库名是不能更改的

ORACLE_BASE=D:\oracle

ORACLE_HOME=D:\oracle\product\10.2.0\db_1

ORACLE_SID=orcl

数据库文件存放位置:D:\oracle\oradata\orcl

步骤如下:

--登录到windows下数据库

c:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 7月 1 14:53:23 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

--创建参数pfile文件

SQL> create pfile='initorcl.ora' from spfile;

文件已创建。

--关毕数据库

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

linux平台如输入如下创建文件夹

mkdir -o /u02/oradata/orcl

复制参数文件,控制文件,数据文件,重做日志组文件到linux平台下的目录,

我这里是在linux开了一个samba服务,然后把/u02/oradata/orcl文件夹共享

也可以在linux开个FTP,通过FTP把文件传到linux机器上

windows平台数据文件,,重做日志组文件和控制文件放在 D:\oracle\oradata\orcl

linux平台下的数据文件 /u02/oradata/orcl

linux平台下的实例参数文件window平台下的 D:\oracle\product\10.2.0\db_1\database\initorcl.ora

复制到linux平台下的目录

/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora

注意这里的文件名,linux下文件名是区分大小写的,所以把全部改成小写的

以下是linux平台输入如下命令来创建文件夹:

mkdir -p /u01/app/oracle/admin/orcl/adump

mkdir -p /u01/app/oracle/admin/orcl/bdump

mkdir -p /u01/app/oracle/admin/orcl/cdump

mkdir -p /u01/app/oracle/admin/orcl/dpdump

mkdir -p /u01/app/oracle/admin/orcl/pfile

mkdir -p /u01/app/oracle/admin/orcl/udump

如果/u01/app/oracle/flash_recovery_area也不存在,也创建

mkdir -p /u01/app/oracle/flash_recovery_area

设计环境变量

set ORACLE_SID=linux

或者更改oracle用户下的.bash_profile文件

ORACLE_SID=orcl; export ORACLE_SID

把ORACLE_SID改成orcl

用vi打开文件/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora

把windows下的目录结构改成linux下的目录结构。

注意下,在linux下文件名和文件夹都是区分大小写的,请确保下面参数实际文件名大小写一至,否则就起动不了数据库。

下面文件是我的参数文件信息。供参考:

orcl.__db_cache_size=75497472

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=75497472

orcl.__streams_pool_size=4194304

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.audit_trail='DB'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u02/oradata/orcl/CONTROL01.CTL','/u02/oradata/orcl/CONTROL02.CTL','/u02/oradata/orcl/CONTROL03.CTL'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.job_queue_processes=10

*.open_cursors=300

*.pga_aggregate_target=16777216

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

创建密码文件

orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=

linux下登录数据库

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 7 13:24:38 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>

--启动到mount下

SQL> startup mount pfile=/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              88082676 bytes

Database Buffers           75497472 bytes

Redo Buffers                2973696 bytes

Database mounted.

--创建一个spfile文件,下次以spfile文件启动

SQL> create spfile='spfileorcl.ora' from pfile;

File created.

下次启时候直接以spfile文件启动

--做一个把控制文件的内容生成到跟踪文件命令,这一部很重要,生成到跟踪文件里的就是重创控制文件的命令。

SQL> alter database backup controlfile to trace;

Database altered.

--关闭数据库

SQL> shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

打开跟踪文件,目录为$ORACLE_BASE/admin/linux/udump

查找最新修改文件*.trc,如我的机子上是linux_ora_3647.trc

用vi打开,并查找这行:“--     Set #1. NORESETLOGS case”

选中并复制到

“-- End of tempfile additions.

--

--     Set #2. RESETLOGS case”为止。

把选中这段文字所有目录结构改成linux平台下的目录结构,

注意,linux下是区分在小写的,这里改过来,必须和实际文件名大小写一至,否则创建的控制文件不能启动。

下面是我的样例如下,请供大家参考:

--     Set #1. NORESETLOGS case

--

-- The following commands will create a new control file and use it

-- to open the database.

-- Data used by Recovery Manager will be lost.

-- Additional logs may be required for media recovery of offline

-- Use this only if the current versions of all online logs are

-- available.

-- After mounting the created controlfile, the following SQL

-- statement will place the database in the appropriate

-- protection mode:

--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u02/oradata/orcl/REDO01.LOG'  SIZE 50M,

GROUP 2 '/u02/oradata/orcl/REDO02.LOG'  SIZE 50M,

GROUP 3 '/u02/oradata/orcl/REDO03.LOG'  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/u02/oradata/orcl/SYSTEM01.DBF',

'/u02/oradata/orcl/UNDOTBS01.DBF',

'/u02/oradata/orcl/SYSAUX01.DBF',

'/u02/oradata/orcl/USERS01.DBF',

'/u02/oradata/orcl/EXAMPLE01.DBF',

'/u02/oradata/orcl/TEST.DBF',

'/u02/oradata/orcl/TEST2.DBF'

CHARACTER SET ZHS16GBK

;

-- Commands to re-create incarnation table

-- Below log names MUST be changed to existing filenames on

-- disk. Any one log file from each branch can be used to

-- re-create incarnation records.

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2008_07_07/o1_mf_1_1_%u_.arc';

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2008_07_07/o1_mf_1_1_%u_.arc';

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2008_07_07/o1_mf_1_1_%u_.arc';

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2008_07_07/o1_mf_1_1_%u_.arc';

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2008_07_07/o1_mf_1_1_%u_.arc';

-- Recovery is required if any of the datafiles are restored backups,

-- or if the last shutdown was not normal or immediate.

-- RECOVER DATABASE

--恢复数据库这条语句报错,其实数据实本也没有丢失,没必要做一次恢复操作

-- All logs need archiving and a log switch is needed.

ALTER SYSTEM ARCHIVE LOG ALL;

-- Database can now be opened normally.

ALTER DATABASE OPEN;

-- Commands to add tempfiles to temporary tablespaces.

-- Online tempfiles have complete space information.

-- Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oradata/orcl/TEMP01.DBF' REUSE;

-- End of tempfile additions.

--

--     Set #2. RESETLOGS case

把恢复哪条语句去掉吧,本来也没有丢失数据,我在实验的时候有这知反而会报错,没有的正确。

保存一个sql语句文件,我是保存到/home/oracle/createcontrol.sql

最后在空闲例程状态下,执行/home/oracle/createcontrol.sql

在sqlplusw里执行保存的脚本,如

SQL> @/home/oracle/createcontrol.sql

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              88082676 bytes

Database Buffers           75497472 bytes

Redo Buffers                2973696 bytes

Control file created.

System altered.

Database altered.

Tablespace altered.

检查里面数据是否有丢失等等,如果没有丢失,证明数据库移植成功

以下是在服务器端加上监听配制,

在/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora加上以下内容

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

(SID_NAME = orcl)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

)

重起监听程序

[oracle@localhost ~]$ lsnrctl stop

[oracle@localhost ~]$ lsnrctl start

在客户段配制文件tnsnames.ora 最后面加入如下内容:

LINUX =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1(PORT = 1521))

)

(CONNECT_DATA =

(SID = orcl)

(SERVER = DEDICATED)

)

)

欢迎大家提出介意。由于此文时间仓足,有错别字的地方,敬请凉解。

oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...相关推荐

  1. 在window7 64位下Oracle 10g 数据库中PLSQL Developer配置和使用

    window764位下我看了一些资料并亲自试过,汇总了如下的方法,希望能解决大家的问题. 工具:已经装好的64位Oracle数据库 window7_64位的操作系统 PLSQL_Developer9. ...

  2. windows下Oracle 11g数据库每天自动备份的实现方法

    方式一 一.以exp命令备份 1.首先做个批处理脚本:backup.bat  脚本内容如下 @echo off        set curdate=%date:~0,4%%date:~5,2%%da ...

  3. Windows下ORACLE 10g安装与操作图解

    2007年10月21日 星期日 上午 06:16 刚刚接触ORACLE的人来说,从那里学,如何学,有那些工具可以使用,应该执行什么操作,一定回感到无助.所以在学习使用ORACLE之前,首先来安装一下O ...

  4. winform插入时间类型数据到oracle数据库,winform操作访问Oracle 10g数据库,并自动填充到DataGridView...

    使用oracle的ODP.NET是官方推荐,而且相对简单的方法. 官方指导文档: http://www.oracle.com/technetwork/cn/testcontent/o23odp-084 ...

  5. SuSE 10 Enterprise 下 Oracle 10g 关于找不到initorcl.ora文件和控制文件问题

    Oracle无法正常启动,经过一番学习,总算解决问题,在这里做个笔记,备用! 问题如下: 使用Oracle用户登录: >sqlplus /nolog 然后, >connect /as sy ...

  6. windows开发的qt项目移植到linux平台

    关键字:qt.linux.window.Qserialport  0 前言 接触这个任务之前,完全qt小白,大大小小的坑踩了不少. 1 环境与配置 qt5.12.12 ubuntu20.04 基于st ...

  7. Oracle 10g数据库概述

    Oracle 10g的特点 1.Oracle 10g 数据库标准版1 (Oracle Database 10g Standard Edition one).为工作组,部门级和互联网/内联网应用程序提供 ...

  8. oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询

    实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我们要从多张表中要得到信息,就得以一定的条件将表连接在一 实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我 ...

  9. oracle10g 概述,Oracle 10g数据库概述

    第一章Oracle 10g数据库概述 1.打开服务:service.msc 2.oracle 10g的分为 (1)oracle 10g数据库标准版1 优点:比互联网和内联网更具有易用性和性能价格比. ...

最新文章

  1. centos 安装 openfire
  2. 计算机表格计算总积分,Excel函数教程: 根据条件计算成绩表-excel技巧-电脑技巧收藏家...
  3. Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目
  4. 野火Linux开发板接入华为云,Huawei_LiteOS——STM32F1移植(野火开发板)
  5. 图像局部显著性—点特征(GLOH)
  6. Linux和windows中的换行符差异问题 LINUX的换行符在Windows记事本打开不换行或出现黑点
  7. Kanban VS Scrum:哪个是最好的敏捷项目管理框架
  8. LuckyFrame执行Web自动化用例
  9. JS简单实现分页显示
  10. 微信小程序实例练习——《排班查询》
  11. origin导出矢量图再编辑
  12. selenium使用AutoIt工具上传附件
  13. QQ好友不在线也可发送自定义表情(转)
  14. D-Link DIR505路由器溢出漏洞实战
  15. CrazyBox常见问题
  16. 最常见的Web网站攻击手段
  17. 用python创建topo常见问题
  18. nodejs微信公众号开发第一步(接入指南)--wechat模块
  19. 用matlab语言实现下面的分段函数,分段函数的运算与可视化的MATLAB实现
  20. 《基于Python的大数据分析基础及实战》第一章

热门文章

  1. 加班费计算(节假日、补班)
  2. Pandas-数字前面补0
  3. vue在生产环境、测试环境和开发环境,三种环境下配置不同的api地址
  4. 接口测试-post常见数据提交方式
  5. 云原生时代,为什么基础设施即代码(IaC)是开发者体验的核心?
  6. 给出一个不多于五位的正整数,求出它是几位数
  7. 第四届“橙瓜网络文学奖”暨见证·网络文学20年评选各类型十佳大神入围名单
  8. 解决oracle分布式锁,2.5.2 分布式锁管理器(DLM)
  9. sourcetree(mac)设置代理链接GitHub
  10. TP-LINK路由器配置