磁盘划分 | 名称 | 大小 | 用途 |
C 盘(主盘) | 50G | 安装Windows 2003 64bit 系统 | |
D 盘 | 184G | /oracle 安装数据库软件目录 | |
/oracle/oradata 数据文件目录 | |||
E 盘(主盘) | 116G | /oracle/oradata 回滚段、临时表空间、日志文件目录(重做日志组(6个,每个500M,后期根据实际情况调整大小)) | |
F 盘 | 116G | /backup 数据库备份目录 | |
/oralog 归档日志目录 |
项目 | 参数 | 描述 |
数据库实例名 | SMS | 根据实际情况指定,这里以SMS为列 |
内存分配 | oracleTOTAL 6G(系统total 8g) | oracle 总共使用系统内存 |
SGA 4.8 G | (oracle内存的80%) | |
PGA 1.2G | ||
数据块大小 | 16384 | 默认8192改成 16384 |
字符集选择 | ZHS16GBK | |
国家字符集支持 | al16utf16(默认) | 固定长度两字节 有效率和性能优势 |
默认语言 | simplified chinese | |
默认日期格式 | china | |
连接模式确定 | 独占模式 | |
进程数量 | 500 | |
文件目录 | ||
数据库软件 | D:\oracle | |
数据文件 | D:\oracle\oradata\sms | 这个数据文件指以后使用数据库的时候自己创建的数据文件,如mt表分区建的12个数据文件 |
控制文件与日志文件 | E:\oracle\oradata\sms | 建db时,数据文件放这里 |
归档日志 | F:\oralog | |
备份文件 | F:\backup | |
文件大小 | ||
单个数据文件 | 4g | 包括undo与temp表空间文件 |
单个控制文件 | 120M | |
单个日志文件 | 1G | |
文件数量 | ||
数据文件 | 具体根据表空间大小 | |
控制文件 | 3组 | |
日志文件 | 6组(重做日志,每个大小500M) | |
回滚表空间 | ||
UNDOTBS表空间 | 30G | |
临时表空间 | ||
TEMP表空间 | 30G | |
数据表空间 | ||
SMS_DATA | 130G | 数据表空间 |
SMS_INDEX | 50G | 索引表空间 |
系统表空间 | ||
SYSTEM | 2G | |
SYSAUX | 2G | |
用户 | ||
业务用户 | sms/oracle | 密码自己制定,这里设置为 oracle |
角色 | resource,connect | |
dba | 根据具体情况决定是否授权 | |
系统用户 | sys/oracle | |
system/oracle | ||
scott/tiger | 测试用,正式上线后可以lock | |
dbca后:
Database Configuration Assistant
步骤2:数据库模板
--》定制数据库(不会创建demo中的数据文件)
步骤4:管理选项(不用改,不用“启用每日备份”)
步骤6:(默认的--》文件系统)
步骤7:数据库文件所在位置
--》所有数据库文件使用公共位置
先在 d 盘 建立 d:\oracle\oradata 目录,选择 第 二个 。文件位置 输入 d:\oracle\oradata
步骤8:恢复配置
--》指定快速恢复区(勾去掉)--》启用归档(勾上)--》编辑归档模式参数
问:快速恢复区 和归档 有什么区别
答:快速恢复区,是恢复数据库的一种方法,比如可以恢复数据库到 昨天的样子,有点类似于快照。有了归档,可以不用快速恢复区。
--》归档日志目标
先在 f 盘 建立 oralog 目录,在 归档日志目标1里面输入,f:\oralog
步骤10:初始化参数(很重要!块大小在这写好了以后就不能改了)
--》内存--》定制(注意如果选“典型”--》百分比,更改的都是PGA的大小,SGA和ORACLE进程大小不变,要改SGA,要选下面的“定制”)
内存分配 | TOTAL 6G |
SGA 4.8 G(oracle内存的80%) | |
PGA 1.2G |
--》手动(是自动管理 还手动管理 sga 和 pga)
sga 4800 M
pga 1200 M
已经不小了,一共 8g 内存, oracle 用了6g,剩下2g的给 系统用,如果给系统少了,系统慢的话roacle 也会慢
--》调整大小--》块大小,选择“16384”字节--》进程,500
步骤11:数据库存储
--》控制文件
先在 e 盘 建立 \oracle 目录,然后把 文件目录 的 d 改成 e,改完后结果:
--》表空间--》SYSAUX
文件 目录 路径 d 改成 e,大小 设置 2048mb
--》system
temp 与 undo 和 users文件目录改成 e:\oracle\oradata ,temp 与 undo 文件大小 改成 4096mb,users文件大小不变,改完是这样的:
--》重做日志组
问:在F盘建oracle\oralog ?
答:不是,那是归档目录。这里 文件目录改成 e,文件大小先选择 500m 吧, 这个值需要你数据库跑一段时间才能确定
问:3个重做日志都选在E盘,大小500M?
答:对 2 和 3 也这么做。
没完事呢
选择日志组,点击下面的创建 ,还需要创建 4 5 6,大小一样(这里创建4 5 6时要注意文件路径和1 2 3一样),做完效果:
这就算数据库建完了,后面不用生成脚本也不用存为模板(没有建监听)。
最后一问:现在数据文件放到e盘了,我看昨天的excle,上面写的数据文件放到D盘呢
答:excle D盘这个是 准备放 业务数据表空间文件的,健完数据后,在创建业务表空间。刚才建的是非业务的,所以放到E盘。
此创建过程,2个小时。
建完库,优化篇(关闭自动增长,在特定盘建数据表空间和索引表空间之类的):
下面在真正的远程服务器sqlplus中(即cmd黑框)中,经常执行某些命令后出现?????,这是字符集设置问题:
不用担心,默认是英文的
C:>alter session set nls_language='american';
C:>set wrap off linesize 120;
--看库是否建好:
开始菜单 --> 运行 -->执行 cmd
C:>sqlplus /nolog (此处 / 和 nolog之间无空格,要不然报错。如果出其他的问题:1.检查当前登录系统的用户在不在Oracle_DBA_Group组里。2.环境变量--》系统变量--》新建--》变量名:ORACLE_SID --》变量值,填你创建的oracle的sid,如orclXXX)
SQL>conn / as sysdba
--查看数据库状态:
SQL>select status from v$instance;
--后面自己创建监听
开始菜单 --》 oracle 目录 --》配置和移植工具--》net manager
建监听时 网络服务名,就是数据库名,如orclXXX
这里的服务名,是刚创建的数据库的sid,即你要给哪个数据库创建监听(一个数据库创建一个监听即可)。创建完监听之后,就可以直接在本地服务中连接这个数据库了。在那连接数据库的时候,--》新建“服务命名”(本地的,可以有多个,因为本地可以连多个数据库),这里的名字,写自己认识的名字,可以把服务器ip加后面,是用pl/sql连接的时候自己看的名字
--查看监听状态:
C:>lsnrctl status
该图是说无监听,确实无,因为监听没有start
--启动监听:
C:>lsnrctl start
问:这是开好了,还是没开好,上面有个error 1060
答:错误不用管。这样表示监听启动了,你在本地电脑 建立个 服务名,就远程可以连接数据库了
--查看所有的数据文件大小和位置:
select name,bytes/1024/1024 mb from v$datafile union all select name,bytes/1024/1024 mb from v$tempfile union select a.member,b.bytes/1024/1024 mb from v$logfile a,v$log b ;
查询后,发现:redu01 02 03和04 05 06不在同一个目录,但是redu组应该是在同一个目录中的。下面来解决,将redo放到它该放的位置(E:\ORACLE\ORADATA)
so。更改redo组文件位置:
1.查询所有的redo:
select a.group#,thread#,sequence#,b.member,bytes/1024/1024/1024 GB,archived,b.type,a.status from v$log a, v$logfile b where a.group#=b.group#
2.删掉错误的redo组(4,5,6)
alter database drop logfile group 4 ; alter database drop logfile group 5; alter database drop logfile group 6 ;
3.看删掉没有:
select a.group#,thread#,sequence#,b.member,bytes/1024/1024/1024 GB,archived,b.type,a.status from v$log a, v$logfile b where a.group#=b.group#
看到,4 5 6 已经被删掉了。但是发现电脑磁盘上4 5 6 的物理数据文件还在,要不要手动删掉---要,被E:\product整个都删掉,因为oracle装在D盘,E盘根本不可能有product这个目录,是当时建重做组错建的,现在把它都删掉。
4.创建正确目录的redo组(创建需要点时间):
alter database add logfile group 4 'e:\oracle\oradata\orclyxkj\redo04.log' size 500m; alter database add logfile group 5 'e:\oracle\oradata\orclyxkj\redo05.log' size 500m; alter database add logfile group 6 'e:\oracle\oradata\orclyxkj\redo06.log' size 500m;
执行完后,效果:
--关闭表空间文件(datafile)大小自动增长:
alter database datafile 'e:\oracle\oradata\orclyxkj\system01.dbf' autoextend off ; alter database datafile 'e:\oracle\oradata\orclyxkj\sysaux01.dbf' autoextend off ; alter database datafile 'e:\oracle\oradata\orclyxkj\undotbs01.dbf' autoextend off ;
--关闭表空间文件(tempfile)大小自动增长:
alter database tempfile 'e:\oracle\oradata\orclyxkj\temp01.dbf' autoextend off
--增加临时表空间文件(执行快。temp 是稀疏文件系统(也只有temp是稀疏文件),例如1个文件4g ,temp就是 表面上 占4g,实际上没有,所以很快)
alter tablespace temp add tempfile 'e:\oracle\oradata\orclyxkj\temp02.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\temp03.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\temp04.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\temp05.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\temp06.dbf' size 4096m autoextend off;
--增加undo表空间数据文件(执行慢。而 undo 属于数据文件,踏踏实实的在 系统上占用 空间 )
alter tablespace undotbs1 add datafile 'e:\oracle\oradata\orclyxkj\undo02.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo03.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo04.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo05.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo06.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo07.dbf' size 4096m autoextend off, 'e:\oracle\oradata\orclyxkj\undo08.dbf' size 4096m autoextend off;
上面没有执行完的,就让它执行,继续:
(这个可以不执行,也可以执行:
远程服务器上,cmd:
sqlplus /nolog
conn / as sysdba
咱们现在要改参数:
sql>set wrap off linesize 120; --这句话不知道干什么用的,待查
)
--pl/sql中:
alter system set open_cursors=1000; alter system set open_links=20 scope=spfile ; alter system set db_files=1022 scope=spfile; alter system set job_queue_processes=50 ;
--远程服务器:(重启数据库)
cmd:
SQL>shutdown immediate ;
SQL>startup
问:同样是sql语句,有些只能在远程服务器的cmd小黑框执行,有些可以用dba用户直接在pl/sql中执行。像刚才关闭数据库的,我在pl/sql中命令窗口执行就说,无效的sql语句,为什么啊(比如重启数据库的操作,不能在pl/sql中成功执行,会说“无效sql语句”)
答:你在 plsql 执行的不是真正的 sqlplus
--接下来在本地 plsql重新连接 oracle 数据库,创建数据表空间了 (如mt,这里不是)
问:意思是,到这里,该优化数据库的地方,都做完了,剩下的,就是那些和我业务相关的,建表空间,分区表等等
答:对,在优化的话,需要数据库跑一段时间,生成性能报告后在,具体问题具体分析
--先创建索引表空间(要执行一段时间,当报错说路径错误,比如没有orclyxkj文件夹时,可以手动创建改文件夹,再执行创建语句):
create tablespace tbs_yxkj_index datafile 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index01.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index02.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index03.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index04.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index05.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index06.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index07.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index08.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index09.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_index10.dbf' size 4096m autoextend off EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
--再创建数据表空间(要执行一段时间):
create tablespace tbs_yxkj_data datafile 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data01.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data02.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data03.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data04.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data05.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data06.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data07.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data08.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data09.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data10.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data11.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data12.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data13.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data14.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data15.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data16.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data17.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data18.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data19.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data20.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data21.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data22.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data23.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data24.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data25.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data26.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data27.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data28.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data29.dbf' size 4096m autoextend off, 'd:\oracle\oradata\orclyxkj\tbs_yxkj_data30.dbf' size 4096m autoextend off EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
建新表空间但是重用之前的数据文件(重用时,默认文件内没有数据):
create tablespace tbs_yxkj_data datafile 'd:\oradata\orclyxkj\tbs_yxkj_data02.dbf' size 4096m reuse , 'e:\oradata\orclyxkj\tbs_yxkj_data03.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data05.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data08.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data11.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data14.dbf' size 4096m reuse, 'e:\oradata\orclyxkj\tbs_yxkj_data15.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data17.dbf' size 4096m reuse, 'e:\oradata\orclyxkj\tbs_yxkj_data18.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data20.dbf' size 4096m reuse, 'e:\oradata\orclyxkj\tbs_yxkj_data21.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data23.dbf' size 4096m reuse, 'e:\oradata\orclyxkj\tbs_yxkj_data24.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data26.dbf' size 4096m reuse, 'e:\oradata\orclyxkj\tbs_yxkj_data27.dbf' size 4096m reuse, 'd:\oradata\orclyxkj\tbs_yxkj_data29.dbf' size 4096m reuse EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
创建用户,并授予dba权限,以及授权:
create user username identified by "pwd" default tablespace tbs_yxkj_data; grant connect,resource,dba to username; drop public synonym t_sys_user; grant all privileges on t_sys_user to yxclient; create public synonym t_sys_user for ydsoft_test.t_sys_user;