一、主键和外键的关系
表A主键为name,表B外键为name。
在表A中为主键,在表B中为外键,那么A表是主表,B表是从表。
对表B的name字段进行修改或者添加记录,必须要参考表A的name列。假如插入jim值到表B的name字段,而表A的name列没有这个值,那么就会插入失败,这就是外键约束。如果表B的name列允许为空,那么可以插入空记录。因为可能这一行记录可以不关联表A的记录。
外键的值可以相同,因为从表有些行的记录可能都要关联父表某行的记录。

二、oracle远程连接
客户端
命令: sqlplus username/password@HOST:port/SERVICE_NAME [as sysdba]
用sysdba权限用户远程连就必须要加上as sysdba选项。

服务端
1.打开监听,命令为lsnrctl start.
2.查看$ORACLE_HOME/network/admin/下的sqlnet.ora和tnsname.ora
   [oracle@oracle admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /xinying/oracle/app/oracle/product/11.1.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES = (ALL) #用户认证模式,操作系统认证和密码文件认证混合模式。

[oracle@oracle admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /xinying/oracle/app/oracle/product/11.1.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
#客户端的命令选项根据以下的参数来设置
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.252)(PORT = 1521))#网络监听服务主机端口。
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)#网络服务名
    )
  )



2.设置初始化参数 REMOTE_LOGIN_PASSWORDFILE :
    在 Oracle 数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:

NONE :指示 Oracle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;

EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除 INTERNAL / SYS 以外的用户信息,即允许将系统权限 SYSOPER / SYSDBA 授予除 INTERNAL / SYS 以外的其他用户。

SHARED :指示可有多个数据库实例可以使用此密码文件。在此设置下只有 INTERNAL / SYS 帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以 SYSOPER / SYSDBA 的权限登录。此设置为缺省值。

SQL> show parameter remote_login_passwordfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
remote_login_passwordfile            string      EXCLUSIVE

3.创建密码文件,文件路径在$ORACLE_HOME/dbs/,文件名为orapwORACLE_SID.
  命令:[oracle@oracle admin]$ orapwd --help
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

  where
    file - name of password file (required), 创建文件的路径
    password - password for SYS (optional),  密码
    entries - maximum number of distinct DBA (required),允许多少人远程访问
    force - whether to overwrite existing file (optional), 覆盖当前的密码文件
    ignorecase - passwords are case-insensitive (optional),
    nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).

  There must be no spaces around the equal-to (=) character.

orapwd file="/xinying/oracle/app/oracle/product/11.1.0/db_1/dbs/orapwORACLE_SID" password=test entries=10 force=y

4.查看sysdba权限远程连接的用户
SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE


三、修改oracle本地监听端口
编辑$ORACLE_HOME/network/admin/下的listener.ora。