oracle創建表空間、查詢表空間、創建用戶、賦用戶基本權限、創建表

1 表空間

1.1 創建表空間

create tablespace tablespace_name logging datafile 'D:\app\tablespace\tablespace_name.dbf'
size 1024m autoextend on next 20M extent management local;
名稱 描述
datafile 後‘’符號中對應的是要修改表空間的路徑,例如:‘D:\app\tablespace\tablespace_name.dbf’
size 後的值爲表空間的大小
tablespace_name 值爲表空間的名稱
autoextend 後的值爲是否要自增長表空間 off爲否 on爲是
next 後的值爲每次增長的大小

1.1.1 修改表空間自增長

如果在創建的時候已經設置了表空間自增,則不需求二次修改了

alter database datafile 'D:\app\tablespace\tablespace_name.dbf' AUTOEXTEND ON NEXT 200M;
名稱 描述
datafile 後‘’符號中對應的是要修改表空間的路徑,例如:‘D:\app\tablespace\tablespace_name.dbf’
autoextend 後的值爲是否要自增長表空間 off爲否 on爲是
next 後的值爲每次增長的大小

1.1.2 查詢表空間剩餘大小

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
名稱 描述
total 表空間總大小
used 表空間使用大小
free 表空間剩餘大小
%used 表空間使用百分比
%free 表空間剩餘百分比

2 用戶

2.1 創建用戶

create user user_name identified by user_password default tablespace tablespace_name;
名稱 描述
user_name 值爲用戶的名稱
user_password 值爲用戶的密碼
tablespace_name 默認表空間名稱

2.1.1 配置用戶的默認表空間

如果在創建的時候已經設置了默認表空間,則不需求二次修改了

alter user user_name default tablespace tablespace_name;
名稱 描述
user_name 值爲用戶名稱
tablespace_name 值爲表空間的名稱

注:默認表空間一個用戶只能有一個

2.2 配置用戶權限

grant connect,resource,dba to user_name;
grant connect to user_name with admin option;
名稱 描述
connect 爲登錄、連接權限
dba 爲創建數據結構權限
resource 創建實體權限

3 查詢

3.1 基礎查詢

  1. 查詢所有的表空間
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;
  1. 查詢所有用戶
SELECT * FROM DBA_USERS;
  1. 查詢能管理的所有用戶
SELECT * FROM ALL_USERS;
  1. 查詢當前用戶信息
SELECT * FROM USER_USERS;
  1. 查找表結構
select * from user_tab_columns where Table_Name='tableName';  --當前用戶下的表的信息

select * from all_tab_columns where Table_Name='tableName';   --所有表的信息

select * from dba_tab_columns where Table_Name='tableName';   --dba下的表的信息

形成批量修改表字段類型的sql

SELECT
	column_name,
	'ALTER table tableName modify ' || column_name || ' NVARCHAR2(' || char_length || ')' 
FROM
	all_tab_columns 
WHERE
	Table_Name = 'tableName' 
	AND data_type = 'NVARCHAR2';

4 導出導出數據

4.1 執行環境

exp/imp可以在客戶端執行也可以在服務器端執行,在客戶端執行需要先安裝有oracle的客戶端,如果是linux系統,就是以oracle用戶登錄,在控制檯下執行。建議在服務器端執行exp,備份速度快。

4.2 如果運行的時候提示沒有exp命令則進入到oracle目錄

cd /u01/app/oracle/product/11.2.0/dbhome_1/bin

4.3 配置臨時環境變量

export ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1/"
export ORACLE_SID=glassfish

4.4 執行導出

4.4.1 切換到oracle用戶

su oracle

4.4.2 導出文件

4.4.2.1 默認導出

導出的文件是帶有數據的,如果表中沒有數據則不會導出(oracle 11g的機制如果沒有數據則不分配segment)此操作在系統層級下執行即可

exp userName/pwd@orcl file="/home/backup/tablespaceName.dmp"
名稱 描述
userName 用戶名稱
pwd 密碼
orcl 實例名
file 導出的目錄,可以新建確保導出的目錄權限夠用
tables 需要導出的表,如果要導出全部的表則可以不寫
例如 tables=tb_test,tb_user
STATISTICS 統計對象,如果exp導出的時候出現EXP-00091: Exporting questionable statistics.錯誤可以把此參數設置爲no
例如 statistics=no

4.4.2.2 導出帶有空數據的表

  1. 批量處理空表,此方法可以處理所有的空表支持導出
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

執行上述查詢,並且將查詢的結果複製在執行

例如:

alter table CRM_FORM_DESC_CUSTOMER allocate extent;
alter table CRM_FORM_DESC_CUSTOMER_CORP allocate extent;
alter table CRM_FORM_DESC_DATA allocate extent;
alter table CRM_FORM_DESC_SERVICE allocate extent;
  1. 再次執行4.4.2.1 默認導出 的操作即可

  2. 設置deferred_segment_creation參數,此參數只對新增的表影響,但是以前是空的表依舊不能導出。如果後續的表沒有特殊要求可以不使用此方法

alter system set deferred_segment_creation=false; 

4.5 執行導入

4.5.1 切換oracle用戶

su oracle

4.5.2 導入文件

imp userName/pwd@orcl file="/home/backup/tablespaceName.dmp"
名稱 描述
userName 用戶名稱
pwd 密碼
orcl 實例名
file 導出的目錄,可以新建確保導出的目錄權限夠用
full y-導入全部的數據庫忽視對應的用戶 n-不忽視用戶會提示錯誤,默認爲n
例如 full=y

5 創建序列

create sequence SQ_Name
minvalue 1  --最小值
maxvalue 99999999 --最大的值
start with 1   --開始的數值
increment by 1  --每次增長的數值
NOCYCLE -- 一直累加,不循環
nocache; --不建緩衝區
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章