【數據庫學習筆記】Oracle_01_sql*plus,存儲結構,用戶管理,常用數據類型

Oracle_01

A.簡介

1.Oracle服務

在成功安裝Oracle後,會有7個服務

a.OracleDBConsoleorcl

Oracle數據庫控制檯服務,orcl是Oracle的實例標識,默認的實例爲orcl

在運行Enterprise Manager(企業管理器OEM)的時候,需要啓動這個服務

b.OracleOraDb11g_home1TNSListener

監聽器服務,服務只有在數據庫需要遠程訪問的時候才需要

(非必須啓動,下面會有詳細詳解)

c.OracleServiceORCL

數據庫服務(數據庫實例),是Oracle核心服務該服務

是數據庫啓動的基礎, 只有該服務啓動

Oracle數據庫才能正常啓動。(必須啓動)

d.OracleOraDb11g_home1ClrAgent

e.OracleMTSRecoveryService

f.OracleJobSchedulerORCL

g.Oracle ORCL VSS Writer Service

常用的啓動順序

OracleOracle_homeTNSListener

OracleServiceORCL

OracleDBConsoleORCL

關閉時次序相反


2.實例和數據庫

a.實例

一組Oracle 後臺進程/線程以及一個共享內存區

這些內存由同一個計算機上運行的線程/進程所共享

實例用於管理和控制數據庫,是和數據庫交互的媒介

b.數據庫

基於磁盤的數據文件,控制文件,日誌文件,參數文件等

組成的物理文件集合,爲實例提供數據

數據庫可以由多個實例裝載和打開

而實例在其整個生存期中最多能裝載和打開一個數據庫


3.服務啓動方式

a.方式1

在window系統:計算機--管理--服務和應用程序--服務

只用sql*plus的話,啓動OracleServiceORCL即可

要是使用PL/SQL Developer等第三方工具的話

OracleOraDb11g_home1TNSListener服務也要開啓

OracleDBConsoleorcl是進入基於web的EM必須開啓的

其餘服務很少用

b.方式2

以管理員身份,通過命令行的方式,oracle啓動流程

1)windows

lsnrctl start(啓動監聽)

oradim -startup -sid 數據庫實例名

2)linux

lsnctl start

sqlplus sys/change_on_install as sysdba

startup

c.方式3

數據庫實例服務啓動情況下,使用sqlplus以管理員身份管理數據庫

實例的啓動分爲3個部分,啓動實例 ,加載數據庫 ,打開數據庫

1)startup nomount

創建一個Oracle實例,不加載數據庫,也不打開任何數據文件

常用於創建新數據庫或重建控制文件時候

2)startup mount

該命令創建實例並且安裝數據庫,但沒有打開數據庫

Oracle系統讀取控制文件中關於數據文件和redo log文件的內容

但並不打開這些文件,這種打開方式常在數據庫維護操作時使用

如對數據文件的更名、改變redo log以及打開歸檔方式

執行數據庫的full database recovery

3)startup open

先執行nomount,然後執行mount

再打開包括Redo log文件在內的所有數據庫文件

這種方式下可訪問數據庫中的數據。是常規的啓動模式

4)startup

後面不帶任何參數,表示以open方式打開數據庫

4.關閉數據庫

a.shutdown normal

正常方式關閉數據庫,沒有時間限制。通常使用這種方式

執行後,會阻止新用戶的鏈接,等待當前連接用戶斷開連接

所有用戶斷開連接後立即關閉數據庫

b.shutdown immediate

立即關閉數據庫。立即中斷當前用戶連接

立即中斷當前活動事務,立刻關閉數據庫

B.sql*plus

1.概述

是oracle自帶工具軟件,主要用於執行sql語句,pl\sql塊

使用方式:

a.在開始->程序->oracle oradb_home10g->application development->sql*plus

b.在運行欄中輸入: sqlplus即可

2.常用命令

a.help


b.desc[ribe]

查詢指定對象的數據結構


c.spool

查詢內容輸出到指定文件中


備註:spool on至spool off之間所有的內容被寫入指定文件中

沒有使用spool off或者spool out命令關閉輸出,則輸出文件中不會添加

查看e:\b.sql文件


d.show

顯示SQL*Plus系統變量的值或環境變量的值


e.edit

編輯指定的sql腳本或sql緩衝區最近sql語句


回車後,自動打開目標文件,若不存在,則有如下提示


然後在文件中編輯sql語句即可

f.save

把sql緩衝區最近一條語句保存到指定文件中


查看路徑下的文件


g.get

把文件內容放進sql緩衝區


h.start/@

執行sql文件


3.其他常用命令

a.conn[ect]

用法: conn 用戶名/密碼@網絡服務名 [as sysdba/sysoper]

特權用戶身份連接時,必須帶上 as sysdba 或是 as sysoper

切換用戶


使用超級用戶


b.disc[onnect] 

斷開與當前數據庫的連接


c.passw[ord]

