oracle常用语句

来源:互联网 发布:电脑自带编程软件在哪 编辑:程序博客网 时间:2024/06/05 09:52
登录用户system/manager 服务sysdba用户创建create user 名称“kcyg2” identified by 密码“kcyg” 删除用户drop   user   kcyg2 cascade 用户授权grant connect,resource,dba to kcyg2;--授予不限制的表空间grant unlimited tablespace to userName;提交commit;创建表空间的sql:CREATE TABLESPACE "MSNROBOT"LOGGINGDATAFILE ''/opt/ora9/oradata/oracle/MSNROBOT.dbf'' SIZE 10MEXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO export导出选项关键字        内容------------ -------------------------------------------------------------------------------USERID        运行导出命令的帐号的用户名/口令。BUFFEER       用来取数据行的缓冲区的大小。FILE          导出转储文件的名字COMPRESS      导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句,GRANTS        导出时否要导出数据库对象上的授权INDEXES       是否要导出表上的索引ROWS          是否应导出行。如它为'N',那么在导出文件中仅生成数据库对象的DDLCONSSTRAINTS 是否导出表旧的约定条件FULL          如设为'Y',那么将执行一个整个数据库导出操作OWNER         要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作TABLES        要导出的一系列表;执行这些表的TABLE导出操作RECORDLENGTH 转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件INCTYPE       正在执行的导出操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)RECORD        在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中PARFILE       要传递给导出的参数文件的名字。这个文件将包含所有参数的入口项ANALYZE       标明是否将移对象的统计信息写入导出转储文件中CONSISTENT    标明是否保留所有导出对象的读取一致复制。LOG           导出日志将要写入的文件的名字MLS           标明是否要导出MLS 标号MLS_LABEL_    规定了MLS标号的格式--import导入选项关键字        内容------------ -------------------------------------------------------------------------------USERID        运行导入命令的帐号的用户名/口令。BUFFEER       用来取数据行的缓冲区的大小。FILE          导入转储文件的名字SHOW          规定文件内容是否被显示,而不是被执行。IGNORE        标明在执行'CREATE'命令时,是否忽略遇到的错误。如果正在导入的对象已经存在时,应使用这个参数。FULL          如设为'Y',那么将执行一个整个数据库导入操作FROMUSER      在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其对象应从导出转储文件中读取。TOUSER        一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号。GRANTS        导入时否要导入数据库对象上的授权INDEXES       是否要导入表上的索引ROWS          是否应导入行。如它为'N',那么在导入文件中执行数据库对象的DDLFULL          如设为'Y',那么将执行一个整个数据库导出操作TABLES        要导入的一系列表RECORDLENGTH 转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件INCTYPE       正在执行的导入操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)PARFILE       要传递给导入的参数文件的名字。这个文件将包含所有参数的入口项ANALYZE       标明是否将移对象的统计信息写入导入转储文件中LOG           导入日志将要写入的文件的名字MLS           标明是否要导入MLS 标号导出已有数据库1.先进入有足够大的磁盘空间2.输入命令 exp 用户名“kcyg2”/密码“kcyg”@服务名称“kaicheng” file=kcyg.dmp log=kcyg_log.dmp full=y   完全备份 导入备份数据库正常导入出错问题说用户不存在。imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" full=y解决方法:imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" fromuser=kcyg2 touser=scott ignore=y;使用imp命令导入时出现了一些问题,后来将full=y删除掉就可以了,不知道为什么. 命令:imp sheas/sheas@oral file=g:\sheasDB0714\sh0715DB600.dmp fromuser=sheas touser=sheas full=y log=g:\sheasimp.log 提示如:只能指定一种模式(tables,fromuser或full),未有成功终止导入.原因:fromuser、touser、full不能同时存在一条imp语句中。imp语句应该与exp的尽量保持一致。  (1)只能指定一种模式(full、tablespaces、tables、owner、fromuser)   (2)fromuser不可以随便写,要符合导出文件中的用户,谁导出的dmp文件、fromuser后面就写谁   (3)touser可以不写,如果不写则导出到当前连接用户,只能是dba自己   (4)如果写fromuser,imp后面必须是dba/dba密码   (5)exp 用户/密码 {full | owner}=模式 file=文件.dmp   -- 使用imp前必须先创建表空间、用户   imp 用户/密码 {full | fromuser/touser | tables}=模式 file=文件.dmp   (6)表空间中有:表、索引、簇;   用户中有:函数、过程、包、类型、触发器、视图、序列、同义词  --查看oracle数据库字符集:  select userenv('language') from dual;  查询结果:  SIMPLIFIED CHINESE_CHINA.AL32UTF8  --修改oracle数据库字符集:(在SQL Plus中)  sql> conn / as sysdba;  sql> shutdown immediate;  database closed.  database dismounted.  oracle instance shut down.  sql> startup mount;  oracle instance started.  total system global area  135337420 bytes  fixed size                          452044 bytes  variable size                     109051904 bytes  database buffers              25165824 bytes  redo buffers                      667648 bytes  database mounted.  sql> alter system enable restricted session;  system altered.  sql> alter system set job_queue_processes=0;  system altered.  sql> alter system set aq_tm_processes=0;  system altered.  sql> alter database open;  database altered.  sql> alter database character set internal_use JA16SJIS;  sql> shutdown immediate;  sql> startup;表空间:select * from dba_data_files;  select * from dba_tablespaces;//表空间  select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//空闲表空间  select * from dba_data_files where tablespace_name='RBS';//表空间对应的数据文件  select * from dba_segments where tablespace_name='INDEXS'; 用户解锁你打开命令提示符,不要登录直接输入下面:(之前好像漏了两个空格,你再按下面这样试试)sqlplus sys/tiger as sysdba以dba方式进入sys帐户;alter user scott account unlock;给scott用户解锁;1.查看所有用户:  select * from dba_users;  select * from all_users;  select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):  select * from dba_sys_privs;  select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限sql>select * from role_sys_privs;4.查看用户对象权限:  select * from dba_tab_privs;  select * from all_tab_privs;  select * from user_tab_privs;5.查看所有角色:  select * from dba_roles;6.查看用户或角色所拥有的角色:  select * from dba_role_privs;  select * from user_role_privs; 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS  注意:1、以下语句可以查看Oracle提供的系统权限select name from sys.system_privilege_map 2、查看一个用户的所有系统权限(包含角色的系统权限)Sql代码  select privilege from dba_sys_privs where grantee='DATAUSER'  union  select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );     找出正在执行的JOB编号及其会话编号  SELECT SID,JOB FROM DBA_JOBS_RUNNING;  停止该JOB的执行  SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&SID';  ALTER SYSTEM KILL SESSION '&SID,&SERIAL';  EXEC DBMS_JOB.BROKEN(&JOB,TRUE);  实例分析:  1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。  SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;  SID JOB  ---------- ----------  12 116  16 117  2,查询正在运行的job的信息  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';  SID SERIAL#  ---------- ----------  12 4  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';  SID SERIAL#  ---------- ----------  16 1  3,利用查询出来的job信息将job结束掉  SQL> ALTER SYSTEM KILL SESSION '12,4';  System altered.  SQL> ALTER SYSTEM KILL SESSION '16,1';  System altered.  4,如果不希望运行上述job的话,可以将job设置为broken.  EXEC DBMS_JOB.BROKEN(116,TRUE);  EXEC DBMS_JOB.BROKEN(117,TRUE);  根据个人经验,这种方法并不会立即中断job的运行。最好是找到job对应的线程kill掉查看表锁语句select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.object_id = a.object_id
登录用户system/manager 服务sysdba
用户创建
create user 名称“kcyg2” identified by 密码“kcyg”
删除用户
drop   user   kcyg2 cascade
用户授权
grant connect,resource,dba to kcyg2;
--授予不限制的表空间
grant unlimited tablespace to userName;
提交
commit;
创建表空间的sql:
CREATE TABLESPACE "MSNROBOT"
LOGGING
DATAFILE ''/opt/ora9/oradata/oracle/MSNROBOT.dbf'' SIZE 10M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

