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