蜗牛—ORACLE基础之学习(一)

来源:互联网 发布:手机全透明软件 编辑:程序博客网 时间:2024/05/22 05:02
1、备份控制文件


SQL> conn sys/orcl@orcl as sysdba;
已连接。
SQL> show parameter spfile


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      D:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DBS\SPFILEORCL.ORA
SQL> show parameter control_files;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE\PRODUCT\10.2.0\ORADA
                                                 TA\ORCL\CONTROL01.CTL, D:\ORAC
                                                 LE\PRODUCT\10.2.0\ORADATA\ORCL
                                                 \CONTROL02.CTL, D:\ORACLE\PROD
                                                 UCT\10.2.0\ORADATA\ORCL\CONTRO
                                                 L03.CTL




SQL> alter system set control_files=
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control01.ctl',
  3  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control02.ctl',
  4  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control03.ctl',
  5  'e:\control04.ctl'
  6  scope=spfile;


系统已更改。


SQL> alter database backup controlfile to 'e:\control.bkp';//备份成二进制文件


数据库已更改。


SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host copy e:\control.bkp e:\control04.ctl  //用备份的二进制文件替换控制文件


SQL> conn / as sysdba;
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。


Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              88081160 bytes
Database Buffers          180355072 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter control_files;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE\PRODUCT\10.2.0\ORADA
                                                 TA\ORCL\CONTROL01.CTL, D:\ORAC
                                                 LE\PRODUCT\10.2.0\ORADATA\ORCL
                                                 \CONTROL02.CTL, D:\ORACLE\PROD
                                                 UCT\10.2.0\ORADATA\ORCL\CONTRO
                                                 L03.CTL, E:\CONTROL04.CTL


2、如果某个控制文件丢失或损坏,解决如下:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del e:\control04.ctl  //删除模仿文件丢失


SQL> startup
ORACLE 例程已经启动。


Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              92275464 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
ORA-00205: ?????????, ??????, ???????   //启动出现问题




SQL> shutdown immediate
ORA-01507: ??????




ORACLE 例程已经关闭。
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control01.ctl e:\control04.ctl  //已有控制文件复制一份


SQL> startup
ORACLE 例程已经启动。


Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              92275464 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。


//第二种解决方法:修改control_files参数,以删除损坏或丢失的控制文件
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del e:\control04.ctl


SQL> startup nomount
ORACLE 例程已经启动。


Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              92275464 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
SQL> alter system set control_files=
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control01.ctl',
  3  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control02.ctl',
  4  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Control03.ctl'
  5  scope=spfile;


系统已更改。




SQL> shutdown immediate
ORA-01507: ??????




ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。


Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              92275464 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。


3、备份到文本文件




SQL> alter database backup controlfile to trace;


数据库已更改。


SQL> show parameter user_dump_dest;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      D:\ORACLE\PRODUCT\10.2.0\ADMIN
                                                 \ORCL\UDUMP
//打开D:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP\orcl_ora_2368.trc(按照修改时间进行查看)




//重做日志文件管理


1、添加重做日志文件组




SQL> alter database add logfile
  2  group 4 ('e:\redo04_1.log', 'e:\redo04_2.log')
  3  size 10M;


数据库已更改。


SQL> alter database backup controlfile to trace;


数据库已更改。//可以从跟踪文件中发现添加重做日志文件会修改控制文件


2、添加重做日志文件组的成员
                                                
SQL> alter database add logfile member
  2  'e:\redo04_3.log'
  3  to group 4;


数据库已更改。


SQL> set pagesize 40 linesize 120
SQL> column group# format 99999
SQL> select * from v$log; //可以查看各日志组的状态


3、添加日志组成员


SQL> alter database add logfile member
  2  'e:\redo02_2.log'
  3  to group 2;


数据库已更改。


SQL> set pagesize 40 linesize 120
SQL> column group# format 99999
SQL> select * from v$log;


GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
     1          1         53   52428800          1 NO  INACTIVE               2561365 08-10月-09
     2          1         54   52428800          2 NO  CURRENT                2597752 09-10月-09
     3          1         52   52428800          1 NO  INACTIVE               2505648 07-10月-09
     4          1          0   10485760          4 YES UNUSED                       0


//验证不能删除current日志组及成员
SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
第 1 行出现错误:
ORA-01623: 日志 2 是实例 orcl (线程 1) 的当前日志 - 无法删除
ORA-00312: 联机日志 2 线程 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 联机日志 2 线程 1: 'E:\REDO02_2.LOG'




SQL> alter database drop logfile member
  2  'e:\redo02_2.log';
alter database drop logfile member
*
第 1 行出现错误:
ORA-01609: 日志 2 是线程 1 的当前日志 - 无法删除成员
ORA-00312: 联机日志 2 线程 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 联机日志 2 线程 1: 'E:\REDO02_2.LOG'


//手动进行日志切换
SQL> alter system switch logfile;


系统已更改。


SQL>  select * from v$log;


GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
     1          1         53   52428800          1 NO  INACTIVE               2561365 08-10月-09
     2          1         54   52428800          2 NO  ACTIVE                 2597752 09-10月-09
     3          1         52   52428800          1 NO  INACTIVE               2505648 07-10月-09
     4          1         55   10485760          4 NO  CURRENT                2600388 09-10月-09


SQL> alter database drop logfile member
  2  'e:\redo02_2.log';


数据库已更改。//说明可以删除active组的成员


4、清除重做日志文件组






5、移动日志组


SQL> host copy e:\redo04_1.log e:\oracle\redo04_01.log


SQL> 
SQL>  alter database rename file
  2   'e:\redo04_1.log'
  3   to
  4  'e:\oracle\redo04_1.log';


数据库已更改。


SQL> select group#,member from v$logfile; //查看修改后的group4中的成员



0 0