1. 程式人生 > >Oracle學習筆記第四天

Oracle學習筆記第四天

Oracle學習筆記第四天

現在表已經建好了,資料也插入進去了,但是感覺之前的知識還有所欠缺,現在開始查漏補缺一下,中間可能點重複的內容。

資料庫基本操作都離不開 CRUT(增刪查改)

這篇暫時用來記錄使用者和表空間的操作

注意:使用者和表空間操作只有在系統使用者下才能執行,普通使用者時沒有許可權的,但是不清楚有沒有許可權賦給普通使用者,讓其可以操作,如果有,那這個使用者也不是普通使用者了,也是系統使用者了。

使用者:

  1. 這個之前介紹了,

  2. ​ 注意:新增 cascade 會刪除使用者下的所有物件(包括表、檢視、主鍵、外來鍵、索引等;但不會刪除儲存過程、函式、包)。但是如果不加則僅僅只刪除使用者,一般建議新增,使用者都刪了,屬於它的東西不也沒用了嗎?如果有用,那還刪它幹嘛。

    drop user 使用者名稱 cascade;
    
  3. select * from dba_users;								-- 查詢dba_users下的所有使用者
    select username from dba_users;							-- 查詢dba_users下的所有使用者名稱
    select username from dba_users where username='JACK';	-- 查詢dba_users下的使用者名稱為JACK的使用者
    select username from all_users where username='JACK';	-- 查詢all_users下的使用者
    select * from user$ -- 查詢所有使用者

    dba_users:表示資料庫所有角色,all_users表示你能管理的所有角色。

    1. 修改使用者名稱

      update user$ set name = '新使用者名稱' where user# = '之前查出來的Id';
      

      注意:刪除資料之後記得commit提交,不然不會生效。但是提交了之後,你會發現還是不能登入,這是資料庫沒有同步的問題,重啟一下資料庫就好了,一般公司資料庫都跑著,不可能會讓你重啟,所以我們可以通過強制重新整理來重新整理資料。

      alter system checkpoint
      ; alter system flush shared_pool;

      修改密碼還有一個方法:就是先將要刪除的使用者資料匯出,然後在匯入新增的使用者裡,再刪除要刪除的使用者。

    2. 修改密碼

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

      注意:修改後記得提交資料。

表空間:

增:

之前已有新增永久表空間和臨時表空間的語句,這裡就不多介紹。

刪:
 --刪除空的表空間,但是不包含物理檔案
 drop tablespace tablespace_name;
 --刪除非空表空間,包含物理檔案
 drop tablespace tablespace_name including contents;
 --刪除空表空間,包含物理檔案
 drop tablespace tablespace_name including datafiles;
 --刪除非空表空間,包含物理檔案
 drop tablespace tablespace_name including contents and datafiles;
 --如果其他表空間中的表有外來鍵等約束關聯到了本表空間中的表的欄位,就要加上CASCADE CONSTRAINTS
 drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

查:

select * from user_tablespaces;			-- 查詢所有表空間名字等
select * from user_users;				-- 查詢預設表空間,臨時表空間
select * from dba_free_space;			-- 查詢表空間空閒情況
select * from dba_data_files;			-- 查詢資料檔案
select * from dba_tablespaces			-- 查詢表空間狀態
select table_name from user_tables;  	-- 當前使用者下的表      
select table_name from all_tables; 		-- 所有使用者下的表  
select table_name from dba_tables; 		-- 所有使用者表和系統表

改:

  1. 修改表空間的狀態:

    • 線上
      當表空間的狀態為online時,才允許訪問該表空間中的資料。

      alter tablespace 表空間名 online;	-- 修改為線上狀態
      
    • 離線
      當表空間的狀態為offline時,不允許訪問該表空間中的資料。例如向表空間中建立表或者讀取表空間的表燈資料操作都將無法進行,這時可以對錶空間進行離線備份,也可以對應用程式進行升級和維護等。

      alter tablespace 表空間名 offline parameter;	-- 修改為離線狀態
      

      其中,parameter表示將表空間切換為offline狀態時可以使用的引數。主要可以應用如下的幾個引數。
      normal
      temporary
      immediate
      for recover

    • 只讀
      當表空間的狀態為read only時,雖然可以訪問表空間的資料,但範文僅僅僅限於閱讀,而不能進行任何的更新和刪除操作,目的是為了保證表空間的資料安全。

      alter tablespace tablespace_name read only;		-- 修改為只讀狀態
      

      不過,將表空間的狀態修改為read only之前,需要注意如下的事項:
      1.表空間必須處於online狀態
      2.表空間不能包含任何事務的回退段
      3.表空間不能正處於線上的資料庫備份期間

    • 讀寫
      當表空間的狀態為read write時,可以對錶空間進行正常訪問,包括對錶空間中的資料進行查詢,更新和操作。

      alter tablespace tablespace_name read write;	-- 修改為讀寫狀態
      

      修改表空間的狀態為read write,也需要保證表空間處於online狀態。

  2. 修改資料檔案大小

    alter database datafile 'H:\Oracle_data_base\MYTEMPTBS.DBF' RESIZE 1024M; 
    

    H:\Oracle_data_base\MYTEMPTBS.DBF:表空間之前那儲存的路徑。