退出 oracle Oracle 學習筆記(一)

2021-10-16 03:10:26 字數 4621 閱讀 7352

小型資料庫:access、foxbase

中型資料庫:mysql、sql server、informix

大型資料庫:sybase、oracle、db2(負載:sybase < oracle < db2)

使用哪種資料庫考慮因素:

安裝過程不描述,網上有教程。

oracle 安裝會自動的生成 sys 使用者和 system 使用者:  

sys 使用者是超級使用者,具有最高許可權,具有 sysdba 角色,有 create database的許可權,該使用者預設的密碼是 change_on_install ;

system 使用者是管理操作員,許可權也很大。具有 sysoper 角色,沒有 create database 的許可權,預設的密碼是 manager ;

一般而言,對資料庫維護使用 system 使用者登入就可以了。

這兩個使用者最大的區別在於有沒有 create database 許可權。

sql * plus 的常用命令 :

連線命令

1. conn[ect] 

用法:conn 使用者名稱/密碼@網路服務名[as sysdba/sysoper]

當用特權使用者身份連線時,必須帶上 as sysdba 或是 as sysoper。 

2. disc[onnect] 

說明: 該命令用來斷開與當前資料庫的連線 。

3. passw[ord] 

說明: 該命令用於修改使用者的密碼,如果要想修改其它使用者的密碼,需要用 sys/system 登入。 

4. show user 

說明: 顯示當前使用者名稱 

5. exit 

說明: 該命令會斷開與資料庫的連線,同時會退出 sql * plus 

檔案操作命令

1. start 和 @ 

說明: 執行 sql 指令碼 

案例: sql>@ d:\a.sql 或是 sql>start d:\a.sql  

2. edit 

說明: 該命令可以編輯指定的sql指令碼 

案例: sql>edit d:\a.sql,這樣會把 d:\a.sql 這個檔案開啟 

3. spool  

說明: 該命令可以將sql*plus螢幕上的內容輸出到指定檔案中去。 

案例: sql>spool d:\b.sql 並輸入 sql>spool off 

互動式命令

1. &  

說明:可以替代變數,而該變數在執行時,需要使用者輸入。 

select * from emp where job='&job'; 

2. edit 

案例:sql>edit d:\a.sql 

3. spool 

說明:該命令可以將 sql * plus 螢幕上的內容輸出到指定檔案中去。 

spool d:\b.sql 並輸入 spool off 

顯示和設定環境變數

1. linesize 

說明:設定顯示行的寬度,預設是80個字元 

show linesize 

set linesize 90 

2. pagesize 說明:設定每頁顯示的行數目,預設是14,用法和 linesize 一樣,其它環境引數的使用也是大同小異。

oracle 使用者的管理

使用者名稱scott,密碼預設 tiger,預設狀態是被鎖定, dba 使用者執行

alter user scott account unlock; 可以解鎖登陸;

scott 是個演示使用者,學習用的;

建立使用者

概述:在 oracle中 要建立乙個新的使用者使用 create user 語句,一般是具有 dba (資料庫管理員)的許可權才能使用。 

create user 使用者名稱 identified by 密碼; 

(oracle密碼必須以字母開頭,否則不會建立使用者) 

給使用者修改密碼

概述:如果給自己修改密碼可以直接使用 

password 使用者名稱 

如果給別人修改密碼則需要具有dba的許可權,或是擁有alter user的系統許可權 

sql> alter user 使用者名稱 identified by 新密碼 

刪除使用者

概述:一般以dba的身份去刪除某個使用者,如果用其它使用者去刪除使用者則需要具有drop user的許可權。 

比如 drop user 使用者名稱 【cascade】 

在刪除使用者時,注意: 如果要刪除的使用者,已經建立了表,那麼就需要在刪除的時候帶乙個引數cascade; 

使用者管理的綜合案例

概述:建立的新使用者是沒有任何許可權的,甚至連登陸的資料庫的許可權都沒有,需要為其指定相應的許可權。

給乙個使用者賦許可權使用命令 grant,**許可權使用命令 revoke。 

舉例:

sql>conn stephen/stephen123; 

error: 

ora-01045: user stephen lacks create session privilege; 

logon denied 

警告: 您不再連線到 oracle。 

sql> show user; 

user 為 "" 

sql> conn system/p; 

已連線。 

sql> grant connect to stephen; 

授權成功。 

sql> conn stephen/stephen123; 

已連線。 

注意:grant connect to stephen  準確的講,connect不是許可權,而是角色。 

物件許可權

現在要做這麼件事情: 

* 希望 stephen 使用者可以去查詢 emp 表 

* 希望 stephen 使用者可以去查詢 scott 的 emp 表  

grant select on scott.emp to stephen

* 希望 stephen 使用者可以去修改 scott 的 emp 表 

grant update on scott.emp to stephen

* 希望 stephen 使用者可以去修改、刪除、查詢、新增 scott 的 emp 表 

grant all on scott.emp to stephen 

* scott希望收回 stephen 對 emp 表的查詢許可權 

revoke select on emp from stephen

許可權的維護

* 希望 stephen 使用者可以去查詢 scott 的 emp 表,還希望 stephen 可以把這個許可權繼續給別人。 

--如果是物件許可權,就加入 with grant option 

grant select on emp to stephen with grant option 

操作過程: 

sql> conn scott/tiger; 

已連線。 

sql> grant select on scott.emp to stephen with grant option; 

授權成功。 

sql> conn system/p; 

已連線。 

sql> create user bobi identified by bobi123; 

使用者已建立。 

sql> grant connect to bobi; 

授權成功。 

sql> conn stephen/stephen123; 

已連線。 

sql> grant select on scott.emp to bobi; 

授權成功。 

--如果是系統許可權。 

system 給 stephen 許可權時: 

grant connect to stephen with admin option;

如果 scott 把 stephen 對 emp 表的查詢許可權**,那麼 bobi 會怎樣? 被**。 

操作過程:

sql> conn scott/tiger; 

已連線。 

sql> revoke select on emp from stephen; 

撤銷成功。 

sql> conn bobi/bobi123; 

已連線。 

sql> select * from scott.emp; 

select * from scott.emp 

第 1 行出現錯誤: 

ora-00942: 表或檢視不存在 

結果顯示:bobi 受到牽連。

今天筆記做到這,後續有空繼續。

Oracle Oracle常用指令

隨手記錄下有時會用到,但不是很頻繁,每次都要搜尋的那些命令 1.斷開使用者連線 刪除使用者的時候提示有在連線程序可用 1.查到使用者程序 select sid,serial from v session where username username 2.殺掉程序 alter system kill...

Oracle Oracle程序簡介

為什麼要有後台程序 為什麼要每個例項要有個記憶體結構?就是為了提高資料讀寫效率而設定的乙個大型的記憶體區域,否則豈不是要實時與磁碟互動?為什麼要有後台程序 資料最終還是要存到磁碟上,所以需要有不同的程序將不同記憶體片段按某個條件批量寫進磁碟 如資料寫程序 ora dbw0 日誌寫程序 ora lgw...

ORACLE ORACLE時區總結

設定會話時區 alter session set time zone 10 00 設定會話時間格式 alter session set nls date format yyyy mm dd hh24 mi ss select dbtimezone,sessiontimezone,current da...