ORACLE10G升級11G

ocpDBAboy發表於2018-03-20
Oracle10g升級11g
資料遷移
目錄
 
1.調研資料結構
1.1分析
1.1.1 資料庫表空間
select *
  from dba_tablespaces t
 where t.tablespace_name not in
       ('SYSTEM', 'UNDOTBS1', 'SYSAUX', 'TEMP', 'USERS');
1.1.2 資料庫schema
select *
  from dba_users t
 where t.default_tablespace not in ('USERS', 'SYSTEM', 'SYSAUX')
   AND T.username not in ('SYS', 'SYSTEM');
 
1.2建立表空間
1.2.1生成建立表空間語句
--將查詢結果中的雙引號替換成單引號,即可正常執行!
Select ' Create TABLESPACE ' || tablespace_name || ' DATAFILE ' || '"'||
       file_name ||'"' || '  SIZE ' || to_char(ROUND(bytes / 1000000, 0)) ||
       'M REUSE AUTOEXTEND   ON NEXT  32M MAXSIZE UNLIMITED ;'
  from dba_data_files
 where tablespace_name not in  ('SYSTEM', 'UNDOTBS1', 'SYSAUX', 'TEMP', 'USERS');
2.選取方案
2.1.方案篩選
2.1.1.導全庫分析
10g全庫到11g考量因素:資料量(已知oracle10gdbf178G)和版本相容性(查詢官方網站得知就expdp工具在Oracle10g全庫到11g有未修復的bug,其他途徑未知)。
2.1.2導全庫結論
資料量大(一次測試周期長),字符集是US7ASCII,版本相容性有坑,
故:不考慮導全庫。
 
2.1.3導表空間分析
優點:1.匯出次數少;
      2.全且安全(方法同導schema
缺點:1.表空間比較大,一個次一個表空間週期長,不太好控制和監測;
      2.該庫屬於OLTP型別庫,導表空間存在碎片;
3.沒有最佳實踐過這種方式。
 
2.1.4導表空間結論
可以作為第二方案。
 
2.1.5導方案(schema)分析
優點:1.匯出次數少;
      2.全且安全(方法同導表空間)。
缺點:1.該庫屬於OLTP型別庫,導schema不存在碎片;
2.有最佳實踐過這種方式。
 
2.1.6導方案結論
可以作為第一方案。
 
2.1.7導表方案
表比較多,一張一張表導,週期太長,且容易弄混或者漏掉。
 
2.1.8導方案結論
可以作為補導方案(如果有些表資料不夠或新增表等等)。
 
3.選取工具
3.1工具分析
市面上工具有很多,調研且熟悉的工具是sqldeveloper
優點:1.操作簡單(圖形化介面操作);
2.
oracle官方推出的工具;
3.
前期有過調研且寫過相關的手冊。
 
3.2選取結論
根據3.1的優點分析選取sqldeveloper作為本次遷移工具。
4.資料匯出匯入
參見前期寫的文件,在明道“oracle資料泵調研之sqldeveloper工具使用”任務下【sqldeveloper資料泵調研說明文件(V329).docx
 
5.補充物件
5.1 導同義詞
--匯出所有同義詞
SELECT 'CREATE OR REPLACE PUBLIC SYNONYM ' || '"' || SYNONYM_NAME || '"' ||
       ' FOR ' || '"' || TABLE_OWNER || '"' || '.' || '"' || TABLE_NAME || '"' || ';'
  FROM DBA_SYNONYMS A where A.table_owner not in ('SYS', 'SYSTEM');
5.2 導使用者
select ' create user '|| username || ' identified by values ''' || 
 password || ''' default tablespace '||  
DEFAULT_TABLESPACE || '  TEMPORARY TABLESPACE ' 
||   TEMPORARY_TABLESPACE    ||';' 
from dba_users   where username not in ('SYS','SYSTEM','DBSNMP'); 
5.3 導角色
---角色可能有授予表操作許可權,還有相互交叉的角色,可能要手工在目標庫上執行源庫的指令碼
select 'create role ' || role || ' ;' from  dba_roles where role like 'ROLE%'

dbtiger 2018,3,19
good luck!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29267792/viewspace-2152016/,如需轉載,請註明出處,否則將追究法律責任。

相關文章