export导出选项
关键字        内容
------------ -------------------------------------------------------------------------------
USERID        运行导出命令的帐号的用户名/口令。
BUFFEER       用来取数据行的缓冲区的大小。
FILE          导出转储文件的名字
COMPRESS      导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句,
GRANTS        导出时否要导出数据库对象上的授权
INDEXES       是否要导出表上的索引
ROWS          是否应导出行。如它为'N',那么在导出文件中仅生成数据库对象的DDL
CONSSTRAINTS 是否导出表旧的约定条件
FULL          如设为'Y',那么将执行一个整个数据库导出操作
OWNER         要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作
TABLES        要导出的一系列表;执行这些表的TABLE导出操作
RECORDLENGTH 转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件
INCTYPE       正在执行的导出操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)
RECORD        在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中
PARFILE       要传递给导出的参数文件的名字。这个文件将包含所有参数的入口项
ANALYZE       标明是否将移对象的统计信息写入导出转储文件中
CONSISTENT    标明是否保留所有导出对象的读取一致复制。
LOG           导出日志将要写入的文件的名字
MLS           标明是否要导出MLS 标号
MLS_LABEL_    规定了MLS标号的格式
--import导入选项
关键字        内容
------------ -------------------------------------------------------------------------------
USERID        运行导入命令的帐号的用户名/口令。
BUFFEER       用来取数据行的缓冲区的大小。
FILE          导入转储文件的名字
SHOW          规定文件内容是否被显示,而不是被执行。
IGNORE        标明在执行'CREATE'命令时,是否忽略遇到的错误。如果正在导入的对象已经存在时,应使用这个参数。
FULL          如设为'Y',那么将执行一个整个数据库导入操作
FROMUSER      在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其对象应从导出转储文件中读取。
TOUSER        一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号。
GRANTS        导入时否要导入数据库对象上的授权
INDEXES       是否要导入表上的索引
ROWS          是否应导入行。如它为'N',那么在导入文件中执行数据库对象的DDL
FULL          如设为'Y',那么将执行一个整个数据库导出操作
TABLES        要导入的一系列表
RECORDLENGTH 转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件
INCTYPE       正在执行的导入操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)
PARFILE       要传递给导入的参数文件的名字。这个文件将包含所有参数的入口项
ANALYZE       标明是否将移对象的统计信息写入导入转储文件中
LOG           导入日志将要写入的文件的名字
MLS           标明是否要导入MLS 标号

