CREATE TABLE AS...
a.using the create table .. as select ..commend will copy across to the new table all the data,but all the constaints tringgers, and so on whll not be transfered to the new table
简单的说,not null可以传递过来,其他的索引主键触发器 default value都不能传递
CREATE OR REPLACE VIEW AS ...
WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。--建立视图 列必须有别名
1.简单视图可以执行DML操作;
2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行;
3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:
a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;
b.使用表达式定义的列;
c.ROWNUM伪列。
d.基表中未在视图中选择的其他列定义为非空且无默认值。
WITH CHECK OPTION 子句
CREATE VIEW c_cons_view1 AS SELECT a.cons_id,a.cons_no,a.build_date FROM c_cons a WHERE a.build_date>SYSDATE-365;
同样对视图做dmL操作时需满足where的条件
日志写进程 LGWR
lgwr写的条件
提交的时候
达到三分之一满的时候
日志的大小达到1m
每隔三秒
在DBWN进程写之前
Kill LGWR进程
ho ps -ef|grep ora_|grep lgw
CKPT 。。(scn)
作用
给信号给DBWN
更新数据文件头
更新控制文件
归档日志进程 ARCN/ARCH
如果oracle数据库的的数据文件丢失或损坏,一般数据库要进行完全恢复,oracle数据库应运行在归档方式下
在oracle数据库中,重做日志文件被划分为若干个组,当一组重做日志被写满后就开始写下一组重做日志,被称为日志切换,切换是以循环方式进行,即当最后一组写满,又开始写第一组,因此如果只有重做日志文件,即oracle运行在乎非归档模式下,当遇到数据文件丢失或损坏时,oracle就很难保证恢复数据,因为此时所需的重做记录可能因重做日志损坏而被覆盖掉了
在归档模式下,arcn进程将把切换后的重做日志复制到归档日志文件,可以把归档日志文件看成是重做日志文件的备份,但归档日志文件是脱机的
ho ps -ef|grep ora_|grep arc 查看归档相关进程
select log_mode from v$database;
查看数据库是否处于归档模式
更改数据库为归档模式
a.shutdown immeidate
b.startup mount
c.alter database arcivelog;
d.alter database open;
alter system switch logfile 是用手工的方式,让Oracle 直接使用下一个日志组,而不管当前使用的日志组是否写满。
show parameter db_rec; 查看归档日志路径
alter system switch logfile 是强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档前的重做日志,若自动归档没有打开,就不归档当前重做日志。)
show parameter log_archive_max_processes查看归档进程的最大个数 最多可以20个
查看数据库名:
a.show parameter db_name
b.select name from v$database;
同样 查找实例名
a.show parameter instance_name
b.select instance_name from v$instance;
实例和数据库构成了oracle服务器
数据文件
select name from v$datafile;
控制文件
select name from v$controlfile;;
日志文件
select member from v$logfile;
归档文件
select name from v$archived_log;
参数文件
select value from v$parameter where name='spfile'
密码文件
ho ls $ORACLE_HOME/dbs/oraps$ORACLE_SID