Oracle的体系结构
1.数据库:Oracle是一种关系型的数据库管理系统; 2.数据库实例:数据库实例其实就是用来访问和使用数据库的一块进程,它只存在于内存中,就像Java中new出来的实例对象一样。一个数据库可以有n个实例; 3.表空间:Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表,可以有N个数据文件;
4**.数据文件:数据文件是数据库的物理存储单位**。数据库的数据是存储再表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间,一旦数据文件被加入到某个表空间后,就不饿能删除这个文件,如果要删除某个数据文件,只能删除其所属与的表空间才行;
5.用户:Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间;
安装数据库
dbca
网络监听器
监听器是在服务器端的配置,暂时只能监听本机,默认的端口号是1521,1521端口号的监听器,自动监听该数据库服务器上所有的数据库。不需要添加。非默认端口号需要增加要监听的数据库。配置文件:$ORACLE_HOME/network/admin/listener.ora
网络服务名是在客启端的配置,可以通过配置网络服务名连接到任何一台服务器。$ORACLE_HOME/network/admin/tnsnames.ora
conn 用户名/口令@网络服务名 [as sysdba]
-
oracle用户下:netmgr图形化界面设置监听
必须先root:xhost +
su - oracle
oracle下:export DISPLAY:0.0
-
开启和关闭监听:lsnrctl start/stop/status [name|默认是1521]
数据库实例管理
- 数据库的四种状态
- shutdown:关闭状态
- nomount:非挂载状态,读取初始化文件和打开警告日志文件。(create database\create controlfile)
- mount:挂载状态,打开控制文件。(改归档模式,闪回模式,改数据文件名)
- open:打开状态,打开的是联机的数据文件和联机的重做日志文件
-
数据库操作
启动数据库:startup
startup nomount--->alter database mount----->alter database open;
startup mount---->alter database open
只读方式打开数据库:
(关闭状态)----->startup open read only;
(mount状态)----->alter database open read only;
可读可写的方式:
(关闭状态)----->startup ;
受限模式:(open状态)alter system enable restricted session;
(关闭状态)startup open restricted session
取消受限模式:(open状态)alter system disable restricted session;
-
打开数据库的方式:
startup [force] [restrict][pfile=filename] [open|nomount|mount] [open read only|read write]
- 更改当前数据库的方式
更换当前状态或者更改只读:alter database mount|open [read only|read write]
进入限制模式:alter system [enable|disable] restricted session 或者startup restrict
只能往高处去,不能往下走,往下走只能直接shutdown到关闭状态
read only和read write只能open时才能用
- shutdown的模式
shutdown {immediate|normal|transactional}
- 查看数据库状态
SQL> select status from v$instance; ----查数据库处在什么状态
STATUS
------------
MOUNTED-----------表示数据库在mount状态。
open------表示数据库在open状态。
started----------表示数据库在nomount状态。
出错------表示数据库在close状态。
数据库初始化参数文件
分为pfile和spfile
- pfile:以init<SID>.ora或init.ora命名,存在$ORACLE_HOME/dbs,可以自己vi编写,但是要重启才能生效
- spfile:以spfile<SID>.ora或spfile.ora命名,存在$ORACLE_HOME/dbs,不能手动修改,一定要通过alter system修改,一用vi修改这个文件就废了
p:parameter
s:server
init.ora:一般不用,只作为模板
启动优先级:
- spfile<>
- spfile
- init<>
查看参数
show parameter:查看所有参数
show parameter name
show parameter spfile:查看当前使用的启动文件
通过一个初始化文件创建另一个初始化文件
只能通过spfile<>和init<>之间互相转换,一般一个主用,另一个备份,一旦两个都没有只能通过其他更复杂的方式处理
- create spfile from pfile
- create pfile from spfile
通过模板文件创建pfile文件
cp init.ora init<sid>.ora
后修改文件内容后重启选用即可
数据库控制文件
/u01/oracle/diag/rdbms/db01/db01/trace/:警告日志和跟踪文件所在的路径
alertdb01.ora警告日志文件
查看
select name from v$controlfile
v$:动态性能视图
spfile控制文件添加备份
0、查询当前的控制文件:
select name from v$controlfile
1、修改参数:
SQL> alter system set
control_files='/opt/oracle/con03.ctl','/opt/oracle/oradata/db01/control01.ctl','/opt/oracle/flash_recovery_area/db01/control02.ctl' scope=spfile;(希望有多少个控制文件,就写上多少控制文件)
2、关闭数据库
shutdown immediate;|shutdown transactional|shutdown normal
3、copy或者delete或者改名,确保物理的控制文件和参数中的控制文件一样
4、startup
shutdown immediate;
create pfile from spfile;
pfile控制文件添加备份
(1)shutdown immediate;
(2)[create pfile from spfile];
(3)vi initdb01.ora
里面的 control_files(希望有多少个控制文件,就写上多少)
(4)copy或者delete或者改名,确保物理的控制文件和参数中的控制文件一样
(5)create spfile from pfile
(6)startup
备份与重建控制文件
alter database backup controlfile to trace
find /u01 -name alert_db01.log
cd /u01/oracle/diag/rdbms/db01/db01/trace/
ls -ltr按时间顺序进行排序
重做日志与归档日志
查看
-
查看日志组的信息
select * from v$log;
-
查看日志成员(日志文件)的信息
select * from v$logfile;
-
切换当前日志
alter system switch logfile
-
扔检查点=》切换当前日志组
alter system checkpoint -> active边inactive
日志操作
增加日志组
alter database add logfile [group n] (‘路径文件名’,‘路径文件名’) size nM;
删除日志组
alter database drop logfile group n;(当前、active日志组不能删,仅是逻辑除,物理上还存在该文件)
当前情况:日志组有3个,每个大小是50M,现在希望把日志组改为两个,大小为4M、
解决方案:先增加两个日志组,再删除原来的3个日志组。
当前情况:日志组有2个,希望更改日志文件的路径文件名
解决方案:先增加成员,再删除原来的成员
增加成员
alter database add logfile member 路径文件名 to group n;
删除成员
alter database drop logfile member '路径文件名';(当前、active日志组的成员不能删,仅是逻辑除,物理上还存在该文件)
重做日志的归档
查看
archive log list
更改数据库的归档模式
(1)SQL> shutdown immediate;
(2)SQL> startup mount;
(3)SQL> alter database archivelog;
(4)SQL> alter database open;
(5)archive log list;(查看数据库是否启用归档模式)
更改归档存放路径
alter system set log_archive_dest_1='location=路径名';
更改归档文件的格式
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
表空间
查看
查看数据文件或者表空间的大小
select file_name,bytes from dba_data_files where tablespace_name='TEST';
查看表空间的名字、类型
select tablespace_name,status,contents from dba_tablespaces;
查看表与表空间的关系
select tablespace_name from dba_tables where table_name='EMP';
创建表空间
SQL> CREATE tablespace 名字
2 datafile '路径文件名' size 1M,路径文件名' size 2M
3 [extent management local] [autoallocate|uniform size 32K];
扩大表空间的大小
增加一个数据文件
alter tablespace test add datafile '路径文件名'' size nm;
自动扩展表空间大小
(把扩展属性打开)ALTER database datafile ** autoextend on next **M maxsize **M;
更改数据文件的大小
ALTER database datafile ** resize **K;
重命名表空间
alter tablespace 原名 rename to 新名;
删除表空间
删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段
就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
移动数据文件
移动数据文件(非系统表空间)
(1)表空间脱机:alter tablespace *** offline;
(2)物理上移动数据文件 $ mv 源文件 新文件
(3)移动文件指针(告诉控制文件,数据文件发生变化):alter tablespace *** rename datafile 源文件 to 新文件
(4)表空间联机:alter tablespace *** online;
系统表空间数据文件的移动
(1)shutdown immediate; (2)startup mount;
(3)物理上移动
(4) alter database rename file 源文件 to 新文件
(5)alter database open;
临时表空间
创建临时表空间
create temporary tablespace ***
tempfile "" size *M
[extent management local uniform size **K];
修改数据库默认的临时表空间
alter database default temporary tablespace ***;
修改用户默认的临时表空间
alter user temporary tablespace ***;
一个系统中,可以有多个默认的临时表空间
创建临时表空间组
create temporary tablespace 临时表空间名
tempfile ‘路径文件名’ size **M
tablespace group 组名;
有临时表空间组,就可以使用组名代替临时表空间名
undo表空间
创建undo表空间
SQL> create undo tablespace 表空间名
2 datafile '路径名件名' size 4m;
一个系统中,只允许有一个正在使用的的undo表空间
修改系统默认的undo表空间
alter system set undo_tablespace=***;
用户
新建一个用户
Connected.
SQL> create user 用户名 identified by 口令
2 temporary tablespace 临时表空间
3 default tablespace 表空间
4 quota 1M on 表空间
quota 1M on 表空间
5 account lock;
修改用户
SQL> alter user 用户名 identified by 口令
2 temporary tablespace 临时表空间
3 default tablespace 表空间
4 quota 1M on 表空间
quota 1M on 表空间
5 account lock;
删除用户
drop user XXX cascade;
解锁并修改密码
alter user scott identified by tiger account unlock;