oracle随笔
ORACLE OCP认证学习笔记
1、启动ORACLE数据库:
su - oracle
sqlplus / as sysdba
SQL>startup;
2、连接至其他数据库
SQL>conn scott/tiger@orcl
ORACLE对存储的数据比较敏感,比如,存入的是大写,查询就必须是大写。存储的是小写,那么查询时也必须是小写。
**字符函数:**
SELECT ename,LOWER(ename) FROM emp; 返回小写
SELECT UPPER('abc xyz') FROM dual ;返回大写
SELECT INITCAP('hello world') FROM dual ;返回首字母大写
--concat两个字符连接
--concat('good','string')
SELECT CONCAT('hello','world') FROM dual;
SELECT SUBSTR('oracle',2,3) FROM dual;--取oracle字符串,从第2位开始,取三个数字
--输出结果是rac,主要substr函数取字符串的位置从1开始。
--输出结果是rac,主要substr函数取字符串的位置从1开始。
--instr,在哪个字符串(t#i#m#r#a#n#,'#',3)
SELECT INSTR('t#i#m#r#a#n#','#',3) FROM dual; --查询指定位置3后第一次出现的指定字符串#
SELECT LENGTH('string') FROM dual;--返回字符串的长度
--左填充
SELECT LPAD('1234',8,'$') FROM dual;--表示在字符串1234左边填充$符号,总长度不超过8位
--右填充
SELECT RPAD('3333',8,'#') FROM dual;--表示在字符串3333右边填充#符号,总长度不超过8位
SELECT REPLACE('JACK and JUE','J','BL') FROM dual;--表示将指定字符串'JACK and JUE'中的字符J替换为BL
--输出结果
/*BLACK AND BLUE*/
SELECT REPLACE('mother','mo','fa') FROM dual;--替换mother为father
--trim去除指定的字符
SELECT TRIM('m'FROM 'mmhelloworldmm') FROM dual;--去除字符串mmhelloworldmm两边m字符
--输出结果helloworld
**数值函数**
round(p,s)对指定的值做四舍五入,p表示指定的值,s指精度。
SELECT ROUND(3.1415926,5) FROM dual;--取指定小数5位精度
oracle中的sysdate是按照日-月-年 DD-MM-RR
例如:09-JUN-21
PostgreSQL和oracle是进程模式,MySQL是线程模式。
查询数据库版本:
select * from v$version;
目前oracle数据库主流版本仍然是:11gR2(即:11.2.0.4.0)
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
OCA(oracle certified assistant)
OCP(oracle certified professional) 单实例
OCM(oracle certified master) (主要是RAC,DG,OGG,升级,项目)
oracle集群。
oracle高可用的应用:dataguard和流复制
深入oracle介绍:
1、DBA日常工作内容和职责
2、oracle的内存结构与后台进程
3、重做日志和日志挖掘
4、回滚段及其用途
5、深入了解数据块
6、ASM管理
7、Oracle的备份恢复及数据迁移
8、Rman备份、恢复与管理
9、闪回机制和用途
10、事务与数据一致性(一)
11、事务与数据一致性(二)
12、Oracle安全管理和审计(一)
13、Oracle安全管理和审计(二)
14、常用工具sql*loader和数据泵
15、Oracle字符集
16、Data guard和流复制简介
养成好的习惯
DBA应该多使用sqlplus
-sqlplus是Oracle最基本的配置,不受任何环境的影响。
-熟练掌握SQL语句
-熟悉Oracle的性能视图
开发人员可以考虑使用图形工具
-更高效的代码编写的效率
-更好的集成开发环境
一个合格DBA的要求
1、熟悉业务流程和业务对数据库的操作
2、尽可能使用sqlplus进行数据库操作
3、熟练掌握大多数日常常用到的动态视图
4、熟练使用tahiti.oracle.com网站进行资料的查找
5、熟练阅读Oracle官方文档。
oracle学习线路:
初期:学习技术,先干活
中期:考证:OCP和OCM
远期:考管理证
达梦数据库基于oracle开发
oracle数据库的数据量随便都是TB级别的
服务器进程全是PGA
instance实例在内存
oracle服务器:由一个oracle数据库和oracle实例组成。
实例:有SGA和PGA组成
一个数据库可以有多个实例,但是一个实例只能存在一个数据库中。
oracle由三种文件类型组成:
1】参数文件
2】数据库文件
3】归档日志文件
oracle物理文件3种:
数据文件后缀:.dbf
重做日志文件扩展名为:.log
控制文件:.ctl
重做日志文件默认是3个,便于数据库故障后用于恢复数据库。
**ORACLE数据库日常维护手册**
1、查看数据库版本
select * from v$version;
2、查看数据库语言环境
select userenv('language') from dual;
3、查看数据库实例状态
select instance_name,host_name,startup_time,status,database_status from v$instance;
4、查看oracle监听状态
lsnrctl status
5、查看数据库归档模式
select name,log_mode,open_mode from v$database;
6、查看回收站中的对象
select object_name,original_name,type from recyclebin;
7、清空回收站中的对象
purge recyclebin;
8、还原回收站中的对象
FLASHBACK TABLE "BIN$GOZUQZ6GS222JZDCCTFLHQ==$0" TO BEFORE DROP RENAME TO TEST;
9、闪回误删除的表
FLASHBACK TABLE AAA TO BEFORE DROP;
10、闪回表中记录到某一时间点
ALTER TABLE TEST ENABLE ROW MOVEMENT;
FLASHBACK TABLE TEST TO TIMESTAMP21:17:47','YYYY-MM-DD HH24:MI:SS'); TO_TIMESTAMP('2009-10-15
11、查看当前会话
select sid,serial#,username,program,machine,status from v$session;
12、查看DDL锁
select * from dba_ddl_locks where owner='SCOTT';
13、查看等待事件
SELECT SID, A.USERNAME, EVENT, WAIT_CLASS, T1.SQL_TEXT
FROM V$SESSION A, V$SQLAREA T1
WHERE WAIT_CLASS = 'Idle'
AND A.SQL_ID = T1.SQL_ID;
14、检查文件数据状态
select file_name,status from dba_data_files;
15、收缩表空间
ALTER TABLESPACE TS_AJ_DATA COALESCE;
16、增加表空间大小
1)先查下需要增加表空间的表空间名称
select t.tablespace_name,t.file_name,t.bytes/1024/1024/1024 from dba_data_files t
where t.tablespace_name='TS_AJ_DATA'
2)增加表空间大小
alter tablespace TS_AJ_DATA add datafile '/data/TS_AJ_DATA0510G.dbf' size 10000M;
autoextend off; --关闭自动增加表空间
17、检查不起作用的约束
select owner,constraint_name,table_name,constraint_type,status from dba_constraints
where status='disable';
注意SQL语句结尾必须以分号进行结束;
OFS(oracle文件系统)
# **SQL编写总则** #
SQL语句应正确、规范、高效和最优
同一项目的SQL书写格式应该统一
应避免写非常复杂的SQL语句
SQL语句不应在客户端组织,而应在服务器端组织
SQL语句的语法应与所使用的数据库相适应
应确保变量和参数的类型和大小与数据库中表数据列相匹配
使用SELECT语句时,应指出列名,不应使用列的序号或者用“*”替代所有列名
使用INSERT语句时,应指定插入的字段名,不应不指定字段名直接插入VALUES
如果 SQL 语句连接多表时,应使用表的别名来引用列
**SQL语句应避免对大表的全表扫描操作,对大表的操作应尽量使用索引。**
SQL语句应避免不必要的排序。
SQL语句应避免删除全表的操作。
**应使用变量绑定实现SQL语句共享,避免使用硬编码。**
在含有子查询的SQL语句中,应减少对表的查询。
SQL语句尽可能避免多表联合复杂查询。
应将SQL语句中的数据库函数、计算表达式等放置在等号右边。
应按照业务需要使用事务,同时应保持事务简短,避免大事务。
**在事务完整性的基础上,SQL语句应在程序中显式使用 COMMIT,ROLLBACK,尽快提交事务,释放系统资源。**
SQL语句应避免频繁引起数据库事务回滚。
#**PL/SQL书写规则**#
SQL语句中出现的所有表名、表别名、字段名、序列等数据库对象都应小写。
SQL 语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写。
SQL语句中出现的变量参数应采用Camel驼峰语法命名,并反映变量的实际意义。
SQL语句中的表别名应简短明了,宜反映表名的实际意义。
如果一行有多列并超过80个字符,基于列对齐原则,应采用下行缩进。
缩进应为1个Tab或者4个字符。
同层次的SQL语句缩进应保持一致(纵向对齐)
SELECT/FROM/WHERE/ORDER BY/GROUP BY等子句应独占一行。
SELECT子句内容如果只有一项,应与 SELECT 同占一行。
SELECT子句内容如果多于一项,每一项都应独占一行,并在对应 SELECT的基础上向右缩进2个Tab或者8个字符。
FROM子句内容如果只有一项,应与 FROM同占一行。
FROM子句内容如果多于一项,每一项都应独占一行,并在对应FROM的基础上向右缩进1个Tab或者4个字符。
WHERE子句内容如果只有一项,应与 WHERE同占一行。
WHERE子句的条件如果有多项,每一个条件应独占一行,并以AND开头,并在对应WHERE的基础上向右缩进1个Tab或者4个字符。
(UPDATE)SET子句内容如果有一项,应与 SET同占一行。
UPDATE)SET子句内容如果有多项,每一项应独占一行,并在对应SET的基础上向右缩进1个Tab或者4个字符。
INSERT 子句左/右括号以及每个表字段应独占一行,其中括号无缩进,表字段在对应括号的基础上向右缩进1个Tab或者4个字符;
VALUES子句左/右括号以及每一项的值应独占一行,其中括号无缩进,每一项的值在对应括号的基础上向右缩进1个Tab或者4个字符;。
SQL 文中不应出现空行。
SQL语句内的算术运算符、逻辑运算符(AND、OR、NOT)、 比较运算符(=、<=、>=、>、<、<>、BETWEEN AND)、IN、LIKE等运算符前后都应加一空格。
SQL 语句中逗号后应加一空格。
不等于应统一使用符号“<>”。
对较为复杂的 SQL 语句应注释,并说明算法和功能。
注释应单独成行,并放在语句前面。
应对不易理解的分支条件表达式加注释。
对重要的计算应说明其功能。
过长的函数实现,应将其语句按实现的功能分段加以概括性说明。
对常量及变量注释时,应注释被保存值的含义,宜包括合法取值的范围。
应可采用多行注释。(/* */ 方式)。
# **SQL字符串书写规则** #
SQL语句中出现的所有表名、表别名、字段名、序列等数据库对象都应小写。*
SQL 语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写。
SQL语句中出现的变量参数应遵循各语言编码规范的要求。
SQL语句中的表别名应简短明了,宜反映表名的实际意义。
应遵循各语言的编码规范的要求。
单引号应与所属的 SQL子句位于同一行。
SQL语句内的算术运算符、逻辑运算符(AND、OR、NOT)、 比较运算符(=、<=、>=、>、<、<>、BETWEEN AND)、IN、LIKE等运算符前后都应加一空格。
SQL语句中逗号后应加一空格。
不等于应统一使用符号“<>”。
拼装SQL语句时宜使用StringBulider,不宜使用String + String的方式。
应遵循各语言编码规范的代码注释要求。
对较为复杂的 SQL语句应注释,并说明算法和功能。
对重要的计算应说明其功能。
对常量及变量注释时,应注释被保存值的含义,宜包括合法取值的范围。
# SQL优化规则(仅适用于Oracle) #
SQL 语句中应避免使用不必要的 PL/SQL,JAVA,C。
应用逻辑简单时,应使用 SQL。
应用逻辑复杂时,使用 SQL 实现困难,可使用 PL/SQL,JAVA,C。
如果两张表联查,应选择记录少的表做为驱动表。
如果三张表联查,应选择交叉表(定义请参见3.2 )做为驱动表。
表之间的连接必须写在其他WHERE条件之前。
应按符合指定条件的记录范围由小到大进行排列,过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
使用ROWID的WHERE子句效率最高。
WHERE子句中应避免常量比较,应使用主机变量。
应尽量避免在SQL语句中使用多表连接,特别是表之间的嵌套连接。
应尽量加少对数据库的访问次数。
应使用 DECODE函数避免重复扫描相同记录或者重复连接相同的表。
TOAD for Oracle DBA版本,对查询到的结果进行修改。使用如下命令。
select rowid,e.* from scott.emp e; --注意rowid是必须的,因为rowid是oracle数据库种标识一个表中一行数据的唯一键,不添加rowid,那么查询的结构则无法更改提交到数据库。
oracle架构:
1、single Node 单节点模式
2、HA(high available)高可用
3、DataGuard --容灾
4、10g RAC(Real Application Clusters) 集群
5、11g/12c GRID(网格)
高可用:一台主机宕机,另外一台主机接管磁盘。
允许系统在使用的同时在线更换CPU、内存、硬盘等硬件。
保证系统7*24小说不间断工作。
DataGuard:
核心机制:standby controlfile 通过生成备库。
主-备 备用库也可以提供对外的查询。
主用、备用数据库。
RAC:
核心机制:多节点,提高资源。由若干台主机进行任务分担,当一台主机停机后,其他主机将接管该主机的工作。
HA(高可用)、dataGuard(容灾)和RAC(集群)是必须掌握的。
CRS:clusterware = oracle cluster ready service.
CRS就是我们常说的双机热备份。
常见的安装虚拟机软件,vmware、virtual box、virtual PC(微软)
vmware workstation 一款强大的桌面虚拟计算机软件。
收费。
企业级虚拟化软件,用于服务器:
vmware vSphere,企业级虚拟化解决方案。
目前服务器虚拟化均是购买vmware vSphere来完成。
oracle linux是针对oracle开发的linux系统,用于安装oracle数据库是比较好的选择。
桥接模式:虚拟机和物理机的网段是同一个网段。同时可以访问互联网。
oracle中特殊的表dual;
dual表只有一列,并且只有一行数据,在进行与表无关的运算时,可以在from子句中指定dual表。用于保证计算的结果只显示一次。
常用的关系运算符:
=,!=
查看日志路径:
select * from v$diag_info;
常见的视图:
V$database
v$diag_info
v$datafile
oracle数据库登录:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
sqlplus / as sysdba
sqlplus "/as sysdba"
oracle表空间创建
cteate tablespace lbhedu datafile 'd:\oracle\oradata\itpuxdb\lhbedu01.dbf' size 10M
ORACLE用户创建
create user lbh identified by lbh default tablespace lbhedu;
授权dba角色给lbh用户
grant dba to lbh;
oracle表创建
1、先连接到指定数据库用户
conn lbh/lbh;
create table itpux1(id number(12) primary key,name varchar(20));
2、oracle数据插入
insert into itpux1 values(1,'lbhedu01');
insert into inpux2 values(2,'lbhedu02');
commit;--提交事务
3、oracle数据查询
select * from itpux1;
4、查看数据库模式:
select open_mode from v$database;
如果查出的结果死读写模式则正常
READ WRITE
5、查看数据库日志
select * from v$diag_info;
6、查看数据库文件表空间
select name from v$datafile;
7、--查看当前用户的所有表
select * from user_tables;
8、查看系统用户所有的表
select * from all_tables;
9、查看指定用户的表
select * from all_tables where owner='LBH'; --查看所有表。
select * from dba_tables where owner='LBH'; --查询系统管理员角色表。
oracle用户表视图:
user_tables --当前用户所有表视图
all_tables --系统所有用户表视图
dba_tables; --系统管理员所有表视图
更新表字段数据:
update table_name set column=value where column=value
例如:
update itpux1 set name='lbhedu02' where id=2;
oracle11g安装过程
echo "192.168.3.100">>/etc/hosts
关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
创建用户,组,目录,权限。
groupadd dba
useradd oracle
passwd oracle
mkdir -p /u01/app/oracle
chown -R oracle:dba /u01
chmod -R 755 /u01
配置yum源,即yum软件安装所需的包。
mkdir /mnt/linux --创建挂载目录,即挂载点
mount /dev/cdrom /mnt/linux --挂载光盘
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/
echo "[EL]">>/etc/yum.repos.d/itpux.repo
echo "name=LInux.7.X.DVD">>/etc/yum.repos.d/itpux.repo
echo "baseurl=file:///mnt/linux">>/etc/yum.repos.d/itpux.repo
echo "gpgcheck=0">>/etc/yum.repos.d/itpux.repo
echo "enabled=1">>/etc/repos.d/itpux.repo
cat /etc/yum.repos.d/itpux.repo
安装oracle所需软件包
配置oracle11g环境变量:
su - oracle
echo "export LANG=en_US">>~/.bash_profile
echo "export ORACLE_BASE=/u01/app/oracle">>~/.bash_profile
echo "export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1">>~/.bash_profile
echo "export ORACLE_UNQNAME=itpuxdb">>~/.bash_profile
echo "export ORACLE_SID=itpuxdb">>~/.bash_profile
echo "NLS_LANG=AMERICAN_AMERICAN.ZHS16GBK;export NLS_LANG">>~/.bash_profile
echo "export PATH=$PATH:$ORACLE_HOME/bin">>~/.bash_profile
source ~./bash_profile --使配置文件生效。
oracle安装过程报错:
Error in invoking target 'agent nmhs' of makefile
建议修改前备份原始文件
[oracle@~]cd $ORACLE_HOME/sysman/lib
[oracle@~]cp ins_emagent.mk ins_emagent.mk.bak
[oracle@~]vim ins_emagent.mk
进入编辑器后,命令模式输入/NMECTL查找,快速定位到要修改的行,然后再后面追加参数-Lnnz11
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)-Lnnz11
保存后退出重试retry.
查询日志路径
select * from v$diag_info;
检查系统环境变量:
env | grep oracle
卸载数据库
在Linux系统中输入dbca进入图形操作界面,然后选择卸载数据库实例。
删除数据库软件:
rm -fr /u01/*
rm -fr /etc/oratab
userdel oracle --删除用户
groupdel dba
需求:某业务系统近期上线,需要搭建一套oracle12c数据库环境,用于前期测试。
要求:
操作系统:oracle linux 7.6 x86_64
数据库版本:oracle12c版本+多租户架构
创建数据库:itpuxdb
字符集:ZHS16GBK
数据块大小:8k
可以远程连接,并提供给软件开发人员使用。
oracle12C安装过程
解压安装包
su - oracle
cd /u01
unzip /mnt/hgfs/soft/linuxx64_12201_database.zip
cd database
./runInstaller
oracle数据库关闭
show pdbs;
alter pluggable database all close;
showdown immediate;
exit
lsnrctl stop
oracle数据库启动
startup;
show pdbs;
alter pluggable database all open;
exit;
lsnrctl start
oracle日志路径查看
select * from v$diag_info;
oracle数据库登录
sqlplus / as sysdba;
show pdbs;
show con_name;
切换到pdb
alter session set container=itpuxdb;
oracle pdb创建表空间
create tablespace lbhedu datafile '/u01/app/oracle/oradata/itpuxdb/itpuxpdb/lbhedu01.dbf'
size 10m;
oracle创建pdb用户
create user lbh identified by lbh123 default tablespace lbhedu;
grant dba to lbh;--给用户lbh授权角色。
conn lbh/lbh@itpuxdb
oracle12c数据库卸载
su - oracle
cd $ORACLE_HOME/bin
./dbca --卸载数据库实例
cd $ORACLE_HOME/bin
./netca --卸载数据库监听
cd $ORACLE_HOME/deinstall
./deinstall
配置监听服务
tnsnames.ora:
itpuxpdb=
{ DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=lbh)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=itpuxpdb)
)
}
ping一下监听是否能够连通
tnsping itpuxpdb
show con_name --查看容器名称
需求:某业务系统近期上线,需要搭建一套oracle18c数据库环境,用于前期测试。
要求:
操作系统:oracle linux 7.6 x86_64
数据库版本:oracle18c版本+多租户架构(即PDB和CDB模式)
创建数据库:itpuxdb
字符集:UTF-8
数据块大小:8k
可以远程连接,并提供给软件开发人员使用。
查看oracle用户id信息
id oracle
创建自启动触发器:
create trigger open all_pdbs
after startup on database
begin
execute immediate 'alter pluggable database all open';
end open_all_pdbs;
关闭数据库;
1、关闭数据库
shutdown immediate;
关闭监听
lsnrctl stop
2、启动数据库
startup;
lsnrctl start
注意PDB用户是不可以通过sqlplus直接登录的所以需要在tnsnames.ora配置文件中配置监听。
重点关注trace目录下的日志,关注日志中的ora开头的报错。
需求:某业务系统近期上线,需要搭建一套oracle19c数据库环境,用于前期测试。
要求:
操作系统:oracle linux 7.6 x86_64
数据库版本:oracle19 版本+传统架构
创建数据库:itpuxdb
字符集:ZHS16GBK
数据块大小:8k
可以远程连接,并提供给软件开发人员使用。
oracle19c环境变量
export ORACLE_VERSION=19c
export ORACLE_SID=itpuxdb
export TEMPLATE_NAME=General_purpose.dbc
export CHARSET=ZHS16GBK
export PDB_NAME=itpuxpdb
export LISTENER_NAME=LISTENER
export NUMBER_OF_PDBS=1
export CREATE_AS_CDB=false
创建数据库:
/etc/init.d/oracledb_itpuxdb-19c configure
检查环境变量
su - oracle
ps -ef | grep smon
echo $ORACLE_HOME
lsnrctl status
测试停止、启动
/etc/init.d/oracledb_itpuxdb-19c stop
/etc/init.d/oracledb_itpuxdb-19c start
su - oracle
echo "export LANG=en_US">>~/.bash_profile
echo "export ORACLE_BASE=/u01/app/oracle">>~/.bash_profile
echo "export ORACLE_HOME=/u01/app/oracle/product/19c/db_1">>~/.bash_profile
echo "export ORACLE_UNQNAME=itpuxdb">>~/.bash_profile
echo "export ORACLE_SID=itpuxdb">>~/.bash_profile
echo "NLS_LANG=AMERICAN_AMERICAN.ZHS16GBK;export NLS_LANG">>~/.bash_profile
echo "export PATH=$PATH:$ORACLE_HOME/bin">>~/.bash_profile
oracle数据库关闭
sqlplus / as sysdba
shutdown immediate;
exit;
lsnrctl stop
oracle数据库启动
sqlplus / as sysdba
startup;
exit;
lsnrctl start
需求:某业务系统近期上线,需要搭建一套oracle12c数据库环境,用于前期测试。
要求:
操作系统:oracle linux 7.6 x86_64
数据库版本:oracle19c RAC(real application cluster)真实应用集群
创建数据库:itpuxdb
字符集:ZHS16GBK
数据块大小:8k
可以远程连接,并提供给软件开发人员使用。
ip 地址:192.168.1.61/62/63/64/65
配置hosts
vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 lbhedu61
192.168.1.62 lbhedu62
10.10.10.61 lbhedu61prv
10.10.10.62 lbhedu62prv
192.168.1.63 lbhedu63vip
192.168.1.64 lbhedu64vip
192.168.1.65 lbhedu65scan
关闭防火墙
echo "SELINUX=disabled">/etc/selinux/config
echo "#SELINUXTYPE=targeted">>/etc/selinux/config
setenforce 1
systemctl stop firewalld.service
systemctl disable firewalld.service
禁止NTP
systemctl stop ntpd
systemctl disabled ntpd
systemctl stop chronyd.service
systemctl disable chronyd.service
rm -f /etc/chrony.conf
手工创建目录并授权
mkdir /opt/oracle
mkdir -p /opt/oracle/app/grid
mkdir -p /opt/oracle/app/19c/grid
chown -R grid:oinstall /opt/oracle
mkdir -p /opt/oracle/app/oraInventory
chown -R grid:oinstall /opt/oracle/app/oraInventory
mkdir -p /opt/oracle/app/oracle/product/19c/dbhome_1
chown -R oracle:oinstall /opt/oracle/app/oracle
chmod -R 755 /opt/oracle
022表示755权限
grid集群环境变量
su - grid
vi ~/.bash_profile
umask 022
export ORACLE_SID=+ASM1
export ORACLE_BASE=/opt/oracle/app/grid
export ORACLE_HOME=/opt/oracleapp/19c/grid
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
source ~/.bash_profile #使环境变量生效。
env|grep ORACLE
配置oracle环境变量
su - oracle
vim ~/.bash_profile
umask 022
export ORACLE_BASE=/opt/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1
export ORACLE_UNQNAME=itpuxdb
export ORACLE_SID=itpuxdb1
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=.:$PATH:$HOME/bin/:$ORACLE_HOME/bin
source ~/.bash_profile
env | grep ORACLE #查看oracle环境变量
配置NFS共享存储
IP:192.168.1.70
配置ASM目录
NFS Server配置
vim /etc/exports
/asm *(rw,sync,no_wdelay,insecure,no_root_squash)
systemctl restart nfs-server.service
showmount -e
exportfs -V
必须关闭防火墙,否则其他服务器无法访问。
echo "SELINUX=disabled">/etc/selinux/config
echo "#SELINUXTYPE=targeted">>/etc/selinux/config
cat /etc/selinux/config
systemctl stop firewalld.service
systemctl disable firewalld.service
RAC主机配置
mkdir /asm
vim /etc/fstab
192.168.1.70:/asm /asm nfs rw,bg,hard,nointr,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
mount -a
chown -R grid:asmadmin /asm
ASM共享磁盘创建,5个10G、2个1G
mkdir -p /asm/oracleasm/disks
dd if=/dev/zero of=/asm/oracleasm/disks/ams1 bs=8192k count=1280
dd if=/dev/zero of=/asm/oracleasm/disks/ams2 bs=8192k count=1280
dd if=/dev/zero of=/asm/oracleasm/disks/ams3 bs=8192k count=1280
dd if=/dev/zero of=/asm/oracleasm/disks/ams4 bs=8192k count=1280
dd if=/dev/zero of=/asm/oracleasm/disks/ams5 bs=8192k count=1280
dd if=/dev/zero of=/asm/oracleasm/disks/ams6 bs=8192k count=128
dd if=/dev/zero of=/asm/oracleasm/disks/ams7 bs=8192k count=128
chown grid:asmadmin /asm/oracleasm/disks/asm1
chown grid:asmadmin /asm/oracleasm/disks/asm2
chown grid:asmadmin /asm/oracleasm/disks/asm3
chown grid:asmadmin /asm/oracleasm/disks/asm4
安装grid集群软件
用grid用户解压文件到grid_home目录
su - grid
cd $ORACLE_HOME
unzip /mnt/hgfs/soft/LINUX.X64_193000_grid_home.zip
root(两台机器都安装)
rpm -Uvh /opt/oracle/app/19c/grid/cv/rpm/cvuqdisk*
用虚拟机安装
grid:
cd $ORACLE_HOME
./gridSetup.sh
安装DB集群软件
用oracle用户解压文件到oracle_home目录
su - oracle
cd $ORACLE_HOME
unzip /mnt/hgfs/soft/LINUX.X64_193000_db_home.zip
用虚拟机启动安装
oracl:
cd $ORACLE_HOME
./runInstaller
创建数据库
oracle:
dbca
集群的启动与关闭
root:
/opt/oracle/app/19c/grid/bin/crsctl stop crs
/opt/oracle/app/19c/grid/bin/crsctl start crs
showmount -e 查看挂在情况
exportfs -v --查看nfs挂载配置
#开机自动挂载nfs远程目录配置:
192.168.1.70:/asm /asm nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
oracle RAC集群启动与停止10g/11g/12c/18c/19c
任意一节点
su - root
#crs_start -all
如果两个节点
su - root
#crsctl start crs
#crsctl stop crs
#crsctl check crs --检测
检查集群节点服务启动情况
crsctl status res -t
#查看数据库启动情况
select open_mode from v$database
如果数据库模式是read_write模式则正常。
select instance_name,status from v$instance;
查看实例状态是否是open状态。
#oracle10g asm磁盘管理
su - oracle
dbca
利用dbca向导对ASM进行管理。
#oracle11gR2/12c/18c/19c asm磁盘管理
su - grid
asmca
oracle RAC集群故障切换
failover on --表示开启故障切换
loadbalance yes --表示开启负载均衡。
故障切换配置类型
type:select 和session
使用select,默认其中一个集群数据库关闭,自动切换到另外一个数据库。
使用session,会先报错,再次查询会切换到正常节点数据库。
查看数据库归档模式是否开启
archive log list;
show parameter cluster --查看集群参数
alter system set cluster_database=false scop=spfile #关闭数据库集群模式,启动单实例模式。
startup mount;
alter database flashback off;
alter database noarchivelog;
alter system set cluster_database=true scope=spfile;
show parameter recover;
alter system set db_recovery_file_dest_size=2g;
切换日志模式
alter system switch logfile;
#oracle集群状态检查
crs_stat -t
crsctl status res -t
crsctl check crs
#Oracle集群配置文件检查命令
ocrcheck镜像配置与删除
ocrconfig -add +data2 --data2是磁盘组
ocrconfig -delete +data2
#ocr配置的备份
ocrconfig -manualbackup
ocrconfig -showbackup
#vote仲裁磁盘检查命令
crsctl query css votedisk
#集群资源控制命令
crsctl
srvctl
#实例状态检查命令
srvctl status database -d itpuxdb
srvctl status instance -d itpuxdb -i itpuxdb1
#数据库配置检查命令
srvctl config database -d itpuxdb -a
#ASM状态与配置检查命令
srvctl status asm
srvctl status asm -a
asmcmd lsdg
#ASM密码文件与参数文件
asmcmd
sqlplus / as sysasm
show parameter pfile
ASMCMD操作命令
asmcmd
help
ASM文件拷贝
asmcmd
cp
#RAC密码文件管理
srvctl modify database -db itpuxdb -pwfile ""
srvctl config database -d itpuxdb
orapwd FILE='+data/itpuxdb/password/orapwitpuxdb' DBUNIQUENAME='itpuxdb'
format=12.2
srvctl config database -d itpuxdb
#RAC集群开机自启动配置
crsctl disable crs
crsctl enable crs
asm超级管理员
#oracle dataguard容灾技术
某业务系统最近上线,需要快速搭建一套Oracle19c dataguard数据库容灾环境,用于前期业务功能测试
要求:
操作系统:oracle linux 7.6 x86_64
数据库架构:oracle19c dataguard
源数据库:oracle19c(itpuxdb)
源库IP:192.168.1.51
目标库IP:192.168.1.70
oracle_sid=itpuxdg
oracle_unqname=itpuxdg
#ORACLE RAC集群(real application cluster(高俊峰华章培训)
1、oracle RAC集群提醒架构
2、安装ORACLE RAC数据库
3、Oracle CRS 的管理与维护
4、ASM基本操作与使用
5、使用srvctl管理RAC数据库
6、测试oracle RAC数据库集群功能
RMAN(recovery manager)恢复管理器,用于备份,恢复,还原整个数据库或者指定的数据文件。
oracle enterprise manager OEM oracle企业管理器
database configuration assistant oracle数据库配置助手,用于指定安装,卸载数据库实例。
oracle secure backup oracle安全备份无缝支持,Oracle real application cluster (oracle真实应用集群)
数据泵:在数据库之间高速传输数据。
SQL*loader可以将外部数据加载到数据库表中。
命令行工具:
管理ORACLE enterprise manager
emctl start|stop|status|set
启动停止iSQL*plus
isqlplusctl start|stop
管理监听程序
lsnrctl start|stop|status|help
安装oracle11g检查系统要求:
1、检查是否有足够的临时空间
2、检查操作系统是64位还是32位
3、检查操作系统是否符合要求
4、检查OS补丁程序级别
5、检查程序包是否完整
6、检查系统和内核参数设置是否合理
7、检查X Server权限
8、检查是否有足够的交换空间swap
9、检查ORACLE_HOME目录是否为空
OFA命名模式:
命名装载点:
/u01
/disk01
装载点可以是u01或者u02
格式:
/pm/h/u
OFA兼容主目录
pm:装载点名称
h:标准目录名称
u:目录所有者名称
命名目录:
/u01/app/oracle
/u01/app/applmgr
例如:/u01/app/oracle/product/11.2.0
命令文件
控制文件:controln.ctl
例如:control1.ctl、control2.ctl
重做日志文件:redon.log
例如:redo1.log、redo2.log
数据文件夹:tn.dbf
例如:t1.dbf,t2.dbf
设置环境变量:
ORACLE_BASE:ORACLE基础目录
例如:/u01/app/oracle
ORACLE_HOME:oracle软件目录
例如:$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID:初始实例名称,必须以字母开头,建议最多使用8个字符
例如:ORCL
NLS_LANG:语言、地区、和客户机字符集设置
按照language_territory.character set
例如:NLS_LANG=AMERICAN_DENMARK.WE8MSWIN1252
NLS_LANG=AMERICAN_AMERICA.UTF8
查询当前回话的实际NLS设置
select * from nls_session_parameters;
OUI(ORACLE Universal Installer)oracle通用安装软件
OUI是一个java程序
oracle net configuration assistant 用于配置oracle数据库基本网络租金,比如监听程序和协议地址。
配置文件:tnsnames.ora
高级选项安装
数据库存储选项:
-文件系统
-Automatic Storage Management 自动存储管理ASM
-裸设备
数据库管理选项
-Enterprise Manager Grid Control
-Enterprise Manager Database Control
数据库备份和恢复选项
电子邮件通知选项
集群就绪服务cluster ready service (CRS)
克隆
使用OUI可以创建使用automatic Storage Management
oracle主目录HOME可以通过oracle enterprise configuration Management工具进行复制。
oracle10g 支持安装RAC功能尤其是集群就绪服务(CRS)
DBCA命令调用OUI图形界面安装数据库
NetCA命令调用OUI图形界面配置数据库监听,网络协议等服务。
不同类型的数据库具有自己的实例和存储要求。
数据仓库:用于存储长期存放的数据,可以通过读操作来检索这些数据。
事务处理数据库:用于处理数量很多但规模通常较小的事务。
例如:银行ATM取款机,商店结账系统,支付宝,微信支付
通用数据库:用于处理和存放存储时间适中的事务。
使用DBCA创建或者删除数据库,或者更改数据库配置。
在Linux中输入DBCA调用DBCA配置界面。
对于复杂环境,需要选择custom Database自定义数据库。
SID:系统标识符,唯一标识数据库实例
使用DBCA删除数据库,一个数据库可以有多个数据库实例。删除数据库时会删除数据库的数据文件dbf,重做日志文件redo.log,控制文件control1.ctl和初始化文件。
使用DROP DATABASE语句删除数据库
使用DROP DATABASE的前提是:
1、数据库必须已经装载且已关闭
2、必须以独占而不是共享模式装载数据库
3、数据库必须装载位RESRICTED,严格模式。
DROP DATABASE语句对归档日志文件不起作用。对数据库的副本或者备份也不起作用。最好使用Recovery Manager(RMAN)来删除这种文件。
#管理ORACLE实例
oracle11g包括下面三个组件:
1、数据库实例
2、监听程序
3、管理界面
--database control
管理代理 (使用grid control)
启动和停止Database Control
启动dbconsole进程
emctl start dbconsole
停止dbconsole
emctl stop dbconsole
查看dbconsole状态
emctl status dbconsole
ORACLE Enterprise Manager提供了一个图形界面管理数据库。
iSQL*PLus是一个基于浏览器的借口,它可以连接到ORACLE数据库。他是SQL*Plus中的一个组件。
启动iSQL*Plus
isqlplusctl start
iSQL*Plus 通常会使用端口号5560
使用SQL*PLUS调用SQL脚本
$sqlplus hr/hr @script.sql
可以在已经简历的SQL*Plus会话中运行脚本。
SQL>@script.sql
初始化参数文件:
启动实例时,系统会读取初始化参数文件
1、服务器参数文件:首选的初始化参数文件类型,永远存在,不受数据库关闭或者启动的影响。此文件默认名称为:spfile<SID>.ora
2、文本初始化参数文件:
这类文件可以由数据库服务器读取,但不能由其写入。
建议:创建SPFILE,以动态的方式维护初始化参数,使用SPFILE可以在服务器端的磁盘文件中永久的存储和管理初始化参数。
CONTROL_FILES:控制文件
DB_BLOCK_SIZE : 指定oracle数据库块的大小,值范围:2048~32768与OS操作系统有关
DB_CACHE_SIZE:指定了参数标准快缓冲区高速缓存的大小。至少位16MB,默认为:32MB
DB_FILE_MULTIBLOCK_READ_COUNT,指定了涉及完整顺序扫描的输入与输出。
DB_FILES参数指定了可以为此数据库打开的数据库文件的最大数目。
PGA_AGGREGATE_TARGET 指定了分配到与实例挂接的所有服务器进程的程序全局区PGA内存量。
SGA(系统全局区) system gobal area
SHARED_POOL_SIZE 指定了共享池大小,以字节为单位。共享池包含共享游标,共享存储过程,控制结构和并行执行消息缓冲区等对象。可以提高多用户系统的性能。
UNDO_MANAGEMENT参数指定了系统应该使用哪一种还原空间管理模式。设置位AUTO,则系统管理还原SMU模式下启动实例。否则在回退还原RBU模式下启动实例。
启动Oracle数据库实例:NOMOUNT
STARTUP:
SHUTDOWN-->NOMOUNT-->MOUNT-->OPEN
关闭模式:
A=ABORT 关闭时只需要执行少量任务
I=IMMEDIATE 最常用的模式,此模式会回退未提交的事务处理。
T=TRANSACTIONAL 允许完成事务处理
N=NOMAL 等待会话断开
关闭时间:
ABORT关闭速度最快
NORMAL关闭速度最慢
SHUTDOWN选择:
1、NORMAL 是默认的关闭模式,以正常的模式关闭数据库
1)可以建立新连接
2)oracle服务器等待所有用户断开连接才完成关闭
3)数据库和重做缓冲区会写入到磁盘中
4)后天进程被终止,从内存中删除SGA
5)Oracle服务器在关闭实例之前关闭并断开数据库
6)下一次启动不需要进行实例恢复
2、TRANSACTIONAL
以事务处理模式关闭数据库可以防止客户机丢失数据。包括客户机当前活动的结果,以及事务处理模式关闭数据库会发生下面情况
1)任何客户机都不能利用这个特定实例启动新事务处理。
2)客户机在结束正在进行的事务处理后断开连接
3)完成所有事务处理后立即执行关闭
4)下一次启动不需要进行实例恢复
3、IMMEDIATE
以立即模式关闭数据库会发生下面情况
1)Oracle数据库正在处理的当前SQL语句尚未完成。
2)Oracle数据库不等待当前连接到数据库的用户断开连接
3)Oracle服务器会回退活动的事务处理,而且会断开所有已连接的用户
4)Oracle服务器关闭实例之前关闭并断开数据库。
5)下一次启动不需要进行实例恢复。
#SHUTDOWN 使用NORMAL、TRANSACTIONAL、IMMEDIATE模式关闭数据库会得到一个一致的数据库,干净的数据库。
#SHUTDOWN使用ABORT、关闭数据库或者STARTUP 使用FORCE启动数据库会导致数据库的不一致,出现脏数据,会变成一个脏数据库。
4、ABORT
如果使用NORMAL和IMMEDIATE模式都无法关闭数据库,那么则可以使用ABORT终止选择关闭当前数据库,使用ABORT会出现下面情况。
1)立即终止Oracle数据库正在处理的当前SQL语句
2)Oracle服务器不等待当前连接到数据库的用户断开连接
3)数据库和重做缓冲区不写入到磁盘
4)不回退未提交的事务处理
5)实例已终止,但未关闭文件
6)数据库未关闭,也未卸载
7)下次启动时需要进行实例恢复,实例恢复是自动进行的。
#特别说明:不建议对处于不一致状态的数据库进行备份,即对包含有脏数据的数据库进行备份会导致数据库内容越来越乱。
使用SQL*PLUS启动和关闭数据库
--关闭数据库
SQL>shutdown immediate;
--启动数据库
SQL>startup;
要使用SQL*PLUS执行关闭或者启动数据库必须使用SYSDBA或者SYSOPER角色登录数据库。
命令:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]
STARTUP [FORCE | RESTRICT | MOUNT | OPEN | NOMOUNT] --数据库在指定模式下启动。
#动态性能视图
1)会话session
2)文件状态
3)作业和任务的进度
4)锁定 lock
5)备份状态
6)内存使用和分配
7)系统和会话参数
8)SQL执行
9)统计信息和度量
DICT DICT_COLUMNS视图包含这些动态性能视图的名称。
用法示例:
SQL>select sql_text,executions from v$sql where cpu_time>200000;
SQL>select * from v$version where machine='EDRSR9P1' and logon_time>SYSDATE-1;lolock WHERE block>0
常见视图:v$sql v$session v$lock
动态性能视图:这些视图由SYS用户拥有。
不同时间可以使用不同视图。
-实例已启动
-数据库已装载
-数据库已打开
查询V$FIXED_TABLE了解所有视图的名称。
通常动态视图成为:V$视图
由于数据时动态的,不能保证动态视图读取的一致性。
Oracle database 11g g代表网格,grid
全球网格论坛,GCF
Oracle玩个基础结构
-低成本
-高服务质量
-易于管理
存储网格(ASM):Automatic Storage Management
数据库网格(RAC):Real Application Clusters
应用程序网格:Oracle Streams
网格控制:Enterprise Manager Grid Control
ASM可以在所有磁盘中分布数据库数据,创建存储网格并进行维护。添加或者删除磁盘ASM会自动重新分发数据。不需要使用逻辑卷管理器来管理文件系统。ASM可以低成本提供最高的I/O吞吐量
RAC 服务器集群
提供如下功能:
集成式集群件:集群连接,消息传送,和锁定,集群控制欲恢复。
自动工作量管理:根据不断变化的业务需求,动态修改规则,在数据库网格中动态分配资源是oracle RAC的特有功能。
Oracle Streams位信息共享,组合消息队列,数据复制,发出事件通知。执行数据仓库加载。
Enterprise Manager Grid Control用于管理网格级操作。可以监视所有应用程序的性能。
#Oracle数据库体系结构
Oracle服务器:
1)一个数据库管理系统
2)由Oracle实例和Oracle数据库组成
数据库结构:
1)内存结构
2)进程结构:实例(系统全局区SGA,后台进程)
3)存储结构:数据库文件
SGA和Oracle进程的组合就称之为Oracle实例。
实例启动后:Oracle软件会将实例与特定的数据库关联,这个过程称之为装载数据库
进程是指运行在计算机内存中的作业。进程被定义位“控制线程”
#SGA包含:共享池、Streams池、大型池、JAVA池、数据库缓冲区高速缓存、重做日志缓冲区。
1)数据库缓冲区高速缓存:缓存从数据库检索的数据块
2)重做日志缓冲区:高速缓冲重做信息(用于实例恢复)知道可以将其写入磁盘中存储的物理重做日志文件。
3)共享池:缓存可在用户间共享的各个结构
4)大型池:是一个可选区域,为某些大进程,例如(Oracle备份和恢复操作,I/O服务器进程),提供大量内存分配。
5)JAVA池:用于JAVA虚拟机(JVM)中特定会话的所有JAVA代码和数据。
6)Streams池:由Oracle Streams使用
PGA(程序全局区)
#Oracle内存结构:
1)系统全局区(SGA)由所有服务器进程和后台进程共享
2)程序全局区(PGA)专用于每一个服务器进程或者后台进程,每一个进程使用一个PGA。
Oracle数据库使用初始化参数创建并配置内存结构。
SGA_TARGET参数可以配置SGA总大小,如果SGA_TARGET设置为0,则自动禁用自动共享内存管理。
进程:
1)用户进程:数据库用户请求连接到Oracle服务器时启动
2)服务器进程:可以连接到Oracle实例,它在用户建立会话时启动。
3)后台进程:在启动Oracle实例时启动。
系统监视器:SMON (system monitor)
进程监视器:PMON (progress monitor)
数据库写进程:DBWn
日志写进程:LGWR
归档进程:ARCn
检查点:CKPT
Oracle物理数据库结构
1)控制文件 control file .ctl 包含数据库本身的数据(即物理数据库的结构信息)
2)数据文件 data file .dbf 包含数据库种的用户数据或者应用程序数据
3)参数文件 parameter file
4)口令文件
5)备份文件 backup file 当用户错误删除或者损坏原始文件,介质损坏,通常需要使用备份文件还原文件。
6)联机重做日志文件 redo file .redo 可以用于实现数据库实例恢复,如果数据库崩溃,但是未丢失任何数据文件可以通过该redo日志文件恢复。
7)归档日志文件 archive file 可以用于恢复还原丢失的数据文件。
8)预警和跟踪日志文件
#表空间和数据文件
一个表空间中包含一个或者多个数据文件
一个数据文件仅属于一个表空间
一个数据库可以划分为多个逻辑存储单元,这些单元称为表空间。
备注:可以创建大文件表空间,即这种表空间只有一个数据文件,这个数据文件非常大(最多包含40亿个数据块),传统的小文件表空间(默认值),可以包含多个数据文件。
#SYSTEM和SYSAUX表空间
SYSTEM和SYSAUX表空间是必须存在的表空间。
这些表空间是在创建数据库时创建的。
这些表空间必须是联机的。
SYSTEM表空间用于核心功能,如数据字典表
辅助的SYSAUX表空间用于附加的数据库组件,例如:Enterprise Manager Repository
在每个Oracle数据库种都包含SYSTEM表空间和SYSAUX表空间,这两个表空间是在创建数据库时创建的。系统默认是创建小文件表空间。也可以创建大文件表空间,这样可以通过Oracle数据库管理超大文件(数据库最多为8EB)约为:8*1024*1024TB=8388608TB
1EB=1024PB=1024*1024TB=1024*1024*1024GB
1PB=1024TB
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B
表空间状态可以是联机访问的,也可以是脱机不可访问的。
打开数据库时SYSTEM表空间始终处于联机状态。
SYSTEM存储数据库核心功能的表。例如:数据字典
SYSAUX是SYSTEM表空间的辅助表空间。主要用于存储数据库组件。要使所有数据库组件正常运行,SYSAUX必须是联机状态。
段、区和块
段:segment 存放于表空间中
段由区构成
区是数据块的集合
数据块将映射到磁盘块中。
段-->区-->数据块-->磁盘块
数据库对象(表和索引等)以段的形式存储在表空间中。
数据库datablock是数据库中最新的I/O单元。
一个数据文件可以在多个磁盘上进行条带化或者创建镜像。
条带化定义:将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上去。
对于大多数数据库,创建数据库时设置的默认数据块大小是:8KB
如果数据库是用于支持执行随机读写操作的事务处理应用程序,最好指定更小的数据块。最小的Oracle数据块大小是:2KB,一般不用。
Oracle逻辑数据库结构
数据库
表空间
段
区
Oracle数据块
Oracle物理数据库结构
数据文件 data file
OS块
数据库具有逻辑结构和物理结构。
数据库一般用来存储和检索(查询)相关信息
数据段:每个非集群,非索引的组织都有一个数据段。每个集群都有一个数据段,集群中每个表的数据都存储在集群的数据段中。
索引段:每个索引都有一个索引段,用于存储索引的所有数据。
还原段:数据库管理员会创建一个UNDO表空间,用于临时存储还原信息。
临时段:Oracle数据库会创建一个临时段。
Oracle数据库可以动态分配空间。
记号:PK=主键,FK=外键。
数据库体系结构:
内存结构:
系统全局区(SGA),数据库缓冲区高速缓存,重做日志缓冲区和各种池。
程序全局区(PGA)
用户进程和服务器进程
后台进程:SMON、PMON、DBWn、CKPT、LGWR、ARCn等
存储结构:
逻辑:数据库(database),方案(schema),表空间(tablespace),段(segment),区(area),Oracle块(block)
物理:用于数据,参数,重做和OS块的文件。
OFA:oracle file system oralce文件系统
DB_BLOCK_SIZE 指定了逻辑块的大小。
DB_BLOCK_SIZE的范围:2KB~32KB,默认大小:8KB
数据库块:
行数据是数据库块中的实际数据。
#表空间和数据文件
Oracle数据库在逻辑上将数据存储在表空间中 tablespace
Oracle数据库在物理上将数据存储在数据文件中 data file .dbf
表空间:
只能属于一个数据库
包括一个或者多个数据文件
可以进一步划分为逻辑存储单元
是存储方案对象数据的资料档案库
数据文件
-只能属于表空间和一个数据库
-是构成表空间的基础文件
表空间和数据文件彼此密切相关。
最简单的Oracle数据库包含两个表空间:SYSTEM和SYSAUX,这两个表空间是必须存在的。
一个表空间可以包含多个数据文件
#注意:一个数据库最多可以包含65534个数据文件。
DB_CREATE_FILE_DEST 定义数据文件和临时文件的默认文件系统位置
DB_CREATE_ONLINE_LOG_DEST_n 定义重做日志文件和控制文件的创建位置
DB_RECOVERY_FILE_DEST 定义RMAN备份位置。recover manager
示例:
SQL>alter system set db_create_file_dest='u01/oradata'
SQL>create tablespace tbs_1; --创建表空间 表空间的默认存储位置是上面系统更改后的默认位置
OMF(Oracle Managed Files)
以下数据库结构根据需要进行创建和删除
1)表空间
2)重做日志文件 redo file
3)控制文件 control file
4)归档日志 archive file
5)块更改跟踪文件
6)闪回日志 flash undo file
7)RMAN备份 recovery manager
#表空间中的空间管理
1)本地管理的表空间
2)字典管理的表空间
建议使用本地管理的表空间
在表空间中,以区为单位分配空间。
Rollback segments 回滚段
说明:字典管理的表空间已经逐渐被淘汰。Oracle不建议使用字典管理的表空间。
永久表空间Permanent,会存储系统或者用户创建的永久数据库对象。
大文件表空间一般与超大型数据库配合使用。
例如:ASM、支持条带化的逻辑卷管理,独立磁盘冗余阵列(RAID),支持动态扩展逻辑卷。
Automatic(自动)
Uniform(统一)
注意:临时表空间的所有区都是统一的。而且采用默认值。不能够为还原表空间指定Uniform
可以将本地表空间中的段空间指定为Automatic:Oracle数据库使用位图管理段中的空闲空间。位图描述了段中各个数据块的状态。
ASSM(自动段空间管理)Automatic segment space management
Manual(手动)
预配置数据库中的表空间:
SYSTEM:用于管理数据库
SYSAUX:SYSTEM辅助表空间
TEMP:默认临时表空间
UNDOTBS1:还原数据库信息的还原表空间。
USERS:存储永久用户对象和数据
EXPMPLE:数据库实例表空间

浙公网安备 33010602011771号