物理结构
查看当前数据库名称
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;
注意我们修改后的地址是为了防止以前的控制文件被覆盖,在修改后的地址下要有你上边路径里所写的文件以及文件名。然后再执行如下
|
|
创建镜像控制文件
新开一个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;