日期:2014-05-16 浏览次数:20405 次
SQL> select * from v$controlfile; STATUS NAME ------- -------------------------------------------------- D:\ORACLE\ORADATA\C_DB\CONTROL01.CTL D:\ORACLE\ORADATA\C_DB\CONTROL02.CTL D:\ORACLE\ORADATA\C_DB\CONTROL03.CTL SQL> select name ,value from v$parameter where name ='control_files'; NAME VALUE control_files D:\ORACLE\oradata\C_DB\CONTROL01.CTL,D:\ORACLE\oradata\C_DB\CONTROL02.CTL,D:\ORACLE\oradata\C_DB\CONTROL03.CTL
<!--在init.ora文件直接加--> control_files=("D:\ORACLE\oradata\C_DB\CONTROL01.CTL", "D:\ORACLE\oradata\C_DB\CONTROL02.CTL", "D:\ORACLE\oradata\C_DB\CONTROL03.CTL") <!--使用SQL语句--> <!--1.在数据库保持打开时修改SPFILE--> SQL> ALERT SYSTEM SET CONTROL_FILES='D:\ORACLE\oradata\C_DB\CONTROL01.CTL','D:\ORACLE\oradata\C_DB\CONTROL02.CTL','D:\ORACLE\oradata\C_DB\CONTROL03.CTL','D:\ORACLE\oradata\C_DB\CONTROL04.CTL' SCOPE=SPFILE; <!--注:运行命令后,SPFILE会立即修改,但是要重新启动实例后才能生效--> <!--2.关闭数据库--> SQL> SHUTDOWN IMMEDIATE; <!--3.使用系统命令复制文件到新的地址--> $cp D:\ORACLE\oradata\C_DB\CONTROL03.CTL D:\ORACLE\oradata\C_DB\CONTROL04.CTL <!--4.重新启动实例--> SQL> STARTUP;
1.查看 SQL> select member from v$logfile; SQL> select name from v$datafile; SQL> select value from v$parameter where name='control_files'; 2.关闭数据库 SQL> connect as sysdba; SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 3.备份所有的数据文件和重做日志文件(我觉得一般在数据库改动不太大的时候可以不用做) 4.使用NOMOUNT启动数据库 SQL> startup nomount; ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 原因是,使用nomount方式打开数据库,oracle需要打开控制文件,但是不打开数据文件和日志文件。 5.create controlfile文件 create control file reuse database "mydb_name" --数据库实例名 noresetlogs noarchivelog --非同步,非归档 maxlogfiles 32 --最大日志文件32个 maxlogmembers 2 --日志文件组的成员2个 maxdatafiles 32 --文件个数32个 maxinstance 1 --实例数1个 maxloghistory 499 --最大历史日志文件个数499 logfile group 1 '/OS_path/oracle/c_db/t_log1.f' size 500k, group 2 '/OS_path/oracle/c_db/t_log2.f' size 500k # STANDBY LOGFILE DATAFILE '/OS_path/oracle/c_db/t_db1.f', '/OS_path/oracle/dbu9i.dbf' .................... [color=red] 在创建控制文件时,如在附加的控制文件中丢失了任何重做日志文件组,可以应用resetlog选项,以便恢复日志组,如果重新设置了数据库的名字,要制定resetlogs选项,否则要指定noresetlogs选项。 [/color] 6.从中文件创建后,要设置control_files参数使新建的控制文件有效。 SQL> ALERT SYSTEM SET CONTROL_FILES='D:\ORACLE\oradata\C_DB\CONTROL01.CTL','D:\ORACLE\oradata\C_DB\CONTROL02.CTL','D:\ORACLE\oradata\C_DB\CONTROL03.CTL','D:\ORACLE\oradata\C_DB\CONTROL04.CTL' SCOPE=SPFILE; 7.打开数据库 SQL> alter database open 如果使用了resetlogs选项 SQL> alter database open resetlogs;
查询日志文件 SQL> set linesize 180; SQL> col member for a50; SQL> col is_recovery_dest_file for a20; SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER 3 ONLINE D:\ORACLE\ORADATA\C_DB\REDO03.LOG 2 STALE ONLINE D:\ORACLE\ORADATA\C_DB\REDO02.LOG 1 STALE ONLINE D:\ORACLE\ORADATA\C_DB\REDO01.LOG 查询分组,大小,状态 SQL> select group#,bytes/1024/1024 as M ,status,members from v$log; GROUP# M STATUS MEMBERS ---------- ---------- ---------------- ---------- 1 100 INACTIVE 1 2 100 INACTIVE 1 3