oracle基本命令總結

pswyjz發表於2021-09-09

前提:本機已經安裝了Oracle11g資料庫。

需求:使用PL SQL資料庫連線工具操作Oracle資料庫

一、建立表空間和使用者

     想要運算元據庫,首先需要建立使用者並給使用者授予許可權;在建立使用者時需要指定表空間並指定使用者在表空間中能夠使用的大小。因此,想要建立使用者,首先需要建立資料庫表空間。

     1、採用sqlplus工具建立使用者及表空間:

     (1)開啟sqlplus工具:開始——》所有程式——》 Oracle --OraDb11g_home1——》應用程式開發——》SQL Plus

     (2)建立表空間:

       以使用者system連線資料庫,密碼為你安裝資料庫時設定全域性資料庫的視窗設定的管理口令,SYSTEM、SYS、SYSMAN、DBSNMP的初始密碼都是這個密碼,使用者SCOTT的初始口令為tiger。

       建立表空間的語句:datafile2.dbf為新建立的表空間資料檔案,注意:存放表空間資料檔案的目錄(這裡是D:OracleFilesOracleData)必須已經存在,否則會報下面的錯誤,該目錄是自己定義的,不一定就和下圖中的一樣。

圖片描述

修改資料檔案位置後,建立表空間成功:

圖片描述

這裡採用的是本地化管理方式建立的,dbsp_2是表空間的名稱,size 10m 表示表空間的大小,extent management local autoallocate是設定當表空間大小已滿時,用自動管理的方式擴充套件表空間。還有另一種擴充套件方式是每次擴充套件相同的大小,語句為:

extent management local uniform size 256K;其中,256k是根據實際需求設定的。

查詢表空間大小語句:

圖片描述

(3)建立使用者:

圖片描述

第一個testUser為使用者名稱,第二個testUser為使用者密碼,default tablespace是預設表空間,這裡設定成上面建立的表空間,temporary tablespace是臨時表空間,quote設定使用者在表空間上佔用的空間大小。如果不指定預設表空間,Oracle會將SYSTEM表空間指定為使用者的預設表空間;如果沒有用quota子句,使用者在特定表空間的配額為0,使用者不能在該表空間上建立資料物件。

建立使用者後,當使用者分配的空間不夠時,可以擴充套件使用者的空間:

alter user testUser quota 20m on dbsp_2;將使用者的空間擴充套件為20m

給使用者指定兩個表空間,並且可使用大小不限制:

alter user userName
 quota unlimited on tablespace1
 quota unlimited on tablespace2;

注意:在實際應用中建議表資料和表索引分兩個表空間,這時就需要給使用者在兩個表空間分配可使用空間,在建立使用者時還是按照上面提到的方法,只指定一個預設表空間,這樣如果在建立表時沒有指定表空間的情況下,會預設將表建立在預設表空間裡(即default tablespace),如果想給資料庫表資料和索引指定不同的表空間,則在給使用者分配可使用空間後,在建立資料庫表和索引時直接指定即可。

圖片描述


修改使用者密碼:

alter user testUser identified by 123456;將使用者的密碼設定為123456。

有時使用者會處於鎖定狀態,解鎖使用者:

alter user testUser account unlock;

(3)為使用者設定許可權

      初始建立的使用者沒有任何許可權,不能執行任何資料庫操作,因此必須為使用者設定許可權或者角色。被賦予了某個角色的使用者將擁有該角色所具備的許可權,常被用到的系統預定義角色:CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE。其中,CONNECT、RESOURCE、DBA主要用於資料庫管理,資料庫管理員需要被授予這三個角色。一般的資料庫開發人員,需要被授予CONNECT、RESOURCE角色即可。EXP_FULL_DATABASE、IMP_FULL_DATABASE角色分別用於運算元據庫匯出、匯入相關的操作。為使用者授予角色:

圖片描述


(4)建立使用者併為使用者授權的另一種方法:用PL SQL工具

  雙擊執行PLSQL Developer軟體,連線到本地的oracle資料庫伺服器

圖片描述

在“物件”下,找到users,右擊選擇“新建”

圖片描述

 在彈出的“建立使用者”視窗中,輸入新使用者的名稱、口令,預設表空間、臨時表空間等

圖片描述

