数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle 9i 数据库设计指引全集(4)


发布日期:2020年05月31日
 
Oracle 9i 数据库设计指引全集(4)

外键值可用null的问题

外键列如没有明确说明not null可插入null记录(而null是在外部表的记录中没有的)如无可插null记录的想法要对外键字段加not null约束

序列 sequence 跳号的问题

sequence 因回滚系统崩溃(使用cache 内的值将认为已用)多表引用都将使其跳号所以不能用于为连续序号 utl_rowcast_to_row

unicn\ intersect\ minus 使用ordey by的注意事项

以上语句进行连表操作而表同表的字段顺序的类型相同但字段标题名可不同使用ordey by时后面如果是字段名要求所有的表的字段标题名相同否则用字段的顺序号

select idnameyear from user

union

select nonameto_number(null)yearfrom user

order by nameyear

安全性

Where 条件

无论在使用Select还是使用破坏力极大的Update和Delete语句时一定要检查Where条件判断的完整性不要在运行时出现数据的重大丢失如果不确定最好先用Select语句带上相同条件来果一下结果集来检验条件是否正确

完整性

有依赖关系的表例如主外键关系表在删除父表时必须级联删除其子表相应数据或则按照某种业务规则转移该数据I中表中字段缩小及变类型字段为空或表空varchar和char长度不变可任意改字段名和表名可字段可用 ALTER TABLE table SET UNUSED (column) 设定为不可用注意无命令再设为可用

备份恢复设计原则

数据库exp/imp备份恢复

Oracle数据库的ExpImp提供了数据快速的备份和恢复手段提供了数据库级用户级和表级的数据备份恢复方式这种方法一般作为数据库辅助备份手段

数据库级备份原则

在数据库的数据量比较小或数据库初始建立的情况下采用不适合*的在线生产环境数据库备份

用户级备份原则

在用户对象表数据容量比较小或则用户对象初始建立的情况下使用

表级备份原则

主要在以下场合采用的备份方式

参数表备份

静态表备份

分区表的分区备份

数据库冷备份原则

数据库冷备份必须符合以下原则

数据库容量比较小

数据库允许关闭的情况

Rman备份恢复原则

这种方式适用于*环境下的联机热备份情形

Catalog数据库

单独建立备份恢复用的数据库实例尽可能与生产环境的数据库分开确保catalog与生产数据库的网络连接良好I系统使用良好的备份策略以可支持完全使用控制文件保存catalog信息备份策略如下

backup spfile format /data/backup/%d_SPFILE_%T_%s_%pbak;

sql alter system archive log current;

backup archivelog all format /data/backup/%d_ARC_%T_%s_%pbak delete all input;

backup current controlfile format /data/backup/%d_CTL_%T_%s_%pbak;

在spfile控制文件数据库全丢的情况下可通过下面的方式恢复

RMAN> connect target

connected to target database (not started)

RMAN> startup

RMAN>restore spfile from /data/backup/COMMDB_SPFILE___bak;

SQL> startup

ORA: error in identifying controlfile check alert log for more info

RMAN> restore controlfile from d:\DB_CTL___BAK;

Mout database:

RMAN> recover database;

RMAN> alter database open resetlogs;

注意对数据库设定控制文件保存备份信息为具体语句如下

alter system set control_file_record_keep_time= SCOPE=BOTH;

Archive Log

设置Archive Log 的位置确保存储介质有足够的空间来保留指定时间内archive log的总量建设定期对RMAN进行全备份删除冗余归档日志文件

全备份策略

对于小容量数据库可以采用全备份策略对于大容量数据库必须制定全备份策略方案备份时对archive log进行转储同时冷备份catalog 数据库

增量备份策略

对于大容量数据库必须制定增量备份累积备份和全备份的周期备份时对archive log进行转储同时冷备份catalog 数据库

恢复原则

采用Rman脚本进行数据库恢复数据库恢复有以下几种

局部恢复

主要用于恢复表空间数据文件一般不影响数据库其他操作

完全恢复

数据库恢复到故障点由catalog当前数据库决定

不完全恢复

恢复到数据库的某一时间点或备份点

恢复catalog数据库

恢复数据库control file

恢复到数据库某一时间点

重设日志序列

备用数据库原则

数据库系统在以下情况下可以考虑采用备用数据库data guard原则

数据库容量适中

数据库严格要求*不间断或间断时间要求控制在最小范围内

数据库要求有异地备份冗余

一些小经验

使用oemc的oms时首选项要求是节点和数据库分别加入系统用户(如administrator)和数据库DBA用户(system)节点的系统用户必须有批处理作业登录的权限

agent 不能启动lisnter修改后都要手动删除oracle\ora\network\agent 中的*q文件

oracle\admin\myi\bdump 中是用户的出错日志

改变表的空间的方式alter table hrssss move TABLESPACE example(要重建索引); 或用imp导入时设定导入用户只有某一表空间的使用权无RESOURCE角色和UNLIMITED TABLESPACE权限

aleter system set log_checkpoint_to_alter=true后可报警文件发现checkpoint的起动和结束时间

系统调优知识

生成状态报表(statspack的使用)

使用(存放位置@?\rdbms\admin\)的文件生成报表用户

@?\rdbms\admin\Spcreatesql建表

将timed_statistics设定true

使用生成的perfstat用户登录执行以下语句手动收集信息

Exex statspacksnap

Exec statspacksnap(I_SNAP_LEVEL=>I_MODEFY_PRAMETER=>TRUE) 最少最大

使用下面的语句生成状态报表

@?\rdbms\admin\Spreportsql

其他相关文件

delete stats$snapshot ;清原来记录数据

@?\rdbms\admin\Saputosql

select job from user_jobs 取用户作业号

exec dbms_remove(作业号)

timed_statistics=true要求

@?\rdbms\admin\spdropsql ;

sql追蹤

设定全部用户跟蹤

alter system set sql_trace=true;

用户级别跟蹤

alter session set sql_trace=true;

用户的跟蹤文件生成在 admin\{pid}\udump\{pid} _ora_{ SPID}trc 中spid从下面语句得到

SELECT bname bkpr susername pspidssidsserial# FROM v$bgprocess b v$session s v$process p WHERE paddr = bpaddr(+) AND paddr = spaddr and susername=user;

DBA对特定用户跟蹤

exec dbms_system_set_Sql_trace_in_session(sidserial#true)

信息从下面得到

SELECT bname bkpr susername pspidssidsserial#osusersprogram

FROM v$bgprocess b v$session s v$process p

WHERE paddr = bpaddr(+)

AND paddr = spaddr;

/*pspid用于sql_trace时日志编号dbms_systemset_sql_trace_in_session(siderial#true)*/

用户的跟蹤文件生成在 admin\{pid}\udump 中

系统的跟蹤文件生成在admin\{pid}\bdump\alert_{pid}log

tkprofexe将log文件生成格式化文本

在av Rd(ms) 以上说明表空间使用过用频繁考虑将表分开其他表空间上

系统变量fast_start_mttr_target的值要大到不产生log等待当然也可通过加log组使其不等待

reao log大小应为每分钟切换一次

建议表空间的利用率不超%

buffer hit 要达%以上为好

内存调整

一般的内存分配原则

SGA %(其中% DATA BUFFER% SHARE POOL其他)

PGA%

OS %

例如G的WINDOWS的平台OS MSAG GPGA M

内存

上一篇:OraclePL/SQL语言初级教程之表和视图

下一篇:Windows下Oracle数据库进程的启动和关闭