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