修改用戶的密碼,如果要想修改其它用戶的密碼,需要用sys/system登陸


d.show user

顯示當前用戶名

e.exit

斷開與數據庫的連接,同時會退出sql*plus

4.模式

也稱作方案(Schema),是用戶所擁有的數據庫對象的集合

在Oracle數據庫中,對象是以用戶來組織的

用戶與模式是一一對應的關係,並且兩者名稱相同

例如:SCOTT用戶擁有的所有對象都屬於SCOTT模式

而HR用戶擁有的所有對象都屬於HR模式


5.注意事項

在同一個模式中不能存在同名對象

但是不同模式中的對象名稱則可以相同

用戶可以直接訪問自己模式對象

但如果要訪問其它模式對象,則必須具有該對象的相應訪問權限

例如用戶HR要查看SCOTT模式中的EMP表時

則必須在EMP表上具有SELECT操作的權限

同時必須附加模式名作爲前綴

6.查詢當前用戶下的所有表

a.select table_name from tabs;

b.select table_name from user_tables;

c.select tname from tab;

d.select * from dba_tables where owner=‘SCOTT';

語句4 必須dba身份登錄,同時owner對應值必須大寫

查看系統所有用戶,必須以sysdba身份登錄

select username,account_status from dba_users;

7.Enterprise manager console(企業管理器)

是通過web管理管理oracle數據庫,一般默認端口是1158的

必須在OracleDBConsoleorcl和oracle服務啓動下才行

sysdba或system權限

訪問url地址:http://ip:1158/em

C.存儲結構

1.概述

數據庫存儲數據的方式稱爲存儲結構


Oracle分爲邏輯存儲結構和物理存儲結構

邏輯存儲結構用來描述Oracle內部組織和管理數據的方式

而物理結構用於展示Oracle在操作系統中的物理文件組成

邏輯存儲結構是從邏輯分析數據庫的組成

物理存儲結構是實際的數據存儲單元

就是操作系統上的數據庫相關文件


邏輯存儲結構是一種層次結構,是面向用戶的。


2.表空間

是oracle數據庫的最大邏輯劃分區域

常用來存放數據表,索引等數據對象,任何對象在創建時必須指定表空間

表空間與數據文件相對應,一個表空間由一個或多個數據文件組成

一個數據文件只屬於一個表空間

oracle數據的存儲空間在邏輯上表現爲表空間

而在物理上表現爲數據文件

空間相當於文件夾,數據文件相當於文件夾中的文件


每個數據庫至少包含一個表空間(system表空間)

表空間的大小相當於從屬於它的數據文件大小的總和

創建數據庫時候,Oracle系統自動創建多個默認的表空間

除了管理數據的表空間之外,還有管理Oracle內部數據(如數據字典)的表空間

從物理上看,數據庫由控制文件、數據文件、重做日誌文件等操作系統文件組成


Oracle11g默認的主要表空間:

a.SYSTEM表空間

存放oracle系統內部表和數據字典的數據

如表名,列名,用戶名等。不贊成用戶數據存在此

b.SYSAUX表空間

是SYSTEM表空間的輔助

降低負荷,存儲數據字典外的其他數據

不存儲用戶數據,oracle系統內部自動維護

c.UNDO表空間

存儲對數據表進行修改前的舊數據

一般名爲UNDOTBS1的表空間,文件名UNDOTBS01.DBF

d.USERS表空間

Oracle建議用戶使用的表空間

存儲用戶的各種數據對象,SCOTT的對象存儲於此

e.除了默認的表空間外

用戶應根據系統實際情況和對象類型創建多個自定義表空間

以區分用戶數據和系統數據

不同系統的數據應存放不同盤符的各個表空間

用戶的數據必須存放在數據文件中

而數據文件必須屬於一個表空間

若不設置則默認的臨時表空間爲temp

默認永久性表空間是system

查看用戶表空間 表對象

select  table_name,tablespace_name from user_tables;

3.創建表空間

a.創建臨時表空間


查看路徑


b.創建永久表空間


查看路徑


D.用戶管理

1.安全管理

可以分爲3個步驟

a.首先,用戶向數據庫提供身份識別信息,即提供一個數據庫賬號

b.接下來用戶還需要證明他們所給出的身份識別信息是有效的,這是通過輸入密碼來實現的,用戶輸入的密碼經過數據庫的核對確認用戶提供的密碼是否正確

c. 最後,假設密碼是正確的,那麼數據庫認爲身份識別信息是可信賴的。此時,數據庫將會在基於身份識別信息的基礎上確定用戶所擁有的權限,即用戶可以對數據庫執行什麼操作

因此,爲了確保數據庫的安全,首要的問題就是對用戶進行管理

2.用戶

是在數據庫中定義的一個名稱,更準確地說它是賬戶,習慣上稱其爲用戶

當連接到Oracle數據庫時,操作人員必須提供正確的用戶名和密碼

連接到數據庫的用戶所具有的權限是不同的,Oracle提供了一些特權用戶

比如,SYSDBA或SYSOPER

這類用戶主要用於執行數據庫的維護操作,如啓動、關閉等操作

SYSDBA和SYSOPER的區別在於:

SYSDBA不僅具備SYSOPER的所有權限,而且還可以建立數據庫,執行不完全恢復

在Oracle 11g中,Oracle提供了默認的特權用戶SYS

當以特權用戶身份登錄數據庫時,必須帶有AS SYSDBA或AS SYSOPER選項

3.忘記管理員密碼

a.sqlplus/nolog

b.connect/as sysdba

c.alter user sys identified by sys

4.創建新用戶

具有DBA權限的用戶執行


5.用戶授權

新用戶是沒有任何權限的, 需要dba授權


無法連接,需要授權


再次連接


6.用戶權限

根據管理方式不同Oracle權限分:系統權限和對象權限

a.系統權限

系統權限是在系統級對數據庫進行存取和使用的機制

比如是否能連接到數據庫系統(SESSION權限)

執行DDL語句(如CREATE.ALTER、和DROP)

b.對象權限

對象權限是指某一個用戶對其他用戶的表、視圖等對象的操作權限

對於某些模式對象,比如簇、索引、觸發器、數據庫鏈接等

沒有相應的實體權限,由系統權限進行管理

7.角色

是一個獨立的數據庫實體,它包括一組權限

也就是說,角色是包括一個或者多個權限的集合,它並不被哪個用戶所擁有

角色可以被授予任何用戶,也可以從用戶中將角色收回

Qracle提供了三種標準的角色(role)

a.CONNECT(連接角色)

臨時用戶,特別是那些不需要建表的用戶,通常只賦予他們CONNECTrole

CONNECT是使用Oracle的簡單權限

這種權限只有在對其他用戶的表有訪問權時

包括select、insert、update和delete等,纔會變得有意義

只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構


b.RESOURCE Role(資源角色)

更可靠和正式的數據庫用戶可以授予RESOURCE role

RESOURCE提供給用戶另外的權限以創建他們自己的表、序列

過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)

只可以創建實體,不可以創建數據庫結構

c.DBA Role(數據庫管理員角色)

擁有所有的系統權限

包括無限制的空間限額和給其他用戶授予各種權限的能力。

SYSTEM由DBA用戶擁有

下面介紹一些DBA經常使用的典型權限,只有DBA纔可以創建數據庫結構

在Oracle 11g中含有200多種系統特權

並且所有這些系統特權均在SYSTEM_PRIVILEGE_MAP數據目錄視圖中

8.系統權限授權語法

grant sys_privi | role to user | role | public [with admin option]

a.sys_privi:

表示Oracle系統權限,系統權限是一組約定的保留字

比如,若能夠創建表,則爲“CREATE TABLE”

b.role:角色

c.user:具體的用戶名,或者是一些列的用戶名

d.public:保留字,代表Oracle系統的所有用戶

e.with admin option:表示可再將權限授予另外的用戶

爲用戶admin授予開發系統權限


可以把這兩個權限授予其他用戶


9.收回權限

revoke sys_privi | role from user | role | public;

撤銷admin用戶的resource權限


10.對象權限

grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]

a.obj_privi:

表示對象的權限

可以是ALTER、EXECUTE、SELECT、UPDATE和INSERT等

b.  role:角色名

c.user:被授權的用戶名

d.with admin option:表示被授權者可再將系統權限授予其他的用戶

e. with hierarchy option:在對象的子對象(在視圖上再建立視圖)上授權給用戶

 給用戶admin授予select、insert表soctt.emp的權限


11.收回對象權限

revoke obj_privi | all on schema.object from user | role | public cascade constraints

obj_privi:表示對象的權限

public:保留字,代表Oracle系統的所有權限

cascade constraints:表示有關聯關係權限也被撤銷

從admin用戶撤銷scott.emp表的update和delete


12.修改用戶

用戶創建後,管理員可以對用戶進行修改,包括修改口令

改變默認表空間、臨時表空間等。

語法與創建用戶的語法基本相似,只是把CREATE關鍵字替換成ALTER罷了

13.解鎖被鎖住的用戶

Oracle默認安裝完成後,爲了安全起見,很多用戶處於LOCKED狀態

DBA可以對LOCKED狀態的用戶解除鎖定

使用alter user命令解除被鎖定的賬戶


14.刪除用戶

一般以dba的身份去刪除某個用戶

如果用其它用戶去刪除用戶則需要具有 drop user的權限


 cascade:級聯刪除選項,如果用戶包含數據庫對象

則必須加cascade選項,此時連同該用戶所擁有的對象一起刪除

E.常用數據類型

1.字符類型


2.數字類型


3.時間,時間間隔類型


4.時間字段可取值範圍


5.大對象類型



發佈了106 篇原創文章 · 獲贊 135 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章