ORACLE循序漸進講解(第一講),oracle第一講
由於工作原因很長一段時間沒有使用oracle,最近花了點時間學習下,把自己所學的記錄下來以便日後鞏固(以10g為例)。
一、ORACLE 安裝和卸載(1)ORACLE安裝可以去百度上搜下只要按著步驟基本上都能安裝成功。卸載稍微麻煩點需要刪註冊表方法網上也有很多。(2)ORACLE安裝成功後會自動建立兩個使用者sys和system。1、sys使用者是超級使用者,具有最高許可權,具有dba的角色和sysdba、sysoper資料庫系統管理權限,所有 oracle 的資料字典的基表和視圖都存放在sys 使用者中,這些基表和視圖對於 oracle 的運行是至關重要的,由資料庫自己維護,任何使用者都不能手動更改,sys有建立create database的許可權。 2、system使用者是管理操作員,許可權一樣很大具有dba角色,沒有建立create database的許可權。(對於使用者和許可權的詳細區別後面內容有提到)二、登入ORACLE的方式(1)通過ORALCE內建的sql plus方式登入(使用者名稱、密碼、主機字串(資料庫執行個體))。(2)通過window的cmd登入(sqlplus 使用者名稱/密碼)。(3)通過isqlplus登入http://localhost:5560/isqlplus/(4)通過oracle的企業管理器(oem oracle enterprise manager)。(5)通過第三方工具PL/SQL DEVELOPER。三、ORACLE使用者管理1、建立使用者
SQL> conn system/orclConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as systemSQL> create user test identified by test;User createdSQL>
2、給使用者修改密碼
SQL> alter user system identified by scott1;User altered
3、刪除使用者
SQL> drop user test;User dropped
注意如果想刪除使用者對應的資料對象時(如表)需要用加cascade 如drop user test cascade
4、建立使用者並登入資料庫(授權test登入角色connect)。
SQL> create user test identified by test;User createdSQL> grant connect to test;Grant succeededSQL> conn test/test;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as testSQL> show userUser is "test"
5、授權使用者對象許可權(用system使用者為test授權可select或update或delete或all操作scott使用者的emp表)
SQL> conn system/orcl;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as systemSQL> grant select on scott.emp to test;Grant succeededSQL> conn test/test;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as testSQL> select * from scott.emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ---------- --------- ----- ----------- --------- --------- ------ 7369 SMITH CLERK 7902 1980-12-17 1800.00 20 7499 ALLEN SALESMAN 7698 1981-02-20 1600.00 300.00 30 7521 WARD SALESMAN 7698 1981-02-22 1250.00 500.00 30 7566 JONES MANAGER 7839 1981-04-02 2975.00 20 7654 MARTIN SALESMAN 7698 1981-09-28 1250.00 1400.00 30 7698 BLAKE MANAGER 7839 1981-05-01 2850.00 30 7782 CLARK MANAGER 7839 1981-06-09 2450.00 10 7788 SCOTT ANALYST 7566 1987-04-19 3000.00 20 7839 KING PRESIDENT 1981-11-17 5000.00 10 7844 TURNER SALESMAN 7698 1981-09-08 1500.00 0.00 30 7876 ADAMS CLERK 7788 1987-05-23 1100.00 20 7900 JAMES CLERK 7698 1981-12-03 950.00 30 7902 FORD ANALYST 7566 1981-12-03 3000.00 20 7934 MILLER CLERK 7782 1982-01-23 1300.00 34.56 1014 rows selected
註:(1)grant select可換insert、update、delete、all。 (2)同樣可以授權資料對象(表或視圖)的某列值給指定的使用者,如果是select授權某列值給指定的用記時使用建立視圖然後把視圖授權給指定的使用者 (
註:網上有好多使用grant select on emp(ename,sal) to test;授權,這在9i下可以成功,但在9i以後不允許授予select某列的許可權,但可以授insert ,update某列的許可權)
SQL> conn scott/scottConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as scottSQL> create view v_test as 2 select ename,sal from emp;create view v_test asselect ename,sal from empORA-01031: 許可權不足SQL> conn system/orcl;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as systemSQL> grant create view to scott;Grant succeededSQL> conn scott/scottConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as scottSQL> create view v_test as 2 select ename,sal from emp;View createdSQL> grant v_test to test;grant v_test to testORA-01919: 角色 'V_TEST' 不存在SQL> grant select on v_test to test;Grant succeededSQL> select * from v_test;ENAME SAL---------- ---------SMITH 1800.00ALLEN 1600.00WARD 1250.00JONES 2975.00MARTIN 1250.00BLAKE 2850.00CLARK 2450.00SCOTT 3000.00KING 5000.00TURNER 1500.00ADAMS 1100.00JAMES 950.00FORD 3000.00MILLER 1300.0014 rows selected
授權test使用者只能修改sal欄位。
SQL> grant update(sal) on emp to test;Grant succeeded
授權test使用者只能插入empno和empname欄位。
SQL> grant insert(empno,ename) on emp to test;Grant succeeded
6、收回使用者對應許可權。(用scott使用者登入收回上面的v_test查詢的許可權和修改sal欄位許可權和插入empno,ename的許可權)
SQL> CONN SCOTT/SCOTTConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as scottSQL> REVOKE SELECT ON V_TEST FROM TEST;Revoke succeededSQL> REVOKE UPDATE(SAL) ON EMP FROM TEST;REVOKE UPDATE(SAL) ON EMP FROM TEST<span style="color:#ff0000;">ORA-01750: UPDATE/REFERENCES 只能從整個表而不能按列 REVOKE</span>
SQL> REVOKE UPDATE ON EMP FROM TEST;Revoke succeededSQL> REVOKE INSERT ON EMP FROM TEST;Revoke succeeded
註:注意上面的錯誤提示不能對錶的某列revoke只能對整個表revoke。
7、許可權的傳遞。(用SCOTT使用者登入授權test使用者select查詢v_test的許可權並允許test使用者擁有把此許可權傳遞授予test1使用者)
SQL> CONN SCOTT/SCOTTConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as scottSQL> GRANT SELECT ON V_TEST TO TEST WITH GRANT OPTIONS;GRANT SELECT ON V_TEST TO TEST WITH GRANT OPTIONS<span style="color:#ff0000;">ORA-00994: 缺失 OPTION 關鍵字</span>SQL> GRANT SELECT ON V_TEST TO TEST WITH GRANT OPTION;Grant succeededSQL> CONN TEST/TESTConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as testSQL> GRANT SELECT ON V_TEST TO TEST1;GRANT SELECT ON V_TEST TO TEST1<span style="color:#ff0000;">ORA-00942: 表或視圖不存在</span>SQL> GRANT SELECT ON SCOTT.V_TEST TO TEST1;Grant succeeded
註:(1)許可權的傳遞只需要在授權時加上with grant option就能讓被授權的使用者將些許可權授予其他使用者。 (2)如果授權的是系統許可權(上面操作的都是對象許可權)傳遞給其他人時只需要加上with admin option。 (3)
此時如果scott使用者把test的查詢v_test許可權收回將一同把test1的查詢v_test許可權收回。
8、使用profile系統管理使用者口令。 profile 是口令限制,資料限制的命令集合,當建立資料庫時,ORACLE會自動建立名稱為default的profile,當建立用記沒有指定profile選項,尋oracle會將default分配給使用者。 (設定test使用者最多隻能嘗試2次登入,鎖定時間為3天)
SQL> conn system/orclConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as systemSQL> create profile lock_account limit failed_login_attempts 2 password_lock_time 3;Profile createdSQL> alter user test profile lock_account;User altered
<span style="color:#ff0000;">通過下面對使用者強制解鎖</span>
SQL> alter user test account unlock;User altered
(設定使用者定期修改密碼,每隔10天修改自己的密碼寬限期為3天)
SQL> create profile remind_account limit password_life_time 10 password_grace_time 3;Profile createdSQL> alter user test profile remind_account;User altered
刪除直接drop profile remind_account;