中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle專題2之用戶、權限、角色以及表空間的管理

發布時間:2020-05-30 22:25:25 來源:網絡 閱讀:2406 作者:糖醋白糖 欄目:關系型數據庫

1、用系統用戶登錄Oracle

  • 只有用合法的用戶才能夠訪問Oracle數據庫。Oracle默認的系統用戶:sys/system、sysman、scott。

    a、系統用戶說明

  • sys:這個賬戶相當于SQL server中的sa賬戶,是個超級賬戶,擁有的權限最大,可以完成數據庫的所有管理任務。
  • system:沒有sys的權限大,通常用來創建一些用于查看管理信息的表或者視圖,同樣也不建議使用system架構來創建一些與管理無關的表或者視圖。( sys和system在登錄Oracle工具時,sys只能以系統管理員(sysdba)或者系統操作員(sysoper)的權限登錄,而system可以直接登錄(normal)。)
  • sysman:是Oracle數據庫中用于EM管理的用戶,如果你不用改用戶,可以將其刪除。
  • scott:是Oracle提供的示例用戶,里面有一些供初學者學習操作的數據表(emp,dept,salgrader,bonus)。(對于scott用戶,定義的密碼為tiger。)

    b、Oracle用戶登錄的語法格式

  • {username/password@connect_identifier}[AS {SYSDBA | SYSOPER}]
  • username / password:指定數據庫賬戶用戶名,口令。
  • connect_identifier:數據庫連接的連接標識符(服務器名)。如果沒有連接標識符,SQL*Plus將連接到默認數據庫。(如果指定連接標識符,那么OracleOraDb11g_home1TNSListener服務必須啟動。)
  • SYSDBA、SYSOPER選項是數據庫管理權限。(SYSDBA:數據庫管理員的權限;SYSOPER:數據庫操作員的權限。)
  • 命令行中的示例如下:
    C:\Users\Administrator>sqlplus /nolog
    SQL*Plus: Release 11.2.0.1.0 Production on 星期日 11月 26 21:28:37 2017
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    SQL> conn sys/02000059 as sysdba
    已連接。

    c、啟動scott用戶

  • 給scott用戶解鎖【語法格式】:alter user username account unlock。例如:alter user scott account unlock。(默認的scott用戶是鎖定的)
  • 命令行中的示例如下:
  • SQL> conn scott/tiger
    ERROR:
    ORA-28000: the account is locked
    警告: 您不再連接到 ORACLE。
    SQL> conn sys/02000059 as sysdba
    已連接。
    SQL> alter user scott account unlock;
    用戶已更改。
    SQL> conn scott/tiger
    ERROR:
    ORA-28001: the password has expired
    更改 scott 的口令
    新口令:
    重新鍵入新口令:
    口令已更改
    已連接。

    2、Oracle表空間的管理:創建表空間

    a、什么是表空間?

  • 數據庫與表空間:表空間實際上是數據庫的邏輯存儲結構,可以把表空間理解為在數據庫中開辟的一個空間,用于存放我們數據庫的對象,一個數據庫可以由多個表空間構成。
  • 表空間與數據文件:表空間實際上是由一個或多個數據文件構成的,數據文件的位置和大小可以由我們用戶自己來定義。我們所操作的一些表,一些其他的數據對象都是存放在數據文件中的。那么數據文件是物理存儲結構,真正可以看到的,而表空間是邏輯存儲結構。
    Oracle專題2之用戶、權限、角色以及表空間的管理

    b、表空間的分類

  • 按使用方式分類:分為永久段表空間、臨時段表空間、回滾段表空間。
  • 永久段表空間:一般為存儲數據的表空間,系統表空間,普通用戶使用的表空間都為永久段表空間。永久段表空間的狀態有三種:讀寫、只讀、脫機。只有在永久表空間中,才能夠配置ASSM管理模式。
  • 臨時段表空間:一般用來排序和創建索引時使用。臨時表空間不存放實際的數據,所以,即使出了問題,也不需要恢復,而且,也不需要備份,因此也不需要記錄日志。臨時表空間只能是讀寫模式,而且只能為手動管理段空間模式。可以設置為系統默認臨時表空間,命令如下:ALTER DATABASE DEFAULT TEMPORARY TABLESPACE;
  • 回滾段(UNDO)表空間:用來存放修改中數據的原數據,回滾段表空間是用來保證數據讀一致性的。

    c、創建表空間的語法格式

  • create [TEMPORARY] TABLESPACE tablespace_name TEMPFILE | DATAFILE 'xxx.dbf' SIZE XX
  • 如下示例所示:
    SQL> conn sys/02000059 as sysdba
    已連接
    SQL> create tablespace test1_tablespace datafile 'testfile.dbf' size 10m;
    表空間已創建
    SQL> create temporary tablespace temptest1_tablespace tempfile 'tempfile.dbf' size 10;
    表空間已創建
  • 查看表空間:
    SQL> select file_name from dba_data_files;
    FILE_NAME
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
    E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\TESTFILE.DBF
    已選擇6行。
    SQL> select file_name from dba_temp_files;
    FILE_NAME
    E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF
    E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEMPFILE1.DBF
    SQL>

    3、Oracle的用戶管理

    a、創建用戶的語法格式

  • create user [user_name] identified by [password] default tablespace [default tablespace] temporary tablespace [temporary tablespace];
  • 如下示例所示:
    SQL> create user eason identified by test default tablespace test1_tablespace te
    mporary tablespace temptest1_tablespace;
    用戶已創建。
    SQL>

    b、查看創建的用戶

  • select username from dba_users;
  • 如下示例所示:
    SQL> select username from dba_users;
    USERNAME
    EASON
    MGMT_VIEW
    SYS
    SYSTEM
    DBSNMP
    SYSMAN
    SCOTT
    ...

    c、給創建的用戶授權

  • grant 權限 to用戶名。(說明:授權管理會在后續的專題中詳細講解)
  • 如下示例所示:
    SQL> grant connect to eason;
    授權成功。
    SQL>

    d、管理用戶

  • 連接用戶:connect 用戶名/口令
  • 更改密碼:Alter user 用戶名 identified by 新密碼;
  • 如下示例所示:
    SQL> connect eason/test
    已連接。
    SQL> Alter user eason identified by 02000059;
    用戶已更改。
  • 不希望某用戶登錄,而又不刪除其用戶,可以將用戶鎖定:Alter user 用戶名 account lock;
  • 刪除用戶:drop user 用戶名 cascade;(加上cascade 則將用戶連同其創建的東西全部刪除)
    SQL> conn sys/02000059 as sysdba;
    已連接。
    SQL> alter user eason account lock;
    用戶已更改。
    SQL> drop user eason cascade;
    用戶已刪除。
    SQL>

    4、Oracle的角色管理

  • 什么是角色?
  • Oracle角色(role)就是一組權限(或者說是權限的集合)。
  • 用戶可以給角色賦予指定的權限,然后將角色賦給相應的用戶。
  • 數據庫中角色權限管理的作用:用戶(User)只是針對個人管理,而角色(Role)可以針對一批人(該角色下的所有用戶)實施統一的管理策略。

    a、三種標準的角色

  • CONNECT(連接角色):擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
  • RESOURCE(資源角色):擁有Resource權限的角色只可以創建實體,不可以創建數據庫結構。
  • DBA(數據庫管理員角色):擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。
  • 對于普通用戶:授予connect,resource權限;對于DBA管理用戶,授予dba權限。
  • 如下示例所示:(conn /as sysdba連接的是sys用戶,此時可以修改sys用戶的密碼;create user user01 identified by pass01;此命令創建用戶默認使用系統表空間,最好是在用戶創建時指定表空間。)
    SQL> conn /as sysdba
    已連接。
    SQL> create user user01 identified by pass01;
    用戶已創建。
    SQL> conn user01/pass01
    ERROR:
    ORA-01045: user USER01 lacks CREATE SESSION privilege; logon denied
    警告: 您不再連接到 ORACLE。
  • 以上示例中,因為沒有給創建的user01用戶指定連接權限,所以user01用戶無法連接oracle數據庫。
    SQL> conn /as sysdba
    已連接。
    SQL> grant connect to user01;
    授權成功。
    SQL> conn user01/pass01;
    已連接。
  • 以下是CONNECT、RESOURCE、DBA角色授予用戶時的區別示例。
  • CONNECT角色可以登錄Oracle數據庫:
    SQL> conn /as sysdba
    已連接。
    SQL> create user user01 identified by pass01;
    用戶已創建。
    SQL> conn user01/pass01
    ERROR:
    ORA-01045: user USER01 lacks CREATE SESSION privilege; logon denied
    警告: 您不再連接到 ORACLE。
    SQL> conn /as sysdba
    已連接。
    SQL> grant connect to user01;
    授權成功。
    SQL> conn user01/pass01;
    已連接。
  • CONNECT角色不可以創建實體,RESOURCE角色可以創建實體:
    SQL> conn user01/pass01;
    已連接。
    SQL> create table test(id number, name varchar2(20));
    create table test(id number, name varchar2(20))
    第 1 行出現錯誤:
    ORA-01031: 權限不足
    SQL> conn /as sysdba;
    已連接。
    SQL> grant resource to user01;
    授權成功。
    SQL> conn user01/pass01;
    已連接。
    SQL> create table test(id number, name varchar2(20));
    表已創建。
  • RESOURCE角色不可以創建數據庫結構,而DBA角色可以創建數據庫結構:
    SQL> conn user01/pass01;
    已連接。
    SQL> create user user02 identified by pass02;
    create user user02 identified by pass02
    第 1 行出現錯誤:
    ORA-01031: 權限不足
    SQL> conn /as sysdba;
    已連接。
    SQL> grant dba to user01;
    授權成功。
    SQL> conn user01/pass01;
    已連接。
    SQL> create user user02 identified by pass02;
    用戶已創建。

    b、創建角色

  • 語法格式:CREATE ROLE 角色名;
  • 例如:CREATE ROLE manager;
    C:\Users\Administrator>sqlplus /nolog
    SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 27 09:26:10 2017
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    SQL> conn sys/02000059 as sysdba
    已連接。
    SQL> create role manager;
    角色已創建。

    c、為角色賦予權限

  • 語法格式:GRANT 權限 TO 角色
  • 例:GRANT create table,create view TO manager;
    SQL> grant create table,create view TO manager;
    授權成功。
    SQL>

    d、將角色賦予用戶

  • 語法格式:GRANT 角色 TO 用戶;
  • 例如:GRANT manager TO user01,user02;
    SQL> grant manager TO user01;
    授權成功。
    SQL>

    e、撤銷對用戶授予的權限

  • 語法格式:revoke 用戶 from 角色;
  • 例如:revoke manager from user01;
    SQL> revoke manager from user01;
    撤銷成功。
    SQL>

    f、刪除自定義角色

  • 語法格式:drop role 角色;
  • 例如:drop role manager;
    SQL> drop role manager;
    角色已刪除。
    SQL>

    5、Oracle用戶的權限管理

  • 權限的分類:分為兩類,系統權限和對象(實體)權限。
  • 系統權限:允許用戶執行特定的數據庫動作,如創建表、創建索引、連接實例等。
  • 對象(實體)權限:允許用戶操縱一些特定的對象,如讀取視圖,可更新某些列、執行存儲過程等。

    a、系統權限

  • 查看Oracle所有系統權限:SELECT * FROM SYSTEM_PRIVILEGER_MAP;
    SQL> select * from system_privilege_map;
    PRIVILEGE NAME                                       PROPERTY
        -3 ALTER SYSTEM                                      0
        -4 AUDIT SYSTEM                                      0
        -5 CREATE SESSION                                    0
        -6 ALTER SESSION                                     0
        -7 RESTRICTED SESSION                                0
       -10 CREATE TABLESPACE                                 0
       -11 ALTER TABLESPACE                                  0
       -12 MANAGE TABLESPACE                                 0
       -13 DROP TABLESPACE                                   0
       -15 UNLIMITED TABLESPACE                              0
       -20 CREATE USER                                       0
    PRIVILEGE NAME                                       PROPERTY
       -21 BECOME USER                                       0
       -22 ALTER USER                                        0
             ...
             已選擇208行。
  • 系統權限列表詳請:
           alter any cluster 修改任意簇的權限 
      alter any index 修改任意索引的權限 
      alter any role 修改任意角色的權限 
      alter any sequence 修改任意序列的權限 
      alter any snapshot 修改任意快照的權限 
      alter any table 修改任意表的權限 
      alter any trigger 修改任意觸發器的權限 
      alter cluster 修改擁有簇的權限 
      alter database 修改數據庫的權限 
      alter procedure 修改擁有的存儲過程權限 
      alter profile 修改資源限制簡表的權限 
      alter resource cost 設置佳話資源開銷的權限 
      alter rollback segment 修改回滾段的權限 
      alter sequence 修改擁有的序列權限 
      alter session 修改數據庫會話的權限 
      alter sytem 修改數據庫服務器設置的權限 
      alter table 修改擁有的表權限 
      alter tablespace 修改表空間的權限 
      alter user 修改用戶的權限 
      analyze 使用analyze命令分析數據庫中任意的表、索引和簇 
      audit any 為任意的數據庫對象設置審計選項 
      audit system 允許系統操作審計 
      backup any table 備份任意表的權限 
      become user 切換用戶狀態的權限 
      commit any table 提交表的權限 
      create any cluster 為任意用戶創建簇的權限 
      create any index 為任意用戶創建索引的權限 
      create any procedure 為任意用戶創建存儲過程的權限 
      create any sequence 為任意用戶創建序列的權限 
      create any snapshot 為任意用戶創建快照的權限 
      create any synonym 為任意用戶創建同義名的權限 
      create any table 為任意用戶創建表的權限 
      create any trigger 為任意用戶創建觸發器的權限 
      create any view 為任意用戶創建視圖的權限 
      create cluster 為用戶創建簇的權限 
      create database link 為用戶創建的權限 
      create procedure  為用戶創建存儲過程的權限 
      create profile 創建資源限制簡表的權限 
      create public database link 創建公共數據庫鏈路的權限 
      create public synonym 創建公共同義名的權限 
      create role 創建角色的權限 
      create rollback segment 創建回滾段的權限 
      create session 創建會話的權限 
      create sequence 為用戶創建序列的權限 
      create snapshot 為用戶創建快照的權限 
      create synonym 為用戶創建同義名的權限 
      create table 為用戶創建表的權限 
      create tablespace 創建表空間的權限 
      create user 創建用戶的權限 
      create view 為用戶創建視圖的權限 
      delete any table 刪除任意表行的權限 
      delete any view 刪除任意視圖行的權限 
      delete snapshot 刪除快照中行的權限 
      delete table 為用戶刪除表行的權限 
      delete view 為用戶刪除視圖行的權限 
      drop any cluster 刪除任意簇的權限 
      drop any index 刪除任意索引的權限 
      drop any procedure 刪除任意存儲過程的權限 
      drop any role 刪除任意角色的權限 
      drop any sequence 刪除任意序列的權限 
      drop any snapshot 刪除任意快照的權限 
      drop any synonym 刪除任意同義名的權限 
      drop any table 刪除任意表的權限 
      drop any trigger 刪除任意觸發器的權限 
      drop any view 刪除任意視圖的權限 
      drop profile 刪除資源限制簡表的權限 
      drop public cluster 刪除公共簇的權限 
      drop public database link 刪除公共數據鏈路的權限 
      drop public synonym 刪除公共同義名的權限 
      drop rollback segment 刪除回滾段的權限 
      drop tablespace 刪除表空間的權限 
      drop user 刪除用戶的權限 
      execute any procedure 執行任意存儲過程的權限 
      execute function 執行存儲函數的權限 
      execute package 執行存儲包的權限 
      execute procedure 執行用戶存儲過程的權限 
      force any transaction 管理未提交的任意事務的輸出權限 
      force transaction 管理未提交的用戶事務的輸出權限 
      grant any privilege 授予任意系統特權的權限 
      grant any role 授予任意角色的權限 
      index table 給表加索引的權限 
      insert any table 向任意表中插入行的權限 
      insert snapshot 向快照中插入行的權限 
      insert table 向用戶表中插入行的權限 
      insert view 向用戶視圖中插行的權限 
      lock any table 給任意表加鎖的權限 
      manager tablespace 管理(備份可用性)表空間的權限 
      references table 參考表的權限 
      restricted session 創建有限制的數據庫會話的權限 
      select any sequence 使用任意序列的權限 
      select any table 使用任意表的權限 
      select snapshot 使用快照的權限 
      select sequence 使用用戶序列的權限 
      select table 使用用戶表的權限 
      select view 使用視圖的權限 
      unlimited tablespace 對表空間大小不加限制的權限 
      update any table 修改任意表中行的權限 
      update snapshot 修改快照中行的權限 
      update table 修改用戶表中的行的權限 
      update view 修改視圖中行的權限 

    b、授予用戶(或角色)系統權限的語法格式

  • GRANT privilege [,privilege...] TO user [,user | role,PUBLIC...]
  • 舉例:grant create table, create sequence to manager; grant manager to user01,user02;(注意:這句話的意思是對用戶user01,user02分配了創建表,創建序列的權限。)
    SQL> grant create table, create sequence to manager;
    授權成功。
    SQL>

    c、撤銷用戶(或角色)系統權限的語法格式

  • REVOKE {privilege | role} FROM {user_name | role_name | PUBLIC}
  • 舉例:revoke manager from user01; revoke create table,create sequence from manager;
    SQL> revoke create table,create sequence from manager;
    撤銷成功。
    SQL>

    d、對象權限

  • 查詢Oracle所有對象權限:select * from table_privilege_map;,常用的對象權限如:select,update,insert,delete,all等。(all包括所有權限)
    SQL> select * from table_privilege_map;
    PRIVILEGE NAME
         0 ALTER
         1 AUDIT
         2 COMMENT
         3 DELETE
         4 GRANT
         5 INDEX
         6 INSERT
         7 LOCK
         8 RENAME
         9 SELECT
        10 UPDATE
        11 REFERENCES
        12 EXECUTE
        16 CREATE
        17 READ
        18 WRITE
        20 ENQUEUE
        21 DEQUEUE
        22 UNDER
        23 ON COMMIT REFRESH
        24 QUERY REWRITE
        26 DEBUG
        27 FLASHBACK
        28 MERGE VIEW
        29 USE
        30 FLASHBACK ARCHIVE
    已選擇26行。

    e、授予用戶(或角色)對象權限的語法格式

  • GRANT object_priv | ALL [(columns)] ON object TO {user | role | PUBLIC}
  • 舉例:grant select, update, insert on scott.emp to manager2; grant manager2 to user03; grant all on scott.emp to user04;
    SQL> conn user01/pass01;
    已連接。
    SQL> select * from scott.emp;
    select * from scott.emp
    第 1 行出現錯誤:
    ORA-00942: 表或視圖不存在
    SQL> conn /as sysdba;
    已連接。
    SQL> grant select on scott.emp to user01;
    授權成功。
    SQL> conn user01/pass01;
    已連接。
    SQL> select * from scott.emp;
    EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
    7369 SMITH      CLERK           7902 17-12月-80            800
    20
    7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
    30
    7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
    30

f、撤銷用戶(或角色)對象權限的語法格式

  • REVOKE {privilege [,privilege...] | ALL} ON object FROM {user[,user...] | role | PUBLIC}
  • 舉例說明:revoke all on scott.emp from user04;
    SQL> conn /as sysdba;
    已連接。
    SQL> revoke select on scott.emp from user01;
    撤銷成功。
    SQL> conn user01/pass01;
    已連接。
    SQL> select * from scott.emp;
    select * from scott.emp
    第 1 行出現錯誤:
    ORA-00942: 表或視圖不存在

    6、表空間的管理:查看用戶的表空間

    a、oracle數據字典

  • 數據字典是oracle存放數據庫信息的地方,幾乎所有的系統信息和對象信息都可以在數據字典中進行查詢。數據字典是oracle數據庫系統的信息核心,它是一組提供有關數據庫信息的表和視圖的集合,這些表和視圖是只讀的。它是隨著數據庫的建立而建立的,當數據庫執行特定動作時數據字典也會自動更新。數據一覽與數據字典來記錄、校驗和管理正在進行的操作。
  • oracle中,sys用戶是數據字典的擁有者,數據字典保證在所有數據庫的系統表空間system內,任何用戶都無權更改sys模式下的模式對象或者數據字典中的行。也就是說數據字典只能查詢,不能手動進行修改。
  • 數據字典的用途:oracle通過存取數據字典從而比較方便地獲取有關用戶某視圖對象和存儲結構等信息。當系統執行了DDL語句后,oracle會及時修改數據字典。任何用戶只能以只讀的形式來使用數據字典獲取數據庫信息。
  • 數據字典存儲的信息:數據用戶的名稱、為用戶授予的權限和角色、模式對象的名稱(如tables、views、indexex、procedures、functions、packages,triggers等)、完整性約束的具體信息、每個字段的默認值、數據庫空間的使用情況、審計功能、對象與用戶的嚴格管理(適用于高度機密管理)、其他一般數據庫信息。

  • 兩種前綴的數據字典視圖:
  • user_:任何用戶都可以讀取的視圖,每個用戶讀取的都不一樣,它只提供當前用戶某視圖的對象信息。
  • dba_:提供了只有數據庫管理員才可以讀取的視圖,包括所有用戶視圖中的對象信息。

    b、查看用戶的表空間

  • 相關的數據字典:dba_tablespaces針對的是數據庫管理員級別的表空間描述信息,而user_tablespaces針對的是普通用戶級別的表空間描述信息。
  • 命令行示例如下:scott用戶可以查詢user_tablespaces,而不可以查詢dba_tablespaces
    SQL> conn scott/02000059
    已連接。
    SQL> select tablespace_name from dba_tablespaces;
    select tablespace_name from dba_tablespaces
    第 1 行出現錯誤:
    ORA-00942: 表或視圖不存在
    SQL> select tablespace_name from user_tablespaces;
    TABLESPACE_NAME
    SYSTEM
    SYSAUX
    UNDOTBS1
    TEMP
    USERS
    EXAMPLE
    TEST1_TABLESPACE
    TEMPTEST1_TABLESPACE
    已選擇8行。
  • 而sys用戶可以查詢user_tablespaces,而不可以查詢dba_tablespaces:
    SQL> conn /as sysdba;
    已連接。
    SQL> select tablespace_name from dba_tablespaces;
    TABLESPACE_NAME
    SYSTEM
    SYSAUX
    UNDOTBS1
    TEMP
    USERS
    EXAMPLE
    TEST1_TABLESPACE
    TEMPTEST1_TABLESPACE
    已選擇8行。
    SQL> select tablespace_name from user_tablespaces;
    TABLESPACE_NAME
    SYSTEM
    SYSAUX
    UNDOTBS1
    TEMP
    USERS
    EXAMPLE
    TEST1_TABLESPACE
    TEMPTEST1_TABLESPACE
    已選擇8行。

    c、查看系統用戶的表空間

  • 相關的數據字典:dba_users針對于管理員的數據字典,用于查看數據庫所有用戶的用戶信息;user_users針對于普通用戶的數據字典,用于查看數據庫中當前用戶的用戶信息。
  • 命令行示例如下:查看dba_users的默認表空間和臨時表空間:
    SQL> conn system/02000059 as sysdba
    已連接。
    SQL> select default_tablespace,temporary_tablespace from dba_users where username = 'SYSTEM';
    DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
    SYSTEM                                           TEMP
    SQL> select username, default_tablespace,temporary_tablespace from dba_users;
    USERNAME                       DEFAULT_TABLESPACE                 TEMPORARY_TABLESPACE
    MGMT_VIEW                      SYSTEM                                               TEMP
    SYS                                      SYSTEM                                                TEMP
    SYSTEM                             SYSTEM                                                 TEMP
    SCOTT                                USERS                                                   TEMP
    ...

    d、設置用戶默認或者臨時表空間

  • 語法格式:ALTER USER username DEFAULT | TEMPORARY TABLESPACE tablespace_name;
  • 命令行示例代碼如下:
    SQL> ALTER USER user01 DEFAULT TABLESPACE TEST1_TABLESPACE TEMPORARY TABLESPACE TEMPTEST1_TABLESPACE
    用戶已更改。
    SQL> select default_tablespace,temporary_tablespace from dba_users where username='USER01';
    DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
    TEST1_TABLESPACE               TEMPTEST1_TABLESPACE

    7、表空間管理:修改表空間的狀態

    a、修改表空間的狀態1

  • 設置聯機或者脫機狀態:ALTER TABLESPACE tablespace_name ONLINE | OFFLINE;
  • 需要注意的是,如果一個表空間設置為脫機狀態,表示該表空間暫時不讓訪問,設置成脫機狀態不是刪除,當我們需要使用該表空間還可以將其設置成聯機狀態,正常使用。(默認為聯機狀態)
  • 命令行示例如下:
    SQL> alter tablespace test1_tablespace offline;
    表空間已更改。
    SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
    STATUS
    OFFLINE

    b、修改表空間的狀態2

  • 設置只讀或者可讀寫狀態:ALTER TABLESPACE tablespace_name READ ONLY | READ WRITE;
  • 默認為可讀寫狀態。
  • 命令行示例如下:表空間在脫機狀態下是沒有辦法修改成只讀狀態,需要將其修改成聯機狀態后再修改。
    SQL> alter tablespace test1_tablespace read only;
    alter tablespace test1_tablespace read only
    第 1 行出現錯誤:
    ORA-01539: 表空間 'TEST1_TABLESPACE' 未聯機
    SQL> alter tablespace test1_tablespace online;
    表空間已更改。
    SQL> alter tablespace test1_tablespace read only;
    表空間已更改。
    SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
    STATUS
    READ ONLY

    c、增加表空間中的數據文件

  • 語法格式:ALTER TABLESPACE tablespace_name ADD DATAFILE 'filename.dbf' SIZE xx;
    (向創建好的表空間中增加數據文件)
  • 命令行示例如下:
    SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
    STATUS
    READ ONLY
    SQL> alter tablespace test1_tablespace add datafile 'test2_datafile.dbf' size 10m;
    alter tablespace test1_tablespace add datafile 'test2_datafile.dbf' size 10m
    第 1 行出現錯誤:
    ORA-01641: 表空間 'TEST1_TABLESPACE' 未聯機 - 無法添加數據文件
    SQL> alter tablespace test1_tablespace read write;
    表空間已更改。
    SQL> alter tablespace test1_tablespace add datafile 'test2_datafile.dbf' size 10m;
    表空間已更改。
    SQL> select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
    FILE_NAME
    E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\TESTFILE.DBF
    E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST2_DATAFILE.DBF
  • 以上示例中需要向test1_tablespace表空間中添加數據文件,需要將其狀態轉換為可讀寫狀態。

    d、增加表空間中的刪除數據文件

  • 語法格式:ALTER TABLESPACE tablespace_name DROP DATAFILE 'filename.dbf';
  • 需要注意的是,不能夠刪除表空間中的第一個創建的數據文件,如果需要刪除的話,我們需要把整個表空間都刪除掉。
  • 命令行示例如下:
    SQL> alter tablespace test1_tablespace DROP DATAFILE 'TEST2_DATAFILE.DBF';
    表空間已更改。
    SQL> select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
    FILE_NAME
    E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\TESTFILE.DBF
    SQL> alter tablespace test1_tablespace DROP DATAFILE 'TESTFILE.DBF';
    alter tablespace test1_tablespace DROP DATAFILE 'TESTFILE.DBF'
    第 1 行出現錯誤:
    ORA-03263: 無法刪除表空間 TEST1_TABLESPACE 的第一個文件

    e、刪除表空間

  • 語法格式:DROP TABLESPACE table_name [INCLUDING CONNENTS]
  • 需要注意的是,如果刪除時只是單純的想刪除表空間,而不刪除數據文件的話,可以如下:
    drop tablespace tablespace_name;;而如果在刪除表空間的同時還想要把數據文件也刪除的話,那么需要添加如下內容:including contents。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榆中县| 应用必备| 新建县| 汉沽区| 南开区| 榆中县| 建水县| 独山县| 井冈山市| 文登市| 景泰县| 韶山市| 门源| 临安市| 丰原市| 新安县| 辽源市| 鄄城县| 隆回县| 思茅市| 靖宇县| 泰顺县| 普宁市| 马关县| 东兴市| 富锦市| 丹阳市| 仪征市| 青田县| 都安| 平安县| 绥阳县| 台前县| 烟台市| 奎屯市| 盐津县| 沭阳县| 兴仁县| 建平县| 屏边| 静安区|