Oracle物理结构操作

物理结构

查看当前数据库名称

select name from v$database;

查询当前数据库实例名:

select instance_name from v$instance;

创建一个数据文件

alter tablespace users add datafile 'F:\app\43886\oradata\orcl\test02.dbf' size 10M;

创建一个日志文件组

首先我们需要查看日志文件组状态,只有当日志组状态为INACTIVE时,才可以对该组进行操作

select group#,status from v$log;

默认有3个日志组,接下来我们创建第四个

alter database add logfile group 4 'F:\app\43886\oradata\orcl\redo04.log' size 500m;

创建/删除日志文件组员

alter database add logfile member 'F:\app\43886\oradata\orcl\redo04_2.log' to group 4;

查看日志组成员以及哪个日志处于活动状态

select * from v$log;

删除日志组成员

alter database drop logfile member 'F:\app\43886\oradata\orcl\redo04_2.log';

删除日志组

alter database drop logfile group 4;

创建/删除一个控制文件

创建普通的控制文件

首先我们需要关闭数据库

shutdown immediate;

然后我们需要启动例程

startup nomount;

修改地址

alter system set control_files='E:\APP\43886\ORADATA\ORCL\CONTROL01.CTL','E:\APP\43886\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL' scope=spfile;

注意我们修改后的地址是为了防止以前的控制文件被覆盖,在修改后的地址下要有你上边路径里所写的文件以及文件名。然后再执行如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE CONTROLFILE REUSE
DATABASE "orcl"
NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXDATAFILES 50
MAXINSTANCES 5
MAXLOGHISTORY 500
LOGFILE
GROUP 1 'F:\APP\43886\ORADATA\ORCL\REDO01.LOG' size 50M,
GROUP 2 'F:\APP\43886\ORADATA\ORCL\REDO02.LOG' size 50M,
GROUP 3 'F:\APP\43886\ORADATA\ORCL\REDO03.LOG' size 50M
DATAFILE
'F:\APP\43886\ORADATA\ORCL\SYSTEM01.DBF',
'F:\APP\43886\ORADATA\ORCL\UNDOTBS01.DBF',
'F:\APP\43886\ORADATA\ORCL\SYSAUX01.DBF',
'F:\APP\43886\ORADATA\ORCL\USERS01.DBF',
'F:\UNTOTBS01.DBF',
'F:\APP\43886\ORADATA\ORCL\EXAMPLE01.DBF',
'F:\APP\43886\ORADATA\ORCL\TEST02.DBF',
'F:\APP\43886\PRODUCT\11.2.0\USERDATA\DB_TEST.DBF';

创建镜像控制文件

新开一个cmd窗口,执行

copy E:\APP\43886\ORADATA\ORCL\CONTROL01.CTL E:\APP\temp\control03.ctl

注意第二个路径是要拷贝的地方

create pfile='E:\APP\temp\pfile1.ora' from spfile;

完成后将新的路径添加在刚创建好的pfile1.ora的control_files中修改

*.control_files='F:\app\43886\oradata\orcl\control01.ctl','F:\app\43886\flash_recovery_area\orcl\control02.ctl','E:\APP\temp\CONTROL03.CTL'

之后使用pfile启动查看

shutdown immediate

startup pfile='E:\APP\temp\pfile1.ora'

show parameter control_files

可以看到刚刚创建的CONTROL03.CTL已经存在了

然后使用

create spfile from pfile='E:\APP\temp\pfile1.ora';

然后我们再次

shutdown immediate

使用startup启动,再次

show parameter control_files

可以看到CONTROL03.CTL在其中,说明我们的镜像控制文件创建成功了

若启动以后报错两个control文件版本不一致且show没有看到新建的文件,那么执行

alter system set control_files='F:\APP\43886\ORADATA\ORCL\CONTROL01.CTL', 'F:\APP\43886\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL', 'E:\APP\TEMP\CONTROL03.CTL' scope=spfile;

然后使用

shutdown immediate

startup

重启,再次查看

删除控制文件

这个比较简单,只需要将刚添加的*.control_files中的删除掉,然后删除文件,重启数据库即可

查看物理文件

查看数据文件

select file#,name,status,bytes/1024/1024 from v$datafile;

查看日志文件

select * from v$logfile;

查看控制文件

select * from v$controlfile;

逻辑结构

查看有几个表空间

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;

如何创建表空间

create tablespace db_test datafile 'F:\app\43886\product\11.2.0\userdata\db_test.dbf' size 50m autoextend on;