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 基礎查詢
- 查詢所有的表空間
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;
- 查詢所有用戶
SELECT * FROM DBA_USERS;
- 查詢能管理的所有用戶
SELECT * FROM ALL_USERS;
- 查詢當前用戶信息
SELECT * FROM USER_USERS;
- 查找表結構
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 導出帶有空數據的表
- 批量處理空表,此方法可以處理所有的空表支持導出
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;
-
再次執行
4.4.2.1 默認導出
的操作即可 -
設置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; --不建緩衝區