oracle高级技术管理

76 阅读8分钟

toc

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]

  1. oracle用户下:netmgr图形化界面设置监听

    必须先root:xhost +

    su - oracle

    oracle下:export DISPLAY:0.0

  2. 开启和关闭监听:lsnrctl start/stop/status [name|默认是1521]

数据库实例管理

  • 数据库的四种状态
  1. shutdown:关闭状态
  2. nomount:非挂载状态,读取初始化文件和打开警告日志文件。(create database\create controlfile)
  3. mount:挂载状态,打开控制文件。(改归档模式,闪回模式,改数据文件名)
  4. 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

  1. pfile:以init<SID>.ora或init.ora命名,存在$ORACLE_HOME/dbs,可以自己vi编写,但是要重启才能生效
  2. spfile:以spfile<SID>.ora或spfile.ora命名,存在$ORACLE_HOME/dbs,不能手动修改,一定要通过alter system修改,一用vi修改这个文件就废了

p:parameter

s:server

init.ora:一般不用,只作为模板

启动优先级:

  1. spfile<>
  2. spfile
  3. init<>

查看参数

show parameter:查看所有参数

show parameter name

show parameter spfile:查看当前使用的启动文件

通过一个初始化文件创建另一个初始化文件

只能通过spfile<>和init<>之间互相转换,一般一个主用,另一个备份,一旦两个都没有只能通过其他更复杂的方式处理

  1. create spfile from pfile
  2. 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按时间顺序进行排序

重做日志与归档日志

查看

  1. 查看日志组的信息

    select * from v$log;

  2. 查看日志成员(日志文件)的信息

    select * from v$logfile;

  3. 切换当前日志

    alter system switch logfile

  4. 扔检查点=》切换当前日志组

    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;