1. 程式人生 > >SQL*Plus的基本操作

SQL*Plus的基本操作

SQL*Plus的啟動與關閉

僅啟動SQL*Plus不登入到資料庫: sqlplus /nolog 以預設管理員登陸: sqlplus / as sysdba 以資料庫賬戶登入:

$ sqlplus
$ sqlplus username
$ sqlplus [email protected]
$ sqlplus [email protected]//host/sid
$ sqlplus [email protected]//host:port/sid
**$ sqlplus username/password**
$ sqlplus username/[email protected]
$ sqlplus username/[email protected]//host/sid $ sqlplus username/[email protected]//host:port/sid $ sqlplus username as sysdba $ sqlplus [email protected] as sysdba $ sqlplus [email protected]//host/sid as sysdba $ sqlplus [email protected]//host:port/sid as sysdba $ sqlplus username/password as sysdba $ sqlplus username/
[email protected]
as sysdba $ sqlplus username/[email protected]//host/sid as sysdba $ sqlplus username/[email protected]//host:port/sid as sysdba 登入資料庫並執行 SQL*Plus 指令碼檔案 $ sqlplus username/[email protected] @/home/oracle/createdb $ sqlplus username/[email protected] @/home/oracle/createdb.sql $ sqlplus username/
[email protected]
@/home/oracle/createdb.sql 10 10 30 40

建立表空間和使用者

sqlplus / as sysdba以系統管理員身份登陸,出現SQL>,接下來檢視當前資料庫檔案都存放在哪裡:select name from v$datafile; 在這裡插入圖片描述 現在開始建立資料庫表空間: 格式為 create tablespace 表空間名 datafile ‘對應的檔名’ size 大小; eg:

create  tablespace  yang   datafile   '/oracle/oradata/orcl/yang.dbf'    size   3000m;

接下來建立使用者: create user 使用者名稱 identified by 密碼 default tablespace 使用者預設使用哪一個表空間; eg. create user yanglei identified by yang123 default tablespace yang; 最後,修改使用者許可權,參見 授予系統許可權

更改使用者

修改密碼: ALTER USER USERMAN IDENTIFIED BY NewPassword; 設定使用者USERMAN的密碼立即過期,它在下一次登入時必須修改密碼: ALTER USER USERMAN PASSWORD EXPIRE; 鎖定使用者USERMAN,使其無法登入到資料庫: ALTER USER USERMAN ACCOUNT LOCK; 解除對使用者USERMAN的鎖定: ALTER USER USERMAN ACCOUNT UNLOCK;

刪除使用者

DROP USER語句也可以刪除指定的使用者。 DROP USER 使用者名稱 [CASCADE];

查詢使用者

1.檢視所有使用者:

select * from dba_users;   

select * from all_users;   

select * from user_users;

2.檢視使用者或角色系統許可權(直接賦值給使用者或角色的系統許可權):

select * from dba_sys_privs;   
select * from user_sys_privs; (檢視當前使用者所擁有的許可權)

3.檢視角色(只能檢視登陸使用者擁有的角色)所包含的許可權

sql>select * from role_sys_privs;

4.檢視使用者物件許可權:

select * from dba_tab_privs;   

select * from all_tab_privs;   

select * from user_tab_privs;

5.檢視所有角色:

select * from dba_roles;

6.檢視使用者或角色所擁有的角色:

select * from dba_role_privs;  
select * from user_role_privs;

7.檢視哪些使用者有sysdba或sysoper系統許可權(查詢時需要相應許可權)

select * from V$PWFILE_USERS

8.SqlPlus中檢視一個使用者所擁有許可權

SQL>select * from dba_sys_privs where grantee='username'; 其中的username即使用者名稱要大寫才行。
比如: SQL>select * from dba_sys_privs where grantee='TOM';

9、Oracle刪除指定使用者所有表的方法

select 'Drop table '||table_name||';' from all_tables where owner='要刪除的使用者名稱(注意要大寫)';

10、刪除使用者

drop user user_name cascade; 如:drop user SMCHANNEL CASCADE

11、獲取當前使用者下所有的表:

select table_name from user_tables;

12、刪除某使用者下所有的表資料:

select 'truncate table  ' || table_name from user_tables;

授予系統許可權

grant create session to lisi;       //授予lisi使用者建立session的許可權,即登陸許可權 (必須授予,登入使用)
grant create table to lisi;         //授予lisi使用者建立表的許可權
grant unlimited tablespace to lisi; //授予lisi使用者使用表空間的許可權(想建立表,必須具有使用表空間許可權)
grant create session public; //把建立session的許可權,授予所有的使用者;
——撤銷許可權
revoke create session from lisi;       //撤銷lisi使用者建立session的許可權,即登陸許可權
revoke unlimited tablespace from lisi; //撤銷lisi使用者使用表空間的許可權
 revoke create table from lisi;         //撤銷lisi使用者建立表的許可權

授予物件許可權

oracle中物件是彼此分開的,預設情況下,不能相互訪問資料,但是可以通過授予物件許可權的方式,讓不同使用者之間的相互訪問; 我們使用lisi使用者建立的表lisitable ,然後在沒有給wangwu授權的情況下,讓wangwu查詢lisitable;(沒有許可權) 在這裡插入圖片描述 我們讓lisi使用者把許可權授予wangwu使用者,同時也可以撤銷授予其他使用者的許可權,授予的許可權還可以具體到表的某一列上; 在這裡插入圖片描述 這時我們使用wangwu使用者來訪問lisi使用者的lisitable; 在這裡插入圖片描述 ——許可權傳遞,一般來說許可權之間是不可以傳遞的,但是加上admin option之後就能傳遞: 在這裡插入圖片描述 lisi也具備授予wangwu,alter any table的許可權; 在這裡插入圖片描述

建立角色

Create role 角色名[not identified | identified {by 口令|externally|globally}];

給角色授權
Grant {All|物件許可權1 [,物件許可權2…] }[列1[,列2]…] On{[模式名.]物件名|directory 目錄名}to角色 [with grant option];

刪除角色

drop role 角色;

修改表:

    (1)修改表的名稱
            alter table 表名 rename to 新的名字;
            demo:
                alter table ta1 rename to ta0;
    (2)新增一個新欄位
            alter table 表名 add 新欄位 欄位的型別;
            demo:
                alter table ta0 add unames varchar(20);
     (3)修改欄位:
            alter table 表名  change 舊得欄位  新的欄位 欄位的資料型別;
               alter table ta0 change unames uname varchar(20);
    (4)修改欄位的型別:
            alter table 表名  modify  欄位  欄位的新型別
             demo:                
            alter table ta0 modify uname int;

================================================================ 參考來源:csdn部落格,部落格園。