|
|
用户名:kes2000 笔名:博客 地区: 湖北-武汉 行业:研究/评论 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
Oem10g grid control
oracle学习笔记2
SGA
sga_target<=sga_max_size。
show sga;
1、sga_max_size是静态参数,sga_target是动态参数。
2、设置了sga_target后oracle会自动调节db_cache_size、shard_pool_size、large_pool_size和java_pool_size的大小。
FRA
show parameter recovery
show parameter db_recovery
show parameter log_archive_dest
FRA(Flash Recovery Area)可以用来存放RMAN备份,Online Redo Logs, Archived Redo Logs, Controlfile Autobackups以及Flashback logs。Archived log只在你设置了db_recovery_file_dest但是没有指定log_file_dest_n的时候,oracle便会自动将log_file_dest_10设为db_recovery_file_dest,你的archived logs才会进入FRA。FRA是由Oracle自动管理的。如果空间不足,Oracle便会清理不再需要的文件,例如过期的备份。另外,2G也不一定是强制性的。当你设置了garanteed restore point,FRA便会一直增长而不会受2G的限制。
select member from v$logfile;
statistics_level
statistics_level 默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:
ASH(Active Session History)
ASSM(Automatic Shared Memory Management)
AWR(Automatic Workload Repository)
ADDM(Automatic Database Diagnostic Monitor)
alter system set statistics_level=basic;
select count(*) from dba_objects,dba_objects;
select cpu_time,elapsed_time,disk_reads from v$sql where sql_text='select count(*) from dba_objects,dba_objects ';
savepoint
savepoint before_delete;
rollback to before_delete;
select * from nls_session_parameters;
imp/exp
exp
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
exp system/manager@TEST file=d:daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp wner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2
file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
imp
1 将D:daochu.dmp 中的数据导入TEST数据库中。
imp system/manager@TEST file=d:daochu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
2 将d:daochu.dmp中的表table1导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
MERGE
MERGE语法如下:
MERGE [hint] INTO [schema .] table [t_alias] USING [schema .]
{ table | view | subquery } [t_alias] ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
例:
MERGE INTO tdest d
USING tsrc s ON (s.srckey = d.destkey)
WHEN MATCHED THEN
UPDATE SET d.destdata = d.destdata + s.srcdata
WHEN NOT MATCHED THEN
INSERT (destkey,destdata) VALUES (srckey,srcdata)
在Oracle 10g中MERGE有如下一些改进:
1、UPDATE或INSERT子句是可选的
2、UPDATE和INSERT子句可以加WHERE子句
3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表
4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行
●可省略的UPDATE或INSERT子句
(1)MERGE INTO products p
USING newproducts np
ON (p.product_id = np.product_id)
WHEN MATCHED THEN
UPDATE
SET p.product_name = np.product_name,
p.category = np.category;
(2)MERGE INTO products p
USING newproducts np
WHEN NOT MATCHED THEN
INSERT
VALUES (np.product_id, np.product_name,
np.category);
●带条件的Updates和Inserts子句
(1)MERGE INTO products p
USING newproducts np
ON (p.product_id = np.product_id)
WHEN MATCHED THEN
UPDATE
SET p.product_name = np.product_name
WHERE p.category = np.category;
(2)MERGE INTO products p
USING newproducts np
ON (p.product_id = np.product_id)
WHEN MATCHED THEN
UPDATE
SET p.product_name = np.product_name,
p.category = np.category
WHERE p.category = 'DVD'
WHEN NOT MATCHED THEN
INSERT
VALUES (np.product_id, np.product_name, np.category)
WHERE np.category != 'BOOKS'
●无条件的Inserts
MERGE INTO products p
USING newproducts np
ON (1=0)
WHEN NOT MATCHED THEN
INSERT
VALUES (np.product_id, np.product_name, np.category)
WHERE np.category = 'BOOKS'
●新增加的DELETE子句
MERGE INTO products p
USING newproducts np
ON (p.product_id = np.product_id)
WHEN MATCHED THEN
UPDATE
SET p.product_name = np.product_name,
p.category = np.category
DELETE WHERE (p.category = 'ELECTRNCS')
WHEN NOT MATCHED THEN
INSERT
VALUES (np.product_id, np.product_name, np.category)
Automatic Storage Management
drop diskgroup dgroup1;
create diskgroup dgroup1 normal redundancy failgroup fgroup1 disk 'ORCL:VOL1', 'ORCL:VOL2' failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
create diskgroup dgroup2 external redundancy disk 'ORCL:VOL5','ORCL:VOL6';
select group_number,state,type,total_mb,free_mb From v$asm_diskgroup;
select group_number,disk_number,mount_status,header_status,state,total_mb,free_mb,name,failgroup from v$asm_disk order by PATH;
create tablespace tspace1;
select name From v$datafile;
create tablespace tspace2 datafile '+dgroup1' size 10m autoextend on;
select name,bytes From v$datafile;
ALTER DATABASE DATAFILE '+DGROUP1/orcl/datafile/tspace1.256.679316749' RESIZE 10M;
drop tablespace myundo;
create undo tablespace myundo datafile '+dgroup1/mydir/my_undo_ts' size 20m;
select name,group_number,file_number,alias_directory,system_created from V$ASM_ALIAS;
alter diskgroup dgroup1 drop file '+dgroup1/mydir/my_undo_ts';
alter diskgroup dgroup1 add alias '+dgroup1/mydir/tsapce1.dbf' for '+dgroup1/orcl/datafile/TSPACE1.256.679316749';
alter diskgroup dgroup1 rename alias '+dgroup1/mydir/tsapce1.dbf' to '+dgroup1/mydir/tsapce1.datafile';
select reason,metric_value from dba_outstanding_alerts;
oracle学习笔记
初始化设置
cd $ORACLE_HOME/dbs
export ORACLE_SID=qnetdb
export NLS_LANG=american_america.AL32UTF8
export NLS_LANG="SIMPLIFIEDCHINESE_CHINA.ZHS16GBK"
FGA
细密纹理审计(Fine-grained Auditing FGA),可以同SCN数重新构造老的数据来记录更低层次的变化。通过指定一个新的参数,FGA可以包含 INSERT、UPDATE 和 DELETE:
statement_types => 'INSERT, UPDATE, DELETE, SELECT'
statement_type 参数默认情况下只审计 SELECT 语句。
在 FGA 审线索中,获取赋值变量的值:audit_trail = DB_EXTENDED,停止获取audit_trail => DB,默认情况下,捕获赋值变量,这个参数的值为 DB_EXTENDED。
1.用sys帐号建立用户并赋权限
SQL>grant connect,resource to BANK identified by bank;
2.登入bank帐号建立accounts表
create table ACCOUNTS(acct_no number not null,cust_id number not null,balance number(15,2));
3.用sys帐号建立审计规则
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS'
);
end;
4.bank帐号查询accounts表
select * from bank.accounts;
(经测试sys用户查询此表时不会记录在审计信息中,其它用户访问时则会记录)
5.sys用户查询审计信息
select timestamp,db_user,os_user,object_schema,object_name,sql_text
from dba_fga_audit_trail;
可以增加审计列和审计条件,如下:
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS',
audit_column => 'BALANCE',
audit_condition => 'BALANCE >= 11000'
);
end;
删除审计策略
begin
dbms_fga.drop_policy (
object_schema => 'BANK',
object_name => 'ACCOUNTS',
policy_name => 'ACCOUNTS_ACCESS'
);
end;
停用审计策略
begin
dbms_fga.enable_policy (
object_schema => 'BANK',
object_name => 'ACCOUNTS',
policy_name => 'ACCOUNTS_ACCESS',
enable => FALSE
);
end;
要重新启用它,可使用同一函数,但是将参数 enable 设置为 TRUE。
也可以对存储过程进行审计,用以下两个参数:
handler_schema 拥有数据过程的模式
handler_module 过程名称
FGA 数据字典视图
FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES 中。
审计线索收集在 SYS 拥有的表 FGA_LOG$ 中。DBA_FGA_AUDIT_TRAIL 是该表上的一个视图。
FGA 和常规审计的差异
① 标准审计必须用参数 AUDIT_TRAIL 在数据库级启用。这个参数不是动态的;您必须重启数据库来使其生效。相比而言,FGA 不需要任何参数修改。一旦被设置在一个对象上,标准审计将保持在那里。要解除它,您必须用 NOAUDIT 命令删除审计选项。这可能很不方便,因为在一个表上丢弃审计选项也将丢弃元数据信息。然而,FGA 可以临时禁用和启用,不丢失任何元数据信息。
② FGA 只能够处理四种类型的语句:SELECT、INSERT、UPDATE 和 DELETE。相比而言,常规审计可以处理其它许多语句和权限,甚至会话连接和断开。
③ 标准审计每次会话只创建一条记录(按会话)或每次访问对象创建一条记录(按访问)这种占用资源很少的方式对于控制审计线索表中的空间非常重要。FGA 并不是同样节省资源;它每次访问运行一次 — 使得线索更大。
④ 通过记录线索,标准审计可以用来检测任何中断企图,如果企图没有成功,则将产生错误代码。而 FGA 不能。
⑤ 标准审计可以写数据库表或OS文件。而FGA 日志仅写到数据库表 FGA_LOG$ 中。虽然可以在 FGA 中创建用户自定义的审计处理程序来写OS文件,但它们的完整性不能保证。
⑥ 标准审计可以设置用于默认对象。当表是在运行期创建时,这个功能变得极为有用:默认的审计选项允许没有数据库管理员干预的审计。这在 FGA 中是不可能的,用户必须在一个现有的表上创建策略,上述的情况只能在表已创建之后才可能发生。
⑦ 在 FGA 中,SQL 赋值变量默认被捕获。在常规审计中,必须把初始化参数 audit_trail设为 db_extended,才能启用这一功能。
⑧ 权限差异:常规审计需要审计系统或语句权限;FGA 只需要 dbms_fga 程序包上的运行权限。
打开数据库
sqlplus "sys/necsthz as sysdba"
startup nomount
alter database mount;
alter database open;
1.安装启动
SQL> startup {pfile=
该方式启动数据库的的用途一般为:
为数据文件更名;
增加、删除或改名事物日志文件;
使事物日志归档模式选项有效或失效;
进行完整数据库的恢复操作
2.非安装启动
SQL> startup {pfile=
该方式启动数据库的用途一般为:
创建一新的数据库
打开监听
lsnrctl start
关闭数据库
shutdown normal;
shutdown immediate;
shutdown abort;
进入ARCHIVELOG模式
startup mount
alter database archivelog;
alter database open;
archive log list;
archive log all;
闪回
1.启用闪回数据库特性
startup mount;
alter database archivelog;
# archive log start;
alter database flashback on;
alter database open;
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;
2.闪回日志
/data5/flash_recovery_area/EYGLE/flashback
3.进行闪回操作
shutdown immediate;
startup mount;
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select * from V$FLASHBACK_DATABASE_LOG;
flashback database to timestamp to_timestamp ('2005-03-29 17:02:28','yyyy-mm-dd hh24:mi:ss');
4.resetlogs打开数据库
shutdown immediate;
startup mount;
#alter database open resetlogs;
alter database open noresetlogs
select * from v$log;
注意,一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点。
备份
一致性备份(consistent backup)的含义是,备份所包含的各个文件中的所有修改都具备相同的系统变化编号(system change number,SCN)。也就是说,备份所包含的各个文件中的所有数据均来自同一时间点。与非一致性备份(inconsistent backup)不同,使用一致性数据库完全备份(consistent whole database backup)进行复原(restore)后,不需要执行恢复操作(recovery)。
非一致性备份(inconsistent backup)的含义是,在数据库处于打开(open)状态时,或数据库异常关闭(shut down abnormally)后,对一个或多个数据库文件进行的备份。
RMAN
分两种情况,incremental的和cumulitive的,前者备份跟自己同级或比自己级别低的,后者只备份比自己级别低的。例如,incremental:level1备份上一次level1或level0以来的变化,level2备份上一次level2或level1或level0以来的变化。cumulitive:level1备份上一次level0以来的变化,level2备份上一次level1或level0以来的变化。
[切换数据模式]
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> exit (退出)
[制作备份]
1.连接到rman
c:\> rman
rman> connect target /
2.不备份索引表空间
rman> configure exclude for tablespace smsafeindex;
3.自动备份控制文件
rman> configure controlfile autobackup on;
4.做增量0的备份压缩集,不包括索引表空间
rman> backup incremental level 0 as compressed backupset database;
5.做增量1备份
rman> backup incremental level 1 as compressed backupset database;
6.做增量1积累备份
rman> backup incremental level 1 cumulative as compressed backupset database;
7.备份全库并删除旧的归档日志
rman> backup database plus archivelog delete input;
8.备份指定表空间
rman> backup tablespace system plus archivelog delete input;
9.备份归档日志
rman> backup archivelog all delete input;
[查看备份]
1.查看备份
rman> list backup;
2.验证备份
rman> validate backupset 6;
[从备份恢复]
1.进入nomount模式
c:\> sqlplus / as sysdba
sql> shutdown immediate;
sql> startup nomount;
2.基于时间点的恢复
export ORACLE_SID=orcl
rman> target / nocatalog
rman> set DBID=1454675292
rman> startup nomount;
rman> restore controlfile from autobackup;
--rman> restore controlfile to '/backup1/controlfile01.ctl' from autobackup;
rman> alter database mount;
rman> restore database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')";
rman> recover database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')";
rman> alter database open resetlogs;
3.restore数据库
rman> restore database skip tablespace smsafeindex;
因为备份的时候没有备份索引表空间,因此这里必须要复制一个过来,否则会出现 数据文件6需要重新存贮的错误
这里会从最后一次可用的增量0备份恢复。
4.recover数据库
rman> recover database skip forever tablespace smsafeindex;
这里从增量备份中恢复数据库
5.删除并重建索引表空间
sql> drop tablespace smsafeindex including contents;
sql> create tablespace smsafeindex
datafile 'd:\oracle\product\10.2.0\orcl\smsafeindex01.dbf' size 1G;
查看连接
select sid,username,program from v$session;
emctl start| stop| status| setpasswd dbconsole
tnsping qnetdb
SQL>show parameter mttr
fast_start_mttr_target integer 300
这个参数说明当instance&nsp;recovery 的时候,数据库能够在300s之内open。
undo_retention
1、先解释下undo_retention
设置undo_retention,保证commit后的数据在undo segment中保留多长时间。但是并不能保证commit后的undo信息在undo_retention的时间内一定不被覆写,当undo segment不够时,还是会覆盖已commit的undo信息。
2、如果需要保证在undo_retention时间内undo信息一定不被覆写的话,可以对undo segment设置RETENTION GUARANTEE。如果设置了guarantee,意味着所有undo在undo retention指定的时间范围内都不能被覆盖,如果在此时间段内有大量的小事务,虽然每个事务使用的undo不大,但总量是巨大的,那么undo tablespace 将很快的被耗光。这个参数同时还受到undo_retention和undo size的限制。如果undo size太小,undo_retention设置太久,设置retention guarantee就会报错:
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'
3、设置该参数
alter tablespace undotbs2 retention guarantee
撤销该参数
alter tablespace undotbs2 retention noguarantee
审计
/*启动对表的select动作*/
audit select on user.table_name by session;
/*by session在每个session中发出command只记录一次,by access则每个command都记录*/
audit [create table][select/update/insert on object by session/access][whenever successful/not successful];
/*取消审计*/
noaudit select on user.table_name;
/*查被审计信息*/
select * from all_def_audit_opts/dba_stmt_audit_opts/dba_priv_audit_opts/dba_obj_audit_opts;
/*获取审计记录*/
select * from dba_audit_trail/dba_audit_exists/dba_audit_object/dba_audit_session/dba_audit_statement;
日本的出租屋
远看像个无证乱搭建的违法建筑
近看更像了
走进去一看,嗯,原来违法建筑可以建成这样啊
里面像模像样的,电视、洗衣机、冰箱、电磁炉、微波炉、浴缸、厨房。。。。比我在国内弄的还好。。。

常用GDB命令
GDB很强大也很简单。基本调试用以下命令足够了。
(1)准备工作 gcc -o test -g test.c
(2)加载文件 file test
(3)显示源程序 list
(4)设置断点 b 101
(5)执行程序 run /home/test.csv 12
(6)打印变量 print sTemp
(7)设置变量 set sTemp="Test"
(8)跳到制定行数执行 jump 102
(9)执行下一行 next step
(10)退出 quit
日本沈没
夢は何故かはかなくて
朝の風がそっと奪う
恋は不意に苦しめて
言葉行き場すべて閉じこめる
途切れない
この願い
声に成らない愛しさは
堪えるほどに溢れ出してく
守りたい
迷わない
重ねた鼓動果てまで
回り逢えた命は
時も越えて響きあう
たとえ涙落としても
抱きしめられてずっとKeep holding you
君がくれた情熱を
季節に変えて返していこう
君に染まるメロディーを
風に乗せてずっと届けよう
守りたい
迷わない
胸のつこさ翼広げて
この宇宙を色取る
かけらのまま感じあう
たとえ遠く離れても
抱きしめているずっと
めぐり逢えた命は
時も越えて響きあう
たとえ涙落としても
抱きしめられてずっとKeep holding you
Let me love you
I will hold you
Let me squeeze you
And we're gonna sing this song
Let me love you
I will hold you
Let me squeeze you
Baby on and on and on