lichanggu's Blog

自娱自乐

   :: 首页 :: 联系 ::  :: 管理

DOS下的查FIND命令:
FIND /I /N "OPEN_CURSORS" SPFILETESTDB.ORA

SQL> alter system reset open_cursors SCOPE=spfile SID='*'
详见《spfile-reset.txt》


$export LANG=en_US.UTF-8

alter session set nls_language=american;

日期格式
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_date_format='YYYY-MM-DD HH:MI:SS AM';
SELECT SYSDATE FROM DUAL;

alter session set NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24.MI.SSXFF';
alter session set NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24.MI.SSXFF';
SELECT SYSTIMESTAMP FROM DUAL;

启用/不启用闪回日志记录,在MOUNT状态下
alter database flashback on|off;
select  FLASHBACK_ON from v$database;


select * from nls_database_parameters;
select * from nls_instance_parameters;
select * from nls_session_parameters;

SELECT * FROM V$NLS_VALID_VALUES
SELECT * FROM V$NLS_PARAMETERS


//关于回滚段
select distinct segment_type from dba_segments;
select segment_type,count(segment_type) from dba_segments group by segment_type;
select * from dba_rollback_segs;

 

show user    //显示当前用户
select * from v$version;

ALTER USER xxx ACCOUNT LOCK|UNLOCK;
ALTER USER xxx PASSWORD EXPIRE;用xxx登录输入新口令
select * from v$pwfile_users;

031

show sga
show parameter sga_max_size   //SGA最大值
show parameter shared_pool
show parameter db_cache
show parameter log_buffer

alter system set db_cache_size=xxM    //更改


select * from v$bgprocess;

select * from v$datafile;
select * from v$controlfile;
select * from v$logfile;
select * from v$log;
select * from v$tempfile;


dbca
netca
netmgr
runInstaller
oemapp console

orapwd file=<fname> password=<password> entries=<users>
select * from v$pwfile_users;  查特权用户

select name,value from v$system_parameter;   查询系统参数

alter system set xxx=value scope=memory|spfile|both;
alter session set yyy=value;

create spfile=<fname> from pfile;
create pfile=<fname> from spfile;

create tablespace test1 datafile '/opt/ora9/oradata/test/test1.dbf' size 10m;
drop tablespace test1 including contents and datafiles;

startup [nomount|mount|open]
 pfile=
 restrict
 recovery
 force
    

startup nomout;
alter database mount;
alter database open [read only];

alter system enable restricted session;
alter system disable restricted session;

shutdown normal|transaction|immediate|abort


----05
select * from dba_users;
select * from dba_objects;

select * from dba_tables;
select * from all_tables;
select * from user_tables;

desc dictionary      //数据字典
select * from dictionary

desc v$fixed_table     //动态性能表
select * from v$fixed_table;


set serveroutput on
execute dbms_output.put_line('hello!')

-----6
select * from v$tablespace;
alter tablespace users begin backup;
select * from v$backup;
alter tablespace users end backup;

//显示已归档的日志
select * from v$archived_log;

//显示控制文件的信息
select * from v$controlfile;
select * from v$parameter where name like 'control%';
show parameter control;
show parameter control_files
select * from v$controlfile_record_section;

alter system set control_files=
 '/opt/ora9/oradata/ora9i/control01.ctl',
 '/opt/ora9/oradata/ora9i/control02.ctl',
 '/opt/ora9/oradata/ora9i/control03.ctl',
 '/opt/ora9/oradata/ora9i/control04.ctl'
 scope=spfile;

show parameter spfile;
show parameter pfile;
startup pfile=/opt/ora9/product/9.2/dbs/initora9i.ora  //注意这个目录是指本机。

备份控制文件的方法:
1、shutdown后,拷贝控制文件
2、在线备份:
   alter database backup controlfile to '/opt/ora9/oradata/ora9i/control.bak';
或 alter database backup controlfile to trace;  //在udump下产生了一个trace文件,该文件包含生成控制文件所需要的脚本。

-----7
alter system switch logfile;  //强制日志switch
alter system checkpoint;

//增加日志组
alter database add logfile group 4
 '/opt/ora9/oradata/LMOA/redo04.ora' size 10m;
alter database add logfile group 5
 ('/opt/ora9/oradata/LMOA/redo05A.ora','/opt/ora9/oradata/LMOA/redo05B.ora') size 10m;

//增加日志组的成员
alter database add logfile member
 '/opt/ora9/oradata/LMOA/redo03B.ora' to group 3,
 '/opt/ora9/oradata/LMOA/redo04B.ora' to group 4;

//删除日志组
alter database drop logfile group 4;

//删除日志组的成员
alter database drop logfile member '/opt/ora9/oradata/LMOA/redo04B.ora'

