oracle創建用戶建立表空間分配表空間分配權限命令

1、創建用戶並設置密碼分配dba權限

DROP USER dtjc CASCADE
drop tablespace dtjcTablespace including contents and datafiles;
commit;
create  user dtjc identified by 123456;
create tablespace dtjcTablespace datafile 'E:\app\Administrator\oradata\orcl\dtjcTableSpace.dbf' size 1000m autoextend on next 100m maxsize unlimited;
alter user dtjc default tablespace dtjcTablespace;
grant dba to dtjc;

2、創建表空間指定表空間磁盤路徑和表空間大小

 create tablespace projectmanagerTableSpace datafile   'D:\oracle_tablespaces\projectmanager.dbf' size 300m;

3、修改用戶對應的表空間

  alter user projectmanager default tablespace projectmanagerTableSpace;

4、分配權限給用戶

   grant create session,create table,unlimited tablespace to projectmanager;
     
     grant read,write on directory data_pump_dir1 to sde;--執行失敗

     grant exp_full_database,imp_full_database to sde;

    grant  connect,resource to sde identified  by sde;

5、查看用戶對應的表空間

  select username,default_tablespace from user_users;
      select * from dba_tablespaces

6、查看錶空間使用情況

 select tablespace_name,file_id,file_name,round(bytes/(1024*1024*1024),0) total_space from  dba_data_files order by tablespace_name; 

    select sum(bytes)/(1024*1024*1024) as free_space,tablespace_name from dba_free_space group by tablespace_name;

    select a.tablespace_name,
        a.bytes/(1024*1024*1024)  total,
        b.bytes/(1024*1024*1024) used,
        c.bytes/(1024*1024*1024) free,
        (b.bytes*100)/a.bytes "% USED",
        (c.bytes*100)/ a.bytes "% FREE"
    FROM sys.SM$ts_avail a ,
        sys.sm$ts_used b, 
        sys.sm$ts_free c
    where a.tablespace_name =b.tablespace_name
        and a.tablespace_name = c.tablespace_name

    select t.tablespace_name
    ,round(sum(bytes/(1024*1024)),0) ts_size
    from dba_tablespaces t
    ,dba_data_files d
    where t.tablespace_name = d.tablespace_name
    group by t.tablespace_name

    select sum(bytes)/(1024*1024*1024) as free_space,tablespace_name from dba_free_space group by tablespace_name;

7、查看數據庫用戶

 select username from dba_users;

8、查看 用戶,表空間,表空間對應文件

 select * from dba_data_files;
    
    select default_tablespace from dba_users where username='dtjc'

9、查看ASM磁盤空間使用情況

select * from v$asm_diskgroup

10、刪除用戶

 drop user hebei

11、分配dba權限給用戶

grant dba to HEBEI

12、設置表空間自動增長

alter database datafile 'E:\SDE.DBF'  autoextend on next 5M maxsize 5G;
    
    alter tablespace jack_data add datafile '數據文件路徑‘ size 1000m autoextend on next 100m maxsize 4000M

    alter tablespace HEBEI add datafile 'E:\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\HEBEIADD.DBF'  size 1000m autoextend on next 100m maxsize 20G

    //設置表空間大小沒有上限
    alter tablespace HEBEI add datafile 'E:\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\HEBEIADD20190125.DBF' size 1000m autoextend on next 100m maxsize unlimited;

    create tablespace nmgsde DATAFILE 'E:\oracle\app\Administrator\oradata\orcl\nmgsde.dbf' size 5000m autoextend on next 100m maxsize 5G;

    create tablespace csdjsde DATAFILE '+DATA/prod/datafile/csdjsde.dbf'  size 3000m autoextend on next 100m maxsize 20G;

13、刪除表空間

drop tablespace nmgdjsde including contents and datafiles cascade constraint;

14、查詢數據庫的所有表空間的數據文件

 select * from dba_directories;

15、導出數據文件

exp dtjc/123456@orcl file=h:\dtjc20190910.dmp
 expdp sde/sde@orcl directory=data_dump_dir1 dumpfile=sde01.dmp;
 導出指定的表
 exp userid=user_data/123456@orcl tables=(T_ZD_JZDZB) file=d:\jzdzb.dmp
 加導出條件
exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"

16、導入數據文件

 imp gtmis_gz/gtmis_gz@localhost/orcl file=D:\gz20160304.dmp log=D:\implogsz.log full=y ignore=y
// 不同用戶導入  加入 fromuser    touser 參數
imp dtjc/123456@orcl fromuser=dtjc touser=dtjc file=g:\user.dmp 
導入一個或一組指定用戶所屬的全部表、索引和其他對象
imp system/manager file=seapark log=seapark fromuser=seapark 
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
將一個用戶所屬的數據導入另一個用戶
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)  touser=(seapark1, amy1)

17、不同版本oracle 導入與導出

