HOWTO--在ORACLE中移动数据库文件大全

HOWTO--在ORACLE中移动数据库文件大全


原文地址:http://vongates.itpub.net/post/2553/16532

HOWTO--在ORACLE中移动数据库文件大全

发表人:vongates | 发表时间: 2005年一月29日, 12:50

--ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。
--由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,
--我們可能会考虑移动数据库文件。
--下面以LUNIX平台为例,分别讨论三种数据库文件的移动方法。


一.移动数据文件:
-- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。

1. ALTER DATABASE方法;
-- 用此方法,可以移动任何表空间的数据文件。

STEP 1. 下数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;

STEP 2.用操作系统命令移动数据文件:
-- 将数据文件 'test.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2

STEP 3. Mount数据库,用ALTER DATABASE命令将数据文件改名:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';

STEP 4. 打开数据库:.
SQL> ALTER DATABASE OPEN;
SQL>SELECT NAME,STATUS FROM V$DATAFILE;

2. ALTER TABLESPACE方法:
-- 用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。

STEP1. 将此数据文件所在的表空间OFFLINE:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> ALTER TABLESPACE test OFFLINE;
SQL> EXIT;

STEP2. 用操作系统命令移动数据文件:
将数据文件 'test.ora' 从/ora/oracle/
data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2

STEP3. 用ALTER TABLESPACE命令改数据文件名:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> ALTER TABLESPACE test RENAME DATAFILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';

STEP4. 将此数据文件所在的表空间ONLINE:
SQL> ALTER TABLESPACE test ONLINE;
SQL> SELECT NAME,STATUS FROM V$DATAFILE;

二. 移动控制文件:

-- 控制文件 在 INIT.ORA文件中指定。移动控制文件相对比较简单,下数据库,
-- 编辑INIT.ORA,移动控制文件,重启动数据库。

STEP 1. 下数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;

STEP 2.用操作系统命令 移动控制文件:
--将控制文件'ctl3orcl.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2

STEP 3. 编辑INIT.ORA文件:
INIT.ORA文件的在$ORACLE_HOME/dbs目录下,
修改参数 "control_files",其中指定移动后的控制文件:
control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora)

STEP 4. 重启动数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP;
SQL>SELECT name FROM V$CONTROLFILE;
SQL> EXIT;


三. 移动联机日志文件:
STEP 1. 停数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;

STEP 2. 用操作系统命令移动联机日志文件:
--将联机日志文件'redolog1.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/redolog1.ora /ora/oracle/data2

STEP 3. Mount数据库,用ALTER DATABASE 命令改联机日志文件名:.
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT ;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/redolog1.ora' TO '/ora/oracle/data2/redolog1.ora';

STEP 4.重启动数据库: .
SQL> ALTER DATABASE OPEN;
SQL>SELECT MEMBER FROM V$LOGFILE;

============

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: The ORA-01453 error message is raised when you attempt to execute a statement that attempts to set a transaction parameter after the transaction has already begun. To resolve this error, you need to ensure that the SET TRANSACTION statement is the first statement in the transaction block. The SET TRANSACTION statement is used to specify transaction-level characteristics, such as the transaction isolation level and read consistency. Here's an example of how to use the SET TRANSACTION statement correctly: ``` BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; -- other statements within the transaction COMMIT; END; ``` In this example, the SET TRANSACTION statement is the first statement within the transaction block, followed by other statements within the transaction, and then the COMMIT statement to end the transaction. Make sure that the SET TRANSACTION statement is the first statement within the transaction block to avoid the ORA-01453 error. ### 回答2: ORA-01453是Oracle数据库的一个错误代码,表示执行了一个错误的事务顺序。 ORA-01453错误通常出现在以下情况下:在一个事务执行了不正确的语句顺序,具体来说就是SET TRANSACTION语句不是事务的第一个语句。 在Oracle数据库,SET TRANSACTION语句用于设置事务的各种属性,如隔离级别、读写访问模式等。然而,根据Oracle的规定,SET TRANSACTION语句必须作为事务的第一个语句,也就是在任何其他数据库操作之前执行。 造成这个错误的常见原因是在SET TRANSACTION之前执行了其他数据库操作语句,如INSERT、UPDATE、SELECT等。当数据库检测到SET TRANSACTION不是第一个语句时,就会抛出ORA-01453错误。 要解决这个问题,我们需要确保SET TRANSACTION语句是事务的第一个语句。可以按照以下步骤进行操作: 1. 将SET TRANSACTION语句移动到所有其他数据库操作之前。 2. 确保SET TRANSACTION语句是事务块的第一个语句。 3. 如果SET TRANSACTION语句存在于一个存储过程或函数,确保调用该存储过程或函数之前没有任何其他数据库操作。 总之,ORA-01453错误是由于SET TRANSACTION语句不是事务的第一个语句造成的。正确的解决方法是将SET TRANSACTION语句移到事务的最前面,以确保符合Oracle的语法规定。 ### 回答3: ORA-01453错误是Oracle数据库的一个错误代码,表示"SET TRANSACTION"必须作为事务的第一个语句出现。 事务是数据库操作的基本单位,它可以将一组相关的数据库操作作为一个不可分割的单元来执行,要么全部成功,要么全部回滚。在Oracle数据库,当我们想要在一个事务执行多个操作时,必须使用"SET TRANSACTION"语句来开始一个新的事务。 然而,如果"SET TRANSACTION"不是事务的第一个语句,就会触发ORA-01453错误。换句话说,如果我们在"SET TRANSACTION"之前执行了其他操作,例如查询、更新或插入数据等,就会出现这个错误。 要解决这个问题,我们只需要遵守正确的事务执行顺序,将"SET TRANSACTION"语句放在事务的起始位置即可。这样,我们就可以确保"SET TRANSACTION"是事务的第一个语句。 下面是一个示例,展示了如何正确使用"SET TRANSACTION"语句: ``` BEGIN SET TRANSACTION READ WRITE; -- 执行其他数据库操作 -- ... COMMIT; END; ``` 在这个示例,我们使用"BEGIN"和"END"关键字来定义一个事务块。在事务块,我们首先执行"SET TRANSACTION"语句,然后执行其他需要在事务执行的操作。最后,使用"COMMIT"语句来提交事务,或使用"ROLLBACK"语句来回滚事务。 总而言之,ORA-01453错误意味着"SET TRANSACTION"必须作为事务的第一个语句出现。通过遵守正确的事务执行顺序,我们可以解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值