登录用户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
登录用户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