impdp USERID=‘dtjc/123456@YZT2’
directory=DATA_PUMP_DIR dumpfile=T_NDJH_SS.dmp
REMAP_SCHEMA=tdly:dtjc logfile=T_NDJH_SS.log
version=10.2.0.1.0 tables=(T_NDJH_SS)
remap_tablespace= tdly_data:dtjc
EXPDP USERID='tdly/123456@orcl'  schemas=tdly directory=DATA_PUMP_DIR dumpfile=gygg.dmp logfile=gygg.log version=10.2.0.1.0 tables=(T_GYGG)
EXPDP USERID='dtjc002/123456@orcl' schemas=dtjc002 directory=DATA_PUMP_DIR dumpfile=dtjc002.dmp logfile=dtjc002.log version=10.2.0.1.0
注意:版本號與remap_tablespace

18、oracle 修改表字段 vchar2 到 clob

先備份一下列,重命名
alter table T_CRGY_KZ rename column BC_TK to BC_TK_bak;
新建clob列
alter table T_CRGY_KZ add BC_TK clob;
更新備份列
update T_CRGY_KZ set BC_TK=BC_TK_bak;
刪除備份列
alter table T_CRGY_KZ drop column BC_TK_bak;
提交
commit;

19、查看錶的列和數據類型,修改表數據類型,刪除列

select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_cols where table_name='T_CRJ_SJZF';
alter table T_CRJ_SJZF modify xh NUMBER(10);
alter table T_CRJ_SJZF drop column zf_je;

20、字符串轉換爲時間 更新

update T_GDXM set tg_sj=TO_DATE(tg_sj_bak,'YY/MM/DD HH24:MI:SS')

21、複製表結構相同的數據

insert into YJ_YDJN select * from YJ_YDJN_bak;

22、表重命名

alter table test rename to test1;

23、表添加列

altertable Tablename add(column1 varchar2(20),column2 number(7,2)...) --Oracle中修改列名不可以,但是可以刪除列,增加列

22、 查看用戶下所有的表

select table_name from user_tables;

23、添加主鍵

alter table tablename add constraint pk_tablename primary key (column1,column2,...);

24、刪除表中重複記錄

a、從A庫中去重後導入B庫中
Insert into tdsc.T_CBGY (select  *  from (select  distinct * from tdly.T_CBGY t))
b、刪除表中重複數據
DELETE from t_cbgy
WHERE (cbgy_guid) IN ( SELECT cbgy_guid FROM t_cbgy GROUP BY cbgy_guid HAVING COUNT(cbgy_guid) > 1) AND ROWID NOT IN (SELECT MIN(ROWID)  FROM t_cbgy GROUP BY cbgy_guid HAVING COUNT(*) > 1);
c、刪除表中重複數據DELETE from T_GYGG
WHERE (gygg_guid) IN ( 
SELECT gygg_guid FROM 
T_GYGG GROUP BY gygg_guid 
HAVING COUNT(gygg_guid) > 1) 
AND ROWID NOT IN (SELECT MIN(ROWID) 
FROM T_GYGG GROUP BY gygg_guid 
HAVING COUNT(*) > 1);
d、以上刪除執行效率在10萬條以上效率低,執行數小時以上沒有結果
用以下語句能提高執行效率

delete   from   t_gdxm   where  
 rowid   in   (select   rid  
  from   (select   rowid   rid,row_number()  
   over(partition   by   gd_guid  
    order   by rowid)  
     rn  from   t_gdxm) where   rn   <>   1   );

25、merge 表處理

a、執行差分處理merge into
     //merge into 語法例
            /*
             *  merge into 
             *      dtjc.t_gdxm new_gdxm 
                using tdly.t_gdxm temp_gdxm 
                    on (new_gdxm.gd_guid = temp_gdxm.gd_guid) 
                when matched then 
                    update set 
                        new_gdxm.zd_guid=temp_gdxm.zd_guid,
                        new_gdxm.xzq_dm=temp_gdxm.xzq_dm,
                        new_gdxm.td_yt=temp_gdxm.td_yt
                when not matched then 
                     insert values(
                        temp_gdxm.zd_guid,
                        temp_gdxm.xzq_dm,
                        temp_gdxm.td_yt
                    ) 
            */
            /* 修正爲空的字段也更新的問題做了處理
             * 參照下例
             *  merge into 
                   student_new new_gdxm
                using student temp_gdxm
                   on (new_gdxm.name = temp_gdxm.name) 
                when matched then 
                   -- 當字段爲空的時候不更新,獲取數據時,有時好多字段爲空,字段值獲取不穩定
                   -- 字段爲空的時候保持原來表中的值
                   update set adress=case 
                                when temp_gdxm.adress  is not null
                                then temp_gdxm.adress else new_gdxm.adress end,
                              adress1=case 
                                when temp_gdxm.adress1 is not null
                                then temp_gdxm.adress1 else new_gdxm.adress1 end 
                 when not matched  then
                    insert values(
                               temp_gdxm.name,
                               temp_gdxm.adress,
                               temp_gdxm.adress1)*/
        

26、日期大於某指定值查詢

SELECT t.*, t.rowid FROM tb_guar_attachupload t WHERE f_createtime > to_date('2013/10/25 9:38:51', 'YYYY/MM/DD HH24:MI:SS');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章