Oracle迁移数据库
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1.遷移方法概述:
使用Navicat Premium 分別與源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)建立連接,然后借助Navicat Premium自帶的數(shù)據(jù)傳輸功能,實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)的遷移.其實(shí)跟從MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)是一個(gè)套路.
O(∩_∩)O~ 聽起來,是不是很簡(jiǎn)單,其實(shí)就是很簡(jiǎn)單!下邊我就講一下具體實(shí)現(xiàn)的細(xì)節(jié)流程:
2.實(shí)現(xiàn)步驟:
第一步:在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建表空間和用戶
這點(diǎn)我再次向?qū)racle數(shù)據(jù)庫(kù)不熟悉的同學(xué)強(qiáng)調(diào)一下,對(duì)于Oracle數(shù)據(jù)庫(kù)不像MySQL中,一個(gè)用戶可以管理多個(gè)數(shù)據(jù)庫(kù),對(duì)Oracle來說,一個(gè)用戶只對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù),而新創(chuàng)建的用戶是沒有任何資源和權(quán)限的,所以需要管理員用戶為其分配資源權(quán)限.
在控制臺(tái)以管理員權(quán)限登錄建立連接:
sqlplus system/admin@192.168.10.112:1521/orcl conn /as sysdba;?
如果你不小心忘記了密碼,可以參考我的另外一篇專門將創(chuàng)建表空間和用戶的博文:Oracle數(shù)據(jù)庫(kù)創(chuàng)建表空間和用戶及刪除數(shù)據(jù)庫(kù)(用戶)
創(chuàng)建表空間與用戶:
<!-- 創(chuàng)建表空間 datafile為你oracle安裝文件的路徑,其中casic_smart.dbf是自己隨便命名的 --> create tablespace casic_smart datafile 'E:\oracle\product\10.2.0\oradata\orcl\casic_smart.dbf' size 1000m; <!-- 創(chuàng)建用戶 并為其指定表空間 --> create user tianzhi_smart identified by tianzhi_smart default tablespace casic_smart quota 500m on users; <!-- 授予權(quán)限 --> grant all privileges to tianzhi_smart;?
第二步:使用Navicat Premium 分別與源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)建立連接
使用Navicat Premium連接Oracle數(shù)據(jù)庫(kù)時(shí),可能會(huì)報(bào)出如下錯(cuò)誤:
具體解決方案,可參考我的另外一篇博文: Navicat 提示Cannot create oci environment 解決方案
數(shù)據(jù)庫(kù)連接成功后如下圖:
進(jìn)行數(shù)據(jù)輸出:
3.其他方法:
如果這種方法遷移不成功,那就來試試一個(gè)更簡(jiǎn)單的方法:使用Oracel數(shù)據(jù)庫(kù)的imp,exp語句.
?
?
?
1.從源數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù):
語法:
exp user1/pwd1@test1 file='E:test.dmp';?
示例:
?
exp tianzhi_smart/tianzhi_smart@192.168.56.60:1521/orcl file='E:\tianzhi_smart.dmp';?
應(yīng)用截圖:
本人愚鈍,初次使用時(shí),都不知道在哪里輸入這導(dǎo)出語句,所以專門貼出來,以備像我一樣的小伙伴,少走些彎路.
?
2.向目標(biāo)數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù):
語法:
imp user2/pwd@test2 file='E:test.dmp' full=y;?
示例:
?
imp tianzhi_smart/tianzhi_smart@192.168.10.129:1521/orcl file='E:\tianzhi_smart.dmp' full=y;?
應(yīng)用截圖:
?
?
?
?
?
前言
?
關(guān)于dmp文件我們用的還是比較多的,dmp文件它是作為oracle導(dǎo)入和導(dǎo)出表使用的文件格式,今天就將dmp文件導(dǎo)出和導(dǎo)入進(jìn)行學(xué)習(xí)。
?
dmp文件導(dǎo)出
?
dmp文件導(dǎo)出用的比較多的一般是三種,他們分別是:導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)實(shí)例下的所有數(shù)據(jù)、導(dǎo)出指定用戶的所有表、導(dǎo)出指定表。
?
這里已我的數(shù)據(jù)庫(kù)為例,進(jìn)行介紹,我的Oracle數(shù)據(jù)庫(kù)實(shí)例為"ORACLE",查看自己數(shù)據(jù)庫(kù)實(shí)例可以從"任務(wù)管理器-->服務(wù)"中進(jìn)行查看,如下圖
?
?
打開命令行:
1,將數(shù)據(jù)庫(kù)ORACLE完全導(dǎo)出,用戶名system密碼manager 導(dǎo)出到c:\daochu.dmp中
exp system/manager@ORACLE file=c:\daochu.dmp full=y
?
2,將數(shù)據(jù)庫(kù)中RFD用戶與,JYZGCX用戶的表導(dǎo)出
exp system/manager@ORACLE file=d:\daochu.dmpowner=(RFD,JYZGCX)
?
3,將數(shù)據(jù)庫(kù)中的表T_USER、T_ROLE導(dǎo)出
expJYZGCX/JYZGCX@ORACLEfile= d:\data\newsmgnt.dmp tables=(T_USER,T_ROLE)
?
上面的system為用戶名,manager為密碼,ORACLE為數(shù)據(jù)庫(kù)實(shí)例名,其實(shí)不一定非的用system用戶,只要是擁有管理員權(quán)限的用戶都可以。
?
dmp文件導(dǎo)入
?
1,打開“開始”-->輸入cmd—> sqlplus /nolog;
2,輸入 conn / as sysdba管理員賬戶登錄;
3,需要?jiǎng)?chuàng)建表空間,如果我們知道需要導(dǎo)入的數(shù)據(jù)庫(kù)的表空間直接創(chuàng)建就可以,如果不不知道,也沒有關(guān)系,我們可以用txt打開dmp文件,使用快捷鍵ctrl+F,查找tablespace,就可以找到這個(gè)dmp文件所對(duì)應(yīng)數(shù)據(jù)庫(kù)的表空間,然后創(chuàng)建我們找到的表空間就可以;
步,不創(chuàng)建的表空間,創(chuàng)建用戶,并分配權(quán)限;
5,打開“開始”-->輸入cmd(注意:這里是cmd窗口,不是sqlplus窗口!!!),輸入以下語句:“imp kang/123456@localhost/ORACLEfile="C:\daochu.dmp"full=y ignore=y”
上述語句說明如下:
kang是創(chuàng)建的登錄數(shù)據(jù)庫(kù)用戶名;
123456是登錄數(shù)據(jù)庫(kù)的密碼;
localhost:代表當(dāng)前數(shù)據(jù)庫(kù)的地址是本機(jī),如果是遠(yuǎn)程導(dǎo)入,替換成對(duì)應(yīng)的ip地址就行
ORACLE:是實(shí)例名稱)
file:后面的是你當(dāng)前dmp文件存放的路徑
full=y,這個(gè)貌似是全部
ignore=y,忽略一些錯(cuò)誤
?
備注:關(guān)于數(shù)據(jù)庫(kù)實(shí)例、表空間、用戶等基本概念和創(chuàng)建的語句可參考前面的文章“Oracle學(xué)習(xí)——掃盲篇”
?
小結(jié)
?
本篇文章主要講述了,oracle數(shù)據(jù)導(dǎo)出和導(dǎo)入的具體步驟,其中導(dǎo)入dmp文件的時(shí)候即便不知道表空間、用戶名和密碼也可以進(jìn)行導(dǎo)入。Oracle的學(xué)習(xí)確實(shí)是路漫漫其修遠(yuǎn)兮啊!
?
1.創(chuàng)建Oracle表空間與用戶
Oracle數(shù)據(jù)庫(kù)不像MySQL數(shù)據(jù)庫(kù),一個(gè)用戶可以管理多個(gè)數(shù)據(jù)庫(kù),對(duì)Oracle來說,一個(gè)用戶只對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù),而新創(chuàng)建的用戶是沒有任何資源和權(quán)限的,所以需要管理員用戶為其分配資源權(quán)限.而創(chuàng)建用戶時(shí),需要為用戶指定表空間.
(1) 由于scott權(quán)限不夠,不能創(chuàng)建用戶,另外因?yàn)槠渌^高權(quán)限的賬號(hào)密碼忘記了,所以這里補(bǔ)充一下Oracle更改密碼的方法:
A.在控制臺(tái)輸入`sqlplus scott/tiger@192.168.56.6:1521/orcl `連接Oracle; B.輸入`conn /as sysdba`以DBA角色登錄; C.連接成功后,輸入“select username from all_users”查看用戶列表。 D.若修改某一個(gè)用戶密碼, 修改用戶口令 格式為:alter user 用戶名 identified by 新密碼;(2) 使用用戶system登錄PL/SQL Developer,創(chuàng)建表空間和用戶
create tablespace casic_smart datafile 'C:\oracle\product\10.2.0\oradata\orcl\casic_smart.dbf' size 1000m; create user tianzhi_smart identified by tianzhi_smart default tablespace casic_smart quota 500m on users; grant all privileges to tianzhi_smart;- 1
- 2
- 3
- 1
- 2
- 3
2.刪除Oracle數(shù)據(jù)庫(kù)(用戶)
刪除oracle數(shù)據(jù)庫(kù)其實(shí)也就是刪除oracle用戶,因?yàn)樵趏racle中數(shù)據(jù)庫(kù)與用戶是一一對(duì)應(yīng)的.而刪除數(shù)據(jù)庫(kù)(用戶)之后,再創(chuàng)建用戶,就相當(dāng)于清空了數(shù)據(jù)庫(kù)里面的數(shù)據(jù).
<!-- 以管理員用戶登錄 --> sqlplus /nolog conn /as sysdba; <!-- 刪除數(shù)據(jù)庫(kù)(用戶) --> drop user test1 cascade; <!-- 創(chuàng)建表空間 --> create tablespace casic_smart datafile 'C:\oracle\product\10.2.0\oradata\orcl\casic_smart.dbf' size 1000m; <!-- 創(chuàng)建用戶,并指定表空間 --> <!-- 有些是沒有指定表空間的,不知是否可行,未嘗試,保險(xiǎn)起見還是按下面方式來 --> create user test1 identified by pwd1 default tablespace casic_smart quota 500m on users; <!-- 授予權(quán)限 --> grant all privileges to test1 ;轉(zhuǎn)載于:https://my.oschina.net/u/2822116/blog/887755
總結(jié)
以上是生活随笔為你收集整理的Oracle迁移数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。