给用户解锁
Alter user scott account unlock;
修改用户密码
Alerter user scott identified by tiger;
查询某个字段为空
select * from sys_menu where parent_id is null
查询某个字段不为空
select * from sys_menu where parent_id is not null
拼接
select t.url||','||t.relation_url , t.rowid from sys_menu t
获取表名,列名,列注释
select TABLE_NAME,COLUMN_NAME,COMMENTS FROM USER_COL_COMMENTS where TABLE_NAME='YYXXB';
获取表名,表的注释
SELECT table_name,comments FROM user_tab_comments WHERE table_name='YYXXB';
修改表的列名
alter table 表名 rename column 旧列名 to 新列名;
/*修改原字段名*/
ALTER TABLE preplan RENAME COLUMN preplan_content TO prep_content;
/*添加一个和原字段同名的字段*/
ALTER TABLE preplan ADD preplan_content VARCHAR2(30);
/*
将原来的数据更新到新字段中
这是要注意,一定要显示进行数据类型转换(不同于MSSQL)
*/
UPDATE preplan SET preplan_content = CAST(preplan_content AS VARCHAR2(30));
/*删除原来的备份字段*/
ALTER TABLE preplan DROP COLUMN prep_content;
#增加表字段
alter table AA add AGE VARCHAR2(32) default 'AAAA' not null;
alter table AA add(XX number,yy varchar2(10));
#修改字段名
ALTER TABLE AA RENAME COLUMN YY TO ZZ;
#修改表字段类型
alter table AA modify AGE date;
alter table AA modify (AGE VARCHAR2(10))
#修改默认值,修改default值时,只有在新增加数据时,才会体现出来;
alter table AAAA modify (NAME1 default 'AAAA');
alter table AAAA modify (NAME1 default null);
修改是否为空
alter table AAAA modify (NAME1 null);
去除主键
alter table AAAA drop primary key;
alter table AAAA modify (UUID primary key);
去除chek
alter table AAAA drop constraint SYS_C0018001;
#删除表字段
alter table AA drop column AGE;
#修改表名
rename AA to BB;
#创建表
create table AAAA(
UUID VARCHAR2(32) primary key,
NAME1 varchar2(32) default 'aa' not null ,
sex varchar2(32) default '男' not null check (sex in('男','女')),//constraint chk_marital CHECK (marital_status in('S','M','D','W'))
age number,
start_time date
);
comment on table AA is '测试表';
comment on column AA.UUID is '主键';
查看oracle的版本
SELECT * FROM V$VERSION;
BANNER
-------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
或者
a.如果输出为8位16进制数,则为32位Oracle
SQL> select address from v$sql where rownum<2;
ADDRESS
--------
578428D8
b.如果输出为16位16进制数,则为64位Oracle
SQL> select address from v$sql where rownum<2;
ADDRESS
----------------
000000040DFA01E0
查看oracle服务字符集
select userenv('language') from dual;
修改服务器字符集
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 ZHS16GBK;
sql> shutdown immediate;
sql> startup;
如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat a.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 (试验成功,是用来查看上面的0354)
然后用上述SQL也可以得到它对应的字符集。
查询oracle client端的字符集
在windows平台下,在注册表里面相应OracleHome的NLS_LANG。
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。
我是配置的环境变量 NLS_LANG AMERICAN_AMERICA.ZHS16GBK 效果一样
在unix平台下,就是环境变量NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。
无法删除当前已连接的用户"的解决方法 :解决办法!!!
删除用户A
SQL> select username,sid,serial# from v$session where username='A';
USERNAME SID SERIAL#
------------------------------ ---------- ----------
A 2079 193
A 2114 17
A 2153 9
SQL> alter system kill session'2079,193';
System altered
SQL> alter system kill session'2114,17';
System altered
SQL> alter system kill session'2153,9';
System altered
SQL> DROP USER A CASCADE;
User dropped