文档章节

oracle 11g 文件管理(启动,参数,密码,控制,日志)

d
 doudou___9958
发布于 2017/05/05 10:50
字数 4524
阅读 51
收藏 0

1.启动管理
生命周期:nomunt----->mount------>open------>close----->dismount----->shutdown
1.启动和关闭
sqlplus ---->启动:startup
关闭:shutdown immediate
grid:---->在database下
启动:srvctl start database -d sid_name
关闭:srvctl stop database -d sid_name
查看实例状态:srvctl status database -d sid_name
grid:---->在grid下
启动:srvctl start database -d sid_name
关闭:srvctl stop database -d sid_name
查看实例状态:srvctl status database -d sid_name

查看状态:crs_stat ora.updb.db
开启:crs_start ora.updb.db
关闭:crs_stop ora.updb.db
2.实例启动的阶段
sqlplus--->启动三阶段:
1.nomount -----实例启动阶段(参数文件)
命令:startup nomount----->根据参数文件位置启动实例(根据参数文件中定义数据库名字,内存的分配情况,权限,位置,个数,并且将启动的过程写入到用户日志和告警日志,启动后台进程,初始化一部分视图(v#parameter v$spprameter))
2.mount---数据库装载阶段 (参数文件和控制阶段)
命令:alter database mount (根据参数文件定义的控制文件位置和个数来装载数据库)
3.open---数据库打开阶段(参数文件,控制文件,数据文件,日志文件)
命令:alter database open 根据控制文件中定义的数据库名,数据文件和日志文件的名字,位置,个数(控制文件记录的scn号和数据文件,日志文件距路的是否一致,如果一致,数据库打开,如果不一致,启动时左实例恢复)。
3.实例关闭的阶段
三阶段:
1.close---关闭数据库:关闭的是物理文件(数据文件和日志文件)
命令:alter database close;
2.dismount ----卸载数据库阶段(将实例和数据库;连接断开)
命令:alter databases dismount;
3.shutdown ----关闭实例阶段(回收内存,写告警日志和用户日志)
命令:shutdown
4.实例关闭的模式
1.shutdown [normal] ----正常关闭
old connect---->等待old 退出后在关闭
触发ckpt----->dbwr---->lgwr
2. shutdown immediate ----一致性关闭
触发ckpt----->dbwr---->lgwr
3.shutdown transaction----居于事务的关闭方式
old conncect 等待事务结束
触发ckpt----->dbwr---->lgwr
4.shutdown abort-----强制关闭
一般用于数据库故障或前3种都关闭不下去。
2.参数文件管理
查看当前使用哪个参数文件:show parameter spfile---->如果查看是value有值标示使用二进制参数文件,如果value没有值标示使用的是文本参数文件
使用二进制文件转文本文件:create pfile from spfile 默认路径$ORACLE_HMOE/dbs 指定路径:create pfile='/tmp/a.ora' from spfile;
文本文件转二进制:create spfile from pfile;
查看当前定义的参数:select name,value from v$parameter
select name,value from v$spparameter
分类:
1.二进制参数文件(spfile):名字:spfileORACLE_SID.ora----位置:$ORACLE_HOME/dbs/spfileupdba.ora(放在服务端)
2.文本参数文件(pfile):名字:initORACLE_SIN.ora----位置:$ORACLE_HOME/dbs/initupdba.ora(放在服务端和客户端)
优先级:spfileORACLE_SID.ora----->spfile.ora------>initORACLE_SIN.ora----->init.ora
动态参数:修改参数后不需要重启数据库--------------->alter system set 参数名=值;
静态参数:修改参数后需重启数据库后才生效------------>alter system set 参数名=值 scope=spfile | memory | both; scope = spfile :修改到二进制文件中 scope = memory :修改到内存 scope = both: 表示2个都修改
会话参数:修改参数只在当前用户生效 -------------> alter session set 参数=值;
注意:select name,isses_modifiable from v$parameter;如果value是true时可以使用 alter session set 参数=值设置。
还原:alter system set shared_pool_size=' ';
参数文件丢失处理:
1.备份--->还原
shutdown immediate----> startup-----> create spfile from pfile ---->shutdown immediate----->startup
2.没备份
手写一个简易的控制参数文件:cd /opt/u01/oracle/11g/dbs
db_block_size=8192
db_name=db
control_files='/opt/u01/oracle/oradata/db/control01.ctl‘,‘/opt/u01/oracle/fast_recovery_area/db/control02.ctl’
db_recovery_file_dest=/opt/u01/oracle/fast_recovery_area
db_recovery_file_dest_size=4g
undo_tablespace=undotbs1

3.密码文件管理
1.密码文件的作用:存放sysdba/sysoper用户
远程登录
操作系统认证:sqlnet.ora 路径:$ORACLE_HOME/network/admin
手动编写一个sqlnet.ora文件--->内容:sqlnet.authention_services=(none | all )
参数:sqlnet_authenication_services=(all | none)
none:关闭操作系统认证,使用密码文件认证
all:使用操作系统认证,关闭本机密码文件认证
密码文件认证:remote_login_passwordfile 路径:¥ORACLE_HOME/dbs/
none:关闭密码文件认证,使用操作系统认证
exclusive:只有当前的实例使用独占的密码文件认证
shared:多个实例共享一个密码文件(集群)
2.创建密码文件:
命令:orapwd file=文件名 password=密码 entries=5
Linux系统---->文件名:orapwORACLE_SID
oracle系统---->文件名:pwdORACLE_SID
3.查看密码文件:
查看当前系统下有哪些sys用户:select * from v$pwfile_users;
4.密码文件的限制:
entries=5
5.密码文件丢失处理:
直接创建一个密码文本
4.控制文件管理
查看当前用户有哪些控制文件: select name from v$controlfile; 或 desc v$controlfile_record_section;或 show parameter control_files;
1.控制文件的作用
记录数据库的结构与行为,
最多8个控制文件,最少1个。
2.控制文件在项目中规划
项目中最少2个 且分开存放,大小100m以内
3.控制文件的管理:
a.控制文件增加
关闭的数据库:
1.startup nomount;
2.修改参数:control_files;
3.将存在的控制文件复制给新建的
4.alter database mount;
5.alter database open;
打开的数据库:
1.修改参数control_file
2.shutdown immediate;
3.将存在的控制文件复制给新建的
4.startup;
b.控制文件的减少:
1.种
1.shutdown immediate;
shutdown abort;
2.startup nomount;
3.修改参数
4.alter database mount;
alter database open;
2.种
1.修改参数
2.shutdown immediate;
shutdown obort;
3.startup
c.控制文件版本不一致的处理:
将高版本的复制给低版本的
d.控制文件部分丢失的处理:
将丢失的版本不要 将好的拷贝过去
e.控制文件有备份全丢失处理:
备份成二进制文件:alter database backup controlfile to '/tmp/con.ctl';
备份成脚本:alter database backup controlfile to trace as '/tmp/con.sql';
1.shutdown immediate;
shutdown abort;
2.alter database nomount;
3. @ /tmp/con.sql';
f.控制文件没有备份全丢失处理:
手动写:
cteate controlfile reuse database updba noresetlogs noarchivelog
logfile
GROUP 1 '/opt/u01/oracle/oradata/db/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/opt/u01/oracle/oradata/db/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/opt/u01/oracle/oradata/db/redo03.log' SIZE 50M BLOCKSIZE 512,
datafile
'/opt/u01/oracle/oradata/db/system01.dbf',
'/opt/u01/oracle/oradata/db/sysaux01.dbf',
'/opt/u01/oracle/oradata/db/undotbs01.dbf',
'/opt/u01/oracle/oradata/db/users01.dbf'
'/opt/u01/oracle/oradata/db/example01.dbf'
CHARACTER SET AL32UTF8
5.日志文件管理
查看当前有几个日志文件组:select group#,status from v$log;
查看日志文件路径: select member from v$logfile;
查看日志文件切换屏率: select recid,to_char(first_time,'yyyy-mon-dd hh24:mi:ss') from v$log_history;
1.日志文件的作用
用户做的dml和部分ddl操作,数据库恢复
2.日志文件的工作原理
日志文件的状态:
1.current:当前正在使用的日志组状态(所有的dml信息)
2.active:活动状态(里面记录的日志信息有可能没有写入到数据文件里面,数据库恢复时需使用它)
3.incative:非活动状态(里面记录的日志信息全部记录到数据文件里面)
4.unused:从未使用的
日志组:至少2个组,一个组下面至少要一个日志文件,一个组下面记录的日志信息是互为镜像的,一个组下的日志文件大小必须一样
日志文件:lsn---->(log system number)
3.日志文件在项目中的规划
日志文件组:至少3个
一个组下至少要有2个日志成员,并且需要分开存放,项目中3个日志成员
工作中日志文件大小是根据日志切换屏率15-30分钟来确定,如果小于15分钟需要增大日志工作组。
优化日志切换屏率小于15分:手动建立一个100M日志文件组,手动切换日志,
手动切换日志:alter system switch logfile;
例:
disk1 disk2 disk3
group1: redo1.log redo12.log redo13.log
group2: redo2.log redo22.log redo23.log
group3: redo3.log redo32.log redo33.log
4.日志文件的管理
日志组增加
一个组下增加一个日志成员:alter database add logfile group <> '/' size <>;
增加2个日志成员:alter database add logfile group <> ('/',‘/’) size <>;
日志组删除
语法:alter database drop logfile group <>
一个数据库中只有最后两个日志组时不能删除
current----->不能删除
active------->不能删除
inactive----->能删除
unused------>能删除
日志组下增加成员
语法:alter database add logfile member '/' to group <> ;
日志组下删除成员
1.一个日志组下只有最后一个日志成员时不能删除,
2.current,active日志成员不能删除
语法: alter database drop logfile member '/'(路径);
日志丢失处理:
打开数据库丢失:
1.inactive:
alter database clear logfile group <>;
2.active:
alter system checkpoint;
alter database clear logfile group <>;
3.current:
alter system switch logfile;
alter system checkpoint;
alter database clear logfile group <>
关闭数据库:
active,current:
startup nomount;
alter database mount;
recover database until cancel;---->
alter database open resetlogs;---->
5.日志文件的相关试图
v$log v$logfile v$log_history
6.归档日志archtivelog
查看归档日志存放路径:db_recovery_file_dest(默认路径)
设置归档日志存管放其他路:log_archive_dest='/'
验证是否打开归档功能:archive log list | v$database
打开归档功能:1.startup mount ------>2.alter database archivelog;
关闭归档模式:1.startup mount ------>2.alter database noarchivelog;
表的管理
堆表:
索引组织表:表数据和索引数据都放在索引段中
语法:create table <> (column datatype......) organization index;

对象表:表中的嵌套表
tel
| |
tel1 tel2
语法:create type
例:create type tel_type as object (tel1 varchar2(20),tel2 varchar2(20));----->创建对象
create table teel values(name varchar2(20),tel tel_type,loc varchar2(20));--->创建一个表

updata teel t set t.tel.tel1='130254584' where name='aa';---->堆表的更新
insert into tell values('aa',tel_type('123','456'),'dc');----------->插入对相表数据
alter tel_type drop attribute(tel1) cascade; ----->删除堆表下的某一个对象tel1------->exit(退出来,就看不见被删除的表)
alter type tel_type add attribute(tel3) --------->增加一个对象
簇表:多表查询(列明相同,数据类型相同,内容相同)
语法:(3步)
1.创建簇:create cluster <> (column datatype);
2.创建簇索引:create index <> on cluster <>;
3.创建表:create table <> ();

例:
create cluster c1 (deptno number(4));
create index c1_deptno on cluster c1;
create table cdept (deptno number(4),dname varchar2(20),loc varchar2(20)) cluster c1(deptno);
create table cemp (deptno number(4),ename varchar2(20),loc varchar2(20)) cluster c1(deptno);
分区表:
1.什么时候要创分区表:
当表的数据达到1G时就需要将普通表创建成一个分区表
2.分区表的特点:
每一个分区的数据可以分开存放在不同磁盘,
分区表的数据备份时可以按分区来进行备份,
数据在访问时可以单独访问某一个分区的数据,
每一个分区的数据都可以放在不同的表空间中,
3.分区表的分类:
3.1.range范围分区:当分区的列的值在某个范围之内(一个表下面最多创建1023个分区)
语法:create table <> (column datatype,.....) partition by range(column)
(
partition <> values less than (),
partition <> values less than (),
....
partition <> values less than (maxvalue)----->标示不再以上的范围的就放在这里,
);
例: sal<1000 p1
sal<2000 p2
sal<3000 p3

3.2.hash哈希分区:需要分区的列找不到什么规律
语法:create table <> (cloumn datatype,...) partition by hash(cloumn,....)
(
partition <>,
partition <>,
.......
)
;
例:对emp下的ename分区:
create table hemp (ename varchar2(20),empno number) partition by hash(ename)
(
partition p1,
partition p2,
partition p3
)
;
Insert into hemp select ename,empno from emp;------>插入数据
select * from hemp parttion(p1)----->查询
3.3.list列表分区:要分区的列它列的值是一个固定的,可以使用in将他们列举出来 list():只能根一个列
例:create table lemp (deptno number,ename varchar2(20)) partition by list(deptno)
(
partition p1 values(10),
partition p1 values(20),
partition p1 values(30)
partition p4 values(default)---->放入不能满足条件的值
);
伪列:(转义)
例:
1980---1
1981--2
1982--3
198x---default
create table lemp (hiredate date,
ename varchar2(20)
hdate to_date(hiredate,'yyyy')
) partition by list(hdate)
(
partition p1 values('1981'),
partition p1 values('1980'),
partition p1 values('1982')
partition p4 values(default)---->放入不能满足条件的值
);
伪列的数据插入:insert into lemp(ename,hiredate) select ename,hiredate from emp;
伪列的查询:select * from lemp partition(p1);
by range---
()
间隔分区
(年,月,天,小时,分钟,秒)
numtoyminterval(2,'year')
numtoyminterval(1,'month')
numtoyminterval(7,'day')
例:
create table r1 (name varchar2(10),hdate date)
partition by range(hdate)
interval (numtoyminterval(1,'year'))
(
partition p1 values less than(to_date('1981-01-01','yyyy-mm-dd')))
插入数据:Insert into r1 values('aa','1981-01-01');
3.4.组合分区:表以是以上3种分区了,每个分区下面数据还很多,就在分区下面在进行分区
10g:(by list+by range
by range+by hash
by list+by hash)
11g:9种组合分区
语法:
create table <> (cloumn datatype,...)
partition by list(cloumn)
subpartitio by range(column)
(
partitin <> values(...)
(
subpartition <> values less than(...)
subpartition <> values less than(...)
subpartition <> values less than(...)
)
partition <> values(...)
(
subpartition <> values less than(...)
......
)
);
例:
create table lremp(ename varchar2(20),deptno number,sal number) partition by list(deptno)
subpartition by range(sal)
(
partition p1 values(10)
subpartition p11 values less than(1000),
subpartition p12 values less than(2000),
subpartition p13 values less than(3000),
subpartition p14 values less than(maxvalue)
),
partition p2 values(20,30)
(
subpartition p21 values less than(1000),
subpartition p22 values less than(2000),
subpartition p23 values less than(3000),
subpartition p24 values less than(maxvalue)
)
)
4.分区表与普通表的转换
1.插入数据法:不适用于 数据大的方法和7*24小时数据库
2.交换分区法:不适用于数据量大和业务高峰期数据库
语法:
1.创建分区表
create table <分区表名> (cloumn datatype) partition by list(cloumn)
(
partition <p1> values(cloumn),
partition <> values(cloumn),
partition <> values(default),
)
2.创建表:create table <e1> as select <> from emp where empno=10;
3.交换数据:alter table <分区表名> exchange partition p1 with table e1;
3.在线重定义:要求表种必须要有主键列,不适用于高峰区,但是能保证数据的同步性
包:desc dbms_redefinition;
1.创建分区表
2.使用在线重定义表转换
dbms_redefinition.start_redef_table('SCOTT','EMP','LEMP');
dbms_redefinition.sync_interim_redef_table('SCOTT','EMP','LEMP') ------>交换
dbms_redefinition.finish_redef_table('SCOTT','EMP','LEMP')------->将emp表转换为分区表
create table <> () partition by list()
(
partition p1 values() tablespace <>---->将p1放入到表空间
....
)
5.分区表的管理
1.分区表的增加:
list分区:alter table <> add partition <> values()
range分区: alter table <> add partition <> values less than();
hash分区:alter table <> add partition <>;
组合分区增加子list分区: alter table <> add subpartition <> values()
组合分区增加子range分区: alter table <> add subpartition <> values less than()
2.分区表的减少:
删除分区:alter table <> drop partition <>;
删除子分区:alter table <> drop subpartition;
3.合并分区:
合并分区:alter table <> merge partition <> ,<> into partition <>;
例:alter table emp merge partition p1,p2 into partition p3;
合并分区并放到子分区:alter table <> merge partition <>,<> into subpartition <>;
6.分区索引的创建:
1.全局索引:一个分区表只创建一个索引;
语法:create index <> on <表明>(cloumn) global;
全局索引重建:alter index <> rebuild online; online(在线重建不会锁表,但是时间很长取决与用户dml操作时间)
2.本地索引:一个分区表上每个分区逗创建索引;
语法:create index <> on <>(column) local;
本地索引重建:alter index <> rebuild partition <>;
7.临时表:
1.居于事务临时表:当事务结束,表中数据会被清空
create global temporary table <>(column datatype,...) on commit delete rows;
2.居于会话临时表:退出会话,表中数据会清空
create global temporary table <>(column datatype,....) on commit preserve rows
3.普通临时表:需要手动删除数据
create global temporary table <>(column datatype,...)
8.外部表:
1.sqlloader工具:--->在sqlplus下 ----->将外部文件导入到数据库
指定文件导入到哪个表:infile='/tmp/a.txt'
例:
编写控制文件(要以.tcl结尾)
load data
infile '/tmp/a.txt'
into table dept
append(插入) | truncate(清空表后插入) | ...
fileds terminated by ',' ----->文本以“,”间隔
trailling nullcols----->过滤空行
(deptno,dname,loc)
上传文件:
sqlldr scott/123456 control='/tmp/a.txt'
2.oracle loader: --->加载文本外部文件(只能加载文本文件) 不能做dml操作只能查询
语法: 1.create directory <ext1> as '/tmp';

2.grant read,write on directory <ext1> to scott;
.
3.create table <> () organization external
(
type oracle loder
default directory ext1
access parameters
(records delimeted by newline
fields terminated by ','
)
location('a.txt')
);
3.oracle datapump:--->存到外部文件(只能加载2进制文件)不能做dml操作只能查询
6.网络管理:
1.专有连接
user---> server process
2.共享连接
user--->dispater(调度)--->[ SGA(队列) ]----server---->data buffer
3.监听程序的工作原理(远程链接),一个数据库中只使用一个监听,一个监听程序可以监听多个数据库,工作中使用静态监听
客户端监听程序---tnsnames.ora(本地命名解析文件)
1.sqlplus sys/oracle@db as sysdba
2.sqlplus sys/oracle@ip:1521/server_name as sysdba
服务端监听程序---listener.ora
1.静态注册:将实例名或服务名写到了监听程序中

2.动态注册:
pmon进程注册,
alter system register;------>手动注册
lsnrctl status-----查看监听状态
如果显示有 ready----->动态注册监听
unknow--->静态注册监听
4.如何配置监听
1.netca---动态监听
2.netmgr---静态监听
3.手动写监听
vim /opt/u01/oracle/grid/11g/network/admin/listener.ora
5.管理监听
lsnrctl start
lsnrctl status
lsnrctl stop
lsnrctl reload
lsnrctl restart
11g :srvctl start listener只能启动listener的监听
srvctl start listener -l listener1----启动listener1监听
srvctl add listener -l listener1---------->将监听加入到grid下进行管理(j加入的不是不是以listener为名的监听)
srvctl add listener---->将listener的监听键入到grid 上管理
srvctl remove <>---->移除监听在grid的管理
测试网络配置的连通性:tnsping updb
7.用户管理
$ORACLE_HOME/rdbms/network/admin/utlpwdmg.sql--------->密码设置限制函数
查看用户信息: desc dba_users
管理员用户管理和普通用户管理
sys,system 不能改名,不能删除
1.用户的创建
创建用户:create user <> identified by <> default tablespace <> default temporary tablespace <> | profile <>
设置密码过期:alter user <> password expirred;
设置密码锁定:alter user <> account lock;
删除用户,无对象:drop user <>;
删除用户,有对象:drop user <> cascade;
profile:用户限制,
查看系统资源:select RESOURCE_NAME,RESOURCE_TYPE from dba_profiles;
创建资源概要文件:create profile <资源名> limit <限制条件> ; ----->alter user <> profile <>;
例: create profile pr1 limit failed_login_attempts 3---->创建一个资源限制pr1 登录失败限制3次
password_lock_time 2/1440 -----------> 2/1440后解锁
password_life_time 7-------->密码有效期7天
password_grace_time 1------>宽限期1天

© 著作权归作者所有

d
粉丝 4
博文 44
码字总数 54396
作品 0
成都
私信 提问
ORACLE--手工建库

手工建库 需要创建的库: 参数文件,控制文件,数据文件,日志文件,密码文件 一、纯命令 步骤: 1.创建存放数据文件的路径,更改权限 2.创建参数文件,控制文件定义到参数文件里,会自动进行...

柳白子
2016/12/09
15
0
Oracle Data Guard RAC到单机ASM配置(物理standby)

本次配置11G rac到单机ASM的dataguard配置,11G rac的安装参考oracle 11G rac 安装(VMware + rhel6.3),11G 单机ASM安装参考Oracle 11G 单机asm安装。 环境介绍: 主库: 11203 2节点RAC 实例...

sugar黑黑
2015/10/21
0
0
ORACLE---恢复

一、完全恢复 控制文件,数据文件,表空间丢失,且是物理上的丢失 二、不完全恢复 联机日志,表空间丢失使用居于时间点的不完全恢复 三、克隆技术 数据库是724小时运行,drop table,drop us...

柳白子
2016/12/14
21
0
Oracle 11g 数据库启动和关闭

Oracles11数据库的启动状态 Oracle11g在启动的时候必须经过三个状态:NOMOUNT,MOUNT,OPEN。 NOMOUNT: 此状态下只打开数据库实例,读取参数文件。 MOUNT: 根据参数文件信息,打开控制文件。读...

酥心糖
2017/11/03
0
0
Oracle专题1之Oracle概述、Oracle数据库的体系结构以及常用命令

1、Oracle概述 - Oracle Database,简称为Oracle。是美国ORACLE(甲骨文)公司的一款对象关系型的数据库管理系统(ORDBMS)。目前在数据库市场上占有主要份额。 - Oracle的发展史:1977年埃里...

极客微信条
2017/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部