导出已有数据库
1.先进入有足够大的磁盘空间
2.输入命令
 exp 用户名“kcyg2”/密码“kcyg”@服务名称“kaicheng” file=kcyg.dmp log=kcyg_log.dmp full=y   完全备份

导入备份数据库
正常导入出错问题说用户不存在。
imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" full=y
解决方法:
imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" fromuser=kcyg2 touser=scott ignore=y;


使用imp命令导入时出现了一些问题,后来将full=y删除掉就可以了,不知道为什么.
 命令:imp sheas/sheas@oral file=g:\sheasDB0714\sh0715DB600.dmp fromuser=sheas touser=sheas full=y log=g:\sheasimp.log
 提示如:只能指定一种模式(tables,fromuser或full),未有成功终止导入.
原因:fromuser、touser、full不能同时存在一条imp语句中。imp语句应该与exp的尽量保持一致。
  (1)只能指定一种模式(full、tablespaces、tables、owner、fromuser)
  (2)fromuser不可以随便写,要符合导出文件中的用户,谁导出的dmp文件、fromuser后面就写谁
  (3)touser可以不写,如果不写则导出到当前连接用户,只能是dba自己
  (4)如果写fromuser,imp后面必须是dba/dba密码
  (5)exp 用户/密码 {full | owner}=模式 file=文件.dmp
  -- 使用imp前必须先创建表空间、用户
  imp 用户/密码 {full | fromuser/touser | tables}=模式 file=文件.dmp
  (6)表空间中有:表、索引、簇;
  用户中有:函数、过程、包、类型、触发器、视图、序列、同义词

 --查看oracle数据库字符集:
  select userenv('language') from dual;
  查询结果:
  SIMPLIFIED CHINESE_CHINA.AL32UTF8
  --修改oracle数据库字符集:(在SQL Plus中)
  sql> conn / as sysdba;
  sql> shutdown immediate;
  database closed.
  database dismounted.
  oracle instance shut down.
  sql> startup mount;
  oracle instance started.
  total system global area  135337420 bytes
  fixed size                          452044 bytes
  variable size                     109051904 bytes
  database buffers              25165824 bytes
  redo buffers                      667648 bytes
  database mounted.
  sql> alter system enable restricted session;
  system altered.
  sql> alter system set job_queue_processes=0;
  system altered.
  sql> alter system set aq_tm_processes=0;
  system altered.
  sql> alter database open;
  database altered.
  sql> alter database character set internal_use JA16SJIS;
  sql> shutdown immediate;
  sql> startup;

