目錄
用到的功能點
表空間和用戶的創建、數據庫鏈接DBLink的創建、DMP文件的導入導出
操作方式:CMD+sqldevloper
場景介紹
假設甲方碰到了一些數據庫方面的問題或者需要擴展新的功能,需要你針對他們的數據庫提供一個可靠的,解決的方案。
而這些的前提是你需要對他們的數據庫的結構、表功能、字段等非常熟悉。
下面的工作是介紹在企業開發中,怎麼從甲方提供的數據庫接口獲取想要的數據庫文件,並將其導入到本地數據庫,從而方便後面進行本地開發
步驟介紹
- 先在本地創建對應的表空間和對應的用戶,專門用來存放遷移過來的數據庫(避免互相污染)
- 然後使用我們本地剛剛創建的用戶創建數據庫鏈接(DBLink),通過這個鏈接訪問他們的數據庫
- 使用SQL的表複製語句將我們需要的表和記錄複製到這個用戶的表空間下面
- 然後使用exp命令將這個表空間對應的dmp文件導出
- 然後拷貝這個dmp文件,到本地進行導入
- 測試數據是否完整遷移無丟失,至此工作完成
(有人就會問:爲什麼明明可以訪問了,還要複製表呢?這是線上別人的服務器環境,操作起來有在本地方便嗎?當然要複製,然後拷到本地弄啊,而且別人也不會一直開啓端口讓你訪問的,這讓別人數據也有被侵入的風險)
準備工作
1.甲方提供的接口
一般是他們的IP地址和數據庫的端口,然後一個用戶的賬號和密碼,以及SID,下面是一個例子
IP:192.168.10.177
賬號:test
密碼:123456
端口:1521
SID:orcl
2.測試這個IP和端口
windows開啓telnet功能: 控制面板-程序-啓用或關閉windows功能-勾選telnet客戶端-確定
使用windows的telnet命令
telnet ip地址 端口
telnet 192.168.10.177 1521
沒有報錯則表示IP和端口能夠正常訪問,否則後面的可以不用做了,先解決這個問題吧!
工作開始
1.本地創建表空間和對應用戶
打開SQLDeveloper,使用sytem賬號登錄
表空間的創建
(推薦system以上權限的用戶登錄數據庫,以他們的身份纔有資格創建表空間)
表空間的創建的SQL語句如下
create tablespace test_table_space
logging
datafile 'D:\DevelopeSoftWare\Oracle\oradata\orcl\test.dmp'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
#手動指定表空間名和datafile
#datefile就是對應表空間的文件,一般dmp文件都是在oradata/orcl下
用戶的創建
2.system賬號下新建一個用戶,取名任意,我這裏起名local
創建用戶成功後,使用這個用戶登錄,打開SQL工作表,準備下一步操作
2.創建數據庫鏈接(DBLink)
創建數據庫鏈接
利用提供的接口,我們創建一個數據庫的鏈接,然後通過這個鏈接,獲取對應數據庫中的數據
IP:192.168.10.177
賬號:test
密碼:123456
端口:1521
SID:orcl
對應的創建DBLink的SQL
#創建DBLINK 注意用戶名和密碼是雙引號,而不要用單引號
create database link test_dblink
connect to "test" identified by "123456"
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.177 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)';
#創建DBLINK 注意用戶名和密碼是雙引號,而不要用單引號
測試鏈接是否成功
select table_name from user_tab_comments@"數據庫鏈接名" ;
能查到表,就證明這個鏈接成功了!
數據採集
數據庫的採集用的就是表複製語句,將他們的表結構和記錄一起復制到我們的這個用戶的表空間!
先確定有哪些表是需要的
select table_name from user_tab_comments@"數據庫鏈接名" ;
上面的這個sql可以查看甲方提供的用戶的權限下能看到哪些表和視圖,然後我們確定要採集哪些表的數據
數據採集(複製表)
create table 表名 as select * from 要採集的表名@"數據庫鏈接名" [where 條件等];
其實可以打止了
複製完表以後其實這些表都已經出現在了你的本地的表空間中了,可以不使用數據庫鏈接,而使用本地的表測試和開發功能了。
但是我們再設想一個場景,你要把這裏東西弄到別的地方(比如,他們的接口只開放一段時間,你是在去公司的路上緊急弄到自己電腦上的,而需要在公司才能進行開發),怎麼辦?
這裏就涉及到了數據庫文件的導入導出,你必須要將文件導出到指定的dmp文件中,再將dmp遷移到別的機器上進行導入
數據庫文件的導入導出
文件導出
上面步驟我們的用戶的默認表空間是test_table_space,而這個表空間對應的文件是test.dmp,其實可以不用導出,直接用這個dmp文件導入就可以了,但是我們還是講一下用法
就是exp命令,然後按照下圖的步驟來
出現上面的提示,表示導出還是順利的
果然,我們的sb.dmp文件變大了
文件導入
直接執行下面命令
imp 你要導入的用戶名/口令@數據庫實例(默認是orcl) file=文件路徑 full=y
例如 imp system/root@orcl file=D://test.dmp full=y