Oracle建立資料庫與表空間和資料字典表的概念
(一)Oracle建立資料庫不同於MySQL
Oracle建立資料庫主要有一下幾種方法:
第一種方法:使用Oracle的Database Configuration Assistant(資料庫配置助手:簡稱DBCA),進行配置即可。
第二種方法:1、建立表空間 2、建立使用者,並建立和表空間的對映關係 3、給使用者授予許可權
(二)第二種方法詳解
1、建立表空間
create tablespace monitor(表空間名字) datafile 'E:\app\owner\oradata\orcl\monitor.dbf' size 1024M;
解釋說明:datafile:資料檔案 儲存位置路徑:為絕對路徑\表空間名字.dbf(字尾:.dbf) size:表示表空間的大小
2、建立使用者,並建立和表空間的對映關係
create user pdpj_user(使用者名稱) identified by pdpj_manager(密碼) default tablespace pdpj(表空間名字,指定使用者與表空間的對映關係);
說明:default tablespace 表空間的名字 用於指定使用者與表空間的對映關係。
3、給使用者授予許可權
grant dba to pdpj_user(使用者名稱);
系統許可權分類:
dba:擁有全部特權,只有dba才可以建立資料庫結構
Resource:只可以建立實體
Connect:只能登陸Oracle
(三)oracle常用命令語法
1、複製表
create table 新表 as select * from 舊錶;(一定不要落下as)
或者
先建立舊錶的表結構,在匯入資料。
create table 新表 as select * from 舊錶 where 1=0;
insert into 新表 select * from 舊錶;
其中使用insert into select需要建立一個新表來接受
而select into from 要求目標表不存在,在插入資料時,會自動建立目標表。
select into from在sqlplus中會報錯,提示缺失關鍵字,原因:不能單獨作為一條sql語句執行,一般在PL/SQL程式塊(block)中使用。可使用前兩個語句。
4、匯入指令碼的格式:@+檔案的絕對路徑(在sqlplus上)
例如:sql>@D:/test.sql
5、分頁查詢
select num,empno,ename from (select rownum num,empno,ename from emp_zyx where rownum <10) where num>5;
6、查詢資料庫名
select name from v$database;
show parameter db;
7、查詢資料庫中全部表名;
select table_name from user_tables;
8、刪除使用者和資料庫(刪除資料庫,通過刪除表空間即可實現) A、刪除User drop user username cascade;(cascade:表示該使用者建立了表或者索引) B、刪除表空間(tablespace)(要刪除資料檔案,只能刪除其所屬的表空間) drop tablespace tablespacename including contents and datafiles; 刪除空的表空間,但是不包含物理檔案drop tablespace tablespace_name;
--刪除非空表空間,但是不包含物理檔案
drop tablespace tablespace_name including contents;
--刪除空表空間,包含物理檔案
drop tablespace tablespace_name including datafiles;
--刪除非空表空間,包含物理檔案
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空間中的表有外來鍵等約束關聯到了本表空間中的表的欄位,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
(四)資料庫和表空間
表空間是資料庫的邏輯劃分,一個表空間只能屬於一個數據庫。所有的資料庫物件(就是使用者的表)都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。
一、表空間 使用者的表都存放在表空間中,一個數據庫可以包含多個表空間(不同於其他資料庫的概念),建立資料庫就是建立表空間。
檢視所有的表空間: select tablespace_name from dba_tablespaces;
1.未使用的表空間大小 (單位是M) select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
2.檢視所有表空間大小(單位是M)select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;二、資料庫 資料庫是資料的集合,包括資料檔案(ora,dbf),控制檔案,重做日誌檔案即一些物理 上的檔案。 資料庫的使用者資料存放在資料檔案中,資料檔案存放在表空間中,一個表空間可以包含多個數據檔案,但是一個數據檔案只能屬於一個表空間。
(五)資料庫字典 1、 資料字典是oracle存放有關資料庫資訊的地方,幾乎所有的系統資訊和物件資訊都可在資料字典中進行查詢。資料字典是oracle資料庫系統的資訊核心,它是一組提供有關資料庫資訊的表和檢視的集合,這些表和檢視是隻讀的。
資料字典的結構是基表和檢視,記錄了資料庫的系統資訊, 其所有者為SYS。它由內部RDBMS(X$)表,資料字典表($),動態效能檢視(v$)和資料字典檢視(all_,user_,dba_)組成。Oracle中的資料字典有靜態和動態之分。靜態資料字典主要是在使用者訪問資料字典時不會發生改變的,但動態資料字典是依賴資料庫執行的效能的,反映資料庫執行的一些內在資訊,所以在訪問這類資料字典時往往不是一成不變的。
資料字典中的表時不能直接被訪問的,但是可以訪問資料字典中的檢視。他們分為三類:三個字首夠成:user_*、 all_*、 dba_*
user_物件檢視:描述了當前使用者schema下的物件; all_物件檢視:描述了當前使用者有許可權訪問到的所有物件的資訊; dba_物件檢視:包括了所有資料庫物件的資訊;
注意:在建立資料庫是會執行兩個指令碼。先執行catalog.sql,該指令碼用來建立資料庫的內部字典表。然後再執行catrpoc.sql,該指令碼用來建立資料庫內建的儲存過程、包等pl\sql物件。如果我們是使用dbca來建立資料庫,則dbca會自動呼叫這兩個指令碼。否則在執行create database命令來建立時,則需要手工執行這兩個指令碼。
2、資料字典檢視非常多,我們無法一一記住,但是有個檢視,我們必須知道,那就是dictionary檢視,該視圖裡記錄了所有的資料字典檢視的名稱。所以當我們需要查詢某個資料字典而又不知道這個資訊在哪個視圖裡的時候,就可以在dictionary視圖裡找。該檢視還有個同名詞dict。
3、動態效能檢視,就是指將記憶體裡的資料或控制檔案裡的資料以表的形式展現出來。為了能夠讓我們更好的管理資料庫的效能,所以將記憶體裡的活動情況以表的形式展現出來。只要資料庫還在執行,就會不斷更新動態效能檢視。一旦資料庫關閉或崩潰,動態效能視圖裡的資料就會全部丟失,下次重啟時則會重新計算。就像所有的資料字典的名詞都存在dictionary裡一樣,v$fixed_table裡存放了所有的動態效能檢視的名稱。所有的動態效能的屬主都是sys,且都以v$開頭,建立同名詞時則都以v$開頭。