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');