賦予新使用者許可權,賦予其角色許可權:connect、resource,這樣使用者才能登入運算元據庫圖片描述


(5)建立資料庫使用者完成後,就可以用該使用者名稱、密碼登入PL SQL工具運算元據庫了。

 (6)刪除使用者語句:

  drop user 使用者名稱 cascade;

     刪除空的表空間,但是不包含物理檔案
  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;

二、資料庫資料的匯入匯出

     資料匯出:PL SQL登入成功後,點選工具--》匯出表--》選中要匯出的表--》插入SQL--》選中刪掉表選項、去掉包括儲存前面的對號,選擇輸出檔案的位置--》點選匯出按鈕--》等待匯出完成。

圖片描述

 資料匯入:點選PL SQL左上角的新建--》命令視窗圖片描述

 輸入@+sql檔案位置,點選回車,即可將表匯入資料庫。

圖片描述


 匯入資料庫的過程中,可能會報表空間不足的錯誤“unable to create INITIAL extent for segment in tablespace”

      修改表空間資料檔案大小:

     alter database datafile 'xxx.dbf' autoextend on next 10m [maxsize 500m];

     每次擴充套件10m,最大大小為500m。後續表空間不夠,還可以修改maxsize的值。

三、Oracle資料庫亂碼問題:

    1、 匯入匯出的過程中,可能會發現匯出的sql檔案中或者PL SQL顯示的中文漢字亂碼、顯示問號:

圖片描述


 可能是因為ORACLE資料庫的編碼格式不支援中文漢字,修改方法如下:

     (1) 開始-執行-輸入regedit-回車進入登錄檔,依次單擊HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle顯示的都不太一樣,但都會包含home這個單詞),找到“NLS_LANG”,檢視數值資料是否為:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,如果不是就將它設定為“SIMPLIFIED CHINESE_CHINA.ZHS16GBK。”

圖片描述

 (2)設定完登錄檔後,接下來設定我們的環境變數,計算機(右鍵) --->屬性--->高階設定--->高階--->環境變數--->新建,個人建議新建使用者變數,變數名輸入:“NLS_LANG”,變數值輸入:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。點選確定即可,到此我們就設定完了。

圖片描述


 (3)這樣設定過後,sql檔案和PL SQL中應該可以顯示中文了。

     2、經過上面的步驟後,可能會出現部分表可以顯示中文、部分表中文仍然亂碼的情況,登入PL SQL工具時提示:“資料庫字符集和客戶端字符集是不同的,字元轉化可能會造成不可預期的結果“

     原因:這是因為ORACLE伺服器和客戶端字元編碼格式設定的不同,即剛剛改過的登錄檔中的編碼格式與Oracle資料庫中的編碼格式不同。

     解決辦法:開啟sqlplus視窗,檢視當前編碼格式:

圖片描述

我的資料庫已經配置過了,和上面登錄檔中的字符集是相同的,如果不同,需要更改字符集,方法如下:

      sql> conn / as sysdba;

  sql> shutdown immediate;

  database closed.

  database dismounted.

  oracle instance shut down.

  sql> startup mount;

  oracle instance started.

  total system global area  135337420 bytes

  fixed size                          452044 bytes

  variable size                     109051904 bytes

  database buffers              25165824 bytes

  redo buffers                      667648 bytes

  database mounted.

  sql> alter system enable restricted session;

  system altered.

  sql> alter system set job_queue_processes=0;

  system altered.

  sql> alter system set aq_tm_processes=0;

  system altered.

  sql> alter database open;

  database altered.

  sql> alter database character set internal_use ZHS16GBK

  sql> shutdown immediate;

  sql> startup;

      經過上面的步驟,資料庫伺服器和客戶端的字符集一致了,應該不會出現中文漢字亂碼的問題了。

      以上是今天運算元據庫遇到的問題,現在應該可以正常使用本地Oracle11g資料庫了。

[可貼上命令]

create tablespace test datafile 'D:appAdministratororadataorcltest.dbf' size 10m autoextend on;

select tablespace_name,file_name,bytes from dba_data_files;

create user test identified by user

default tablespace test

temporary tablespace temp;

grant connect,resource to test;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/755/viewspace-2810531/,如需轉載,請註明出處,否則將追究法律責任。