達夢數據庫的管理


管理表,視圖,索引、序列

表的管理

達夢支持的哪些表:
默認的表是(索引組織表),堆表,臨時表,分區表,外部表等。

如何規划表?

命名:字母開頭 a-z,0-9,$#_
數據類型:int char varchar date clob blob number等等。
存儲位置:自已的規划的表空間。
約束(5大約束)
非空約束,唯一約束,主鍵,檢查,外鍵
注釋:comment
遵循3范式

案例1:規划一張學員信息表。

表名:STU
學號(id char(10)), 
姓名(sname varchar(20) not null),
性別 (sex char(1))
年齡(age int)
電話(tel varchar(15) not null)
家庭住址:(address varchar(50))
表空間:STU
約束:主鍵列---學號   非空---姓名,電話
備注:學員信息表

create table "TEST3"."STU"
(
	"ID" CHAR(10) not null ,
	"SNAME" VARCHAR(20) not null ,
	"SEX" CHAR(1),
	"AGE" INT,
	"TEL" VARCHAR(15) not null ,
	"ADDRESS" VARCHAR(50),
	primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0, on "STU");
comment on table "TEST3"."STU" is '學員信息表';
comment on column "TEST3"."STU"."ID" is '學號';
comment on column "TEST3"."STU"."SNAME" is '姓名';
comment on column "TEST3"."STU"."SEX" is '性別';
comment on column "TEST3"."STU"."AGE" is '年齡';
comment on column "TEST3"."STU"."TEL" is '電話';
comment on column "TEST3"."STU"."ADDRESS" is '家庭住址';

如何查看表結構

sp_tabledef('TEST3','STU');
select dbms_metadata.get_ddl('TABLE','STU','TEST3');
如何查看表所屬的表空間
select table_name,tablespace_name from dba_tables where table_name='STU';
如何查看表有哪些約束
select table_name,constraint_name,constraint_type from dba_constraints where table_name='STU';
案例2:創建表的時候指定約束
create table test3.t2(id int);
alert table test3.t2 modify id int not null;
create table test3.t3(id int not null);
唯一約束
create table test3.t4(id int unique);
主鍵約束
create tabel test3.t5(id int primary key);
檢查約束
create table test3.t6(id int check(id>=5));
create table test3.t7(id int);
alter table test3.t7 add constraint t7_check check(id>=5);
外鍵約束
create table test3.t9(sid int primary key,pid int);
create table test3.t10(id int primary key ,sid int foreign key references test3.t9(sid));

表的備注

案例3:加備注
comment on column test3.t2.id is '編號';

如何導入數據到表中

案例4:如何導入數據到表中。
start /home/dmdba/a.sql
通過DTS工具去做遷移
達夢安裝目錄 tool
./dts

如何去維護表:

重命名
alter table test3.t2 rename tt;
增加刪除列
增加列
alter table test3.tt add name varchar(10) default 'aa';
刪除列
alter table test3.tt drop name;
啟用和禁用約束
(遷移數據的時候,最好把約束禁用,遷移完成再啟用)
alter table test3.t6 disable constraint CONS134218780;
alter table test3.t6 enable constraint CONS134218780;
刪除表
drop table test3.tt;

視圖

簡單視圖,復雜視圖,物化視圖
注:簡單視圖和復雜視圖不占磁盤空間
物化視圖占磁盤空間

創建語法:

Create view () as select () from () where ();

視圖查看

select view_name,text from dba_views where view_name='V1';

修改視圖

create or replace view test3.v1 as select employee_name,job_id from dmhr.employee;

刪除視圖

drop view v1;

序列

創建序列

create sequence test3.s1
2 start with 1 ----序號起始
3 increment by 1 --自增多少
4 maxvalue 5 ---最大值
5 nocache ---是否緩存
6 nocycle; ---是否循環

序列的應用

insert into test3.t12 values(s1.nextval);

同義詞

表或視圖的別名,分為普通同義詞,公共同義詞

創建同義詞:

公共:SQL> create public synonym ss1 for dmhr.employee;
普通:SQL> create synonym ss2 for dmhr.employee;

修改同義詞:

create or replace synonym ss2 for dmhr.city;

刪除同義詞:

drop synonym ss2;
drop public synonym ss1;

索引

達夢支持那些索引:
二級索引,位圖索引,唯一索引,復合索引,函數索引,分區索引等。
默認的表是索引組織表,利用rowid創建一個默認的索引,所以我們創建的索引,稱為二級索引。

查看表的索引

select table_name,index_name from dba_indexes where table_name='T12';

索引的作用

加快表的查詢,對數據庫做DML操作的時候,數據庫會自動維護索引。索引是一棵倒置的樹,使用索引,就是對這棵索引樹做遍歷。

建立索引的規則

1:經常查詢的列
2、連接條件列
3、謂詞經常出現的列(where)
4、查詢是返回表的一小部分數據
不適合做索引的情況:
1、列上有大量的null
列上的數據有限(例如性別)

怎么創建索引

1、規划索引表空間
2、表的數據是無序的,索引的數據是有序的。

Emp中的employee_id 建立索引。

建立表:
SQL> create table test3.emp as select * from dmhr.employee;
建立索引表空間
SQL> create tablespace index1 datafile '/dm7/data/DAMENG/index01.dbf' size 32;
建立索引:
SQL> create index ind_emp on test3.emp(employee_id) tablespace index1;
查詢索引:
select table_name,index_name from dba_indexes where table_name='EMP';

查看表的執行計划:


沒有走索引,統計信息是舊的,需要重新收集

重新收集后,走索引了。

注意一下,創建索引,刪除,重建索引和收集統計信息,不要在業務高峰去做。

維護索引:

重建:alter index test3.IND_EMP rebuild;
刪除:drop index test3.ind_emp;

十一、備份還原

備份作用?
1、防止誤操作
2、軟件硬件故障
3、防止天災人禍
備份方式:物理備份,邏輯備份
1、物理備份還原:
冷備:(dmap服務打開的狀態下,數據庫是關閉的)
熱備:(dmap服務一定是打開的,數據庫也是打開的,數據庫要開歸檔)
導入導出:dexp dimp
集群:數據守護(dw),dsc(rac)
達夢支持第三方的備份軟件:愛數,鼎甲。

數據庫開歸檔:

命令方式下:

SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=/dm7/arch,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;

SQL> select name,status$,arch_mode from v$database;
利用管理工具開歸檔:
tool/manager

通過dmrman去備份

Dmap服務要開啟,數據庫實例關閉。

命令行方式下全備,增量備

mkdir /dm7/backup
SQL> backup database full backupset '/dm7/backup/full_bak';
SQL> select checkpoint(0);
SQL> backup database increment backupset '/dm7/backup/incr_bak';

利用管理工具進行熱備

還原

模擬表空間破壞 tbs2

mv tbs2_01.dbf tbs2_01.dbf.bak
重啟服務,數據庫處於mount 狀態。手動open;
SQL> alter database open;
restore tablespace tbs2 from backupset '/dm7/backup/full_bak/';
SQL> alter tablespace tbs2 online;

邏輯導入導出

Dexp 邏輯導出 dimp 邏輯導入
Dexp和dimp是DM自帶的工具,分為四種級別:
數據庫級,用戶級、模式級和表級。四種級別獨立互斥,不能同時存在。四種級別所提供的功能:
數據庫級(full):導出或導入整個數據庫中的訪問對象。
用戶級(owner):導出或導入一個或多個用戶所擁有的所有對象。
模式級(schemas):導出或導入一個或多個模式下的所有對象。
表級(table):導出或導入一個或多個指定的表或表分區。

[dmdba@dca01 bin]$ disql sysdba/SYSDBA@localhost:5237
SQL> create user DMHR identified by dameng123;
SQL> create user TEST2 identified by dameng123;
SQL> create user TEST3 identified by dameng123;
[dmdba@dca01 bin]$ ./dimp sysdba/SYSDBA@localhost:5237 file=/dm7/backup/dexp/dexp01.dmp log=dimp02.log directory=/dm7/data/dimp/

配置ODBC

1、LINUX環境中配置ODBC環境

[root@dca01 installdoc]# tar -xzvf unixODBC-2.3.0.tar.gz 
[root@dca01 installdoc]# cd unixODBC-2.3.0
[root@dca01 unixODBC-2.3.0]# ./configure --enable-gui=no
[root@dca01 unixODBC-2.3.0]# make
[root@dca01 unixODBC-2.3.0]# make install
[root@dca01 unixODBC-2.3.0]# odbc_config --version
2.3.0
[root@dca01 unixODBC-2.3.0]# odbc_config --odbcini
/usr/local/etc/odbc.ini


修改配置文件

Odbc.ini
[dm7]
Desription=DM ODBC DSND
Driver = DM7 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = dameng123
TCP_PORT = 5236
配置odbcinst.ini
[DM7 ODBC DRIVER]
Description = ODBC DRIVER FOR DM7
Driver = /dm7/bin/libdodbc.so
[root@dca01 etc]# chmod 775 odbc.ini 
[root@dca01 etc]# chmod 775 odbcinst.ini 

測試連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM