oracle創建用戶,修改用戶,刪除用戶等關於用戶的


--直接修改底層表 USER$ 更換用戶名

1、windows 平台下運行 cmd

2、sqlplus /nolog

3、SQL> conn SYSTEM/123@ORCL as sysdba 連接到數據庫。通常可以用sys用戶登陸。

4、SQL> select * from user$; 找到 name為需要修改的用戶的user#。

select user#, name from user$ where name = 'SA';     --先瞧下SA的信息,其中user#就是一個序列號,相當於身份證號吧,假如這里是250

 

update user$ set name = 'SA3' where user# = 250;     --於是用戶名就改好了啊.當然是update語句就記得再commit提交下啊.

 

5、SQL> UPDATE USER$ SET NAME='新用戶名' WHERE USER#=38;
   已更新 1 行。

6、SQL> COMMIT;提交完成。

7、SQL> ALTER SYSTEM CHECKPOINT;
   系統已更改。

8、SQL> ALTER USER 新用戶名 IDENTIFIED BY 新密碼;
   此時會提示新用戶不存在。

SQL> ALTER USER 新用戶名 IDENTIFIED BY 新密碼       

*ERROR 位於第 1 行:ORA-01918: 用戶'新用戶'不存在

9、SQL> ALTER SYSTEM FLUSH SHARED_POOL;
   系統已更改。

10、SQL> ALTER USER 新用戶 IDENTIFIED BY 新密碼;
    用戶已更改。

11、測試連接
    SQL> CONN 新用戶/新密碼@lmisdx_local;
    已連接。

12、SQL> SELECT * FROM TAB;
    查看新用戶下是否有原用戶的對象,包括表等。

13、SQL> CONN /    AS SYSDBA已連接。

14、SQL> SHOW USER     --查看當前連接用戶
    為"SYS"

15、SQL> SHUTDOWN IMMEDIATE   --關閉數據庫(這句話不能亂用)
    數據庫已經關閉。已經卸載數據庫。ORACLE 例程已經關閉。(13,14可以拯救這段)

16、SQL> STARTUP              --啟動數據庫
        ORACLE 例程已經啟動。......數據庫裝載完畢。數據庫已經打開。

17、可以看出沒有再恢復為TEST
    SQL> SELECT USER#,NAME,PASSWORD FROM USER$ WHERE USER#=38;
                   
18、查看數據對象
    SQL> SELECT * FROM TAB;
                              
19、SQL >connsys/lmis@lmisdx_localas sysdba
已連接。
SQL> SHOW USERUSE
為"SYS"
--DROP USER 也沒有問題
SQL> DROP USER TEST1 CASCADE;   --刪除以前的用戶

 

 

 

 

SYSDBA身份登陸時修改其用戶密碼比:
SQL> alter user user01 identified by user10;
用戶已更改
把USER01用戶密碼修改USER10

 

查詢當前數據名

方法一:select name from v$database;

方法二:show parameter db

方法三:查看參數文件。

