一、创建数据文件
--创建数据文件时必需指定文件大小SQL> alter tablespace test1
2 add datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' size 20M
3 autoextend on
4 next 128K
5 maxsize 250M;
表空间已更改。
二、调整数据文件大小
SQL> alter database
2 datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF'
3 resize 25M;
数据库已更改。
三、修改数据文件
SQL> alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' offline;
alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' offline
*
第 1 行出现错误:
ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机
--只有归档模式才能使用些命令让文件脱机,当oracle处于非归档模式时不能直接让数据文件脱机,此时可使用offline for drop ,这样数据文件需要恢复才能联机使用。
SQL> alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' offline for drop;
数据库已更改。
SQL> alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' online;
alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' online
*
第 1 行出现错误:
ORA-01113: 文件 10 需要介质恢复
ORA-01110: 数据文件 10: 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF'
SQL>recover datafile 10;完成介质恢复。
SQL> alter database datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' online;
数据库已更改。
三、重命名数据文件
--须先让表空间脱机=>在操作系统上手动更改文件名=>使且命令进行修改=>表空间联机
SQL> alter tablespace test1 offline normal;
表空间已更改。
SQL> alter tablespace test1
2 rename datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' to
3 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA03.DBF';
表空间已更改。
SQL> alter tablespace test1 online;
表空间已更改。
--对于系统表空间,重做日志表空间,回滚表空间,不能让其脱机,须让数据库处于装载但关闭状态,再使用alter database命令进行重命名。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 226493332 bytes
Database Buffers 301989888 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
SQL> alter database
2 rename file 'D:\APP\YICHUNMEI\ORADATA\ORCL\SYSTEM01.DBF'
3 to 'D:\APP\YICHUNMEI\ORADATA\ORCL\SYSTEM02.DBF';
数据库已更改。
SQL> alter database open;
数据库已更改。
四、删除数据文件
SQL> alter tablespace test1 drop datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA03.DBF';
表空间已更改。
--当表空间只有一个数据文件时不能删除此文件
SQL> alter tablespace test1 drop datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA01.DBF';
alter tablespace test1 drop datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA01.DBF'
*
第 1 行出现错误:
ORA-03261: 表空间 TEST1 只有一个文件
SQL> alter tablespace test1 add datafile
2 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF' size 20M
3 autoextend on
4 next 128K
5 maxsize 200M;
表空间已更改。
--当数据文件处于脱机状态下不能删除
SQL> alter database datafile 10 offline for drop;
数据库已更改。
SQL> alter tablespace test1 drop datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF';
alter tablespace test1 drop datafile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF'
*
第 1 行出现错误:
ORA-03264: 无法删除本地管理的表空间中的脱机数据文件
SQL> alter database datafile 10 online;
alter database datafile 10 online
*
第 1 行出现错误:
ORA-01113: 文件 10 需要介质恢复
ORA-01110: 数据文件 10: 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF'
SQL> recover datafile 10;
完成介质恢复。
SQL> alter tablespace datafile 10 online;
alter tablespace datafile 10 online
*
第 1 行出现错误:
ORA-02142: ALTER TABLESPACE 选项缺失或无效
SQL> alter database datafile 10 online;
数据库已更改。
五、复制文件
SQL> create directory oracle_home as 'D:\app\yichunmei\product\11.1.0\db_1\database';
目录已创建。
SQL> create directory oracle_dest as 'D:\app\yichunmei\product\11.1.0\db_1\database\bak';
目录已创建。
SQL> BEGIN
2 DBMS_FILE_TRANSFER.COPY_FILE(
3 source_directory_object => 'oracle_home',
4 source_file_name => '1026.txt',
5 destination_directory_object => 'oracle_dest',
6 destination_file_name => '1026_bak.txt');
7 END;
8 /
BEGIN
*
第 1 行出现错误:
ORA-19505: 无法识别文件"D:\app\yichunmei\product\11.1.0\db_1\database\1026.txt"
ORA-27046: 文件大小不是逻辑块大小的倍数
OSD-04012: 文件大小不匹配
O/S-Error: (OS 4) 系统无法打开文件。
ORA-06512: 在 "SYS.DBMS_FILE_TRANSFER", line 84
ORA-06512: 在 "SYS.DBMS_FILE_TRANSFER", line 193
ORA-06512: 在 line 2
SQL> BEGIN
2 DBMS_FILE_TRANSFER.COPY_FILE(
3 source_directory_object => 'oracle_home',
4 source_file_name => 'hc_orcl.dat',
5 destination_directory_object => 'oracle_dest',
6 destination_file_name => 'hc_orcl_bak.dat');
7 END;
8 /
PL/SQL 过程已成功完成。
--由此可知使用oracle复制文件是有限制的,文件大小必须是逻辑块大小的倍数?