DB/Linux常用命令操作笔记
DB/Linux常用命令操作笔记
DB/Linux常用命令操作笔记
1 UserGroup
/etc/passwd : username:passwd:uid:gid::homedir:shell
密码映射在/etc/shadow,一个用户可属于多个用户组,第五个字段为用户名全称(可选)
/etc/group : groupname:passwd:gid:userlist
用户列表可选,用“,”分割
2 AddUser&Group
● 修改文件
more /etc/passwd| grep oracle cat /etc/group|grep uid
修改 passwd ,添加用户记录,不能让uid重复;
执行 pwconv ,让passwd和shadow同步;
修改 group 添加组
运行 grpconv 来同步 group和shadow同步;
创建用户家目录,把用户的启动文件也复制进去;另外还需要把etc/skel 目录下的.*隐藏文件复制过去:cp -R /etc/skel//home/user ;
改变新增用户的属主和权限: chown -R user:group /home/user;-R:应用到目录中的所有文件?
设置新增用户密码:passwd username
● 通过命令
1) mkgroup groupname
2) groupadd
groupadd -g uid groupname
3) mkuser
mkduer pgrp=username home=diractory shell=/usr/bin/ksh id=uid username
4) useradd
useradd -u 1002 -g group -G group01 -d /home/user -m user
useradd -d /opt/oracle -m -g dba -G oinstall -s /bin/bash oracle
用户的缺省工作目录是/home/username,可以-d指定其他目录为其工作目录;
用户的缺省uid从500后顺序增加,可以-u指定uid;
不指定用户所属的组,会生成一个与用户名同名的工作组,也可以通过-g指定
5) ld 、 finge 查看用户信息
6) ls -dl $HOME 显示目录的属主和属组
7) Usermod
修改用户登录名 Usermod -l newname oldname;
修改用户目录 usermod -d newdir user;
添加用户到组 usermod -g group user;小G 大g的区别
8) Gpasswd
改变组成员,只有root和组管理员有权限
添加:Gpasswd -a user group 删除:Gpasswd-d user group
9) Groupmod
修改组名:groupmod -n oldname newname
10) Rmuser -r username
11) Userdel
删除用户,同时删除工作目录 userdel -rf user
12) Rmgroup -rgroupname
13) Groupdel
3 Linux 常用命令
压缩解压:
tar -cvf - file | gzip -cf > file.tar.gz
gzip -dc file.tar.gz | tar -xvf -
gunzip 直接解压gz包
unzip(zip) 直接解压(缩)zip包
mv origfile destfile 剪切源文件中内容到目标文件夹
find . -name "*.log" | xargs rm
|awk '{print $2}'|xargs kill -9 或|awk '{print "kill -9",$2}'
df -h ;fdisk -l 显示磁盘空间
du –lh
du –sh *
Java -version
Version.sh 平台版本
Uname -a 机型 或者 oslevel
操作系统版本的检查:
# cat /etc/SuSE-release
内核版本的检查:
# uname -r
4 环境变量设置
#echo $SHELL
bash : #vi.bash_profile #. .bash_profile
sh or ksh : #vi .profile #. .profile
csh or tcsh : #vi .login #source .login .cshrc?
setenv var=xxx;
export var xxx;
#echo $JAVA
#env | grep JAVA
shell 类型不匹配,ln其他shell类型到当前 -- ln -s src desc
脚本执行bash:#./script ;ksh: #sh script ; bash->ksh?
==JAVA==
root用户上传(.bin,.rpm,压缩包),设置要使用用户的环境变量
export JAVA_HOME =/opt/jdk1.6
export JRE_HOME =/opt/jdk1.6/jre
export CLASSPATH =$JAVA_HOME/lib:$JRE_HOME/lib:.
export PATH =$JAVA_HOME/bin:$JRE_HOME/bin:$ORACLE_HOME/bin:.:$PATH
==ORACLE==
补丁安装-Ora软件安装-配置监听-升级Ora-创建DB
export ORACLE_BASE =/opt/oracle/app/oracle
export ORACLE_HOME =$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID =SID
export PATH =$ORACLE_HOME/bin:$PATH
5 Oracle
1) Dbca 创建数据库(实例)
实例是“内存”(SGA)和“后台进程”(服务器进程、后台进程,从属进程)的集合,每个进程都会分配内部内存(PGA内存)来完成它的任务
RAC(Real Application Cluster)集群:多个实例同时驱动一个数据库
2) $TNS_ADMIN指定配置文件tnsnames.ora位置:$ORACLE_HOME/network/admin
Tnsnames.ora 存储网络服务名(设为SIDname,为连接描述符的别名)
文件结构:
Esbora =
(DISCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP) (PORT= 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = esbora)
)
)
3) 客户端连接数据库
连接字符串
Sqlplus user/pwd@HOSTIP:1521/SID
网络字符串
Sqlplus user/pwd@netservicename 本机登录不需要输入@nsn
Sqlplus sys/sys as sysdba 或者sqlplus “/as sysdba”
Sqlplus /holog 无用户连接DB
Conn user/pwd@nsn
@执行指定目录脚本
Disc 断开连接
6 Listener
1) Clinet-- Listener --Server
2) Netca 配置监听 在服务器端
3) 监听器配置文件 $TNS_ADMIN/listener.ora
文件结构:
LISTENER = 监听器名字,默认LISTENER
(DISCRIPTION_LIST =
(DISCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP) (PORT= 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = esbora)
(ORACLE_HOME =/opt/oracle/app/oracle/OraHome_1)
(PROGRAME = extproc)
)
)
4) Lsnrctl start (ListenerName) 不加名字起默认监听
5) Lsnrctl stop
6) Lsnrctl status
7 数据库安装
补丁安装 -- Ora软件安装 --配置监听-- 升级Ora --创建DB 顺序?
● Display变量设置
Xmanager直接用 oracle用户登入
Root : xhost localhost ;xhost + 开放所有
Oracle :
export DISPLAY=localhost:1.0
setenv DISPLAY local_host:0.0
echo $DISPLAY
xclock 路径/usr/X11R6/bin 可添加到环境变量中
● 补丁安装
安装后再装DB,要在补丁目录下 oui/bin / ./runInstaller
如果数据库安装目录不在补丁目录下,如补丁目录在OraHome_1,安装在OraHome_2,那么要以oracle用户就能入$ORACLE_HOME目录下,将jdk目录mv成jdk.bak,然后执行以下命令建立一个链接:
#ln -s /opatch_path/jdk jdk
#ls -al : jdk -> opt/oralce/app/oracle/OraHome_1/jdk
8 系统管理
1) 数据库启动
以sysdba身份登录
Startup nomount 只启动实例不启动数据库
启动实例包括分配内存和启动进程(读取参数文件)
Startup mount 启动数据库到mount状态(包括了nomount)
打开控制文件、数据文件和联机日志文件,关联实例
Alter database open 打开数据库
● Startup;使用服务器端参数文件(SPFILE)启动,不要加SPFILE;也可以使用初始化参数文件(PFILE)启动:startupPFILE=$ORACLE_HOME/dbs/init.ora
Startup open read only 以只读方式启动数据库
● Nomount ->alter database mount->alter database open;
● Mount -> alterdatabse open;
Alter database open readonly;在mount状态下启动到只读模式
FAQ:数据库启动数据库被挂起
AlterFile:闪回区(Flash Recovery Area)磁盘空间不足
PFILE中配置了闪回区路径和大小;
Db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
Db_recovery_file_dest_size=2G
2) 数据库关闭
关闭数据库(写数据文件和连接日志)->Unmount数据库(分离数据库和实例,关闭控制文件)->关闭实例(从内存中移出SGA,终止进程)
Shutdown immediate 用户不能注册登录;未提交的事物江北回滚;不等待所有用户退出
9 进程管理
进程分为两类:用户进程、oracle进程
1) 用户进程
用户运行应用程序或者使用oracle客户端的时候,创建用户进程
两个相似概念:
● 连接:用户进程到实例间的一条通信路径,通常会在客户进程与一个专用服务器或一个调度器之间建立连接
专有服务器(dedicatedserver)连接,采用专有服务器连接时,会在服务器上得到针对 这个连接的一个专用进程,数据库连接与服务器上的一个进程或线程之间存在一对一的 映射
共享服务器(shared server)连接,采用共享连接时,多个会话可以共享一个服务器进 程池,其中的进程由Oracle实例生成和管理,你所连接的是一个数据库调度器 (dispatcher),而不是特意为连接创建的一个专用服务器进程。
● 会话:一个用户到数据库的一次特殊连接,从用户登入开始到退出结束;
会话是实例中的一个逻辑实体,客户进程可以在会话上执行sql,提交事务和运行存储 过程等。多个独立的会话可以与一个连接关联,这些会话设置可以独立于连接存在。
2) Oracle进程(实例进程)
Oracle进程运行在服务器端:
● 服务器进程(ServerProcess):服务器进程就是代表客户会话完成工作的进程
处理连接到数据库的用户进程请求,对sql语句进行语法解析和执行,数据读取,返回 结果:
专有服务器进程(Dedicated):只为特定用户进程服务
共享服务器进程(Shared):采用共享服务器进程时,多个会话可以共享一个服务器进 程池,其中的进程由Oracle实例生成和管理
● 后台进程 (BackgroundProcess):随数据库而启动,用于完成各种维护任务
10 数据存储结构
● 逻辑结构(LogisticalStructure):数据块(DataBlock)区(Extent)段(Segment)
表空间(Tablespace)
块是最基本的存储单元
表空间:存放数据库对象(表、索引等)
● 物理结构(PhysicalStructure):
Datafiles、Control Files、Online Redo Logs(严格意义上的)
其他 Archive Log Files、Parameter Files、AlertFiles 、Trace Files、Backup Files
DataFiles:
每个数据文件都是一个操作系统文件,由多个操作系统块组成
数据库中的表、索引的数据物理上存放在数据文件中
一个数据库有多个数据文件,一个数据文件只属于一个数据库
一个表空间可以由多个数据文件构成,一个数据文件只属于一个表空间
11 常用脚本
1) 建表空间
Create tablespace tibco datafile
'/home/oracle/ora/oradata/VERIFY111/TIBCODATA1.DBF' SIZE 2048M REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE20480M,
'/home/oracle/ora/oradata/VERIFY111/TIBCODATA2.DBF' SIZE 2048M REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE20480M,
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
2) 建用户
Create user tibapp
Identified by tibapp
Default tablespace TIBCODATA
Temporary tablespace TEMP
Profile DEFAULT;
--Grant/Revoke role privileges
Grant connect to tibapp;
Grant resource to tibapp;
--Grant/Revoke system privileges
Grant unlimited tablespace to tibapp;
3) 删除表空间和用户
Spool ./log/delete_tbs_user.log
Connect sys/sys@10.71.179.64/eplus11 as sysdba
Drop user username cascade;
--cascade 表示删除用户之前先删除这个用户模式下的对象
Drop tablespace TIBCODATA;
Spool off
Exit;
4) 常用SQL
● 数据库状态
Select open_mode from v$database
Select status from v$instance
● 表空间,数据文件
Select * from dba_tablespaces;
Select username,default_tablespace from dba_users where username=' ';用户默认表空间
---------查询表空间大小---------
selectb.file_id 文件ID号,b.tablespace_name 表空间名,b.bytes/1204/1204 ||'M' 字节数,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024|||'M'已使用,
sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间,
100-sum(nvl(a.bytes,0))/(b.bytes)*100 占用百分比
fromdba_free_space a,dba_data_files b
wherea.file_id= b.file_id
groupby b.tablespace_name,b.file_id,b.bytes order by b.file_id
---------修改表空间大小---------
alter database datafile 'datafile_path/dbfname' resize1024M;
alter tablespace tbsname add datafile '***' size 500m autoextend off;
● 用户管理
select username from dba_users;
select username,default_tablespace from dba_users where username=' ';
alter user username identified by new password;
● 进程查看
查询与专有服务器相关联的进程ID(PID)
Select a.spid dedicated_server, b.processclientpid
From v$process a,v$session bwhere a.addr=b.paddr
And b.sid= (select sid fromv$mystat where rownum=1);
Sqlplus: !/bin/ps -p pid 产看进程号对应信息
后台进程查看
Select * from v$bgprocess where paddr<>'00';
Ps -ef|grep ora_
● 杀掉用户进程(会话session)
Select sid,serial#,username,status,server,process,osuser,paddr fromv$session where type='USER'; Process:clientpid paddr:专有服务器进程地址
Alter system kill session 'SID,Serial#';
---------追根溯源法---------
查询oracle用户的会话信息
select username,machine,osuser,programe,status,count(machine) fromv$session
where username='' group by username,machine,programe,status,osuserorder by username,machine;
查找oracle 连接客户端,找到连接oracle用户源头进程干掉
● 数据库备份
a) Exp user/pwd@SID owner:user rows=y compress=n buffer=65536 feedback=100000 volsize=0 file=user.dmp log=user.log ;
b) Expdp user/pwd@SID directory=dir_name dumpfile=user.dmp schemas=user logfile=user.log;
查询创建db目录
Select* from dba_directories;
Createdirectory dir_name as ‘dir_path’;
Grantread,write or directory dir_name to public;
● 时间
Select to_char(B2C(req_message))from table where instr(B2C(req_message),'str')>0;
Selet cast(sysdate as timestamp) "DATE" from dual;
Select to_char (sysdate,'yyyymmdd24miss') from dual;
Select to_char(to_date('2012-06-30 15:15:15','yyyy-mm-ddhh24:mi:ss'),'yyyy-mm-dd am hh24:mi:ss') from dual;
Select to_date (to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-ddhh24:mi:ss') from dual;
Select to_number(to_char(sysdate,'yyyymmdd')) from dual;
Select to_date('2037-1-1','yy-mm-dd') from dual;l
Select to_date(sysdate) from dual;
Select sysdate-1 from dual;
Select add_months(sysdate,-1) from dual;
Select sysdate-1/(24*60) from dual;
评论暂时关闭