表空间:
select * from dba_data_files;
 select * from dba_tablespaces;//表空间
 select tablespace_name,sum(bytes), sum(blocks)
from dba_free_space group by tablespace_name;//空闲表空间
 select * from dba_data_files
where tablespace_name='RBS';//表空间对应的数据文件
 select * from dba_segments
where tablespace_name='INDEXS';

用户解锁
你打开命令提示符,不要登录直接输入下面:(之前好像漏了两个空格,你再按下面这样试试)
sqlplus sys/tiger as sysdba

以dba方式进入sys帐户;
alter user scott account unlock;
给scott用户解锁;


1.查看所有用户:
  select * from dba_users;
  select * from all_users;
  select * from user_users;
2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
  select * from dba_sys_privs;
  select * from user_sys_privs;
 
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>select * from role_sys_privs;
4.查看用户对象权限:
  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;
5.查看所有角色:
  select * from dba_roles;
6.查看用户或角色所拥有的角色:
  select * from dba_role_privs;
  select * from user_role_privs;
 
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
 
 
注意:
1、以下语句可以查看Oracle提供的系统权限
select name from sys.system_privilege_map
 
2、查看一个用户的所有系统权限(包含角色的系统权限)
Sql代码 
select privilege from dba_sys_privs where grantee='DATAUSER' 
union 
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );  
 

 找出正在执行的JOB编号及其会话编号
  SELECT SID,JOB FROM DBA_JOBS_RUNNING;
  停止该JOB的执行
  SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&SID';
  ALTER SYSTEM KILL SESSION '&SID,&SERIAL';
  EXEC DBMS_JOB.BROKEN(&JOB,TRUE);
  实例分析:
  1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。
  SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;
  SID JOB
  ---------- ----------
  12 116
  16 117
  2,查询正在运行的job的信息
  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';
  SID SERIAL#
  ---------- ----------
  12 4
  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';
  SID SERIAL#
  ---------- ----------
  16 1
  3,利用查询出来的job信息将job结束掉
  SQL> ALTER SYSTEM KILL SESSION '12,4';
  System altered.
  SQL> ALTER SYSTEM KILL SESSION '16,1';
  System altered.
  4,如果不希望运行上述job的话,可以将job设置为broken.
  EXEC DBMS_JOB.BROKEN(116,TRUE);
  EXEC DBMS_JOB.BROKEN(117,TRUE);
  根据个人经验,这种方法并不会立即中断job的运行。最好是找到job对应的线程kill掉

查看表锁语句
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id

登录用户system/manager 服务sysdba
用户创建
create user 名称“kcyg2” identified by 密码“kcyg”

删除用户
drop   user   kcyg2 cascade

用户授权
grant connect,resource,dba to kcyg2;

--授予不限制的表空间
grant unlimited tablespace to userName;

提交
commit;

创建表空间的sql:
CREATE TABLESPACE "MSNROBOT"
LOGGING
DATAFILE ''/opt/ora9/oradata/oracle/MSNROBOT.dbf'' SIZE 10M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

 

export导出选项
关键字        内容
------------ -------------------------------------------------------------------------------
USERID        运行导出命令的帐号的用户名/口令。
BUFFEER       用来取数据行的缓冲区的大小。
FILE          导出转储文件的名字
COMPRESS      导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句,
GRANTS        导出时否要导出数据库对象上的授权
INDEXES       是否要导出表上的索引
ROWS          是否应导出行。如它为'N',那么在导出文件中仅生成数据库对象的DDL
CONSSTRAINTS 是否导出表旧的约定条件
FULL          如设为'Y',那么将执行一个整个数据库导出操作
OWNER         要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作
TABLES        要导出的一系列表;执行这些表的TABLE导出操作
RECORDLENGTH 转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件
INCTYPE       正在执行的导出操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)
RECORD        在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中
PARFILE       要传递给导出的参数文件的名字。这个文件将包含所有参数的入口项
ANALYZE       标明是否将移对象的统计信息写入导出转储文件中
CONSISTENT    标明是否保留所有导出对象的读取一致复制。
LOG           导出日志将要写入的文件的名字
MLS           标明是否要导出MLS 标号
MLS_LABEL_    规定了MLS标号的格式
--import导入选项
关键字        内容
------------ -------------------------------------------------------------------------------
USERID        运行导入命令的帐号的用户名/口令。
BUFFEER       用来取数据行的缓冲区的大小。
FILE          导入转储文件的名字
SHOW          规定文件内容是否被显示,而不是被执行。
IGNORE        标明在执行'CREATE'命令时,是否忽略遇到的错误。如果正在导入的对象已经存在时,应使用这个参数。
FULL          如设为'Y',那么将执行一个整个数据库导入操作
FROMUSER      在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其对象应从导出转储文件中读取。
TOUSER        一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号。
GRANTS        导入时否要导入数据库对象上的授权
INDEXES       是否要导入表上的索引
ROWS          是否应导入行。如它为'N',那么在导入文件中执行数据库对象的DDL
FULL          如设为'Y',那么将执行一个整个数据库导出操作
TABLES        要导入的一系列表
RECORDLENGTH 转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件
INCTYPE       正在执行的导入操作的类型(有效值有”COMPLETE“(缺省值),CUMULATIVE”和“IVCREMENTAL”)
PARFILE       要传递给导入的参数文件的名字。这个文件将包含所有参数的入口项
ANALYZE       标明是否将移对象的统计信息写入导入转储文件中
LOG           导入日志将要写入的文件的名字
MLS           标明是否要导入MLS 标号


导出已有数据库
1.先进入有足够大的磁盘空间
2.输入命令
 exp 用户名“kcyg2”/密码“kcyg”@服务名称“kaicheng” file=kcyg.dmp log=kcyg_log.dmp full=y   完全备份


导入备份数据库

正常导入出错问题说用户不存在。
imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" full=y

解决方法:

imp kcyg2/kcyg@kaicheng file="e:\kcyg2.dmp" fromuser=kcyg2 touser=scott ignore=y;

 


使用imp命令导入时出现了一些问题,后来将full=y删除掉就可以了,不知道为什么.

 命令:imp sheas/sheas@oral file=g:\sheasDB0714\sh0715DB600.dmp fromuser=sheas touser=sheas full=y log=g:\sheasimp.log

 提示如:只能指定一种模式(tables,fromuser或full),未有成功终止导入.