Oracle函數的寫法(tdc002表名,返回值v_Value

create or replace

FUNCTION Getivalue

(p_Id VARCHAR2)

RETURN VARCHAR2 AS

v_Value VARCHAR2(50);

BEGIN

  SELECT en_name INTO v_Value FROM tdc002

  WHERE en_code = p_Id;

  RETURN v_Value;

END Getivalue;s

函數的用法:

select Getivalue(en_code) from TDC002s

返回一個表的超級麻煩

從oracle 9i 開始,提供了一個叫做“管道化表函數”的概念,來解決這個問題
這種類型的函數,必須返回一個集合類型,且標明 pipelined
這個oracle函數不能返回具體變量,必須以一個空 return 返回
這個oracle函數中,通過 pipe row () 語句來送出要返回的表中的每一行

調用這個oracle函數的時候,通過 table() 關鍵字把管道流仿真為一個數據集

具體寫法如下:

create type row_type2 as object(username1 varchar2(100),dw1 varchar2(100),ts number);  //創建行類型,同要返回的表的類型一致。
create type table_type2 as table of row_type2;  
create or replace function fun1(dateSJ varchar2) return table_type2
pipelined as  v row_type2; 
begin 
for myrow in 
(
    with a as
     (
         select (select username from users where userid= t.fromid) as username1,to_char((select dwbmmc from ks_xqpm_dwbm where dwbmid=(select deptid from users where userid=t.fromid) )) as dw1,count(*) as ts from mobile t where to_char(sendtime,'yyyy-mm')=dateSJ group by fromid
     )
     ,
     b as
     (
         select '合計' as  username1,'' as dw1,(select count(*)  from mobile  where to_char(sendtime,'yyyy-mm')=dateSJ) as ts from dual
     )
     select username1,dw1,ts  from a union all select username1,dw1,ts from b
)
loop  v := row_type2(myrow.username1, myrow.dw1,myrow.ts); 
pipe row (v); 
end loop; 
return; 
end;  

調用方法: select * from table(fun1('2012-01'));

 

查詢當前數據庫實例名

方法一:select instance_name from v$instance;

方法二:show parameter instance

方法三:在參數文件中查詢。

 

查詢數據庫域名

方法一:select value from v$parameter where name = 'db_domain';

方法二:show parameter domain

方法三:在參數文件中查詢。

 

查詢數據庫服務名

方法一:select value from v$parameter where name = 'service_name';

方法二:show parameter service_name

方法三:在參數文件中查詢。

 

簡易連接,不用進行網絡配置(2種)

1、c:/>sqlplus /nolog

2、sqlplus sys/pwd@ip:1521/service_name  as sysdba 

 

SERVICE_NAME:在服務器端,用system用戶登陸后,sqlplus> show parameter service_name命令察看。 

 

1:創建用戶aaa,給其connect和resource角色,但回收unlimited tablespace權限:

SQL> create user SAidentified by sa default tablespace users;

2、分配權限

SQL> grant connect,resource to SA;

grant dba to aaa;

Grant succeeded.

///回收權限

SQL> revoke unlimited tablespace from aaa;

Revoke succeeded.

//分配空間

create tablespace  CMPDATA datafile 'D:\a.dbf' size 1000m autoextend on next 50m

導入sql語句

:@D:\test.sql

SQl>grant insert any table to SA

.查看所有用戶:

  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

 

2、查看用戶默認表空間

SQL> select username,default_tablespace from dba_users where username ='SA';

 

3、查看用戶使用的表空間

SQL> select DISTINCT owner ,tablespace_name from dba_extents where owner like 'SAMS';

 

4、查看表空間大小

sql> select TABLESPACE_NAME, BYTES/1024/1024 M from dba_data_files where TABLESPACE_NAME='EMALL_DAT';

 

7、檢查表空間是否自動擴展

  select tablespace_name,file_name,autoextensible,increment_by from dba_data_files;

 

8、修改表空間自動擴展

   alter database datafile '/oradata/dzsw/UNDOTBS01.dbf' autoextend on  next 10M maxsize 30000M;

其中next 參數為每次擴展的空間的大小,MAXSIZE為擴展空間的最大限制,UNLIMITED為無限制。

 

9、修改表空間數據文件大小

  alter database datafile 'E:\APP\ADMINISTRATOR\ORADATA\SUSDATA\SYSTEM01.DBF' resize 5000M ;

 

10、增加表空間數據文件

  alter tablespace ICD_SERVICE ADD datafile  '+DATA1/ctidb/datafile/icd_service1' SIZE 4000M autoextend on  next 50M maxsize UNLIMITED;

 

  alter tablespace ICD_SERVICE ADD datafile  '+DATA1/ctidb/datafile/icd_service1' SIZE 1000M ;

 

  alter tablespace ICD_SERVICE ADD datafile  '+DATA1'  SIZE 4000M;

 

11、檢查臨時文件使用情況

  select file_name, sum(e.bytes)/1024/1024 as MB   from dba_extents e join dba_temp_files f on e.file_id=f.file_id   group by file_name;

  select file_name,bytes/1024/1024 mb ,tablespace_name from dba_temp_files;

 

12、檢查可以回收的文件空間

  SELECT 'alter database datafile '''||a.name||''' resize '||

       CEIL(b.HWM * a.block_size/1024/1024)||'M;' ResizeCmd

FROM v$datafile a,

     (SELECT file_id, MAX(block_id + blocks - 1) HWM

      FROM dba_extents

      GROUP BY file_id) b

WHERE a.file# = b.file_id (+)

  AND (a.bytes/1024/1024 - CEIL(b.HWM * a.block_size/1024/1024)) > 0 ;

alter database datafile '/oradata/dzsw/tbs_jiankong.dbf' resize 1000M;

alter database datafile '/oradata2/dzsw/fapdbls5.dbf' resize 2000M;

 

13、檢查系統表空間內是否有用戶表

select table_name,tablespace_name from dba_tables where tablespace_name='SYSTEM' and owner='SA';

select table_name,tablespace_name from dba_tables where tablespace_name='USERS' and owner='SA';

 

14、查數據庫整體大小

SQL> select sum(mb) from ( select sum(bytes)/1024/1024 as mb from  Dba_Segments Group By Tablespace_Name);

 

15、修改用戶默認表空間

alter user SA default tablespace cmpdata quota unlimited on cmpdata ;

 

3,、創建用戶命令

 A、連接到用戶SQL> conn system/root

B、創建用戶: SQL> create user scott identified by tiger;

C、切換用戶:SQL> conn scott/tiger    //用戶切換失敗

grant 權限名 to 用戶名;

SQL> conn system/root;//第一步切換到管理員

SQL> grant create session to scott; //為用戶受權

Grant succeeded//受權成功

,5,、角色(一個角色包含多個權限)

connect

   create session

   create table

   ……

 resource

    對表空間使用權限

    ……

   grant connect,resource to scott;

1、Create user 用戶名 identified by 密碼;(不能是全數字)

 2、grant create session,create table,resource to 用戶名;//給用戶分配權限

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM