SYSTEM、ROLL、MAIN 和 TEMP 表空間查看語句:
SELECT * FROM V$TABLESPACE;
HMAIN 表空間查看語句:
SELECT * FROM V$HUGE_TABLESPACE;
其它系統表
select * from v$dm_ini;
select * from v$instance;
select * from v$parameter;
select * from v$rlogfile;
select * from v$database;
select * from v$dm_arch_ini;
select * from Dba_users;
select * from user_users;
select * from Dba_roles;
select * from Dba_tables;
select * from Dba_constraints;
select * from Dba_views;
select * from Dba_indexes;
select * from Dba_role_privs;
select * from Dba_sys_privs;
select * from Dba_tablespaces;
select * from Dba_data_files;
select * from DBA_FREE_SPACE;
select * from DBA_TEMP_FILES;
MAIN 表空間在初始化庫的時候,就會自動創建一個大小為 128M 的數據文件
MAIN.DBF。在創建用戶時,如果沒有指定默認表空間,則系統自動指定 MAIN 表
空間為用戶默認的表空間。
如果用戶在創建表的時候,
指定了存儲表空間 A,並且和當前用戶的默認表空間 B 不一致時,表存儲在用戶指定的表空
間 A 中,並且默認情況下,在這張表上面建立的索引也將存儲在 A 中,但是用戶的默認表空
間是不變的,仍為 B。
在安裝過程中,DM 數據庫會預設數據庫管理員賬號
SYSDBA、數據庫安全員賬號 SYSSSO 和數據庫審計員賬號 SYSAUDITOR,其缺省口令都與
用戶名一致。“四權分立”的安全機制,將系統管理員分數據庫管理員、數據庫對象操作員、
數據庫安全員和數據庫審計員四類,在“三權分立”的基礎上,新增數據庫對象操作員賬戶
SYSDBO,其缺省口令為 SYSDBO。用戶需要在安裝過程中或者安裝完畢后立即修改缺省口令,
避免因口令泄漏造成的安全問題。
1.用戶創建
如創建用戶 TEST_USER 時可指定該用戶使用的最大磁盤空間為 50M。
CREATE USER TEST_USER IDENTIFIED BY TEST_PASSWORD DISKSPACE LIMIT 50;
對用戶的空間限制也可進行更改,如修改用戶 TEST_USER 的磁盤空間限制為無限制。
ALTER USER TEST_USER DISKSPACE UNLIMITED;
2.如創建表 TEST 時可指定該表對象可使用的最大磁盤空間為 500M。
CREATE TABLE TEST (SNO INT, MYINFO VARCHAR) DISKSPACE LIMIT 500;
對表對象空間的限制也可進行更改,如修改表 TEST 的磁盤空間限制為 50M。
ALTER TABLE TEST MODIFY DISKSPACE LIMIT 50;
3.創建表時,在 STORAGE 子句中,可對表指定存儲的表空間。如果沒有指定,則該表將
創建在用戶的默認表空間中。
4.對於普通表和索引,DM8 提供了以下的存儲參數:
1. 初始簇數目 INITIAL:指建立表時分配的簇個數,必須為整數,最小值為 1,最大
值為 256,缺省為 1;
2. 下次分配簇數目 NEXT:指當表空間不夠時,從數據文件中分配的簇個數,必須為
整數,最小值為 1,最大值為 256,缺省為 1;
3. 最小保留簇數目 MINEXTENTS:當刪除表中的記錄后,如果表使用的簇數目小於這
個值,就不再釋放表空間,必須為整數,最小值為 1,最大值為 256,缺省為 1;
4. 填充比例 FILLFACTOR:指定插入數據時數據頁的充滿程度,取值范圍從 0 到
100。默認值為 0,等價於 100,表示全滿填充,未充滿的空間可供頁內的數據更
新時使用。插入數據時填充比例的值越低,可由新數據使用的空間就越多;更新數
據時填充比例的值越大,更新導致出現的頁分裂的幾率越大;
5. 表空間名:在指定的表空間上建表或索引,表空間必須已存在,默認為用戶缺省的
表空間。
如表 PERSON 建立在表空間 TS_PERSON 中,初始簇大小為 5,最小保留簇數目為 5,
下次分配簇數目為 2,填充比例為 85。
CREATE TABLE PERSON.PERSON
( PERSONID INT IDENTITY(1,1) CLUSTER PRIMARY KEY,
SEX CHAR(1) NOT NULL,
NAME VARCHAR(50) NOT NULL,
EMAIL VARCHAR(50),
PHONE VARCHAR(25))
STORAGE
( INITIAL 5, MINEXTENTS 5,
NEXT 2, ON TS_PERSON, FILLFACTOR 85);
也可以在分區表上指定某個分區的存儲參數,如下面的建表語句指定了 PAR2 分區存儲
在 TS_PAR2 表空間上。
CREATE TABLE PARTITION_TABLE
(C1 INT,
C2 INT)
PARTITION BY RANGE(C1)
(PARTITION PAR1 VALUES LESS THAN(5),
PARTITION PAR2 VALUES LESS THAN(100) STORAGE (ON TS_PAR2));
6.HUGE 表是建立在自己特有的 HTS 表空間上的。建立 HUGE 表如果不使用默認的表空間,
則必須要先創建一個 HUGE TABLESPACE,默認 HTS 表空間為 HMAIN。
如建立一個名稱 HTS_NAME 的 HTS 表空間,表空間路徑為為 e:\HTSSPACE。示例如下:
CREATE HUGE TABLESPACE HTS_NAME PATH 'e:\HTSSPACE';
對於 HUGE 表可以指定如下參數:
1. 區大小(一個區的數據行數)。 區大小可以通過設置表的存儲屬性來指定,區的大
小必須是 2 的多少次方,如果不是則向上對齊。取值范圍:1024 行~1024*1024
行。默認值為 65536 行。
2. 是否記錄區統計信息,即在修改時是否做數據的統計。
3. 所屬的表空間。創建 HUGE 表,需要通過存儲屬性指定其所在的表空間,不指定則
存儲於默認表空間 HMAIN 中。HUGE 表指定的表空間只能是 HTS 表空間。
4. 文件大小。創建 HUGE 表時還可以指定單個文件的大小,通過表的存儲屬性來指定,
取值范圍為 16M~1024*1024M。不指定則默認為 64M。文件大小必須是 2 的多少
次方,如果不是則向上對齊。
5. 日志屬性。1)LOG NONE:不做鏡像;2)LOG LAST:做部分鏡像;3)LOG ALL:
全部做鏡像。
如下面的建表語句:STUDENT 表的區大小為 65536 行,文件大小為 64M,指定所在的
表空間為 HTS_NAME,做完整鏡像,S_COMMENT 列指定的區大小為不做統計信息,其它列(默
認)都做統計信息。
CREATE HUGE TABLE STUDENT
(
S_NO INT,
S_CLASS VARCHAR,
S_COMMENT VARCHAR(79) STORAGE(STAT NONE)
)STORAGE(SECTION(65536) , FILESIZE(64), ON HTS_NAME) LOG ALL;
7.創建表空間
創建表空間時需要指定表空間名和其擁有的數據文件列表。比如創建名為 bookshop 的
表空間,並指定該空間上擁有 2 個數據文件,每個數據文件的大小為 128M。
CREATE TABLESPACE bookshop DATAFILE 'd:\bookshop1.dbf' SIZE 128,
'd:\bookshop2.dbf' SIZE 128;
理論上最多允許有 65535 個表空間,但用戶允許創建的表空間 ID 取值范圍為
0~32767,超過 32767 的只允許系統使用,ID 由系統自動分配,ID 不能重復使用,即使
刪除掉已有表空間,也無法重復使用已用 ID 號,也就是說只要創建 32768 次表空間后,用
戶將無法再創建表空間。
8.可以指定數據文件是否可以擴展,每次擴展的空間大小以及數據文件可擴展到的最大空
間大小,子句的語法為:
AUTOEXTEND OFF|ON [NEXT <文件擴展大小>] [MAXSIZE <文件限制大小>]
OFF 表示文件不可擴展,ON 表示文件可擴展。文件擴展大小表示當需要擴展文件時,
文件一次增大的空間大小,取值范圍是 0—2048,單位是 M。文件限制大小表示文件可擴展
125
第 14 章 數據庫布局和存儲管理
的最大空間大小,為 0 或者 UNLIMITED 表示無限制,單位是 M。缺省情況下,文件擴展大
小是 1M,文件的最大大小是無限制的。
創建表空間時可指定文件的擴展屬性。如創建表空間時指定數據文件的擴展屬性為可自
動擴展,每次擴展大小為 10M,最大可擴展到 100M:
CREATE TABLESPACE bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT
10 MAXSIZE 100;
9.查看數據庫大小寫是否敏感
--獲得大小寫敏感信息
SQL命令:SELECT SF_GET_CASE_SENSITIVE_FLAG();
--1:敏感 0:不敏感
創建用戶
1、創建用戶:
使用SYSDBA用戶:create user XXXXX(用戶名)
2、創建用戶密碼:
使用SYSSSO用戶:alter user XXXXX identified by “XXXXXX123”
3、給用戶賦予DBA權限:
使用SYSDBA用戶:grant dba to XXXXX
4、給用戶賦予執行權限:
使用SYSSSO用戶:grant create table,select table,update table,insert table to XXXXX
5、執行:grant resource,public to XXXXX
6、修改數據庫用戶密碼7天過期:
使用SYSSSO用戶:alter user “用戶名” limit password_life_time unlimited
7、修改用戶口令過期時間限制:
alter user “用戶名” limit failed_login_attemps unlimited;
8、修改用戶失敗登錄次數限制:
alter user “用戶名” limit password_life_time unlimited;
9、修改用戶口令鎖定限制:
alter user “用戶名” limit password_lock_time unlimited;
用戶管理
查詢有哪些用戶
select username from dba_users;
1、sys --- 達夢數據庫的內置管理用戶,不能登錄數據庫,數據庫使用的大部分的數據字典和動態性能視圖,sys
2、Sysdba ---數據庫的管理員
3、Sysauditor --- 審計用戶
4、Syssso---安全用戶
5、sysdbo --數據操作員 (安全版有,四權分立)
10.
a.表空間
dm的表空間模仿oracle的表空間
同一表空間下可以存在同名對象
SQL> alter tablespace "%s" offline; //表空間脫機
SQL> alter tablespace "%s" online;
b. 模式切換
SQL> SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL; //當前模式
SQL> SET SCHEMA "SYSDBA"; //大小寫敏感
SQL> ALTER SESSION SET CURRENT_SCHEMA = "SYSDBA"; //非常安全的一個方式
c. 數據大小
SQL> SELECT SUM(bytes) from dba_data_files; //數據庫占用空間(kb為單位)
SQL> SELECT * from v$datafile; //數據庫讀寫占用
SQL> SELECT TABLE_USED_SPACE('SYSDBA', 'D') * 1024; //表大小,大小寫敏感
d. 歸檔模式
SQL> select arch_mode from v$database; //歸檔是否打開
SQL> select * from V$DM_ARCH_INI; //歸檔信息
e. 實例名
SQL> select distinct value from v$parameter;
其他
SQL> select * from SYSTABLECOMMENTS; //查詢系統視圖
SQL> select count(*) from dba_tables;
SQL> select * from user_tables;
SQL> select * from dba_tablespaces;
SQL> select * from user_tablespaces;
SQL> SELECT * from all_objects;
SQL> select * from dba_objects;
SQL> select * from user_objects;
SQL> select * from dba_users;
f. 特殊字符
“:默認處理方式是在”前加一個”作為標識
命令參數大小寫:應用\”\”,否則它自動小寫變大寫。需要轉義的字符加\
g. text數據類型
查找的時候不能用’=’號,要用link
表空間管理
表空間介紹
select TABLESPACE_NAME,STATUS from dba_tablespaces;
System表空間: 數據字典和全局的系統數據。
ROLL表空間:存放了數據庫運行過程中產生的回滾記錄。
TEMP表空間:臨時表空間。
MAIN表空間:數據庫默認的表空間,創建數據對象時,如果不指定存儲位置,默認存放到該表空間。
HMAIN表空間:huge 表空間。
查所有表空間信息:
Select name from v$tablespace union select name from v$huge_tablespace
增加表空間
create tablespace tab1 datafile '/dm7/data/DAMENG/tab1_01.dbf' size 32;
案例2 創建一個表空間,初始大小50M,最大100M.
create tablespace tab2 datafile '/dm7/data/DAMENG/tab2_01.dbf' size 50 autoextend on maxsize 100;
案例3 創建一個表空間,初始50M,每次擴展1M,最大100M.
create tablespace tab3 datafile '/dm7/data/DAMENG/tab3_01.dbf' size 50 autoextend on next 1 maxsize 100;
案例4 創建一個表空間,初始50M,表空間由2個數據文件組成,分別存儲到不同的磁盤上,每次擴展1m,每個數據文件最大100M.
create tablespace tab4 datafile '/dm7/data/DAMENG/tab4_01.dbf' size 50 autoextend on next 1 maxsize 100 , '/dm7/data/DAMENG/tab4_02.dbf' size 50 autoextend on next 1 maxsize 100;
維護表空間
表空間不足,如何去維護表空間:
1、創建大表空間,數據導出,導入。
2、Resize 數據文件大小。
3、增加數據文件
alert tablespace tabs2 add datafile '/dm7/data/DAMENG/tab2_02.dbf' size 50 autoextend on maxsize 100;
更換存儲位置
達夢表空間的狀態:
0 ---online
1 ----- offline
注意:SYSTEM,ROLL, TEMP 不能offline;
案例1:更換tbs1的存儲位置
- 表空間offline
alter tablespace tbs1 offline; - 修改存儲位置
alter tablespace tbs1 rename datafile '/dm7/data/DAMENG/tbs1_01.dbf' to '/dm7/data/tbs1_01.dbf'; - 表空間online
alter tablespace tbs1 online;
刪除表空間
drop tablespace tbs1;
如果表空間有數據庫不允許直接刪除!