oracle基本语法

ORACLE内部培训资料
Oracle 服务器

实例Instance,数据库Database
Instance:内存结构memory structure(SGA),后台进程background process
-SGA:高速缓存,重做日志缓存区,共享池
-后台进程:SMON,PMON,DBWR,LGWR,CKPT,ARCH
Database-dada file,log file,control file
启动过程
nomount----->mount----->open //oracle启动过程实例-->控制文件-->表
startup force pfile=c:\oracle\admin\bsstest\pfile\init.ora mount; //只启动到mount
文件路径
c:\oracle\ora92\database\spfilesid.ora
c:\oracle\admin\bsstest\pfile\init.ora
c:\oracle\ora92\database\pwdbsstest.ora
C:\oracle\ora92\rdbms\admin\catproc.sql // 重建程序包
在UNIX下安装oracle时设置环境变量
setenv oracle_base=c:\oracle
setenv oracle_home=c:\oracle\ora92
setenv oracle_sid=
setenv oracle_nls33=
setenv path=
setenv ld_library_path=
set arraysize 25 //设置数组提取尺寸为25
set autocommit _disibledevent=>
alter system set db_cache_size=64m;
oracle/admin/fox/pfile/init //database块大小,db_block_size大小
alter system set db_cache_advice=on; //oracle自动分配cache建议
select * from v$version; //查看oracle版本,64-bit/32-bit
select machine,terminal from v$session; //查看某用户是从哪台机器登陆oracle
select username from v$session; //查看当前有哪些用户在使用数据库
select * from v$parameter where name like ‘proc%’;
show parameter processes //查看最大会话数
select * from v$license; //查看曾到达的最大会话数
select name from v$database; //查看数据库sid
alter system kill session ‘sid,serir#’; //解锁
@$path/filename.sql //执行sql脚本文件
spool c:\abcd.txt; select * from table_name; spool off; //把select结果导出为文本
修改口令文件
orapwd file=c:\oracle\ora92\database\pwdbsstest.ora password=admin enties=10;
//修改口令文件,如删除口令文件并将remote_login_passwordfile设置为none,那么只能用os方式登陆数据库
* 在修改口令文件后必须删除c:\oracle\ora92\network\admin\sqlnet.ora中的
SQLNET.AUTHENTICATION_SERVICES= (NTS)或加注释 #
* select * from v$pwfile_users; //查看sysdba和sysoper的用户
* Enterprise Manager Console独立登陆时不能对数据库进行备分
* 用Enterprise Manager Configuration Assistant创建一个资料档案库,然后可以登陆到oracle managerment server,初始用户名sysman密码oem_temp
* 如果无法以sysdba身份远程登陆,修改数据库初始化参数文件中的remote_login_passwordfile设置为exclusive或shared
日志模式
Select log_mode from v$database;
archive log list //查看归档模式,默认为非归档,用以下步骤转换为归档模式
1) shutdown immediate
2) startup mount
3) alter database archivelog/noarchivelog;
4) alter database open;
5) full database backup
alter system archive log start;
alter system set log_archive_start=true scope=spfile; //开启自动存档
日志分析(Logmnr)
1) 设置目录c:\oracle\admin\bsstest\pfile\init.ora的参数
utl_file_dir=c:\oracle\admin\bsstest\cdump
2) 重启oracle
3) 建立目录文件
execute dbms_logmnr_d.build('bsstestdict.ora','C:\oracle\admin\bsstest\cdump');
4) 添加日志文件
dbms_logmnr.add_logfile(’ c:\oracle\oradata\bsstest\redo03.log’,dbms_logmnr.new);
5) 启动logmnr
excuted bms_logmnr.start_logmnr
(dictfilename=>’c:\oracle\admin\bsstest\cdump\bsstestdict.ora’);
6) 查询v$logmnr_content,sqlredo/sqlundo这两个很重要
表空间和索引
在mount状态下移动数据文件:
shutdown immediate-startup mount-host move c:\test\sys01.dbf d:\test\sys01.dbf
-alter database rename file ‘c:\test\sys01.dbf’ to ‘d:\test\sys01.dbf’-alter database open
在open状态下移动数据文件:
select tablespace_name from dba_data_files where file_name=’c:\test\data01.dbf’;
alter tablespace data01 offline;
host move c:\test\sys01.dbf d:\test\sys01.dbf
alter tablespace rename file ‘c:\test\data01.dbf’ to ‘d:\test\data01.dbf
alter tablespace data01 _disibledevent=>oracle\oradb';
create tablespace test; //在指定位置创建表空间
alter table emp add phone varchar2(10); //增加列
alter table emp drop (phone,manager); //删除列
alter table emp rename column ename to name //修改列名
drop table emp cascade constraints; //指定级联删除
truncate table table_name; //快速清空一个大表,不可以回退
alter user scott quota 10m _disibledevent=>
grant sysdba to maple; //授权sysdba
select * from v$pwfile_users; //查看sysdba权限用户
revoke sysdba from maple; //撤消sysdba权限
删除正在连接的用户
Select sid,serial# from v$session where username=’U1’;
Sid serial#
------ ---------
8 25
Alter system kill session ‘8,25’;
Drop user u1 cascade;
使用profile管理资源
Alter system set resource_limit=true scope=both;
显示特权用户信息
Select * from v$pwfile_users;
Select default_tablespace,temporary_tablespace from dba_users where username=’chen’;
Select profile from dba_users where username=’chen’;
角色和权限
要将sysdba特权授予其他用户,需将remote_login_passwordfile设置为exclusive
select * from dba_roles; //查看系统角色
select * from session_privs; //查看当前会话所具有的系统权限
grant create session to testuser;
grant create (any) table to testuser (with admin option);
grant create any index to testuser;
grant drop any table to testuser;
select * from user_tab_privs; //查看授予了哪些权限给哪些用户
audit create table / select,update,insert _disibledevent=>
Shutdown immediate
Host copy c:\test\test01.ctl d:\test\test02.ctl
Startup
Select * from v$controlfiles;
多元化重做日志
Alter database add logfile member ‘d:\test\redo1b.log’ to group 1;
多元化归档日志
Alter system set log_archive_dest=””;
Alter system set log_archive_duplex_dest=””;
Alter system set log_archive_dest_1=”location= c:\test\archive”;
Alter system set log_archive_dest_1=”location= d:\test\archive”;
Alter system set log_archive_dest_1=”service=standby”;
在线备份控制文件副本
Alter database backup controlfile to ‘e:\bck\test01.bak’ reuse;
备份归档日志
Select name from v$archived_log;
在mount状态下修改数据文件位置
Alter database rename file ‘d:\test\system01.dbf’ to ‘e:\test\system01.dbf’
在open状态下修改数据文件位置,但不能修改system表空间和在用undo表空间的数据文件位置,在修改前必须让表空间或数据文件脱机
Alter tablespace users rename datafile ‘d:\test\system01.dbf’ to ‘e:\test\system01.dbf’;
修改重做日志也是使用alter database命令,可以在mount也可以在open状态下。
修改控制文件位置只需修改control_files,需要重启数据库
Alter system set control_files=‘d:\test\test01.ctl’, ‘e:\test\test01.ctl’ scope=spfile;
恢复命令
—recover database,只能在mount状态下
—recover tablespace,不能恢复system表空间和在用undo表空间,只能在open状态下
—recover datafile,可以在mount也可以在open状态下
不完全恢复要求在mount状态
—基于时间恢复
Startup mount
Host copy e:\bck\system01.dbf c:\test
Recover database until time ‘2003-05-07 20:00:55’
Alter database open resetlogs;
Archive log list
—基于终止恢复
Recover database until cancel
—基本控制文件副本恢复
Recover database until time ‘2003-05-07 20:00:55’ using backup controlfile
—基于表空间的时间点恢复
系统问题
Select machine,terminal from v$session; //检查某个用户从哪台机子登陆
Select username from v$session;
Select * from dba_sys_privs; //查看每个用户的权限
Tags: 

延伸阅读

最新评论

发表评论