oracle數(shù)據(jù)庫開發(fā)的一些經(jīng)驗(yàn)積累(二)
2024-08-29 13:44:24
供稿:網(wǎng)友
1、分析表analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;
2、表空間治理和用戶治理
--查看表空間和數(shù)據(jù)文件
select file_name,tablespace_name,autoextensible from dba_data_files;
--數(shù)據(jù)表空間
CREATE TABLESPACE USER_DATA LOGGING DATAFILE 'D:/Oracle/ORADATA/ORCL/test.DBF' SIZE 50m REUSE , 'c:/USERS01112.DBF' SIZE 50m REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL
--修改表空間數(shù)據(jù)文件的路徑
ALTER TABLESPACE app_data RENAME DATAFILE '/DISK4/app_data_01.dbf' TO '/DISK5/app_data_01.dbf';
ALTER DATABASE RENAME FILE '/DISK1/system_01.dbf' TO '/DISK2/system_01.dbf';
--臨時(shí)表空間
CREATE TEMPORARY TABLESPACE USER_DATA_TEMP TEMPFILE 'D:/TEMP0111.DBF' SIZE 50M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
--增加數(shù)據(jù)文件
ALTER TABLESPACE USER_DATA ADD DATAFILE 'c:/USERS01113.DBF' SIZE 50M;
ALTER TABLESPACE USER_DATA ADD DATAFILE 'c:/USERS01114.DBF' SIZE 50M AUTOEXTEND ON;
--刪除表空間
DROP TABLESPACE USER_DATA INCLUDING CONTENTS;
--修改表空間的存儲參數(shù)
ALTER TABLESPACE tablespacename MINIMUM EXTENT 2M;
ALTER TABLESPACE tablespacename DEFAULT STORAGE ( INITIAL 2M NEXT 2M MAXEXTENTS 999 );
--表空間聯(lián)機(jī)/脫機(jī)/只讀
ALTER TABLESPACE tablespacename OFFLINE/ONLINE/READ ONLY;
--修改數(shù)據(jù)文件大小 ALTER DATABASE DATAFILE 'c:/USERS01113.DBF' RESIZE 40M;
--創(chuàng)建用戶、賦予權(quán)限
CREATE USER USER_DATA PROFILE DEFAULT IDENTIFIED BY USER_DATA DEFAULT TABLESPACE USER_DATA TEMPORARY TABLESPACE USER_DATA ACCOUNT UNLOCK; GRANT CONNECT TO USER_DATA;GRANT RESOURCE TO USER_DATA;
3、表的治理
--創(chuàng)建表
CREAE TABLE TABLENAME(COLUMN1 COLUTYPE DEFAULT(VALUE) NOT NULL)(COLUMN2 COLUTYPE DEFAULT(VALUE) NOT NULL);
--建表的索引存儲分配
CREATE TABLE summit.employee(id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY
DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K)TABLESPACE indx, last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL,dept_id NUMBER(7))TABLESPACE data;
--修改表的存儲分配
ALTER TABLE tablenamePCTFREE 30PCTUSED 50STORAGE(NEXT 500KMINEXTENTS 2MAXEXTENTS 100);
ALTER TABLE tablenameALLOCATE EXTENT(SIZE 500KDATAFILE '/DISK3/DATA01.DBF');
--把表移到另一個(gè)表空間
ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;
--回收空閑的空間(回收到High-water mark) 全部回收需要TRUNCATE TABLE tablename
ALTER TABLE tablenameDEALLOCATE UNUSED;
--刪除表(連同所用constraint)
DROP TABLE tablenameCASCADE CONSTRAINTS;
--給表增加列
ALTER TABLE TABLENAMEADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;
--刪除表中的列
ALTER TABLE tablenameDROP COLUMN columnname;
ALTER TABLE tablenameDROP COLUMN columnnameCASCADE CONSTRAINTS CHECKPOINT 1000;
--標(biāo)記列不可用
ALTER TABLE tablenameSET UNUSED COLUMN columnnameCASCADE CONSTRAINTS;
--刪除標(biāo)記為不可用的列
ALTER TABLE tablenameDROP UNUSED COLUMNS CHECKPOINT 1000;
--繼續(xù)刪除列選項(xiàng)
ALTER TABLE tablenameDROP COLUMNS CONTINUE CHECKPOINT 1000;
--把表放到BUFFER_POOL中去
ALTER TABLE tablename STORAGE (BUFFER_POOL RECYCLE);
--避免動(dòng)態(tài)分配EXTENT
ALTER TABLE tablename ALLOCATE EXTENT;
--把表放到CACHE中去
ALTER TABLE tablename ALLOCATE CACHE/NOCACHE;
4、索引治理
--創(chuàng)建索引
CREATE INDEX indexname ON TABLENAME(COLUMNNAME);
CREATE INDEX indexname ON TABLENAME(COLUMNNAME) TABLESPACE TABLESPACENAME;
--重新建立索引
ALTER INDEX indexname REBUILD TABLESPACE TABLESPACE;
--索引分配參數(shù)
ALTER INDEX indexnameSTORAGE(NEXT 400K MAXEXTENTS 100);
--釋放索引空間
ALTER INDEX indexnameALLOCATE EXTENT (SIZE 200KDATAFILE '/DISK6/indx01.dbf');
ALTER INDEX indexnameDEALLOCATE UNUSED;
--重新整理索引表空間碎片
ALTER INDEX indexname COALESCE;
--刪除索引
DROP INDEX indexname
--把索引放到BUFFER_POOL中
ALTER INDEX cust_name_idx REBUILD STORAGE (BUFFER_POOL KEEP);
5、約束治理
--建立主鍵
ALTER TABLE TABLENAMEADD CONSTRAINT CONSTRAINTNAME PRIMARY KEY(COLUMN1,COLUMN2)
--使約束無效
ALTER TABLE TABLENAME ENABLE NOVALIDATE CONSTRAINT constraintname;
ALTER TABLE TABLENAME ENABLE VALIDATE CONSTRAINT constraintname;
--刪除約束
ALTER TABLE tablename DROP CONSTRAINT constraintname;
DROP TABLE tablename CASCADE CONSTRAINTS;(刪除表后將所用的外鍵刪除)
--給列增加缺省值
ALTER TABLE TABLENAMEMODIFY columnname DEFAULT(value) NOT NULL;
--給表增加外鍵 ALTER TABLE tablename ADD CONSTRAINT constraintname FOREIGN KEY(column) REFERENCES table1name(column1);
6、安全策略
--加密傳輸
把客戶端環(huán)境變量ora_encrypt_login設(shè)為true把服務(wù)器端參數(shù)dblink_encypt_login設(shè)為true
--數(shù)據(jù)庫治理員安全策略
a、建庫后立即修改SYS/SYSTEM的口令(9.2后必須修改其口令)b、只有數(shù)據(jù)庫治理員才能以SYSDBA登錄系統(tǒng)c、建立不同角色的治理員,分配不同的權(quán)限
比如:對象創(chuàng)建于維護(hù) 數(shù)據(jù)庫的調(diào)整與維護(hù) 創(chuàng)建用戶分配角色 啟動(dòng)關(guān)閉 恢復(fù)備份 --應(yīng)用開發(fā)者的安全策略
a、開發(fā)者的特權(quán)只能在測試開發(fā)的數(shù)據(jù)庫中賦予權(quán)限b、自由開發(fā)者、受控開發(fā)者 自由開發(fā)者:create table/index/procedure/package 受控開發(fā)者:沒有以上權(quán)限
7、日志文件治理
--切換日志文件
ALTER SYSTEM SWITCH LOGFILE;
--增加日志文件
ALTER DATABASE ADD LOGFILE ('/DISK3/log3a.rdo','/DISK4/log3b.rdo') size 1M;
--增加日志成員
ALTER DATABASE ADD LOGFILE MEMBER'/DISK4/log1b.rdo' TO GROUP 1'/DISK4/log2b.rdo' TO GROUP 2;
--刪除日志文件
ALTER DATABASE DROP LOGFILE GROUP 3;
--刪除日志成員
ALTER DATABASE DROP LOGFILE MEMBER '/DISK4/log2b.dbf';
--清除日志文件內(nèi)容
ALTER DATABASE CLEAR LOGFILE '/DISK3/log2a.rdo';