一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

記一次oracle11g遷移到oracle12c遇到的坑

 XSMforever 2020-09-24

前提說明

最近,應(yīng)客戶要求,需要將平臺遷往另一個地方進行統(tǒng)一管理。原平臺用的是oracle11g,新平臺是oracle12c。由于公司人手不夠,這個任務(wù)就由我這個菜鳥頂上。遷移過程中,遇到的困難大多數(shù)與oracle數(shù)據(jù)庫有關(guān),這次呢就是想記錄一下遷移過程中遇到的一些坑。

一、備份數(shù)據(jù)時遇到的問題

遷移前,客戶通知去備份數(shù)據(jù),因為老平臺不再投入使用,幾天后就關(guān)閉訪問了。我接到通知后高興的跟領(lǐng)導(dǎo)打了個招呼跑路了(因為可以快樂的摸魚了),前往客戶機房導(dǎo)數(shù)據(jù)(服務(wù)器機房是真的冷,當時6月份的天,我在里面凍得受不了)。

1.plsql導(dǎo)出窗口一閃而過

導(dǎo)數(shù)據(jù)一上來就給了我一個下馬威。客戶是給了一臺win10界面的服務(wù)器作為跳板機,上面裝了oracle11g的客戶端和plsql。我剛開始用plsql導(dǎo)數(shù)據(jù),但是導(dǎo)出的黑窗口一閃而過,百度以后,網(wǎng)上有很多博文給出了解決方法,我呢在這里記錄一下。

方案一:配置環(huán)境變量(網(wǎng)上給的最多的解決方案)

1.安裝的本地oracle客戶端地址,一般都是app為最層文件夾
ORACLE_HOME:C:\app\MYSERVER\product\12.2.0\dbhome_1
2.配置sid
ORACLE_SID:ORCL

方案二:檢查plsql配置(我自己出現(xiàn)的問題,粗心導(dǎo)致的)
我按百度的方案做了配置,結(jié)果還是不行,過了幾天后(當時換成命令行導(dǎo)出了,這個問題是幾天后才發(fā)現(xiàn)的)仔細檢查了下,發(fā)現(xiàn)不知誰在plsql上把導(dǎo)出表的執(zhí)行文件exp.exe配置成了導(dǎo)入表的執(zhí)行文件imp.exe了,換成正確的后就可以了

這個文件一般在ORACLE_HOME/bin/exp.exe

2.使用exp命令行導(dǎo)出數(shù)據(jù)報錯:EXP-00091: Exporting questionable statistics.

plsql導(dǎo)出失敗后,我就使用命令行導(dǎo)出。

2.1使用exp命令導(dǎo)出數(shù)據(jù)

1.登錄oracle服務(wù)器,切換到oracle用戶
su -l oracle
2.編寫導(dǎo)出命令,格式如下
// 2.1整庫導(dǎo)出,包含系統(tǒng)表full=y
exp 用戶名/密碼@SID file=文件名  full=y
例如:使用系統(tǒng)用戶system導(dǎo)出整個庫
exp system/system@orcl file=\opt\mydb.dmp full=y
// 2.2導(dǎo)出某個(些)用戶下的所有表
exp 用戶名/密碼@SID file=文件名  owner=(用戶名)
例如:導(dǎo)出zhangsan用戶下的所有表
exp system/system@orcl file=\opt\mydb.dmp owner=zhangsan
例如:導(dǎo)出zhangsan、lisi兩個用戶下的所有表
exp system/system@orcl file=\opt\mydb.dmp owner=(zhangsan,lisi)
// 2.3導(dǎo)出指定的表
exp 用戶名/密碼@SID file=文件名  tables=(用戶名)
例如:導(dǎo)出teacher、student兩張表
exp system/system@orcl file=\opt\mydb.dmp owner=(teacher,student)

2.2報錯EXP-00091: Exporting questionable statistics.

這個我剛開始以為僅僅只是警告,導(dǎo)完數(shù)據(jù)我就回公司了,后來在把數(shù)據(jù)導(dǎo)入新庫時就出問題了,當然不僅僅是這一個問題導(dǎo)致的。這個問題是我同事幫我解決的,我網(wǎng)上查閱了資料,大多步驟如下:
原因:服務(wù)器上exp工具所在環(huán)境的字符集NLS_LANG與數(shù)據(jù)庫的字符集NLS_CHARACTERSET不一致引起的

  1. 查看數(shù)據(jù)庫的字符集
    我當時環(huán)境是ZHS16GBK(圖片是我后來自己搭建的測試庫字符集,僅僅做效果展示)

select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';

在這里插入圖片描述

  1. 設(shè)置exp工具的字符集,以ZHS16GBK為基準

1.切換到oracle用戶
su -l oracle
2.設(shè)置變量
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
3.查看是否設(shè)置成功
echo $NLS_LANG

2.3oracle11g不會導(dǎo)出空表

一定要注意,oracle11g使用exp導(dǎo)出時不會導(dǎo)出僅有表結(jié)構(gòu)而沒存具體數(shù)據(jù)的表,我就是吃了這個大虧。由于項目是基于以前一個項目修改得來的,所以有很多表是空表,只起個占位作用,讓sql不報錯,本身不存數(shù)據(jù)的。當我后期導(dǎo)入新庫時,后臺報了一堆缺表的錯誤。在后來重新備份數(shù)據(jù)的時候,使用plsql的export user objects把所有表結(jié)構(gòu)都導(dǎo)了出來。網(wǎng)上也有關(guān)于該問題的解決方案,但是當時已經(jīng)太晚了,就沒有嘗試了。

二、導(dǎo)入數(shù)據(jù)時遇到的問題

1.目標數(shù)據(jù)庫與源數(shù)據(jù)庫字符編碼不一致

在將備份完的數(shù)據(jù)導(dǎo)入庫時,控制臺報錯:

IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column ....

百度之后,是由于源數(shù)據(jù)的字符編碼ZHS16GBK與目標數(shù)據(jù)庫的字符編碼AL32UTF8不一致導(dǎo)致的,網(wǎng)上給出的解決方案是修改目標數(shù)據(jù)庫的字符編碼為ZHS16GBK。但是目標數(shù)據(jù)庫是客戶方委托第三方統(tǒng)一管理,不可能修改。最后與同事討論,同事給出建議嘗試修改測試庫(為了方便,我在公司測試服務(wù)器上搭建了一個oracle11g的測試庫,字符集是AL32UTF8)的字符集為ZHS16GBK,然后將數(shù)據(jù)導(dǎo)入測試庫,再將測試庫字符集修改為同目標庫一致的編碼AL32UTF8,再將文件導(dǎo)出。后來經(jīng)過測試,該方法不可行,會造成中文字符亂碼。最終決定后面一個一個改表字段的長度。

具體修改數(shù)據(jù)庫字符集的指令如下:

1.切換oracle用戶
su -l oracle;
2.連接數(shù)據(jù)庫
sqlplus / as sysdba;
3.關(guān)閉數(shù)據(jù)庫
shutdown immediate;
4.掛載數(shù)據(jù)庫
startup mount;
5.使用數(shù)據(jù)庫追蹤
alter session set sql_trace=true;
6.開啟限制會話模式
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
7.打開數(shù)據(jù)庫
alter database open;
8.修改編碼(這個根據(jù)個人實際情況來,我涉及到到兩個編碼,AL32UTF8和ZHS16GBK)
alter database character set internal_use zhs16gbk;
9.關(guān)閉數(shù)據(jù)庫
shutdown immediate;
10.重啟數(shù)據(jù)庫
startup;
11.查看數(shù)據(jù)庫編碼是否修改成功
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'

2.IMP-00003: 遇到 ORACLE 錯誤 942

使用plsql導(dǎo)入測試庫時報錯:

IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或視圖不存在

產(chǎn)生這個問題原因有很多,我是因為測試庫裝的oracle11g,而plsql工具所在的那臺win10系統(tǒng)服務(wù)器裝的客戶端是oracle12c,版本不一致。

三、啟動服務(wù)遇到的問題

1.啟動tomcat8.5報錯:Invalid character found in the request target.The valid characters are defined in RFC 7230 and RFC 3986

具體報錯內(nèi)容:

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

上網(wǎng)查了一下不錯原因,高版本tomcat是按照RFC 3986規(guī)范解析請求的,請求url中的字符必須包含在該規(guī)范中,如果url出現(xiàn)了該規(guī)范中沒有定義的字符就會報該錯誤,給出的解決方案如下:在tomcat的server.xml中添加relaxedPathCharsrelaxedQueryChars兩行參數(shù),參數(shù)后面接可能會在url中用到的特殊字符,可以參考官方網(wǎng)站https://tomcat./tomcat-8.5-doc/config/systemprops.html

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               relaxedPathChars="[]|" 
               relaxedQueryChars="[]|{}^&#x5c;&#x60;"<>" />

2.apache代理經(jīng)常出現(xiàn)502的問題

項目中使用apache做代理服務(wù)器,自己開發(fā)的服務(wù)沒有問題,但是兩個第三方產(chǎn)品,經(jīng)常會出現(xiàn)502的錯誤,有時是打開項目后,過一會頁面就502了,有時干脆項目都打不開,輸入訪問地址一直在加載就是進不去,最后報錯502。一番折騰后,發(fā)現(xiàn)需要在httpd.conf配置文件中,加入以下命令:

// 我的是httpd2.4 ,格式如下,是沒有=號的,網(wǎng)上有些格式Keepalive=On
Keepalive On

加入了該命令后,問題有所好轉(zhuǎn),但是兩個第三方服務(wù)始終有一個會502,兩者交替進行,甚至苦惱。最終,通過嘗試發(fā)現(xiàn),盡管兩個第三方服務(wù)部署在不同服務(wù)器上,但是兩者tomcat端口都8080,修改一個端口為8081后,就沒問題了,至于什么原因?qū)е碌奈乙矝]想明白。

總結(jié)

整個遷移過程歷時三周,原本以為一個星期就差不多了。其中困難之處如下:
1.數(shù)據(jù)庫由第三方管控,溝通交流不方便,增刪用戶,修改配置等等都要聯(lián)系對方dba進行操作,而有時dba會拒絕做一些修改,因為是一個公共庫,這就需要自己想辦法解決。
2.對oracle數(shù)據(jù)庫不熟悉,在備份數(shù)據(jù)和導(dǎo)入數(shù)據(jù)時遇到很多問題,結(jié)果就是光折騰數(shù)據(jù)就花了兩個星期。
3.使用了第三方服務(wù),出問題了還得求著對方支持,自己難以解決。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品日韩精品最新| 中文字幕一区二区熟女| 久久99热成人网不卡| 精品欧美日韩一二三区| 久久黄片免费播放大全| 欧美欧美日韩综合一区| 东北老熟妇全程露脸被内射| 免费大片黄在线观看日本| 少妇丰满a一区二区三区| 欧美午夜一级艳片免费看| 亚洲精品高清国产一线久久| 粉嫩国产一区二区三区在线| 熟女免费视频一区二区| 国产午夜福利一区二区| 在线观看免费午夜福利| 亚洲一区二区三区四区| 成人日韩在线播放视频| 免费啪视频免费欧美亚洲| 亚洲欧洲成人精品香蕉网| 国产综合香蕉五月婷在线| 区一区二区三中文字幕| 成人精品一区二区三区综合 | 中文字幕欧美精品人妻一区| 亚洲男人天堂成人在线视频| 精品少妇一区二区视频| 日韩精品一区二区三区射精| 人妻巨大乳一二三区麻豆| 色好吊视频这里只有精| 午夜精品在线视频一区| 午夜久久精品福利视频| 少妇一区二区三区精品| 视频一区二区三区自拍偷| 亚洲最大福利在线观看| 97人妻精品免费一区二区| 色偷偷亚洲女人天堂观看| 日韩免费成人福利在线| 中文字幕不卡欧美在线| 中文字幕一二区在线观看| 国产伦精品一区二区三区高清版| 亚洲欧洲在线一区二区三区| 国产中文字幕一二三区|