NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 数据库 .: DBA的基础知识

DBA的基础知识

环境 产品:Netview

  平台:AIX

  版本:V5

  为保证Netview的数据文件和客户化配置文件的安全,需定期对相关文件备份是非常必要的。这样可以保证重要数据损坏或丢失时可以及时恢复。

  1. 备份: 以下步骤备份NETVIEW数据库和配置文件。

  1) 用File ->exit 退出NETVIEW 用户界面。

  2) 在命令行键入: ovstop 以停止所有 NETVIEW 进程。

  3) 在机器中放入空磁带。

  4) 在命令行键入: cd /usr/OV

  5) 在命令行键入: tar -cvf/dev/rmt0 databases conf

  6) 在磁带上标注日期。

  2. 恢复: 以下步骤恢复Netview数据库和配置文件。根据您的情况,有时也许不需要恢复配置文件。

  1) 用File ->exit 退出Netview 用户界面。

  2) 在命令行键入: ovstop 以停止所有 Netview 进程。

  3) 在机器中放入已备份数据的磁带。

  4) 删除当前数据库和配置文件:

  在命令行键入: rm -fr /usr/OV/databases/* (数据库)

  在命令行键入: rm -fr /usr/OV/conf/* (配置文件)

  5) 恢复原数据库:

  在命令行键入: cd /usr/OV

  在命令行键入: tar -xvf/dev/rmt0 databases conf

  6) 重起Netview 进程(ovstart)。

  7) 重起Netview 用户界面(nv6000)

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 on //自动提交DML语句
set colsep | //设置分隔符
set heading on //显示标头
set time on // 显示系统时间

数据字典和动态性能视图
数据字典信息从数据文件中取得,动态性能视图信息从sga和控制文件中取得
只读表和视图的集合,所有者为sys用户,数据被存放在system表空间上。
select dbms_metadata.get_ddl(‘table’,’emp’) ddl from dual;
select user form dual;
select * from global_name;
v$controlfile v$database v$datafile v$dbfile v$lock v$tablespace v$session

基本控制语句
sqlplusw scott/tiger@bss //启动sqlplus进程
lsnrctr status / lsnrctl start //查看tnslistener状态,启动
dbca //启动 Database Configuration Assistant,创建数据库
alter system enable restricted session
//则普通用户不能登陆如maple,除非grant restricted session to maple;
set linesize 200
show parameter sga //查看sga_max_size
show parameter log_buffer //查看log_buffer大小
alter session set nls_language=american; //设置提示语言
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 online;

扩展表空间
alter tablespace tbs01 add datafile ‘c:\test\data02.dbf’ size 100m; //增加书记文件
alter database datafile ‘c:\test\data01.dbf’ resize 200m; //增加尺寸
alter database datafule ‘c:\test\data01.dbf’ autoextend on next 10m maxsize 200m

删除表空间
drop tablespace data01 including contents and datafiles;

建立和指定临时表空间
create temporary tablespace temp_data tempfile ‘c:\test\temp_data.dbf’ size 5m
alter user scott temporary tablespace temp_data;

建立范围分区表
create table sales...partition by range (sales_date)
( patition p1 values less than (’01-apr-2003’0),
patition p2 values less than (’01-jul-2003’0),
patition p3 values less than (’01-oct-2003’0),
patition p4 values less than (’01-jan-2003’0)
);

建立散列分区表
create table product (product_id number(6),description varchar2(30))
partition by hash(product_id)
(partition p1 tablespace data01,partition p2 tablespace data02);

alter table scott.emp move tablespace users; //重新组织表,需重新建立索引
show parameter db_create
alter system set db_create_file_dest='c:\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 on users; //限制scott在users表空间只有10m
select name from v$datafile;
select * from v$tablespace;
select * from dba_data_files;
alter tablespace users offline; //设置为脱机,则不能访问users表空间的表
alter database datafile ‘c:\oracle\oradata\bsstest\maple.dbf’ autoextend on //自动扩展
alter table maple deallocate unused(keep 8k); //释放表空间
truncate table maple; //清空表数据并释放空间,delete只删除数据
alter table maple drop column name; //删除表的一个字段
alter index testindex coalesce; //碎片重整

用户和口令管理
create user test indentified by 123456; //创建一个用户
alter user chen identified by admin //修改自己的口令
alter user chen quota 10m on users; //修改空间配额
grant connect,create table to testuser; //授权连接,创建表权限给testuser
alter user testuser quota 10m on users; //给testuser分配users表空间权限10m
drop user testuser; // 删除用户test
(create user mapleppp
inentified by 198141
default tablespace users
temporary tablespace temp
quota 10m on users
password expire;) //举例
alter user test account lock / unlock; //锁定用户帐号
create profile profile1 limit failed_login_attempts 3 password_lock_time 1/1440;
alter user test profile profile1 //3次登陆不成功锁定帐户1分钟,1小时是1/24
alter profile profile1 limit password_life_time 2 password_grace_time 3;//有效期2天
alter user chen profile profile1; //应用到用户
alter user chen account unlock; //撤消应用
drop profile profile1 cascade; // 删除profile1
alter system set resource_limit=true; //设置并行登陆会话数
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 on testtable
by session / access whenever successful / not successful

create role testrole1 (identified by testrole1); //创建角色并授权
grant select on maple to testrole1;
grant testrole1 to testuser1;
set role testrole1; //激活角色
execute dbms_output.put_line (‘test string1’);

字符集和SQL语句
select parameter,value from nls_database_parameters; //查看字符集
create table tt2 as select * from uesr1.table1;
alter table maple add (name varchar2(20) default 'unknown'); //增加column
alter table maple modify (name varchar2(30)); //修改
comment on table employee is ‘employee info’; //创建表提示信息
create table test1 (id int not null,lname varchar(20),fname varchar(20),constraint uk_test1_1 unique(lname,fname)) //创建表基本语法
create table test2 (rid int,name varchar(20),constraint fk_test2_1 foreign key(rid) references test1(id)); //创建和表1的约束关系
alter table test1 add constraint ck_test2_1 check(name like ‘k%’) //约束条件
alter table test2 drop constraint ck_test2_1;
alter table test2 drop constraint pk_test2 cascade; //连带删除

视图和索引
create or replace view testview1 as select id,name from maple where ...with read only; //创建视图
create index testindex1 on maple(id); //创建索引
约束关系
使用SQL*Loader或Insert完成数据装载之前,为加快数据装载速度,应先禁止约束。
Alter table emp disable novalidate constraint check_job;
激活约束
Alter table emp enable novalidate/validate constraint check_job;
增加约束
Alter table department modify name not null;
Alter table department add constraint u_deptname unique(name);
Alter table department add constraint check_job check (job in (‘manager’,’clerk’));
Alter table department add constraint check_salary check (salary between 100 and 500);
修改约束名
Alter table department rename constraint pk_department to pk_depno;

备份和恢复
物理备份:备份数据库的物理文件(数据文件,控制文件)
逻辑备份:export导出数据库部分或全部结构和数据
只读表空间只需备份一次。不要备份联机重做日志,要多元化重做日志。当数据库物理结构变化时应立即备份控制文件。
当用户执行了误操作drop table后,可以用import工具导入表的结构或数据,也可以用logminer工具确定误操作时间,然后执行基于时间点的不完全恢复,当执行了DML误操作后,可以用logminer工具还原DML操作,确定错误的DML,然后执行相反的操作。
多元化控制文件
Alter system set control_files=”c:\test\test01.ctl”,”d:\test\test02.ctl” scope=spfile;
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; //查看每个用户的权限

一,需求提出

工作上有一个需求,需要批量的导入一些账号,并要求有一些属性,比如:部门,职位,分机等!

其实呢,需求很简单,解决方案也很简单,但在实际的操作过程中,也确实出现了一些问题,GG和BD了一些,也看了一些其他人的博客等内容,但大多都是比较雷同,更有甚者直接照搬微软帮助和支持中心的模板,并没有实际的操作案例的讲解,以及操作注意事项,根据其博客操作,总会出现这样那样的问题!出于此,虽然这篇很简单,但我还是要写出来与大家一起分享,分享的不单单是实际的解决方案,更是用心负责细心的态度,

当我们拿到这个需求,我们可能就要问了,这些属性我应该从哪里得到呢?我也记不住那么多的属性值呀!其实我们也可以变通的,我们可以先导入,然后根据导出的文件来对比这些属性值就可以完成,下面就让我们来看下过程!

二, 环境描述

1,DC一台(2003系统,安装有office 2007)

2,域名是:TT.Com

3,建立了一个OU:TT,并在TT这个OU下建立了一个用户:

三, 使用csvde导出账号

微软默认提供了两个批量导入导出工具,分别是CSVDE(CSV目录交换)和LDIFDE(LDAP数据互换格式目录交换),具体选择上述哪个工具取决于需要完成的任务。如果需要创建对象,那么既可以使用CSVDE,也可以使用LDIFDE,如果需要修改或删除对象,则必须使用LDIFDE。我们这里选择csvde!

1,打开cmd,更换目录到C盘根目录,方便我们查找文件,如图1,

Csvde –f user.Csv 将AD对象导出到名为user.csv的文件,-f 开关表示后面为输出文件的名字。

图1

2,以上导出的信息量很大,从图中可以看出有200个项目,这样会有太多干扰我们的一些信息,不方便我们来查找我们想要的东西,我们可以适当的加一点参数来导出我们最想要的信息,如图2,

说明:TT这个OU和用户alice(这个用户的一些属性被我填写了,比如职位,部门,分机等,需要什么属性就填写相关的项目,但为了更好的效果可以填写英文,因为中文导出后会出现乱码,当然,在导出的时候,后面加一个参数 –u也是可以解决的,但在后期我们编辑的时候不太方便,所以尽量使用英文作为模板)是我为了导出我们需要的属性值而建立的,这个无关紧要,只是要导出一个属性值的模板来让我们参考!从图中我们可以看到这次只导出了2个项目,比上次那个会清晰很多!当然,csvde的参数还有很多,但我们能够用到的确实不是很多,行了解更多的可以打“?”来查看,或者参考官网:http://technet.microsoft.com/zh-cn/lipary/cc732101(v=ws.10)

1 u+ z- @4 q) l* l9 G- J

图2

四, 编辑模板

根据上一步导出的信息,我们就可以找到我们所需要的:职位,部门,分机等这些信息的属性值了,分别是“title,department,telephoneNumber”,其实有一个技巧就是,我们可以直接的修改这个csv文件,不需要再去新建了!我们把其他不需要的删除,只留下我们需要的,如图3,

图3

五, 导入用户

打开cmd,更换到C盘根目录,使用命令导入,如图4

Csvde –I –f user2.csv -i是导入的意思,-f是指定文件的意思

图4

六, 因为工具不能直接导入密码,并且我们在导入的使用使用了514,这是锁定账号的意思,用户的密码是空的,并且是用户下次登录需要更改密码。这显然是不安全的,如图5,

图5

七, 启用账号并设定初始密码!

1, 因为现在的用户是空密码,我们的默认域策略是要求复杂性的,所以暂时还无法启用用户,我们先更改密码,由于用户比较多,手动一个个去改麻烦,工具又不允许导入密码,所以,我们可以使用一个bat文件来对用户进行更改,如图6,建立完成后另存为pwd.bat,打开cmd切换到C根目录进行运行,看到完成的结果!

图6

2, 然后,使用shift进行多选,右键选择启用用户即可!如图7

图7

八, 查看结果是否满足需求

我们打开一个用户,看职位,部门,分机是否存在,如图8

九, 总结

在我们进行 导入的时候,不是说所有的账号有属于一个OU里,那么,我们在导入前是需要先加你相应的OU的,这是一个前提条件,不然在导入的时候会报错!另外一个工具是ldifde,其实用法我个人感觉是一样的


这篇文章对你多有用?

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited