转自:
[url]http://blog.chinaunix.net/u2/72698/showart.php?id=1071322[/url]
linux平台下的数据库配制如下
数据库是以文件系统管理
实例名:orcl
数据库名:orcl
ORACLE_BASE=/u01/app/oracle/oracle
ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1
ORACLE_SID=orcl
数据库文件存放位置:/u02/oradata/orcl
步骤如下:
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
复制参数文件,控制文件,数据文件,重做日志组文件到windows平台下的目录,
我这里是通过Samba来复制到windows平台下的目录,也可以在linux开个FTP,把以
上文件通过FTP下载到windows平台文件夹下面
用UltraEdit打开文件D:\oracle\product\10.2.0\db_1\database\initlinux.ora
把linux下的目录结构改成windows下的目录结构,如果实例名也有,同时更改实例名为linux,
下面文件是我的参数文件信息。供参考:
orcl.__db_cache_size=92274688
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=62914560
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\admin\linux\adump'
*.background_dump_dest='D:\oracle\admin\linux\bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\oradata\linux\control01.ctl','D:\oracle\oradata\linux\control02.ctl','D:\oracle\oradata\linux\control03.ctl'
*.core_dump_dest='D:\oracle\admin\linux\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='D:\oracle\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.job_queue_processes=10
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.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='D:\oracle\admin\linux\udump'
在windows下创建linux实例实启动
D:\oracle\product\10.2.0\db_1\bin\oradim.exe -new -sid linux
打开跟踪文件,目录为D:\oracle\admin\linux\udump
查找最新修改文件*.trc,如我的机子上是linux_ora_3632.trc
因为我在linux下已经把所有的文件都复制过来了,所以我选用Set #1. NORESETLOGS case这段创建控制文件模版
把选中这段文字所有目录结构改成windows平台下的目录结构,下面是我的样例如下:
出现一系统成功提示信息。
检查里面数据是否有丢失等等。
以下是在服务器端加上监听配制,
在D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora加上以下内容
在客户段配制文件tnsnames.ora 最后面加入如下内容:
最近学习了一下oracle数据库启动原理,突然想我在linux创建的数据库想把移植到windows用
经过一翻思考,动手把linux下的数据库直接通过原文件复制到windows下启动起来了。
虽然此移植在实际生产用途不大,但对一个刚oracle来说,确实能从中学到很多东西,所以写
下此文以供大家参考,欢迎提出宝贵介意。
经过一翻思考,动手把linux下的数据库直接通过原文件复制到windows下启动起来了。
虽然此移植在实际生产用途不大,但对一个刚oracle来说,确实能从中学到很多东西,所以写
下此文以供大家参考,欢迎提出宝贵介意。
系统环境:linux 下是32 位平台,linux内存,CPU等硬件条件和windows是一样。
如果硬件条件不一至,下面讲的数据迁移可能会碰到其他问题。
如果硬件条件不一至,下面讲的数据迁移可能会碰到其他问题。
软件环境:linux平台和windows平台装的oracle软件版本是
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
都是以企业版安装。
如果两边版本不一至,还没有实验过。
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
都是以企业版安装。
如果两边版本不一至,还没有实验过。
我粗略讲一下过程,把linux下的数据文件,控制文件,重做日志组文件,
参数文件,复到到windows下,然后把参数文件里的控制文件改成windows目录
下结果,同时使数据重新生成控制文件。详细步骤如下:
参数文件,复到到windows下,然后把参数文件里的控制文件改成windows目录
下结果,同时使数据重新生成控制文件。详细步骤如下:
linux平台下的数据库配制如下
数据库是以文件系统管理
实例名:orcl
数据库名:orcl
ORACLE_BASE=/u01/app/oracle/oracle
ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1
ORACLE_SID=orcl
数据库文件存放位置:/u02/oradata/orcl
windows平台下的数据库配制如下
数据库是以文件系统管理
实例名:linux 由于我的windows平台上已经有一个实例名为orcl的,所以我把linux平台移过来改为linux实例名
数据库名:orcl 由于数据库是从linux文件直接复制过来,所以数据库名是不能更改的
ORACLE_BASE=D:\oracle
ORACLE_HOME=D:\oracle\product\10.2.0\db_1
ORACLE_SID=linux
数据库文件存放位置:D:\oracle\oradata\linux
数据库是以文件系统管理
实例名:linux 由于我的windows平台上已经有一个实例名为orcl的,所以我把linux平台移过来改为linux实例名
数据库名:orcl 由于数据库是从linux文件直接复制过来,所以数据库名是不能更改的
ORACLE_BASE=D:\oracle
ORACLE_HOME=D:\oracle\product\10.2.0\db_1
ORACLE_SID=linux
数据库文件存放位置:D:\oracle\oradata\linux
步骤如下:
--登录到linux下数据库
[oracle@localhost ~]$ 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> create pfile='initorcl.ora' from spfile;
文件已创建。
--关毕数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
复制参数文件,控制文件,数据文件,重做日志组文件到windows平台下的目录,
我这里是通过Samba来复制到windows平台下的目录,也可以在linux开个FTP,把以
上文件通过FTP下载到windows平台文件夹下面
windows平台如输入如下创建文件夹
mkdir D:\oracle\oradata\linux
mkdir D:\oracle\oradata\linux
linux平台下的数据文件,重做日志组文件和控制文件放在 /u02/oradata/orcl
windows平台我把放到 D:\oracle\oradata\linux
windows平台我把放到 D:\oracle\oradata\linux
把linux下/u02/oradata/orcl所有文件都复制到D:\oracle\oradata\linux
把linux平台下的实例参数文件/u01/app/oracle/oracle/product/10.2.0/db_1/dbs/initorcl.ora
复制到window平台下的 D:\oracle\product\10.2.0\db_1\database\initlinux.ora
(这里注意文件名,windows平台下我把改成initlinux.ora)
复制到window平台下的 D:\oracle\product\10.2.0\db_1\database\initlinux.ora
(这里注意文件名,windows平台下我把改成initlinux.ora)
以下是windows平台在cmd命令下输入的命令
创建文件夹:
mkdir D:\oracle\admin\linux\adump
mkdir D:\oracle\admin\linux\bdump
mkdir D:\oracle\admin\linux\cdump
mkdir D:\oracle\admin\linux\dpdump
mkdir D:\oracle\admin\linux\pfile
mkdir D:\oracle\admin\linux\udump
创建文件夹:
mkdir D:\oracle\admin\linux\adump
mkdir D:\oracle\admin\linux\bdump
mkdir D:\oracle\admin\linux\cdump
mkdir D:\oracle\admin\linux\dpdump
mkdir D:\oracle\admin\linux\pfile
mkdir D:\oracle\admin\linux\udump
如果D:\oracle\flash_recovery_area也不存在,也创建
mkdir D:\oracle\flash_recovery_area
mkdir D:\oracle\flash_recovery_area
设计环境变量
set ORACLE_SID=linux
或者打开注册表
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
把ORACLE_SID改成linux
set ORACLE_SID=linux
或者打开注册表
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
把ORACLE_SID改成linux
用UltraEdit打开文件D:\oracle\product\10.2.0\db_1\database\initlinux.ora
把linux下的目录结构改成windows下的目录结构,如果实例名也有,同时更改实例名为linux,
下面文件是我的参数文件信息。供参考:
orcl.__db_cache_size=92274688
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=62914560
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\admin\linux\adump'
*.background_dump_dest='D:\oracle\admin\linux\bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\oradata\linux\control01.ctl','D:\oracle\oradata\linux\control02.ctl','D:\oracle\oradata\linux\control03.ctl'
*.core_dump_dest='D:\oracle\admin\linux\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='D:\oracle\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.job_queue_processes=10
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.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='D:\oracle\admin\linux\udump'
在windows下创建linux实例实启动
D:\oracle\product\10.2.0\db_1\bin\oradim.exe -new -sid linux
创建密码文件
D:\oracle\product\10.2.0\db_1\bin\orapwd.exe file=D:\oracle\product\10.2.0\db_1\database\PWDlinux.ora password=<密码>
D:\oracle\product\10.2.0\db_1\bin\orapwd.exe file=D:\oracle\product\10.2.0\db_1\database\PWDlinux.ora password=<密码>
登录数据库
c:\>sqlplusw / as sysdba
启动到nomount下
SQL> startup mount pfile=D:\oracle\product\10.2.0\db_1\database\initlinux.ora;
ORACLE 例程已经启动。
SQL> startup mount pfile=D:\oracle\product\10.2.0\db_1\database\initlinux.ora;
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 62915940 bytes
Database Buffers 100663296 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
Fixed Size 1247900 bytes
Variable Size 62915940 bytes
Database Buffers 100663296 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
--创建一个spfile文件,下次以spfile文件启动
SQL> create spfile='spfilelinux.ora' from pfile;
SQL> create spfile='spfilelinux.ora' from pfile;
文件已创建。
这样在D:\oracle\product\10.2.0\db_1\database下有一个spfilelinux.ora文件
下次启时候直接以spfile文件启动
下次启时候直接以spfile文件启动
--做一个把控制文件的内容生成到跟踪文件命令,这一部很重要,生成到跟踪文件里的就是重创控制文件的命令。
SQL> alter database backup controlfile to trace;
数据库已更改。
关闭数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
打开跟踪文件,目录为D:\oracle\admin\linux\udump
查找最新修改文件*.trc,如我的机子上是linux_ora_3632.trc
用UltraEdit打开,并查找这行:“-- Set #1. NORESETLOGS case”
选中并复制到
“-- End of tempfile additions.
--
-- Set #2. RESETLOGS case”为止。
“-- End of tempfile additions.
--
-- Set #2. RESETLOGS case”为止。
因为我在linux下已经把所有的文件都复制过来了,所以我选用Set #1. NORESETLOGS case这段创建控制文件模版
把选中这段文字所有目录结构改成windows平台下的目录结构,下面是我的样例如下:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\LINUX\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\ORACLE\ORADATA\LINUX\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\ORACLE\ORADATA\LINUX\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\LINUX\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\LINUX\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\LINUX\SYSAUX01.DBF',
'D:\ORACLE\ORADATA\LINUX\USERS01.DBF'
CHARACTER SET ZHS16GBK
;
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\LINUX\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\ORACLE\ORADATA\LINUX\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\ORACLE\ORADATA\LINUX\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\LINUX\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\LINUX\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\LINUX\SYSAUX01.DBF',
'D:\ORACLE\ORADATA\LINUX\USERS01.DBF'
CHARACTER SET ZHS16GBK
;
RECOVER DATABASE
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
保存一个sql语句文本如c:\CreateControl.sql
最后在空闲例程状态下,执行c:\creacontr.sql
在sqlplusw里执行保存的脚本,如
SQL> @c:\creacontr.sql;
出现一系统成功提示信息。
检查里面数据是否有丢失等等。
以下是在服务器端加上监听配制,
在D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora加上以下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
#以下这段是需要加的内容
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = LINUX)
)
)
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
#以下这段是需要加的内容
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = LINUX)
)
)
重起监听程序
c:>\lsnrctl stop
c:>\lsnrctl start
c:>\lsnrctl stop
c:>\lsnrctl start
在客户段配制文件tnsnames.ora 最后面加入如下内容:
LINUX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zjhmobile)(PORT = 1521))
)
(CONNECT_DATA =
(SID = LINUX)
(SERVER = DEDICATED)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zjhmobile)(PORT = 1521))
)
(CONNECT_DATA =
(SID = LINUX)
(SERVER = DEDICATED)
)
)
完.
转载于:https://blog.51cto.com/sunwayle/86471