一、開發環境
操作系統:win11
Oracle版本:12c
Oracle 數據庫字符集:AL32UTF8
Pl/Sql版本:14
二、表空間創建
表空間是 Oracle 數據庫中一種重要的邏輯結構,它是數據庫中數據文件的邏輯集合,用于存儲數據庫對象,如數據表、索引等。表空間與數據文件緊密相關,dbf數據文件是實際存儲數據的物理文件,一個表空間可以包含一個或多個dbf數據文件 。
1.查看表空間對應的文件路徑,在Pl/Sql中輸入下述命令:
SELECT file_name,tablespace_name,bytes/1024/1024 AS size_mb
FROM dba_data_files
可以看到咱電腦有這么些默認的表空間,知道了這些默認表空間的存儲路徑,我們就可以根據他們的路徑來新建表空間了。
2.創建表空間
CREATE bigfile
TABLESPACE users03DATAFILE '你的表空間文件存儲路徑\數據文件名字可以DIY.DBF'SIZE 40G -- 初始分配AUTOEXTEND ONNEXT 2G -- 每次擴展2GBMAXSIZE UNLIMITED; -- 最大限制
空間分配邏輯,例如我們現在有20GB的DMP備份文件,70GB可用磁盤空間:
- DMP解壓空間: 20GB × 2 = 40GB 壓縮數據解壓膨脹系數
- 總計分配: 20GB x 2.5 = 50GB 最大限制值
- 保留空間: 20GB 系統運行必需空間
當然我上邊的代碼里沒有設置最大限制值,因為我這邊的存儲硬件資源比較寬裕,大家可以參考一下這個空間分配邏輯。
3.創建公共用戶
CREATE USER c##shuaige777 --用戶名
IDENTIFIED BY shuaige777 -- 用戶密碼
DEFAULT TABLESPACE USERS03 --表空間名稱
TEMPORARY TABLESPACE temp;--授權
GRANT DBA TO c##shuaige777;
為什么要在用戶名前加 c## ?
- Oracle 12c 及以上版本使用多租戶架構(CDB 包含多個 PDB)。
- 在根容器 (CDB$ROOT) 中創建用戶時,用戶名必須以 C## 或 c## 開頭(公共用戶)。
- 如果未使用 C## 前綴,或未切換到 PDB 容器執行命令,會觸發此錯誤。
三、導入DMP備份數據
1.登入Sql/Plus
打開Sql*Plus,輸入下述命令,提示輸入密碼按回車鍵即可。
sqlplus / as sysdba
2.創建目錄對象并授權
# 創
CREATE DIRECTORY dump_dir AS 'F:\OracleDumpDir';
# 授
GRANT READ, WRITE ON DIRECTORY dump_dir TO taibao666;
這是在Sql/Plus創建數據庫目錄對象,指向服務器文件系統路徑;也要在本地這個路徑下創建一個文件夾。
注意事項:Sql/Plus中創建的目錄對象名稱、路徑和本地創建的文件名稱、路徑要一致;目錄對象一旦創建,不能直接修改名稱,只能刪除再重新創建。
3.導入DMP備份數據文件
導入dmp是不能在Sql/Plus環境下導的,只能在cmd環境下導,所以以下的命令都是要在cmd環境中輸入。
impdp username/password DIRECTORY=dump_dir DUMPFILE=export.dmp LOGFILE=import.log remap_schema=old:new remap_tablespace=old:new
參數解析
- username/password:就是上邊我們創建的用戶和密碼c##shuaige777/shuaige777
- DIRECTORY=dump_dir:就是我們創建的目錄對象dump_dir
- DUMPFILE=export.dmp:就是我們的dmp備份數據文件名稱
- LOGFILE=import.log:就是導入日志,你導入會有報錯或者成功的信息,就會存到這文件里邊
- remap_schema=old:new:就是你導出的源數據庫的用戶名稱和我們現在被導入的用戶名稱
- remap_tablespace=old:new:就是你導出的源數據庫的表空間名稱和被導入的表空間名稱
了解導入參數的含義后,我們可以自定義SQL導入代碼:
impdp c##shuaige777/shuaige777 DIRECTORY=dump_dir DUMPFILE=BH_01.DMP,BH_02.DMP,BH_03.DMP,BH_04.DMP,BH_05.DMP,BH_06.DMP LOGFILE=BH_import.log JOB_NAME=BH_IMPORT_JOB remap_schema=c##shuiage666:c##shuaige777 remap_tablespace=KFCV50:USERS03
四、表空間數據文件遷移
假如你的表空間USERS03現在由于業務量越來越大,原來存放的存儲空間開始不夠用,準備爆了,領導叫你馬上找辦法解決,在找不到其它辦法解決的情況下,將表空間遷移至擁有更大的地方是最好的選擇。
1.進入我們的Sql/Plus
sqlplus / as sysdba
2.關閉數據庫
shutdown immediate;
3.進入mount模式,因為遷移數據文件只能在mount模式下進行
startup mount;
4.修改dbf文件存放的路徑
alter database rename file 'D:\ORCALE12C\ORADATA\ORCL\USERS03.DBF' to 'F:\OracleDbfDir\USERS03.DBF';
5.恢復介質
recover datafile 'F:\OracleDbfDir\USERS03.DBF';
6.打開數據庫
alter database open;
7.刪除原路徑下文件
HOST del "D:\ORCALE12C\ORADATA\ORCL\USERS03.DBF"
五、數據庫字符集更改
在導入DMP備份文件時,若源數據庫與目標數據庫字符集不一致,可能導致導入失敗。這時候我們就得修改我們的數據庫字符集與源數據庫一致,才能導進來,Oracle的字符集格式最常用的就倆個:AL32UTF8、ZHS16GBK。
注:不建議修改自己的數據庫的字符集,最好是導出的時候對數據進行字符集的格式設定,貿然在生產環境修改數據庫的字符集會導致數據丟失,到時候只能跑路了,救不了。
Oracle的默認字符一般為:AL32UTF8,除非你在Oracle安裝時另外選了。
1.進入Sql/Plus,關閉數據庫
SHUTDOWN IMMEDIATE;
2.以限制模式啟動數據庫
STARTUP RESTRICT;
3.更改字符集
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
4.重啟數據庫
SHUTDOWN IMMEDIATE;STARTUP;
5.驗證更改
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET';
六、總結
這篇文章主要介紹Oracle數據庫的基礎操作和配置方法,希望能為大家提供實用的學習參考,給大伙敬酒了。