//清除在线日志
alter database clear logfile group 1;
alter database clear unarchived logfile group 1; //清除未归档日志,需马上作full backup

//更改日志文件
alter database rename file '/opt/ora9/oradata/test/redo01.log'
 to '/opt/ora9/oradata/test/redo01a.log';


设置归档
shutdown immediate
startup mount
alter database archivelog/noarchivelog
alter database open;
archive log list;
full db backup


启动自动存档
[alter system] archive log start/stop;

手工归档所有日志
alter system archive log all;

查看已归档的日志文件
select * from v$archived_log;

日志挖掘
logmnr--1) set directory utl_file_dir
 2) restartup
 3) create directory file
    dbms_logmnr_d.build
 4) add/remove log file
    dbms_logmnr.add_logfile
    dbms_logmnr.remove_logfile
 5) start logmnr
    dbms_logmnr.start_logmnr
 6) v$logmnr_content--sqlredo/sqlundo


-----8
//获取表空间等信息
select * from dba_tablespaces;
select * from v$tablespace;
select * from dba_data_files;
select * from v$datafile;
select * from dba_temp_files;
select * from v$tempfile;

//不包括临时文件
select t1.name,t2.name   
from v$tablespace t1,v$datafile t2
where t1.ts#=t2.ts#;

//包括临时文件
select t1.name,t2.name   
from v$tablespace t1,(select ts#,name from v$datafile union select ts#,name from v$tempfile) t2
where t1.ts#=t2.ts#;

select * from dba_rollback_segs; //系统回滚段

alter user licg quota 10m on users;
alter user licg quota unlimited on users;

create tablespace test
datafile '/opt/ora9/oradata/test/test.dbf' size 100M
autoextend on next 5M maxsize 200M;

create tablespace stk_ts
datafile '/opt/ora9/oradata/test/stk_ts01.dbf' size 20M
extent management local uniform size 512k/autoallocate;

create undo tablespace undo1
datafile '/opt/ora9/oradata/test/undo101.dbf' size 100m;

create temporary tablespace temp1
tempfile '/opt/ora9/oradata/test/temp101.dbf' size 50m
extent management local uniform size 10m;

alter database default temporary tablespace temp1;

alter tablespace xxx offline|online;
alter tablespace xxx read only;
drop tablespace xxx;  再删除OS文件
drop tablespace xxx including contents and datafiles;

//扩张
alter database datafile '/opt/ora9/oradata/test/test.dbf' resize 150M;
alter database datafile '/opt/ora9/oradata/test/test.dbf' autoextend on;
alter tablespace users add datafile '/opt/ora9/oradata/test/users02.dbf' size 10m;

//移动表空间
alter tablespace test offline;
移动OS文件
alter tablespace test
rename datafile '/opt/ora9/oradata/test/test.dbf'
      to '/opt/ora9/oradata/test/test01.dbf';
alter tablespace test online;

//移动系统表空间
start mount;
移动OS文件
alter database
rename file '/opt/ora9/oradata/test/system01.dbf'
  to '/opt/ora9/oradata/test/system.dbf';
alter database open;

-----9
 扩展段
alter table test allocate extent(size 1m);
alter table test deallocate unused;

select * from dba_tablespaces;
select * from dba_data_files;
select * from dba_free_space;
select * from dba_segments;
select * from dba_extents;

//计算某对象占的空间
select sum(bytes) from dba_extents
where owner='SYS' and segment_name='TEST';


----10
alter tablespace users offline immediate;
recover datafile '/opt/ora9/oradata/test/users01.dbf';
或者recover datafile 5;
alter tablespace users online;

alter system set undo_tablespace=undo1   //可建多个UNDO表空间,但一个实例在任何时刻只能使用一个

execute dbms_flashback.enable_at_time('26-JAN-04:12:17:00 pm');
select * from xxx;
execute dbms_flashback.disable;

select end_time,begin_time,undoblks from v$undostat;

select * from dba_rollback_segs;
select * from v$rollname;
select * from v$rollstat;
select * from v$undostat;
select * from v$session;
select * from v$transaction;

----11
desc dbms_rowid

create global temporary table xxx
on commit delete|preserve rows
as select * from test;

alter table test allocate extent(size 500k,datafile '...');
alter table test deallocate unused [keep 2K];
alter table test move tablespace data1;

//建索引
create index testindex1
on test(id) tablespace users;

alter index testindex1 rebuild;
drop table test cascade constraint;

alter table test drop column yyy [cascade constraints];

alter table test set unused column yyy [checkpoint 1000];
alter table test drop unused columns [continue] [checkpoint 1000];

select * from dba_tables;
select * from dba_objects;


-----12

alter inde xxx coalesce;
analyze index xxx validate structure;
desc index_stats;
select * from user_indexes;
alter index xxx monitoring|nomonitoring usage;

select * from dba_indexes;
select * from dba_ind_columns;
select * from dba_ind_expressions;
select * from v$object_usage;

-----13
alter table authors
add constraint pk_1 primary key(au_id);

alter table authors
add constraint uk_1 unique(au_lanme,au_fname);

alter table sales
add constraint fk_sales foreign key(stor_id) references stores(stor_id);

alter table stores
add constraint ck_stores_1 check(stor_name like 'B%')
[enable novalidate];

alter table authors drop constraint pk_1;

select * from dba_constraints;
select * from dba_cons_columns;

-----14
alter user test account lock|unlock|password expire;
SQL>password

select * from dba_users;
selecT * frm dba_profiles;

-----15
create user test
identified by tttt
default tablespace users
temporary tablespace temp1
quota 15m on users
password expire;

alter user testuser quota 10m on temp;

select * from dba_users;
select * from dba_ts_quotas;


-----16
DBA_SYS_PRIVS  lists system privileges granted to users and roles
SESSION_PRIVS  lists the privileges that are currently available to the user
DBA_TAB_PRIVS  lists all grants on all objects in the database
DBA_COL_PRIVS  describes all object column grants in the database.


-----17
DBA_ROLES  All roles that exist in the database
DBA_ROLE_PRIVS  Roles granted to users and roles
ROLE_ROLE_PRIVS Roles that are granted to roles
DBA_SYS_PRIVS  System privileges granted to users and roles
ROLE_SYS_PRIVS  System privileges granted to roles
ROLE_TAB_PRIVS  Object privileges granted to roles
SESSION_ROLES  Roles that the user currently hasenabled

-----18
create tablespace testtb datafile 'D:\oracle\oradata\sales\testtb01.dbf' size 5M
AUTOEXTEND ON NEXT 2M
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO;


alter tablespace testtb add datafile 'D:\oracle\oradata\sales\testtb02.dbf' size 5m;

alter database datafile 'D:\oracle\oradata\sales\testtb01.dbf' autoextend off;
alter database datafile 'D:\oracle\oradata\sales\testtb02.dbf' autoextend on;

 


select * from USER_OBJECTS WHERE status!='VALID';
select * from USER_INDEXES WHERE status!='VALID';

 

declare incr number := 1;
begin
update t1 set age=age+incr;
commit;
end;

 

create or replace procedure inc_age(incr number) as
begin
update t1 set age=age+incr;
commit;
end;


create or replace package numbers
as
function odd_even(v1 number) return varchar2;
procedure ins_ints(v1 in number);
end numbers;


----改日志文件大小-------------------------------------
alter database add logfile group 4 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CTS\REDO04.LOG' size 100m;
alter database add logfile group 5 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CTS\REDO05.LOG' size 100m;

alter system archive log current;
alter system archive log current;
alter system checkpoint;

alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

alter database add logfile group 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CTS\REDO01.LOG' size 100m;
alter database add logfile group 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CTS\REDO02.LOG' size 100m;
alter database add logfile group 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CTS\REDO03.LOG' size 100m;

alter system archive log current;
alter system archive log current;
alter system checkpoint;

alter database drop logfile group 4;
alter database drop logfile group 5;


-- MERGE 命令 ------------------------------------------
MERGE INTO test D
USING (SELECT id,name FROM test1 WHERE id <=18) S
ON (D.id = S.id)
WHEN MATCHED THEN UPDATE SET D.name = S.name DELETE WHERE (S.id >=5)
WHEN NOT MATCHED THEN INSERT (D.id, D.name) VALUES (S.id, S.name);
commit;


MERGE INTO test D
USING (SELECT id,name FROM test1 WHERE id <=18) S
ON (D.id = S.id)
WHEN MATCHED THEN UPDATE SET D.name = S.name WHERE (S.id >=5)
WHEN NOT MATCHED THEN INSERT (D.id, D.name) VALUES (S.id, S.name)
WHERE (S.id <=16);
commit;

MERGE INTO test D
USING (SELECT id,name FROM test1 WHERE id <=18) S
ON (D.id = S.id)
WHEN MATCHED THEN UPDATE SET D.name = S.name
WHEN NOT MATCHED THEN INSERT (D.id, D.name) VALUES (S.id, S.name);
commit;

delete test where id>10;
update test set name=id;
commit;
select * from test order by id;
select * from test1 order by id;

 

 

posted on 2009-12-02 16:43 lichanggu 阅读(233) 评论(0)  编辑 收藏 引用 所属分类: ORACLE