oracle9i資料匯入oracle10g

darren__chan發表於2015-03-18


1.安裝資料庫軟體Oracle10g 11g都可以。
2.新建例項RISDB,注意新建時,在字符集選擇中,選擇‘從字符集列表中選擇’-‘US7ASCLL-ASCLL7位美國英語’。
  這是因為中西醫醫院的資料庫字符集是AMERICAN_AMERICA.US7ASCLL7,這裡必須使得匯入的server字符集與匯出的dmp一樣。
3.登入資料庫,執行建立表空間語句。
4.CMD 下執行imp system/manager file='c:\risdb.dmp' log='imrisdb.log' full=y ignore=y  (示例)  匯入成功。

5.這時檢視資料庫,發現漢字的都顯示為問號。SQL>select userenv('language') from dual; 檢視server端字符集,
  結果為SIMPLIFIED CHINESE_CHINA.US7ASCII。前面的SIMPLIFIED CHINESE_CHINA不知從哪裡可以設成AMERICAN_AMERICA。
6.修改資料庫的字符集US7ASCII為ZHS16GBK。
  
若此時資料庫伺服器已啟動,則先執行SHUTDOWN IMMEDIATE命令關閉資料庫伺服器,然後執行以下命令:


  SQL>STARTUP MOUNT;


  SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;


  SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;


  SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;


  SQL>ALTER DATABASE OPEN;


  SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK(這裡為你所要轉換成的字符集); //跳過超子集檢測


  SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK(這裡為你所要轉換成的字符集);


執行後出錯ORA-00933: SQL 命令未正確結束,不過執行上一行命令已經生效,這一句出錯對修改似乎沒有影響。


下面關閉資料庫,然後重新啟動:


  SQL>SHUTDOWN IMMEDIATE;


  SQL>STARTUP




7.再修改資料庫客戶端字符集


在windows平臺下,就是登錄檔裡面HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 。




NLS_LANG = language_territory.charset
它有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。
其中:
Language: 指定伺服器訊息的語言, 影響提示資訊是中文還是英文
Territory: 指定伺服器的日期和數字格式,
Charset:  指定字符集
————————————————————————————————————————————————————————
匯入過程中出現的一些錯誤:
1.出現ORA-01034和ORA-27101的原因是多方面的:
  主要是oracle當前的服務不可用,shared memory realm does not exist,是因為oracle沒有啟動或沒有正常啟動,
  共享記憶體並沒有分配給當前例項。所以,透過設定例項名,再用作業系統身份驗證的方式,啟動資料庫。這樣資料庫
  就正常啟動了,就不會報ORA-01034和ORA-27101兩個啟動異常了。 
  cmd命令視窗中,set ORACLE_SID=risdb 
                 sqlplus /nolog
             SQL>connect / as sysdba
             SQL>startup 


2.ORA-12514 TNS 監聽程式當前無法識別連線描述符中請求服務
解決思路:
根據出錯資訊判斷出客戶端未監聽到例項服務名
1、透過重啟服務的方式啟動資料庫,再次連線仍無法連線伺服器。
2、既然第一種方法不能解決問題,那就第二種方法。考慮監聽listener.ora
   監聽配置檔案listener.ora中可以不必指定監聽的服務名(安裝Oracle10g後也是沒有指定的)。正常情況下一般只要
   資料庫啟動,客戶端連線資料庫也沒有什麼問題,但是有時重複啟動關閉也會出現ORA-12514錯誤。
   既然listener.ora中沒有指定監聽,我們可以在listener.ora檔案中指定監聽的例項名,這樣該問題應該可以連線。
步驟如下:
  Cmd 下 lnsrctl stop
  在oracle伺服器Oracle安裝目錄(我的在E:\Oracle10g下,每個人的不一樣,根據自己的情況查詢)Network/admin
  目錄下找到listener.ora 我的如下所示
# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  (SID_DESC =
    (GLOBAL_DBNAME = risdb)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME = risdb)
    )


  )


LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
  )


其中加入的是:
(SID_DESC =
    (GLOBAL_DBNAME = risdb)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME = risdb)
    ) 
Cmd 下 lnsrctl start


3、oracle客戶端Net Cofiguration Assistant正確新增或重新配置例項名 

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

相關文章