1. 程式人生 > >windows下的oracle遷移到linux上

windows下的oracle遷移到linux上

最近學習了一下oracle資料庫啟動原理,於是,就把在Windows建立起來做測試的資料庫。

  移植到linux下使用,前幾天把Linux移植到Windows成功,但Windows移植到Linux碰到問題會多,

  Windows下不區分大小寫,但在Linux是區分的,這點務必請大家注意,下面讓我們一起去這過程吧!

  還是和上面講的一樣,我直接通過檔案複製,把原來在Windows下使用的資料庫移植到linux下,

  而不需要通過其他工具。

  雖然此移植在實際生產用途不大,但對一個剛Oracle來說,確實能從中學到很多東西, 所以寫下此文以供參考:

  系統環境:linux 下是32 位平臺,linux記憶體,CPU等硬體條件和windows是一樣。

  如果硬體條件不一至,下面講的資料遷移可能會碰到其他問題。

  軟體環境: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下是區分在小寫的,這裡改過來,必須和實際檔名大小寫一至,否則建立的控制檔案不能啟動。

http://www.wewill.cn/n22990c46.aspx