原因:fromuser、touser、full不能同时存在一条imp语句中。imp语句应该与exp的尽量保持一致。

  (1)只能指定一种模式(full、tablespaces、tables、owner、fromuser)

  (2)fromuser不可以随便写,要符合导出文件中的用户,谁导出的dmp文件、fromuser后面就写谁

  (3)touser可以不写,如果不写则导出到当前连接用户,只能是dba自己

  (4)如果写fromuser,imp后面必须是dba/dba密码

  (5)exp 用户/密码 {full | owner}=模式 file=文件.dmp

  -- 使用imp前必须先创建表空间、用户

  imp 用户/密码 {full | fromuser/touser | tables}=模式 file=文件.dmp

  (6)表空间中有:表、索引、簇;

  用户中有:函数、过程、包、类型、触发器、视图、序列、同义词

 

 --查看oracle数据库字符集:
  select userenv('language') from dual;

  查询结果:

  SIMPLIFIED CHINESE_CHINA.AL32UTF8

  --修改oracle数据库字符集:(在SQL Plus中)

  sql> conn / as sysdba;

  sql> shutdown immediate;

  database closed.

  database dismounted.

  oracle instance shut down.

  sql> startup mount;

  oracle instance started.

  total system global area  135337420 bytes

  fixed size                          452044 bytes

  variable size                     109051904 bytes

  database buffers              25165824 bytes

  redo buffers                      667648 bytes

  database mounted.

  sql> alter system enable restricted session;

  system altered.

  sql> alter system set job_queue_processes=0;

  system altered.

  sql> alter system set aq_tm_processes=0;

  system altered.

  sql> alter database open;

  database altered.

  sql> alter database character set internal_use JA16SJIS;

  sql> shutdown immediate;

  sql> startup;


表空间:
select * from dba_data_files;
 select * from dba_tablespaces;//表空间
 select tablespace_name,sum(bytes), sum(blocks)
from dba_free_space group by tablespace_name;//空闲表空间
 select * from dba_data_files
where tablespace_name='RBS';//表空间对应的数据文件
 select * from dba_segments
where tablespace_name='INDEXS';


用户解锁

你打开命令提示符,不要登录直接输入下面:(之前好像漏了两个空格,你再按下面这样试试)
sqlplus sys/tiger as sysdba


以dba方式进入sys帐户;

alter user scott account unlock;

给scott用户解锁;

 


1.查看所有用户:
  select * from dba_users;
  select * from all_users;
  select * from user_users;

2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
  select * from dba_sys_privs;
  select * from user_sys_privs;
 
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>select * from role_sys_privs;

4.查看用户对象权限:
  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;

5.查看所有角色:
  select * from dba_roles;

6.查看用户或角色所拥有的角色:
  select * from dba_role_privs;
  select * from user_role_privs;
 
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
 
 
注意:
1、以下语句可以查看Oracle提供的系统权限
select name from sys.system_privilege_map
 
2、查看一个用户的所有系统权限(包含角色的系统权限)
Sql代码 
select privilege from dba_sys_privs where grantee='DATAUSER' 
union 
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );  
 


 找出正在执行的JOB编号及其会话编号

  SELECT SID,JOB FROM DBA_JOBS_RUNNING;

  停止该JOB的执行

  SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&SID';

  ALTER SYSTEM KILL SESSION '&SID,&SERIAL';

  EXEC DBMS_JOB.BROKEN(&JOB,TRUE);

  实例分析:

  1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。

  SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;

  SID JOB

  ---------- ----------

  12 116

  16 117

  2,查询正在运行的job的信息

  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';

  SID SERIAL#

  ---------- ----------

  12 4

  SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';

  SID SERIAL#

  ---------- ----------

  16 1

  3,利用查询出来的job信息将job结束掉

  SQL> ALTER SYSTEM KILL SESSION '12,4';

  System altered.

  SQL> ALTER SYSTEM KILL SESSION '16,1';

  System altered.

  4,如果不希望运行上述job的话,可以将job设置为broken.

  EXEC DBMS_JOB.BROKEN(116,TRUE);

  EXEC DBMS_JOB.BROKEN(117,TRUE);

  根据个人经验,这种方法并不会立即中断job的运行。最好是找到job对应的线程kill掉


查看表锁语句
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id

原创粉丝点击