天天看点

oracle迁移导入导出参考.bash_profileGet the aliases and functionsUser specific environment and startup programs注:创建完用户直接imp导入到的是USERS这个表空间,所以要单独创建表空间,然后分配到具体用户。

生产环境变量

.bash_profile

Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

User specific environment and startup programs

PATH=$PATH:$HOME/bin

PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

export PATH

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_SID=auditdw

alias sqlplus='rlwrap sqlplus'

alias rman='rlwrap rman'

创建用户

create user fcuser identified by fc;

create user clspuser identified by clsp;

create user salaryuser identified by salary;

sqlplus FCUSER/fc

授权登陆

grant create session,resource to csuser;

grant create session,resource to fcuser;

grant create session,resource to clspuser;

grant create session,resource to salaryuser;

授权dba

grant sysdba to salaryuser;

grant imp_full_database to salaryuser;

查询表空间

SELECT TABLESPACE_NAME FROM USER_TABLESPACES;

导入

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

imp csuser/cs file=csuser_test.dmp log=/tmp/csuser_test.log fromuser=csuser touser=csuser buffer=1228800 statistics=none

导出

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

exp newcsuser/newcs file=test194.dmp log=/tmp/clspuser_test.log owner=newcsuser buffer=1228800 statistics=none

exp CLSP20191231/CLSP20191231# file=/dbbackup_nfs/data/everymonth/CLSP20191231.dmp log=/tmp/CLSP20191231.log owner=CLSP20191231 buffer=1228800 statistics=none

注:创建完用户直接imp导入到的是USERS这个表空间,所以要单独创建表空间,然后分配到具体用户。

创建用户及分配表空间的过程

oracle创建用户,创建表空间,分配权限

以sysdba的身份登陆oracle;

sqlplus / as sysdba

创建用户语句;

create user dh_dev identified by dh_dev; # 第一个dh_dev为用户, 第二个dh_dev为密码

修改密码命令(可选操作);

alter user dh_dev identified by dh_123;

默认情况下用户创建好后系统会默认给该用户分配一个表空间(users);

我们可以通过下面的sql语句来查看一下所有用户所在的表空间;

select username,default_tablespace from dba_users;

一般在开发情况下,我们当然不会使用用户的默认表空间,所以这时我们需要创建一个表空间;

create tablespace dh_dev datafile '/opt/oracle/oradata/dh_dev_data.dbf' size 200M AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED;

注:datafile后面是表空间的物理存储路径,文件名的后缀可以随便

创建好表空间,还需要将表空间分配给用户.

alter user dh_dev default tablespace dh_dev;

重复第四步骤查看是否分配成功;

给用户分配了表空间,用户还不能登陆(没有登录权限),因此还需要为用户分配权限;(最后面附上权限参考)

grant create session,create table,create view,create sequence,create trigger,create procedure,unlimited tablespace to dh_dev;

测试登陆,给用户分配了权限之后我们就可以用dh_dev用户来登录;

conn dh_dev/dh_dev;

登录之后我们也可以来查询用户所具有的权限;

select * from session_privs;

最后我们也可以删除用户及其相关对象;

drop user dh_dev cascade;

密码永不过期

  • 命令行以sysdba的方式进入

    sqlplus / as sysdba;

  • 查看用户的密码策略,一般是default

    select username,profile from dba_users;

  • 查看指定概要文件(如default)的密码有效期设置

    Select * FROM dba_profiles s Where s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

  • 将密码有效期由默认的180天修改成“无限制”

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

  • 修改密码,相当于重置密码

    alter user dh_dev identified by dh_dev;

    常用权限参考

    create session 连接数据库;

    create view 建视图;

    create procedure 建过程、函数、包;

    create cluster 建簇;

    create table 建表;

    create public synonym 建同义词;

    create trigger 建触发器;

概念理解及参数解释

Oracle表空间是有限制的,当数据库中数据量达到这个值,再向数据库中导入数据就会报错。解决方法是扩展表空间

可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M。

有三种方法可以扩充表空间:

一、增加表空间原有数据文件的大小;

二、设置表空间的自动增长;

三、为表空间添加数据文件,通过向表空间添加数据文件,来增大表空间。

总结:oracle 表空间的扩充步骤如下:

1.查看表空间的大小,查询哪一个表空间已经爆满或者快要爆满

2.查看表空间下的数据文件,数据文件的命名格式,大小,位置,是否自动增长

3.根据表空间下的数据文件格式、大小、位置、是否自动增长添加数据文件

4.查看数据文件是否添加成功,查看表空间大小。确认已经添加成功。

范例:

创建用户并指定表空间

create user plncontrol identified by plncontrol default tablespace plncontrol temporary tablespace plncontrol_temp;

设置表空间自动增长

alter database datafile '/u01/oracle/app/oradata/DBPRIMARY/WEBONLINEPRE.dbf' autoextend on; //打开自动增长

alter database datafile '/u01/oracle/app/oradata/DBPRIMARY/WEBONLINEPRE.dbf' autoextend on next 200M; //每次自动增长200m

alter database datafile '/u01/oracle/app/oradata/DBPRIMARY/WEBONLINEPRE.dbf' autoextend on next 200M maxsize 2048M; //每次自动增长200m,数据表最大不超过2G

============

其他命令参考

Oracle查看当前用户所在的表空间

1、用户

查看当前用户的缺省表空间

select username,default_tablespace from user_users;

查看当前用户的角色

select * from user_role_privs;

查看当前用户的系统权限和表级权限

select * from user_sys_privs;

select * from user_tab_privs;

显示当前会话所具有的权限

select * from session_privs;

显示指定用户所具有的系统权限

select * from dba_sys_privs where grantee='GAME';

2、表

查看用户下所有的表

select * from user_tables;

查看名称包含log字符的表

select object_name,object_id from user_objects where instr(object_name,'LOG')>0;

查看某表的创建时间

select object_name,created from user_objects where object_name=upper('table_name');

查看某表的大小

select sum(bytes)/(10241024) as "size(M)" from user_segments where segment_name=upper('table_name');

查看放在ORACLE的内存区里的表

select table_name,cache from user_tables where instr(cache,'Y')>0;

3、索引

查看索引个数和类别

select index_name,index_type,table_name from user_indexes order by table_name;

查看索引被索引的字段

select * from user_ind_columns where index_name=upper('index_name');

查看索引的大小

select sum(bytes)/(10241024) as "size(M)" from user_segments where segment_name=upper('index_name');

4、序列号

查看序列号,last_number是当前值

select * from user_sequences;

5、视图

查看视图的名称

select view_name from user_views;

查看创建视图的select语句

set view_name,text_length from user_views;

set long 2000; 说明:可以根据视图的text_length值设定set long 的大小

select text from user_views where view_name=upper('&view_name');

6、同义词

查看同义词的名称

select * from user_synonyms;

7、约束条件

查看某表的约束条件

select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');

select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;

8、存储函数和过程

查看函数和过程的状态

select object_name,status from user_objects where object_type='FUNCTION';

select object_name,status from user_objects where object_type='PROCEDURE';

查看函数和过程的源代码

select text from all_source where owner=user and name=upper('&plsql_name');

===========

数据字典:dba_users、dba_tables、dba_tablespaces

1.查看所有表空间

select * from Dba_Tablespaces;

呈现的信息表空间名称以及表空间的大小等。

2.查看表空间下所有的表

select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME=‘表空间名’;