/*創建臨時表空間 */
create temporary tablespace BBB tempfile 'D:\APP\oracle\oradata\orcl\BBB.dbf' size 500m autoextend on next 500m maxsize 20480m extent management local;
/*創建數據表空間 */
create tablespace CCC logging datafile 'D:\APP\oracle\oradata\orcl\CCC.dbf' size 500m autoextend on next 500m maxsize 20480m extent management local;
/*創建用戶並指定表空間*/
create user c##st identified by p123 default tablespace CCC temporary tablespace BBB; --用戶名必須添加c##
/*給用戶授予權限 */
grant connect,resource,dba to c##st;
/*創建數據泵目錄*/
create or replace directory dp_dir as 'D:\oracle\';
/*數據泵導入dmp文件 */
impdp c##pension_st/p123@orcl directory=dp_dir dumpfile=ORCL.DMP logfile=ORCL.log;
/*數據泵導入dmp文件需要切換用戶和表空間*/
impdp c##st/p123@orcl directory=dp_dir dumpfile=ORCL.DMP remap_tablespace=AAA:CCC remap_schema=AA:c##st logfile=ORCL.log; -AAA是dmp文件來源的表空間,AA是dmp文件來源的數據庫用戶名
/*刪除表空間*/
drop tablespace CCC including contents and datafiles;
/*刪除臨時表空間*/
drop tablespace BBB including contents and datafiles;
/*查看使用表空間*/
select default_tablespace,temporary_tablespace from DBA_USERS;
/*創建用戶時遇到ORA-65048*/
shoe pdbs
alter session set container=orclpdb; --切換會話
create tablespace CCC logging datafile 'D:\APP\oracle\oradata\orcl\CCC01.dbf' size 500m autoextend on next 500m maxsize 20480m extent management local;
create temporary tablespace BBB tempfile 'D:\APP\oracle\oradata\orcl\BBB01.dbf' size 500m autoextend on next 500m maxsize 20480m extent management local;
alter session set container=cdb$root;
/*數據泵導入時遇到ORA-12154*/
如果先裝數據庫的客戶端再裝數據庫的服務端,那么數據庫的服務端將不會生成tnsnames.ora文件。
使用數據庫工具Net Manager配置服務信息,保存網絡配置本地就會在服務端生成tnsnames.ora文件,修改環境變量,將服務端的環境變量放到客戶端之前,否則每增加一個服務就得把客戶端的tnsnames.ora文件信息拷貝到服務端中。
/*文件夾中多文件名稱導出生成多處理腳本*/
創建一個Bat腳本,輸入命令:
(1)@echo off
dir /s/b *.* > b.txt --輸出的文件名
exit
(2)將輸出的內容拷貝到Excel中,選擇數據-分列-固定寬度,切分單元格。
(3)設置一列內容為@@+路徑,兩列合並
(4)粘貼到sql文件中。
/*PLSQL命令窗口執行腳本*/
進入PLSQL的命令窗口,輸入命令:
SQL>set serveroutput on;
SQL>@D:\QYNJ\doc\04開發管理\SQL腳本管理\全量腳本\Bat.sql -- 要執行的腳本路徑
/*oracle 12c中的CDB和PDB*/
CDB與PDB是Oracle 12C引入的新特性,在ORACLE 12C數據庫引入的多租用戶環境(MultitenantEnvironment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。
在ORACLE12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。
在CDB中可以有多個PDB,其中存在一個root根容器(PDB$ROOT)、一個種子容器(PDB$SEED)和多個PDBS。所有的PDB共用一個硬件系統資源、sga和pga、redo、臨時段、控制文件、參數文件、還原段(還可對每個PDB單獨指定)。
PDB$ROOT:根容器用來做所有容器的跟,用來對每個PDB進行統一管理,sqlplus / as sysdba連接進來默認是連接的根容器,需要切換到其他的PDB容器才可以對單獨的PDB操作。其中有 system數據文件、sysaux數據文件、(undo數據文件、temp數據文件、redo、控制文件)。一般不存放生產數據文件
PDB$SEED:種子容器作為插入PDB的模板而存在,每個CDB都有一個種子容器,且不可對其中對象進行修改。其中有 system數據文件、sysaux數據文件、其他數據文件。
PDB:新插入容器,該容器用來存放數據庫。其中有 system數據文件、sysaux數據文件、其他數據文件。12c中可以插入多個容器進行統一管理,來減少BDA的工作量。其中的數據庫可以插入或拔出。
用戶:12c中PDB$ROOT中的普通目錄可以通過權限分配來訪問一個或多個指定的PDB容器,最大權限用戶是sysdba。其中PDB也可單獨創建普通用戶來管理該容器的數據庫。
PDB資源管理:12c中將多個數據庫運行在一個硬件資源上,CDB性能上得到優化。在CDB中為每個PDB確定使用CPU最低份額,CDB會按照一個PDB份額/分配的總份額數*100%,來保證PDB最低份額數。
查詢該容器是CDB 還是非CDB:select name,cdb,open_mode,con_id from v$database;
查看當前容器:show con_name;
查看所創建的PDB:show pdbs;
創建一個新PDB:create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb1/');
啟動一個創建好的PDB: alter pluggable database pdb1 open;