ORACLE 第一章創建授權
通過命令查看控制文件,數據文件,日志文件:
控制文件 : Desc v$controlfile;
數據文件 :desc v$datafile;
日志文件: desc v$logfile;
1. 執行導入 .sql文件
命令語法如下:
directory_path\store_schema.sql
其中 directory_path 是保存 store_schema.sql 腳本的目錄和路徑
例如:以下代碼演示了導入C盤下的 sql 腳本文件:
@c:\sql\store_schema.sql
2. 在SQL Plus 中切換不同的用戶,例如以下命令切換到 system 用戶登陸
connect system/manager@oracle 其中oracle 是指服務名
3. oracle 安裝後,dual 是默認的表名 在SQL Plus 中輸入:
select sysdate from dual;
它可以返回當前日期
**** 注意:SQL語句以分號(;)結束
4. oracle 中的數據庫是以表空間存在的,以下命令創建了一個名為:yyaccp的表空間,並且指定數據文件的路徑。
create tablespace yyaccp
datafile 'D:\oracle\oradata\oracle\yyaccp.DBF'
size 5M autoextend on;
5. oracle 中可以通過命令創建用戶名,以下命令創建了一個 yyaccp 用戶名,
並為它確定默認表空間和臨時表空間
create user yyaccp identified by yyaccp
default tablespace yyaccp
temporary tablespace temp;
6. 如果要給授權的用戶可以在數據庫中執行一定的操作那麼應該為該用戶授予
執行這些操作的權限,例如,如果要讓這個用戶連接到數據庫上必須要為該
用戶授予“創建會話的權限”,以下命令為 yyaccp 用戶創建了會話權限
(使用grant語句)
grant create session to yyaccp;
授予權限以後就可以通過 yyaccp 用戶連接到數據庫了:
connect yyaccp/yyaccp@oracle;
7.用戶密碼的可以通過 alter 進行修改 以下命令修改了 yyaccp 用戶的密碼:
alter user yyaccp identified by accp;
8. password 命令可以用來修改當前登陸的用戶的密碼,在登陸後輸入password
命令,sql plus 會提示輸入原來的密碼,然後再輸入兩次新密碼 例如:
connect yyaccp/accp;
輸入: password;
sql plus 顯示:
更改YYACCP的口令
舊口令: ******
新口令: ******
重新鍵入新口令:******
口令已更改
9. 刪除用戶可以通過 drop user 進行刪除,以下命令刪除 yyaccp 用戶
connect system/manager@oracle;
drop user yyaccp;
10. 使用 grant向用戶授予不同的特權:以下通過system 用戶向 yyaccp 用戶授予了 創建會話、創建用戶以及創建表的權限
Connect system/manager@oracle;
Grant create session, create user , create table to yyaccp;
常用的系統特權:
Create session
連接到數據庫上
Create sequence
創建序列
Create table
創建表
Create any table
在任何模式中創建表
Drop table
刪除表
Drop any table
刪除任何模式中的表
Create procedure
創建存儲過程
Execute any procedure
執行任何模式中的存儲 過程
Create user
創建用戶
Drop user
刪除用戶
Create view
創建視圖
11.使用with admin option 選項。授權的用戶可以把特權授予其他用戶使用
以下命令 將execute any procedure 特權授予 yyaccp 用戶,同時指定了
with admin option 選項。
Connect system/manager@oracle;
Grant execute any procedure to yyaccp with admin option;
12. 檢查授予用戶的權限(通過 user_sys_privs 表)檢查某個用戶具有哪些權限:
以下命令演示了 yyaccp 用戶連接到數據庫上,並對 user_sys_privs 進行查詢
Connect yyaccp/accp@oracle;
Select * from user_sys_privs ;
14. 撤銷系統特權。以下system撤銷了 yyaccp用戶的dba權限
Revoke dba from yyaccp;
15.當授權的用戶向表空間創建表或向已有的表中插入數據時,仍然提示權限不足可以通過以下方式解決例如 :創建了 yyaccp 用戶 但是yyaccp 用戶在 yyaccp 表空間中建表時出現權限不足,執行以下命令:
connect system/manager;
alter user yyaccp quota unlimited on yyaccp;
使用以下命令刪除表空間同時刪除表空間對應的數據文件:
drop tablespace yyaccp including contents and datafiles;
對象特權:
16. 對象特權允許用戶對數據庫對象執行特定的操作,比如對表進行添加、修改、刪除、查詢等操作。
以下表格列出了常用的對象特權:
對象特權
允許執行的操作
select
執行查詢操作
Insert
執行插入操作
Update
執行修改操作
Delete
執行刪除操作
execute
執行存儲過程
向用戶授予對象特權:
17. 可以使用 grant 語句向用戶授予 對象特權 ,下面這個例子以 yyaccp 用戶的身份連接到數據庫,並向 tuser 授予以下特權:對 tusertable 表的 select ,
Insert ,update 對象特權進行授權
Connect yyaccp/accp;
Grant select ,insert ,update on yyaccp.tusertable to tuser;
18. 以下命令對tusertable 表中的 name , address 列的 update 特權授予tuser 用戶
Grant update(name,ddress) on yyaccp.tusertable to tuser;
19. 使用 grant 選項可以使授權的用戶把這種特權再授予其他用戶。下面命令對tusertable 表的 select 特權授予 tuser 用戶,同時指定了 with grant option 選項
Grant select on yyaccp.tusertable to tuser with grant option
20. 檢查已授予的對象特權(通過查詢 user_tab_privs_made) 可以檢查某個用戶對哪些表向其他用戶開放了哪些對象特權:
Select * from user_tab_privs_made
user_tab_privs_made 部分列
列名稱
說明
Grante
該特權授予的用戶
Table_name
所授予的特權所操作的對象(例如表)名
Grantor
授權者
Privilege
對該對象授予的特權
grantable
特權所授予的用戶是否可以將這種特權再授予其他用戶,該值等於 yes 或 no
hierarchy
特權是否構成層次關系。該值等於 yes 或 no
User_col_privs_made 可以檢查某個用戶對哪些列對象開放了哪些特權。
Select * from user_col_privs_made;
from user_col_privs_made 部分列
列名稱
列說明
Grantee
該特權授予的用戶
Table_name
所授予特權所操作的對象名
Column_name
所授予特權所操作的對象名
Grantor
授權者
Privilege
對該對象授予的特權
grantable
特權授予的用戶是否可以將這種權限再授予其他用戶,該值等於 yes 或 no
如果以tuser 用戶身份連接到數據庫上就可以通過公共對象名稱 sttable 對 yyaccp.sttable 進行檢索:
Connect tuser/tuser;
Select * from sttable;
23.撤銷用戶對象的特權:
使用 revoke 語句撤銷某個用戶的對象特權。以下命令以 yyaccp 用戶的身份連接到數據庫上,並撤銷 tuser 對sttable 表的 insert 特權
Connect yyaccp/accp;
Revoke insert on sttable from tuser
Oracle 數據庫中的 數據塊、區、段、表空間
在最細的粒度上,Oracle存儲數據到數據塊中(也叫邏輯塊、Oracle塊或頁),一個數據塊對應磁盤上的一定數量字節的數據庫物理存儲空間。
邏輯數據庫存儲空間的下一個存儲級別是區。一個區是分配用來存儲特定信息的連續數據塊。
區之上的邏輯數據庫存儲級別叫段。一個段是區的集合,每個區都被分配了特定的數據結構,所有的區都存儲在同一表空間中。例如,每個表的數據被存儲在它自己的數據段中,每個索引的數據存儲在它自己的索引段中。假如表或索引是分區的,每個分區被存儲在它自己的段中。
Oracle以區為單位給段分配空間。當段中存在的區滿了,Oracle為該段分配另外的區。由於區是按需分配的,一個段的區可能是也可能不是連續的。
段和它的所有區存儲在一個表空間中。在一個表空間中,一個段包括的區能分布在多個文件中,也即段能跨越數據文件。無論如何,每個區必須在一個數據文件中。